《小王爱迁移》系列之二:联合分布适配(JDA)方法简介
由iquant创建,最终由iquant 被浏览 5 用户
这是《小王爱迁移》系列的第二篇,为大家介绍一个非常不错的工作,叫做联合分布适配。和第一篇的TCA一脉相承,但是更简洁更美丽,效果更好。
问题背景
联合分布适配方法(joint distribution adaptation,JDA)解决的也是迁移学习中一类很大的问题:domain adaptation。关于domain adaptation的介绍可以看我之前的介绍。简单概括就是,如何用有标注的源域数据 来标定完全无标注的目标域 ?
简介
JDA方法首次发表于2013年的ICCV(计算机视觉领域顶会,与CVPR类似),它的作者是清华大学的博士生(现为清华大学助理教授)龙明盛。关于作者我们多说几句。龙明盛是迁移学习方面的专家,博士期间与香港科技大学的Qiang Yang、伊利诺伊大学芝加哥分校的Philip S. Yu以及伯克利的Jordan联合发表过多篇顶级文章。他的个人网站是:Mingsheng Long - Tsinghua University。博士论文里所有一作文章都是顶会和顶刊,非常厉害。
JDA这个方法,看名字就知道,是一个概率分布适配的方法,而且适配的是联合概率。先来简单普及一下知识:边缘概率、条件概率和联合概率。对于一个随机变量 , 是它的元素,对于每一个元素,都对应一个类别 。那么,它的边缘概率为 ,条件概率为 ,联合概率为 。JDA方法就是要适配源域和目标域的联合概率。
方法
假设
假设是最基本的出发点。那么JDA这个方法的假设是什么呢?就是假设两点:1)源域和目标域边缘分布不同,2)源域和目标域条件分布不同。那么目标来了,同时适配两个分布不就可以了吗?于是作者很自然地提出了联合分布适配方法:适配联合概率。
不过这里我感觉有一些争议:边缘分布和条件分布不同,与联合分布不同并不等价。所以这里的“联合”二字实在是会引起歧义。我的理解是,同时适配两个分布,也可以叫联合,而不是概率上的“联合”。尽管作者在文章里第一个公式就写的是适配联合概率,但是这里感觉是有一些问题的。我们抛开它这个有歧义的,把“联合”理解成同时适配两个分布。
那么,JDA方法的目标就是,寻找一个变换 ,使得经过变换后的 和 的距离能够尽可能地接近,同时, 和 的距离也要小。很自然地,这个方法也就分成了两个步骤。
边缘分布适配
首先来适配边缘分布,也就是 和 的距离能够尽可能地接近。其实这个操作就是迁移成分分析(TCA)。我们仍然使用MMD距离来最小化源域和目标域的最大均值差异。MMD距离是
这个式子实在不好求解。我们引入核方法,化简这个式子,它就变成了
其中 就是变换矩阵,我们把它加黑加粗, 是源域和目标域合并起来的数据。 是一个MMD矩阵:
分别是源域和目标域样本的个数。
好了,到此为了没有什么创新点,因为这就是一个TCA,杨强老师已经做完了。
条件分布适配
这是我们要做的第二个目标,适配源域和目标域的条件概率分布。也就是说,还是要找一个变换 ,使得 和 的距离也要小。那么简单了,我们再用一遍MMD啊。可是问题来了:我们的目标域里,没有 ,没法求目标域的条件分布!
这条路看来是走不通了。哪条路呢?就是去建模 不行嘛。那么,能不能有别的办法可以逼近这个条件概率?一想,有啊,类条件概率 啊。根据贝叶斯公式 ,我们如果忽略 ,那么岂不是就可以用 来近似 ?
而这样的近似也不是空穴来风。在统计学上,有一个东西叫做充分统计量,它是什么意思呢?大概意思就是说,如果样本里有太多的东西未知,样本足够好,我们就能够从中选择一些统计量,近似地代替我们要估计的分布。好了,我们为近似找到了理论依据。
实际怎么做呢?我们依然没有 。采用的方法是,用 来训练一个简单的分类器(比如knn、逻辑斯特回归),到 上直接进行预测。总能够得到一些伪标签 的吧。我们根据伪标签来计算,这个问题就可解了。
类与类之间的MMD距离表示为
其中, 分别标识源域和目标域中来自第c类的样本个数。同样地我们用核方法,得到了下面的式子
其中 为
学习策略
现在我们把两个距离结合起来,得到了一个总的优化目标:
看到没,通过 就把两个距离统一起来了!其中的 是正则项,使得模型良好定义。
我们还缺一个限制条件,不然这个问题无法解。限制条件是什么呢?和TCA一样,变换前后数据的方差要维持不变。怎么求数据的方差呢,还和TCA一样: ,其中的 也是中心矩阵, 是单位矩阵。也就是说,我们又添加了一个优化目标是要 (这一个步骤等价于PCA了)。和原来的优化目标合并,我们就是要好了,统一写一下优化目标
这个式子实在不好求解。怎么弄啊,这么一大串。也不用惆怅,有个东西叫做rayleigh quotient,上面两个一样的这种形式。因为 是可以进行拉伸而不改改变最终结果的,而如果下面为0的话,整个式子就求不出来值了。所以,我们直接就可以让下面不变,只求上面。所以我们最终的优化问题形式搞成了
怎么解?太简单了,用拉格朗日法嘛。不说了。最后变成了
其中的 是拉格朗日乘子。别看这个东西复杂,又有要求解的 ,又有一个新加入的 。但是它在matlab里是可以直接解的(用eigs函数即可)。这样我们就得到了变换 ,问题解决了。
可是伪标签终究是伪标签啊,肯定精度不高,怎么办?那好办。有个东西叫做迭代,一次不行,我们再做一次。后一次做的时候,我们用上一轮得到的标签来作伪标签。这样的目的是得到越来越好的伪标签,而参与迁移的数据是不会变的。这样往返多次,结果就自然而然好了。
总结
JDA方法比较巧妙,同时适配两个分布,然后非常精巧地规到了一个优化目标里。用弱分类器迭代,最后达到了很好的效果,值得我们去学习。和TCA的主要区别有两点:1)TCA是无监督的(边缘分布适配不需要label),JDA需要源域有label;2)TCA不需要迭代,JDA需要迭代。源代码:http://ise.thss.tsinghua.edu.cn/~mlong/doc/joint-distribution-adaptation-iccv13.zip
Acknowledgements
特别感谢澳大利亚University of Wollongong的美丽聪明的Jing Zhang对本文提出的修改意见。
References
[1] JDA方法原文:Long M, Wang J, Ding G, et al. Transfer feature learning with joint distribution adaptation[C]//Proceedings of the IEEE International Conference on Computer Vision. 2013: 2200-2207.
[2] TCA方法原文:Pan S J, Tsang I W, Kwok J T, et al. Domain adaptation via transfer component analysis[J]. IEEE Transactions on Neural Networks, 2011, 22(2): 199-210.
[3] Rayleigh quotient: Rayleigh quotient | Wikiwand
[作者简介]王晋东(不在家),中国科学院计算技术研究所博士生,目前研究方向为机器学习、迁移学习、人工智能等。作者联系方式:微博@秦汉日记 ,个人网站Jindong Wang is Here。
\