量化百科

《小王爱迁移》系列之二:联合分布适配(JDA)方法简介

由iquant创建,最终由iquant 被浏览 5 用户

这是《小王爱迁移》系列的第二篇,为大家介绍一个非常不错的工作,叫做联合分布适配。和第一篇的TCA一脉相承,但是更简洁更美丽,效果更好。

问题背景

联合分布适配方法(joint distribution adaptation,JDA)解决的也是迁移学习中一类很大的问题:domain adaptation。关于domain adaptation的介绍可以看我之前的介绍。简单概括就是,如何用有标注的源域数据 (mathcal{D}_s={mathbf{x}_s,P(mathbf{x}_s)})来标定完全无标注的目标域 (mathcal{D}_t={mathbf{x}_t,P(mathbf{x}_t)})

简介

JDA方法首次发表于2013年的ICCV(计算机视觉领域顶会,与CVPR类似),它的作者是清华大学的博士生(现为清华大学助理教授)龙明盛。关于作者我们多说几句。龙明盛是迁移学习方面的专家,博士期间与香港科技大学的Qiang Yang、伊利诺伊大学芝加哥分校的Philip S. Yu以及伯克利的Jordan联合发表过多篇顶级文章。他的个人网站是:Mingsheng Long - Tsinghua University。博士论文里所有一作文章都是顶会和顶刊,非常厉害。

JDA这个方法,看名字就知道,是一个概率分布适配的方法,而且适配的是联合概率。先来简单普及一下知识:边缘概率、条件概率和联合概率。对于一个随机变量 Xx in X是它的元素,对于每一个元素,都对应一个类别 y in Y。那么,它的边缘概率为 P(X),条件概率为 P(y|X),联合概率为 p(X,y)。JDA方法就是要适配源域和目标域的联合概率。

方法

假设

假设是最基本的出发点。那么JDA这个方法的假设是什么呢?就是假设两点:1)源域和目标域边缘分布不同,2)源域和目标域条件分布不同。那么目标来了,同时适配两个分布不就可以了吗?于是作者很自然地提出了联合分布适配方法:适配联合概率。

不过这里我感觉有一些争议:边缘分布和条件分布不同,与联合分布不同并不等价。所以这里的“联合”二字实在是会引起歧义。我的理解是,同时适配两个分布,也可以叫联合,而不是概率上的“联合”。尽管作者在文章里第一个公式就写的是适配联合概率,但是这里感觉是有一些问题的。我们抛开它这个有歧义的,把“联合”理解成同时适配两个分布。

那么,JDA方法的目标就是,寻找一个变换 mathbf{A},使得经过变换后的 P(mathbf{A}^top mathbf{x}_s)P(mathbf{A}^top mathbf{x}_t)的距离能够尽可能地接近,同时, P(y_s|mathbf{A}^top mathbf{x}_s)P(y_t|mathbf{A}^top mathbf{x}_t)的距离也要小。很自然地,这个方法也就分成了两个步骤。

边缘分布适配

首先来适配边缘分布,也就是 P(mathbf{A}^top mathbf{x}_s)P(mathbf{A}^top mathbf{x}_t)的距离能够尽可能地接近。其实这个操作就是迁移成分分析(TCA)。我们仍然使用MMD距离来最小化源域和目标域的最大均值差异。MMD距离是

left Vert frac{1}{n} sum_{i=1}^{n} mathbf{A}^top mathbf{x}

这个式子实在不好求解。我们引入核方法,化简这个式子,它就变成了

D(mathcal{D}_s,mathcal{D}_t)=tr(mathbf{A}^top mathbf{X} mathbf{M}_0 mathbf{X}^top mathbf{A})

其中 mathbf{A}就是变换矩阵,我们把它加黑加粗, mathbf{X}是源域和目标域合并起来的数据。 mathbf{M}_0是一个MMD矩阵:

(mathbf{M}

n,m分别是源域和目标域样本的个数。

好了,到此为了没有什么创新点,因为这就是一个TCA,杨强老师已经做完了。

条件分布适配

这是我们要做的第二个目标,适配源域和目标域的条件概率分布。也就是说,还是要找一个变换 mathbf{A},使得 P(y_s|mathbf{A}^top mathbf{x}_s)P(y_t|mathbf{A}^top mathbf{x}_t)的距离也要小。那么简单了,我们再用一遍MMD啊。可是问题来了:我们的目标域里,没有 y_t,没法求目标域的条件分布!

这条路看来是走不通了。哪条路呢?就是去建模 P(y_t|mathbf{x}_t)不行嘛。那么,能不能有别的办法可以逼近这个条件概率?一想,有啊,类条件概率 mathbf{x}_t|y_t啊。根据贝叶斯公式 P(y_t|mathbf{x}_t)=p(y_t)p(mathbf{x}_t|y_t),我们如果忽略 P(mathbf{x}_t),那么岂不是就可以用 P(mathbf{x}_t|y_t)来近似 P(y_t|mathbf{x}_t)

而这样的近似也不是空穴来风。在统计学上,有一个东西叫做充分统计量,它是什么意思呢?大概意思就是说,如果样本里有太多的东西未知,样本足够好,我们就能够从中选择一些统计量,近似地代替我们要估计的分布。好了,我们为近似找到了理论依据。

实际怎么做呢?我们依然没有 y_t。采用的方法是,用 (mathbf{x}_s,y_s)来训练一个简单的分类器(比如knn、逻辑斯特回归),到 mathbf{x}_t上直接进行预测。总能够得到一些伪标签 hat{y}_t的吧。我们根据伪标签来计算,这个问题就可解了。

类与类之间的MMD距离表示为

sum_{c=1}^{C}left Vert frac{1}{n_c} sum_{mathbf{x}

其中, n_c,m_c分别标识源域和目标域中来自第c类的样本个数。同样地我们用核方法,得到了下面的式子

sum_{c=1}^{C}tr(mathbf{A}^top mathbf{X} mathbf{M}_c mathbf{X}^top mathbf{A})

其中 mathbf{M}_c

(mathbf{M}

学习策略

现在我们把两个距离结合起来,得到了一个总的优化目标:

min sum_{c=0}^{C}tr(mathbf{A}^top mathbf{X} mathbf{M}_c mathbf{X}^top mathbf{A}) + lambda Vert mathbf{A} Vert ^2_F

看到没,通过 c=0 cdots C就把两个距离统一起来了!其中的 lambda Vert mathbf{A} Vert ^2_F是正则项,使得模型良好定义。

我们还缺一个限制条件,不然这个问题无法解。限制条件是什么呢?和TCA一样,变换前后数据的方差要维持不变。怎么求数据的方差呢,还和TCA一样: mathbf{A}^top mathbf{X} mathbf{H} mathbf{X}^top mathbf{A} = mathbf{I},其中的 mathbf{H}也是中心矩阵, mathbf{I}是单位矩阵。也就是说,我们又添加了一个优化目标是要 max mathbf{A}^top mathbf{X} mathbf{H} mathbf{X}^top mathbf{A}(这一个步骤等价于PCA了)。和原来的优化目标合并,我们就是要好了,统一写一下优化目标

min frac{sum_{c=0}^{C}tr(mathbf{A}^top mathbf{X} mathbf{M}_c mathbf{X}^top mathbf{A}) + lambda Vert mathbf{A}}{ mathbf{A}^top mathbf{X} mathbf{H} mathbf{X}^top mathbf{A}}

这个式子实在不好求解。怎么弄啊,这么一大串。也不用惆怅,有个东西叫做rayleigh quotient,上面两个一样的这种形式。因为 mathbf{A}是可以进行拉伸而不改改变最终结果的,而如果下面为0的话,整个式子就求不出来值了。所以,我们直接就可以让下面不变,只求上面。所以我们最终的优化问题形式搞成了

 min quad sum_{c=0}^{C}tr(mathbf{A}^top mathbf{X} mathbf{M}_c mathbf{X}^top mathbf{A}) + lambda Vert mathbf{A} Vert ^2_F quad text{s.t.} quad mathbf{A}^top mathbf{X} mathbf{H} mathbf{X}^top mathbf{A} = mathbf{I}

怎么解?太简单了,用拉格朗日法嘛。不说了。最后变成了

left(mathbf{X} sum_{c=0}^{C} mathbf{M}_c mathbf{X}^top + lambda mathbf{I}right) mathbf{A} =mathbf{X} mathbf{H} mathbf{X}^top mathbf{A} Phi

其中的 Phi 是拉格朗日乘子。别看这个东西复杂,又有要求解的 mathbf{A} ,又有一个新加入的 Phi 。但是它在matlab里是可以直接解的(用eigs函数即可)。这样我们就得到了变换 mathbf{A},问题解决了。

可是伪标签终究是伪标签啊,肯定精度不高,怎么办?那好办。有个东西叫做迭代,一次不行,我们再做一次。后一次做的时候,我们用上一轮得到的标签来作伪标签。这样的目的是得到越来越好的伪标签,而参与迁移的数据是不会变的。这样往返多次,结果就自然而然好了。

总结

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

\

标签

迁移学习