9648
2021年4月10日-12日,吴文俊人工智能科学技术奖十周年颁奖盛典暨2020中国人工智能产业年会在北京和苏州同期圆满成功举办。浙江大学数据科学研究中心“百人计划”研究员徐仁军受邀在苏州工业园区希尔顿酒店,2020中国人工智能产业年会—大数据智能感知与计算专题论坛上发表主题报告《无监督域自适应迁移学习》。
以下为演讲实录:
大家好,今天主题名字叫智能感知,智能感知其中一个问题,我们机器学习不能很好的泛化,虽然需要大量的标注数据,没有举一反三的能力,那怎么让机器实现举一反三,我这边做得工作叫做域自适应迁移学习,今天我们来讲无监督的域自适应迁移学习。
什么是域自适应?比如说已有打标签的数据叫原域,原域是已知的,比如说拍一些真实照片,可能有一些标注数据,如果用真实照片标注数据训练的模型迁移到艺术化的照片,就是识别比如说真实的猫,这只猫训练的模型,识别卡通的猫是没法正确识别的,所以我们需要两个域的迁移过程,比如把真实世界的域迁移到卡通的域或者艺术照片的域,但是艺术照片的域我们是没有这个标签的,我们不需要那个标签也可以实现对它的分别。
XY是已知的是原域,Y就是标签,但是XY没有一个解释的函数关系,是基于数据驱动的。另外,比如说一个真实的猫跟卡通猫都是猫,但有一个映射关系,这个映射关系我们是不知道的,真实照片的猫跟卡通的猫,我们知道困难存在一种关系,但是具体什么关系我们不知道,这是我们的假设,已知两个条件加上一个假设,X跟X'是不同域上对同样类别对象的不同表征,一个是真实照片的猫,一个是艺术卡通画的猫,是猫这个对象不同的表征。现在我们的目标是求解,给卡通的猫以后,卡通的猫怎么把它正确的识别出来,怎么打上Y'的标签,这是我们要做得事情。
研究的背景,比如说小孩,他会看电视或者老师教他猫长什么样子的,狗是什么样子的,小孩子学了以后,他其实是能够正确了解真实场景中猫和狗的识别,但是在我们机器没有这样的智能,所以我们现在在做这样的事情。
包括人学自行车可能很快的学会,比如说摩托车,或者学会打羽毛球以后,我们也可以很快学会打网球,就是我们人有举一反三的能力,从一个旧领域迁移到新的领域。
目标域是一个未知的新的数据,我们希望基于这个学习赋予新的目标与知识跟数据标注。域自适应是解决训练样本和测试样本概率分布不一致的问题,同时这两个数据存在一定的关系。这样对于新的目标域的数据也不用打标签,它可以大幅提升,现在打标签最大费时的是这个过程。
这是一个定义,比如说从原域到目标域得到一个分离器F,现在条件是P(统计分布),原域两个分布跟目标域的P两个分布是不一样的,我们需要找到一个F',让它能够从Xt到Yt。
我们假设标签Ys和Yt至少有些类别是一样的,如果两个类别完全不一样的话,我们暂时没有处理。我们先讲两个域完全一样怎么处理,第二个是目标域包含新的类别怎么处理。
我们先说迁移学习,迁移学习分多种,域自适应迁移学习是其中一种。人们喜欢”偷懒”,因为偷懒能帮我们节省大量的时间, 提高效率。还有一种偷懒是 “站在巨人的肩膀上”。不仅能看得更远,还能看到更多。这也用来表达我们要善于学习先辈的经验,一个人的成功往往还取决于先辈们累积的知识。
机器学习痛点:如果学习遇到一个新任务,每次从零开始训练?每次重新雇人工给新数据打标签?(人工成本昂贵!)如何利用已有的知识?
另外我们主要关注模型的复用和泛化能力,希望把过去习得的知识适配应用于新场景。现在我们对人工智能有很多关注,也得到很多模型,现在网上有无数各种各样通过公有或私有数据训练的预训练模型:NLP、CV,比如GPT-3,十分强大,但是参数量高达1750亿,训练费用更是高达1200 万美元!如何利用好这些已训练好的模型,而不用重头开始?因此有时候在面对类似的任务时, 我们希望能够借鉴已有的资源,复用模型,不重复造轮子。比如说百度模仿谷歌,模仿facebook,模仿KFC。
这是从卡通或抽象东西到真实场景的迁移,还有对于运动形式的理解可以解决一些不同形式的任务。比如说翻译,不同语言其实表征同样的东西,我们也可以进行不同语言之间的迁移,比如说不同场景,不同设备,不同时间的迁移,还有不同用户,不同人种,不同地区,不同接口,不同情景下的人机交互的迁移。其实医疗图像各个医院也不一样,数据也是多元异质,这个也可以使用迁移学习。
现在迁移学习也分多种,比如说监督,半监督,无监督,异构迁移学习。这次讲的主要是无监督的迁移学习,是基于实例的迁移学习。还有基于特征或基于关系的迁移学习,还有机器学习的迁移学习。
右图现在痛点从原域到目标域叫负迁移,就是说如果当样板分布在决策边界上的话,比如说现在有三个类别,方框、三角、圆圈,有些类别是介于三角形和方形之间,这就不好处理了,有可能会分类错误,彩色是原域的,是给打标签的,灰色是新领域,新的域是没标签的,对于没标签的数据,让这个三角形能否正确分类到左边或者分类到右边,这是我们要解决的问题,如果三角形分类到右边就分类错了,就叫做负迁移。
这里有两个工作,第一个,目标域和源域样本类别相同时,如何减轻负迁移效应?第二个,目标域样本类别多于源域样本类别时,如何实现不同域间相同类别样本的对齐?
我们先讲第一个工作,这是我们工作的动画示意图,基本思想就是让同类别的尽量聚在一起,不同类别的尽量分开,那个箭头作为传输迁移的过程。
这里有三个创新点:
1、SSR(Shrinking Subspace Reliability):针对决策边缘目标样本产生的负迁移,提出SSR度量不同域间的样本差异。
2、WOT(Weighted Optimal Transport):针对最优传输粗匹配策略产生的负迁移,设计加权最优传输策略。
3、DCL(Discriminative Centroid Loss):学习深度判别特征,实现同一类别样本在特征空间的聚类。
这里右边是埋一个负迁移效应,让同一类别尽可能聚在一起,红色中心让每个类,比如说有三角,方框,圆圈,每一类都沿中心靠近,这样边界的地方就会压缩,同一类别就会凝聚在一起。像反方向箭头,不同类别尽可能远离,最后达到右边地图的效果,边界面很干净,不会出现样本数处于分界面之间的问题。
这是模型架构,一个是原域的数据,一个目标域的数据。原域的数据先做常规的特征生成器,用一个特征提取器,后面有一个分类器,主要有三个函数,第一个是基于原域数据,这是有标签的,我们知道它的标签是YIS,所以我们可以把这个特征提取以后,用GY进行分类跟YIS比较。
另外一个是同类采样的距离损失,简单来说就是让目标域Di个样本跟原域中Dk个样本,如果是1的话表示这两个配对上了,表示应该把目标域Di样本跟原域里面Dk个样本对齐,如果对齐的话,如果原域第七个样本类别是属于YGS的,这样的话就可以给目标域样本打上YGS的标签,简单来讲就是这么一个过程。
如果是0的话表示没对齐,这里损失函数就没有影响。如果是1的话就要经过损失函数,这样在目标域表征空间跟原域表征空间,这两个样本表征空间里面应该对齐。因为对齐了,我对目标域的特征提取以后,同样通过GY进行分类,应该同样分类出得到YGS标签,所以我们做了一个分类器。
刚刚说了我们需要实现同一类别尽可能靠在一起,比如是原域样本,经过特征提取器以后,让原域样本跟原域中心尽可能的,因为要减少数值的话要尽可能靠近,这一项数值尽可能小,所以它会靠近中心,实现类别凝聚。
因为K遇到C,总共C个类别,现在是让Di个这个权重的意思,表示意思是Di个样本属于Dk的类别的概率,它是0到1的数,如果接近1的话表示很可能Di个样本属于Dk的类别,如果是话,目标域的Di个样本跟中心Dk尽可能靠近。一个是原域里面的类别凝聚,一个是目标域实现类别凝聚,这是前面两项。最后一项叫类间分离,就是如果不属于同一类别,就是当K1不等于K2的时候,K表示那个类别。
刚才说到几个细节,第一个模块是Q,这里面有两个判断,目标域的Di个样本属于原域里面Dk概率是有两种算法。第一种算法,可以基于Gy分类器对Gf以后,用分类器去判断目标域Di个样本属于Dk类别的概率是多少,Y=K概率是多少。
还有一种算法是通过中心距离来看,原域里面Dk个类别我们是知道的,通过小d,小d是距离的衡量,我们在Gf Xit特征空间里面离中心距离的远近来判断,到底这个样本属于Dk个类别的概率,所以现在有两种算目标与Di个样本属于Dk个类别的概率的方法。
到底哪个方法更加可靠呢?我们设计了Qik距离的衡量。当我们刚刚开始训练的时候,原域和目标域,就像有真实照片和卡通照片,这两个肯定是不能对齐的,没有对齐的话表示分类器是不可靠的,那不可靠的话我们设置了dA(k)(D8k,Dtk)A-距离,它是2(1-2€(hk)。€是一个线性分类其,可以用SVM分类其做,刚开始很容易区分哪个是原域,哪个是目标域,所以€(hk)应该是去0的,因为很容易分类嘛,这个错误率是0的。这样的话,根据这个公式2-1-0,这个dA距离应该是去2,所以dA等于2的话,表示第一项是重要的,第二项2-2就是0了,所以M(i,k)这个影响就没了。刚开始训练的时候更加相信第一个公式,大dA(k)用来判断Di个样本属于Dk类别的概率。
随着训练进行原域和目标域逐渐对齐了,那我们的分类器就会更加的可靠。那原域跟目标域没法足够的对齐,没法分辨的话,eP(h,K)就去0.5了,0.5乘以2是1,那1-1=0,表示dA是去0了,第一项就不重要了,第二项目是重要的。随着我们训练的进行,我们会更加相信M_k的衡量,实现了动态的判断。随着训练第二个样本属于Dk个类别的概率。
这里是最优传输(Optimal Transport),数学表示是这样的,γ*,这里Ds表示原域,Dp表示目标域,γ表示它的配对,比如说原域跟目标域怎么配对。这边大R是一个权重的矩阵,大C是代价函数,上面是连续的积分,我们需要离散化,Z(i,j)我们是这么定义,原域里面的表征跟目标域表征的距离乘以Q,根据这个加权权重定这个Z,当 i 和 j 配对后,代价函数Z就变小,因此可以从源域和目标域中优先选出这样的匹配对。
这是类中心评估公式,原域里面对同一类别做一个加权去平均就可以了,这个东西要么1,要么0。
这里回顾一下总共三个函数,总的目标函数是这样子的。前面讲的是封闭域,就是说原域跟目标域样本类别数是一样的,原域有几个类别,目标也是几个类别,实际我们场景中可能是开放域的,就是说可能会有新的类别进来。我们当时提出了联合部分最优传输。现在比如说有一个新增类别在原域里面的话怎么办?强势对齐的话可能就对错了,对错了的话就变成负迁移了,所以我们要保证属于已知的那些知识对齐,本身如果不知道的就不要对齐了,不然就会错误了。
这是Open Set Domain Adaptation (OSDA)开放域的对齐,这是目标域的样本,如果是新的样本就把它拎出来,就不要去对齐了。我们设计的,如果是1的话就对齐,这边是0的表示那些是未知样本,这些就不要对齐。
挖掘目标域中未知样本的独有特征,实现已知类和未知类的类间分离,相似的进行迁移,不相似的不进行迁移。这是我们提出的POT(Partial Optimal Transport)。
结合源域的域内信息和目标域中未知样本的表示,实现类内凝聚和类间分离,并基于反向传播机制实现未知类均值和方差的估计。
这是我们模型的框架,主要是三个部分的损失函数,第一项是分类损失,第二项是部分最优传输的损失函数,第三项是联合原形损失。部分最优传输,因为只是传输了部分的类别,所以叫部分最优传输,对于新的类别我们一直迁移,所以它只是部分的。
最优传输叫LP,LP分两项,一项是对已知类别的,一项是对未知类别的。这是LD,已知类别的话,原域我让它尽可能向中心靠近凝聚,对于类间不同类会让它去做分类。现在类别数是从1到k+1,k是已知类,+1是未知类的类别。
对未知类我们可以算出它的均值来,算出未知类别以后还可以乱出它的个数来。这个Z样本到底是不是属于未知类?如果是的话就是1,对是未知类的做一个均值,我就可以求出他的均值来。所有的未知类做一个均值就好了,同样的也可以做它的方差。
其实我们设置了一个域值,到底γ(i,j)怎么算,我们设计一个域值,比如说让原域跟目标域不超过平均值的话,我认为它距离太远了,应该把它归为未知类,如果小于平均值的话,我认为它是一个已知类别。刚才讲了未知类的处理,已知类可以做同样处理,均值和方差我们可以算出来。
这是JPOT我们做的模型,可以看到中间是新的未知类别,c是我们去了一个模块的结果,可以看到它们的边界也是很模糊的,不同这些类别的边界都很干净。同时原域跟目标域也是可以很好对齐。
总结一下,第一篇主要是基于SSR的域间样本差异度量,设计了加权最优传输的策略。第二篇是联合部分最优传输实现了目标域中未知类样本数据的参数估计。