首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >迁移成分分析 (TCA) 方法简介

迁移成分分析 (TCA) 方法简介

作者头像
AI研习社
发布2018-03-19 14:46:48
2.9K0
发布2018-03-19 14:46:48
举报
文章被收录于专栏:AI研习社AI研习社AI研习社

之前整理总结迁移学习资料的时候有网友评论,大意就是现在的类似资料大全的东西已经太多了,想更深入地了解特定的细节。从这篇文章开始我将以《小王爱迁移》为名写一系列的介绍分析性的文章,与大家共享迁移学习中的代表性方法、理论与自己的感想。由于我的水平有限,请各位多多提意见,我们一起进步。今天第一篇必须以我最喜爱的杨强老师的代表性方法 TCA 为主题!(我的第一篇文章也是基于 TCA 做的) 【我刚整理重写好的加速版 TCA 代码(matlab):http://t.cn/RazheBv】

问题背景

机器学习中有一类非常有效的方法叫做降维(dimensionality reduction),用简单的话来说就是,把原来很高维度的数据(比如数据有 1000 多列)用很少的一些代表性维度来表示(比如 1000 多维用 100 维来表示)而不丢失关键的数据信息。这些降维方法多种多样,比如:主成分分析(PCA,principal component analysis)、局部线性嵌入(LLE,locally linear embedding)、拉普拉斯特征映射(Laplacian eigen-map)等。这些方法的过程大体都是一个大的矩阵作为输入,然后输出一个小矩阵。那么在迁移学习中,有没有这样的方法,通过降维来达到数据维度减少,而且能达到迁移学习目的呢?答案是显然的,就是我们要说的迁移成分分析(TCA,transfer component analysis)。看,名字就跟 PCA 很像。

TCA 最早是由中国香港科技大学杨强教授团队提出,首次出现在 AAAI-09 上,后来整理丰富成了一篇期刊文章,发表在 11 年的 IEEE Trans. Neural Network(现在这个期刊名字后面多了 and Learning System)上。这个方法是迁移学习领域经典性的文章,从 2011 年到现在接近 6 年过去,在 Google scholar 上引用量为 569 次,并且在持续增长。

简介

TCA 属于基于特征的迁移学习方法。那么,它做了一件什么事呢?用通俗的语言来说,跟 PCA 很像:PCA 是一个大矩阵进去,一个小矩阵出来,TCA 呢,是两个大矩阵进去,两个小矩阵出来。从学术角度讲,TCA 针对 domain adaptation 问题中,源域和目标域处于不同数据分布时,将两个领域的数据一起映射到一个高维的再生核希尔伯特空间。在此空间中,最小化源和目标的数据距离,同时最大程度地保留它们各自的内部属性。直观地理解就是,在现在这个维度上不好最小化它们的距离,那么我就找个映射,在映射后的空间上让它们最接近,那么我不就可以进行分类了吗?

我一直强调,任何问题都要看它的本质,TCA 本质是什么呢?完成迁移学习的要求。迁移学习的要求是什么呢?让源域和目标域距离尽可能小呗。

方法

有许多种方法都在试图减小源域和目标域的距离,那么,TCA 的贡献在哪里?以我的理解,TCA 将这个计算距离的方法变得通用而简单,这就是它最大的贡献。下面我以自己的理解介绍 TCA 方法的基本流程。

假设

任何方法都基于一定的假设。胡适说过,大胆假设,小心求证。但是他那个时候没有计算机,我们搞计算机的人则是,大胆假设,更大胆求证。为啥?我们就算失败了也没有什么嘛,最多把电脑搞崩溃了我再重装系统么。所以,搞学术一定不要怕假设。假设是学术成功的基石呢!

TCA 的假设是什么呢?很简单:源域和目标域的边缘分布是不一样的,也就是说,

,所以不能直接用传统的机器学习方法。但是呢,TCA 假设存在一个特征映射 $\phi$,使得映射后数据的分布

,更进一步,条件分布

。这不就行了么。好了,我们现在的目标是,找到这个合适的 $\phi$,一作映射,这事就解决了。

具体

但是世界上有无穷个这样的\phi ,也许终我们一生也无法找到这样的\phi 。庄子说过,吾生也有涯,而知也无涯,以有涯随无涯,殆已!我们肯定不能通过穷举的方法来找\phi 的。那么怎么办呢?

回到迁移学习的本质上来:最小化源域和目标域的距离。好了,我们能不能先假设这个\phi 是已知的,然后去求距离,看看能推出什么呢?

更进一步,这个距离怎么算?世界上有好多距离,从欧氏距离到马氏距离,从曼哈顿距离到余弦相似度,我们需要什么距离呢?TCA 利用了一个经典的也算是比较 “高端” 的距离叫做最大均值差异(MMD,maximum mean discrepancy)。这个距离的公式如下:

看着很高端(实际上也很高端)。MMD 是做了一件什么事呢?简单,就是求映射后源域和目标域的均值之差嘛。

事情到这里似乎也没什么进展:我们想求的\phi 仍然没法求。

TCA 是怎么做的呢,这里就要感谢矩阵了!我们发现,上面这个 MMD 距离平方展开后,有二次项乘积的部分!那么,联系在 SVM 中学过的核函数,把一个难求的映射以核函数的形式来求,不就可以了?于是,TCA 引入了一个核矩阵K :

以及L :

这样的好处是,直接把那个难求的距离,变换成了下面的形式:

trace 是矩阵的迹,用人话来说就是一个矩阵对角线元素的和。这样是不是感觉离目标又进了一步呢?

其实这个问题到这里就已经是可解的了,也就是说,属于计算机的部分已经做完了。只不过它是一个数学中的半定规划(SDP,semi-definite programming)的问题,解决起来非常耗费时间。由于 TCA 的第一作者 Sinno Jialin Pan 以前是中山大学的数学硕士,他想用更简单的方法来解决。他是怎么做的呢?

他想出了用降维的方法去构造结果。

这里的 W 矩阵是比 K 更低维度的矩阵。最后的 W 就是问题的解答了!

求解

好了,问题到这里,整理一下,TCA 最后的优化目标是:

这里的 $H$ 是一个中心矩阵,

.

这个式子下面的条件是什么意思呢?那个 min 的目标我们大概理解,就是要最小化源域和目标域的距离,加上 W 的约束让它不能太复杂。那么下面的条件是什么呢?下面的条件就是要实现第二个目标:维持各自的数据特征。TCA 要维持的是什么特征呢?文章中说是 variance,但是实际是 scatter matrix,就是数据的散度。就是说,一个矩阵散度怎么计算?对于一个矩阵A ,它的 scatter matrix 就是AHA^T 。这个H 就是上面的中心矩阵啦。

解决上面的优化问题时,作者又求了它的拉格朗日对偶。最后得出结论,W 的解就是的前 m 个特征值!简单不?数学美不美?然而,我是想不出的呀!

小结

好了,我们现在总结一下 TCA 方法的步骤。输入是两个特征矩阵,我们首先计算 L 和 H 矩阵,然后选择一些常用的核函数进行映射(比如线性核、高斯核)计算 K,接着求

的前 m 个特征值。仅此而已哦。然后,得到的就是源域和目标域的降维后的数据,我们就可以在上面用传统机器学习方法了。

总结

怎么样,到此为止我们把 TCA 方法介绍完了。我们回顾一下,它的最核心工作是什么呢?我认为有两点:一是把问题转化成数学问题转化得很彻底;二是最优化求解方法很厉害。我们能从中学习什么呢?求解问题的方法感觉是学不来了,我们又不是数学出身。我们只能照猫画虎,学习人家对问题的转化方式,怎么就能很好地把一个问题转化成数学表示?这也是机器学习和人工智能相关方向研究生最重要的能力!关于 TCA 的 Python 和 Matlab 代码可以参考我的 Github:https://github.com/jindongwang/transferlearning。

最后说一个 TCA 的优缺点。优点是实现简单,方法本身没有太多的限制,就跟 PCA 一样很好用。缺点就是,尽管它绕开了 SDP 问题求解,然而对于大矩阵还是需要很多计算时间。主要消耗时间的操作是,最后那个伪逆的求解以及特征值分解。在我的电脑上(i7-4790CPU+24GB 内存)跑 2000*2000 的核矩阵时间大概是 20 秒。

References

[1] TCA 原版文章:S. J. Pan, I. W. Tsang, J. T. Kwok and Q. Yang, "Domain Adaptation via Transfer Component Analysis," in IEEE Transactions on Neural Networks, vol. 22, no. 2, pp. 199-210, Feb. 2011.doi: 10.1109/TNN.2010.2091281

[2] Scatter matrix: Scatter matrix | Wikiwand(http://t.cn/RpQjLo0)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档