Learning to cluster in order to transfer across domains and tasks (ICLR 2018)

news2024/11/24 20:42:45

Learning to cluster in order to transfer across domains and tasks (ICLR 2018)

摘要

这篇论文提出一个进行跨域/任务的迁移学除了习任务,并将其作为一个学习聚类的问题。除了特征,我们还可以迁移相似度信息,并且这是足以学习一个相似度函数和聚类网络来同时进行域自适应和跨任务迁移学习。首先,我们将分类信息弱化为两两约束,也就是只考虑两个样本是否属于同一类(两两语义相似度)。这种相似度是不知道类别的,并且可以通过相似度网络从源域数据中学到。我们接着展示了两种用这个相似度函数的新方法来进行迁移学习。第一,针对无监督的域自适应任务,我们设计了一种新的损失函数来正则化带有约束的聚类损失的分类,因此学习一个带有迁移相似度度量的聚类网络来生成训练输入。第二,针对跨任务学习(例如含有未知类别的无监督聚类),我们提出一个框架再次利用聚类网络来重构和估计语义簇的数量。因为相似度网络是具有噪声干扰的,因此关键是用一个强健的聚类算法。并且,我们展现了我们的构想是比一些可选择的带约束或者无约束的聚类方法更加稳定。使用该方法,我们首先展示针对具备挑战性的跨任务问题最先进的结果,应用在Omniglot和ImageNet数据集上。我们的实验结果说明我们可以以较高的准确率来重构语义簇。然后,我们使用来自Office-31和SVHN-MNIST的图像评估跨域迁移的性能,并在这两个数据集上显示了最高的准确性。我们的方法没有明确地处理域差异。如果结合域自适应损失,则显示出进一步的改进。

迁移学习任务

为了定义这项工作中的迁移学习任务,我们沿用了Pan和Yang的符号。迁移学习的目标是从源域数据 S = ( X S , Y S ) S=(X_S,Y_S) S=(XS,YS)迁移知识到目标域 T = ( X T , Y T ) T=(X_T,Y_T) T=(XT,YT),其中 X S X_S XS是数据样本集合, Y S Y_S YS是与之对应的类别标签。该学习过程是无监督的,因为 Y T Y_T YT是未知的。该场景被分为两只情况。一种是 { Y T } ≠ { Y S } \{Y_T\}\ne \{Y_S\} {YT}={YS},也就是说类别集合是不相同的,因此这种迁移被称为跨任务迁移;另一种是 { Y T } = { Y S } \{Y_T\}=\{Y_S\} {YT}={YS},但是存在域偏移,换句话说,输入数据的边缘概率分布是不同的,例如 P ( X T ) ≠ P ( X S ) P(X_T) \ne P(X_S) P(XT)=P(XS)。后者是一种跨域学习问题,也被称为直推式学习。最近获得极大关注的域自适应方法属于第二种例子。

为了对齐常用基准测试集来评估迁移学习的能力,我们继续使用辅助数据集的记法,并且将源数据分为两个部分 S = S ′ ∪ A S=S' \cup A S=SA,其中 S ′ = ( X S ′ , Y S ′ ) S'=(X'_S,Y'_S) S=(XS,YS)是仅在跨域迁移方案中使用,并且 { Y T } = { Y S ′ } \{Y_T\}=\{Y'_S\} {YT}={YS} A = ( X A , Y A ) A=(X_A,Y_A) A=(XA,YA)是辅助数据集,包含大量的标注数据和潜在类别,即可能包含 { Y T } \{Y_T\} {YT}中的部分类别,也可能不包含。对跨任务场景,只使用 A A A和无标注的 T T T,而对跨域任务而言,则包含 A , S ′ A, S' A,S T T T。在接下来的章节都采用以上符号,并详细描述两类迁移学习任务。大意如图所示:在这里插入图片描述

跨任务迁移

如果目标任务中含有不同的类别,我们不能直接从源域迁移分类器,并且我们是没有标注好的目标域的数据用来微调迁移特征。在此,我们首先提出要将分类问题简化为代理同任务问题,对于变形后的问题,我们直接使用了直推式迁移学习。目标域中的簇结构是通过变形后的任务的预测结果重构出来的。
在这里插入图片描述

源数据包含一个标注好的辅助数据集 A A A,和一个未标注的目标数据集 T T T Y T Y_T YT必须是可以推导的。在该场景下类别集合 { Y A } ≠ { Y T } \{ Y_A\} \ne \{Y_T\} {YA}={YT},并且 Y T Y_T YT是未知的。我们首先将分类问题转化为一个两两相似度预测问题。换句话说,我们指定了一个变换函数 R R R使得 R ( A ) = ( X A R , Y R ) R(A)=(X^R_A, Y^R) R(A)=(XAR,YR),其中 X A R = { ( x A , i , x A , j ) } ∀ i , j X^R_A=\{(x_{A,i},x_{A,j})\}_{\forall i,j } XAR={(xA,i,xA,j)}i,j包含所有组合,而 Y R = { d i s s i m i l a r , s i m i l a r } {Y^R}=\{dissimilar, similar\} YR={dissimilar,similar},对标注好的辅助数据的变换是很简单的。如果两个数据样本来自同一个类别,那么标签就是 s i m i l a r similar similar,反之亦然。我们用它去学习一个两两相似度预测函数 G ( x i , x j ) = y i , j G(x_i,x_j)=y_{i,j} G(xi,xj)=yi,j。通过在 T T T上应用 G G G,我们可以得到 G ( x T , i , x T , j ) = y T , i , j G(x_{T,i}, x_{T,j})=y_{T,i,j} G(xT,i,xT,j)=yT,i,j。下一步就是从 Y T R = { y T , i , j } ∀ i , j Y^R_T= \{y_{T,i,j}\}_{\forall i,j } YTR={yT,i,j}i,j中推导出 Y T Y_T YT,这个可以通过带约束的聚类算法解决,由于 Y T Y_T YT是未知的,所以算法只能推导出类别的索引,这可以说任意顺序。预期所得到的聚类结果将包含一致的语义类别。

跨域迁移

我们考虑该问题的设置等同于无监督的域自适应。按照标准的评估步骤,标注数据集 A A A I m a g e N e t ImageNet ImageNet S ′ S' S O f f i c e − 31 Office-31 Office31数据集,未标注的 T T T O f f i c e − 31 Office-31 Office31数据集中的另一个域。目标就是增强在 T T T上的分类性能,通过利用 A , S ′ , T A, S', T A,S,T

可学习聚类目标(LCO)

受在损失函数中加入两两之间信息的约束聚类的启发,我们方法的关键是设计一个学习目标来利用预测的两两相似度(含有噪声)。成对的信息称为必须连接/不能链接(must-link/cannot-link)或者相似/不相似对(similar/dissimilar),本文中使用的是后者。相应地,相似和不相似对之间的信息也被二值化为0和1。
尽管很多带约束的聚类算法已经被提出,但很少有算法可以根据成对关系的数量而伸缩的。进一步就是,没有一个可以轻松和深度神经网络相结合。受到Hsu和Kira工作的启发,我们构建出在softmax分类器上的概率输出上聚类的对比损失。但是,每一个输出节点不需要映射为一个固定的类别,而是每个输出节点表示一个数据点到一个簇的概率分配。输出结点和簇之间的分配是在优化过程中随机形成的,并且是以两两相似度指导的。如果这是一个相似对,那么它们的输出分布应该是一样的,反之亦然。
具体而言,我们用两两之间的KL散度来评估两个数据样本在 k k k个簇分配上的分布距离,并用预测的相似度来构建对比损失。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

两两相似度网络

在这里插入图片描述
尽管没有限制 G G G应该如何建立,但我们还是因为在视觉任务中的有效性选择深度卷积网络。我们根据Zagoruko设计了一种网络架构,他们将其用于预测图片块之间的相似度,而我们用来预测图片级语义相似度。但是在他们的工作里孪生架构在训练和推理中并不是很有效,尤其是在两两信息是稠密的情况下。因此为了取代孪生网络,我们保持使用单个骨干网络但在特征提取网络之上增加了对枚举层。对枚举层枚举小批量中的所有特征对,并拼接特征。假设层的输入为10 × 512,小批量大小为10,特征尺寸为512,那么对枚举层的输出为100 × 1024(包括自身和自身组成的样本对)。
我们添加一个隐藏全连接层在枚举层的顶端和一个二值分类器在尾端。我们用一个标准交叉熵损失来端到端训练。通过将ground-truth类别标签转化为二元相似度,获得训练的监督。如果两个样本来自同一类,那么他们的标签将是相似的,否则不相似。推理也是端到端,它在一个小批处理中输出所有相似对之间的预测。具有1的输出概率 g ∈ [ 0 , 1 ] g∈[0,1] g[0,1]表示更相似。我们在0.5处对 G G G进行二值化,以获得离散的相似性预测。在下面的章节中,我们将两两相似度预测网络的符号简化为 G G G。一旦学习了 G G G,它就会在我们的实验中作为一个静态函数。

具有稠密相似度预测的目标函数

由于小批量的两两预测可以密集地从 G G G获取,为了高效利用这些成对的信息而不用多次将每一个数据传入模型,我们结合了前面所说的对枚举层和公式5。这样softmax的输出就可以逐对枚举。一个小批量的稠密聚类损失如下所示:
在这里插入图片描述
我们用该损失单独和深度神经网络结合来重构语义簇,并且用于跨任务迁移学习。该架构被称为约束聚类网络(CCN)。
在这里插入图片描述

联合其它目标函数

在跨域任务中,我们额外具有一些标注好的源数据。这个使得我们针对 T T T使用 L C O LCO LCO时也可以用 S ′ S' S训练分类损失。整个训练过程和之前的域自适应方法类似,都是小批量中混合源域数据和目标域数据,不同点就在于使用的损失。针对跨域迁移的损失函数如下:
在这里插入图片描述
在这里插入图片描述

emmm···

这个方法觉得就挺不靠谱的,整个算法的性能很大程度上都依赖所谓的 G G G,也就是相似度预测模型,这么重要的组成部分仅仅是在辅助数据集 I m a g e N e t ImageNet ImageNet训练完就固定了,而没有想办法在后续的训练过程继续去微调一下相似度预测模型,将在 A A A上训练的 G G G应用在 T T T上,这本身就是一个跨域迁移任务。而且,所提到的另一个重要模块 L C O LCO LCO,个人觉得基本和16年那篇论文一致,几乎没有改动。
简单总结一下就是:
跨任务迁移学习就用辅助数据训练一个二分类器给目标域数据一个相不相似的伪标签,然后用 L C O LCO LCO去训练。
跨域迁移学习就是在上面基础上加个分类损失。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/685110.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git的常用命令,及还原文件的指定版本,及分支管理

一.git 常用命令 1.创建一个空的Git仓库或重新初始化一个现有仓库 git init 2.执行 clone 命令默认会拉取远程仓库的所有内容 git clone 3.显示版本库和暂存区的状态 git status 4.将该文件添加到暂存区 git add . 5.将git add 之后文件在暂存区之后的提交 git commit -m 提…

【Java高级语法】(十七)Stream流式编程:释放流式编程的效率与优雅,狂肝万字只为全面讲透Stream流!~

Java高级语法详解之Stream流 1️⃣ 概念及特征2️⃣ 优势和缺点3️⃣ 使用3.1 语法3.2 常用API详解3.3 案例 4️⃣ 应用场景5️⃣ 使用技巧6️⃣ 并行流 ParallelStream🌾 总结 1️⃣ 概念及特征 Java的Stream流是在Java 8中引入的一种用于处理集合数据的功能强大且…

chatgpt赋能python:PythonGUI编程简介

Python GUI编程简介 Python是一款功能强大的开源编程语言,在很多领域都有广泛的应用。与其他编程语言相比,Python具有易于学习、易于阅读和易于维护等优点,因此成为许多程序员选择的首选语言之一。Python还提供了许多各种类型的GUI库&#x…

HHU云计算期末复习(上)Google、Amazon AWS、Azure

文章目录 第一章 概论第二章 Google 云计算2.1 Google文件系统(GFS)2.2 MapReduce和Hadoop2.3 分布式锁服务Chubby2.4 分布式结构化数据表Bigtable存储形式主服务器子表Bigtable 相关优化技术 2.5 分布式存储系统MegastoreMegastoreACID语义基本架构核心…

圆和矩形是否有重叠

🎈 算法并不一定都是很难的题目,也有很多只是一些代码技巧,多进行一些算法题目的练习,可以帮助我们开阔解题思路,提升我们的逻辑思维能力,也可以将一些算法思维结合到业务代码的编写思考中。简而言之&#…

Android设计模式—桥接模式

1.桥接模式 桥接模式是一种结构型设计模式,它通过将抽象部分与实现部分分离来解耦。它使用接口作为桥梁,将一个抽象类与其实现类的代码独立开来,从而使它们可以各自独立地变化。桥接模式的核心思想是“组合优于继承”。 简单来讲&#xff0…

RecyclerView性能优化之异步预加载

RecyclerView性能优化之异步预加载 前言 首先需要强调的是,这篇文章是对我之前写的《浅谈RecyclerView的性能优化》文章的补充,建议大家先读完这篇文章后再来看这篇文章,味道更佳。 当时由于篇幅的原因,并没有深入展开讲解&…

【TCP/IP】广播 - 定义、原理及编程实现

目录 广播 广播的原理及形式 广播的编程与实现 套接字选项设置 发送者 接收者 拓展资料 广播 广播(Broadcast)是指封包在计算机网络中传输时,目的地址为网络中所有设备的一种传输方式。这里所说的“所有设备”也被限定在一个范围之中,这个范围被称…

Android 13(T) - binder阅读(4)- 使用ServiceManager注册服务2

上一篇笔记我们看到了binder_transaction,这个方法很长,这一篇我们将把这个方法拆分开来看binder_transaction做了什么,从而学习binder是如何跨进程通信的。 1 binder_transaction static void binder_transaction(struct binder_proc *proc…

Java 面试知识点合集

一、基础篇 1.1 java基础 1.面向对象的特征:封装、继承、多态 (1).封装:属性能够描述事物的特征,方法能够描述事物的动作。封装就是把同一类事物的共性(包括属性和方法)归到同一类中,方便使用。 封装的…

音视频处理工具FFmpeg与Java结合的简单使用

一、什么是FFmpeg FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解…

chatgpt赋能python:Python编写n!——让阶乘计算变得更简单

Python编写n!——让阶乘计算变得更简单 阶乘是高中数学中常见的运算,它的含义是从1到n的所有正整数相乘,用叹号表示为n!。例如,5! 1 2 3 4 5 120。在计算机编程中,我们常常需要计算阶乘。而Python作为一门便捷易用的编程语…

chatgpt赋能python:Python编程自动化办公–提升工作效率的利器

Python编程自动化办公 – 提升工作效率的利器 越来越多企业对协作和业务流程的优化提高了要求,自动化办公就是其中之一,而Python编程能够帮助我们实现高效自动化办公。Python是一种多用途,高效的编程语言,被广泛应用于应用程序开…

UE4/5动画系列(3.通过后期处理动画蓝图的头部朝向Actor,两种方法:1.通过动画层接口的look at方法。2.通过control rig的方法)

目录 蓝图 点积dot Yaw判断 后期处理动画蓝图 动画层接口 ControlRig: 蓝图 首先我们创建一个actor类,这个actor类是我们要看的东西,actor在哪,我们的动物就要看到哪里(同样,这个我们也是做一个父类&#xff0…

chatgpt赋能python:Python程序员的秘密武器:给不及格成绩加分

Python程序员的秘密武器:给不及格成绩加分 Python是一个语法简洁、易学易用的编程语言,已经成为了很多程序员的首选语言。在学校中,很多学生选择学习Python作为他们的编程课程。然而,有时候即便是刻苦学习,踏实地完成…

3D定制化开发工具HOOPS如何满足EDA设计需求?(上)

HOOPS SDK 是由 Tech Soft 3D 公司开发和提供的一款软件开发工具包。HOOPS SDK 为开发者提供了强大的3D图形渲染和交互功能,用于构建高性能的工程、设计和制造应用程序。其主要功能包括:3D 图形渲染、交互性、数据管理、算法和分析、可定制性等。 HOOPS…

chatgpt赋能python:Python编写一个可以颠倒数组元素的函数

Python编写一个可以颠倒数组元素的函数 在Python编程中,我们经常需要对列表(即数组)进行操作。其中一个常见的操作就是颠倒列表中各元素的排列顺序。这个操作在很多场景下都有用,例如逆序输出字符串、逆序遍历二叉树等等。在本篇…

Atlas 200I DK A2开发者套件通过路由器联网(360安全路由-V2)

一、参考资料 Windows系统 通过直连路由器连接外部网络 二、准备工作 准备micro SD存储卡,即TF卡,建议128GB以上;准备micro SD读卡器;准备普通网线一根;准备一个路由器, 360安全路由-V2路由器。 三、关键…

机器人开发--SLAM详细介绍

机器人开发--SLAM介绍 1 介绍1.1 概述1.2 发展历程三个时代重要时间节点视觉SLAM分类及里程碑技术发展 1.3 SLAM与各模块关系1.5 SLAM分类1.4 应用领域 2 SLAM框架视觉/惯性SLAM系统框架结构经典框架 3 常见方案3.1 常见激光雷达方案3.2 常见视觉方案3.3 多传感器融合方案 4 地…

chatgpt赋能python:Python中同一变量多次赋值的探讨

Python中同一变量多次赋值的探讨 介绍 Python是一种非常流行的编程语言,具有易于学习和使用、强大的功能和可扩展性、广泛的应用领域等众多优点。在Python中,我们可以对同一变量多次进行赋值,这在某些情况下非常有用。本文将探讨在Python中…