博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
非监督多类域适应:理论,算法和实践
阅读量:2243 次
发布时间:2019-05-09

本文共 3572 字,大约阅读时间需要 11 分钟。

点击蓝字

关注我们

AI TIME欢迎每一位AI爱好者的加入!

『今日视频推荐』

非监督多类域适应(UDA)是机器学习和迁移学习下的研究领域,它的任务是解决现实应用中源域和目标域之间存在差异的问题。本报告中,我们将介绍一种全新的理论方法来计算源域和目标域之间的差异,并把这种全新的理论方法应用到算法中。此外,我们还采用其他易于优化的损失函数替代理论框架下的得到的损失函数。在这全新的理论基础和算法的应用上,我们还提出了该理论基础存在的问题,作为将来进一步的研究方向。

邓彬:硕士毕业于深圳大学计算机与软件学院,目前在华南理工大学几何感知与智能实验室就读博士一年级,导师为贾奎教授。研究兴趣包括高光谱遥感图像处理,模式识别,机器学习(迁移学习)等,在其相关领域顶级期刊发表论文多篇。

◎ 什么是非监督多类域适应(UDA)?

在算法学习过程中,我们会使用到源域和目标域。但是实际应用中,源域和目标域之间存在差异。例如,在源域中的自行车图片无背景,在目标域中自行车图片却有背景。当目标域没有标签但我们却可以得到很多有标签的其他域(源域)数据时,我们就需要应用非监督多类域适应,作为解决方案。通常非监督多类域适应(UDA)适用于闭合数据集(closed set),指源域和目标域所识别类别一样。

非监督多类域适应(UDA)还有两个变种,开放数据集(open set)和局部数据集(partial set)。开放数据集(open set)(2017)指源域和目标域所识别类别有交集,开放数据集(open set)(2018)指源域所识别类别包含于目标域所识别类别。局部数据集(partial set)指目标域所识别类别包含于源域所识别类别。

◎ 回顾经典UDA理论

在介绍完我们为什么需要非监督多类域适应(UDA)之后,让我们来了解一下,非监督多类域适应(UDA)的理论基础是什么。

经典UDA理论公式如图1所示:

(1)

注:为hypothesis,εQ(h)为源域的预期错误,εQ(h)为目标域的预期错误,λ为假设域的常量,d(P, Q)为源域和目标域之间的差异,P, Q为源域分布和目标域分布

基于对于两个domain之间距离的定义不同,产生了不同的基于经典理论的变种理论。

(2)

Ben et al., 2010 适用于二元分类,把两个分布的共同分布集的点分为两份,通过hypothesis disagreement的形式计算两个分布的差异。

Ben和经典UDA理论基于二元分类,而zhang et al., 2019把适用于二元分类理论拓展到了多元分类。

(3)

Zhang et al. 通过引用Margin Disparity(图3),使用相对边缘函数,使得预测对象由二维拓展到了K维。由于预测对象变为k维,在全新损失函数中引入相对边缘,根据公式中范围条件进行惩罚。虽然Margin Disparity可以应用在k维领域,但是同时也有缺陷。在计算相对边缘过程

中,只考虑fx(x)的值域中的最大值,忽略了其他值。因此,Margin Disparity并不能决解当下很多流行的算法。

经典算法框架回顾:

在介绍完经典理论之后,我们来看看经典的UDA算法框架(图4)。Long et al., 2015 使用了max mean discrepancy (MMD)计算,并最小化源域和目标域特征分布之间的差异。

(4)

Ganin et al., 2015(图5), 基于对抗思想,提出DANN。该算法通过训练二元分类器和特征提取器达到博弈过程,从而最小化源域和目标域特征分布之间的差异。

(5)

经典算法带来的问题:

使用经典的算法框架解决实际应用,会带来一些问题。如图6所示,单纯使用二元分类器最小化最小化源域和目标域特征分布之间的差异,会导致不同类之间存在交叉。

(6)

但是,在非监督多类域适应中,目标域事无标签的,因此不能保证在真正意义上实现分布上的类别对齐。

Saito et al., 2018(图7) 提出使用两个分类器的算法Maximum Classifier Discrepancy (MCD)。F1, F2两个二元分类器,在source domains上训练完成之后,最大化F1, F2在目标域上的差异。然后通过训练特征提取器,减少上述差异。而后,由于不同类之间有一定的相似度,目标域会按照类别向源域移动。

(7)

 

经典的多类域适应理论建立在二元分类的基础上,而现实算法往往是多类分类。虽然现存的经典算法证明了使用多类对齐进行特征匹配,优于二元判别的分类器匹配,但现存的多类理论并无法解释其有效性。

新的非监督多类域适应理论:

根据我们对上述问题的思考,我们提出了新的理论解释了使用多元对齐,匹配特征分布的方案及其优势。

我们提出了一种基于多类得分差异(MCSD)来计算源域和目标域分布之间差异的方式,如图8,9所示。

(8)

(9)

与Margin Disparity不同,MCSD选取f(x)值域上每一个值。基于多类得分差异MCSD,得出计算出两个源域和目标域与之间分布差异的全新方法。它是以矩阵的形式计算两个域的K*K个scores,该方法可以充分衡量两个域之间的K类差异。

(10)

如图10中©所示,使用MCSD计算两个域之间的差异,f’(x),f’’(x)的变化相对平滑,更加利于优化。由于源域与目标域在分布有一定相关性,说明类与类之间较为接近。如果f’(x),f’’(x)变化平滑,则在优化过程中,会实现同类之间优先对齐。

多类非监督适应域算法框架:

由于我们提出的针对多类域的理论,非监督域适应算法框架能够应用于多类的情况。新的算法结构(图11),与经典算法类似,只是采用全新方法计算源域和目标域之间的分布差别。

(11)

在多类非监督适应域算法框架中,MCSD理论基于ramp loss函数。ramp loss仅在 (0, p) 区间内有线性梯度,在网络较大情况下,会在优化过程中造成困难。所以我们考虑了一些具有理论保障的优化方案(图11)。例如,MCSD L1 Loss, KL。

(12)

由于使用不同损失函数,最终输出的MCSD差别最小值相同。上述替代方案与ramp loss的最终目的相同,进一步可以解释多类非监督适应理论的有效性。

基于同样的理论基础下,我们提出了ben,和Zhang.相对应的替代方案,并做出了相应的替代损失的方案,通过把传统算法和新算法囊括在一个框架中,可以公平得对比这些算法的有效性。

新的实现算法:

通过代替损失函数的方式,我们得出了全新的实现算法(图11)。它使用上下两部分K个分类器取代了原有的两个分类器。在计算损失步骤,相当于交叉熵的计算方式。

(11)

在应用于局部数据集partial set的情况下,我们会调整不同类的权重。以期望如果目标域不含有源域中的某类,则该类权重为0,以达到接近于闭合数据集的情况。

实验结果与实践应用:

由于不同算法和理论是基于同样框架进行对比,所以具有相对公平结果。实验表明(图 11),两种计算目标域和源域差别的理论,充分考虑每个类别score差异的方式,优于使用二元分类。

(12)

如图13所示,当算法框架应用在开放数据集情况下,把未知类归为第k+1类。综上所述,可将开放数据集转化为闭合数据集。

(13)

缺陷和未来研究方向:

虽然从理论到算法的过程中理论基础十分坚实,但是在基于MSCD的统一理论中,常量存在缺陷。在训练算法过程中,我们目标是学习一个特征提取器,但在特征提取器层面, d(P,Q)是特征所在的分布,而不是原来所指的分布。在只提取特征分布的情况下,则对应于所提取特征所在的分布下计算出来的。但是在训练过程中,被理想地当作常量。

当把特征提取器映射到特征分布时,λ可能会发生变化。如果按类对齐效果越差,的值会越大。未来的研究方向将会是在特征分布上刻画的值。

合作媒体:学术头条

整理:郭   赫

审稿:邓   彬

排版:岳白雪

AI TIME欢迎AI领域学者投稿,期待大家剖析学科历史发展和前沿技术。针对热门话题,我们将邀请专家一起论道。同时,我们也长期招募优质的撰稿人,顶级的平台需要顶级的你!

请将简历等信息发至yun.he@aminer.cn!

微信联系:AITIME_HY

AI TIME是清华大学计算机系一群关注人工智能发展,并有思想情怀的青年学者们创办的圈子,旨在发扬科学思辨精神,邀请各界人士对人工智能理论、算法、场景、应用的本质问题进行探索,加强思想碰撞,打造一个知识分享的聚集地。

更多资讯请扫码关注

 

(直播回放:https://b23.tv/z0igvj)

(点击“阅读原文”下载本次报告ppt)

转载地址:http://xkwdb.baihongyu.com/

你可能感兴趣的文章
tomcat连接超时
查看>>
谈谈编程思想
查看>>
iOS MapKit导航及地理转码辅助类
查看>>
检测iOS的网络可用性并打开网络设置
查看>>
简单封装FMDB操作sqlite的模板
查看>>
iOS开发中Instruments的用法
查看>>
强引用 软引用 弱引用 虚引用
查看>>
数据类型 java转换
查看>>
"NetworkError: 400 Bad Request - http://172.16.47.117:8088/rhip/**/####t/approval?date=976
查看>>
mybatis 根据 数据库表 自动生成 实体
查看>>
C结构体、C++结构体、C++类的区别
查看>>
进程和线程的概念、区别和联系
查看>>
CMake 入门实战
查看>>
绑定CPU逻辑核心的利器——taskset
查看>>
Linux下perf性能测试火焰图只显示函数地址不显示函数名的问题
查看>>
c结构体、c++结构体和c++类的区别以及错误纠正
查看>>
Linux下查看根目录各文件内存占用情况
查看>>
A星算法详解(个人认为最详细,最通俗易懂的一个版本)
查看>>
利用栈实现DFS
查看>>
(PAT 1019) General Palindromic Number (进制转换)
查看>>