论文地址:https://arxiv.org/abs/1708.05629。
在迁移学习领域中,不同的算法可能发现的迁移知识是不同的,因此也导致了这些不同的方法产生不同的效果和应用场景,在一些迁移学习的应用上,研究者为了取得较好效果的迁移效果,往往需要尝试几十上百种迁移学习方法,这些尝试通常都是从零开始训练,效率较低。文中提出了一种叫做L2T的框架,通过利用以前的迁移学习经验自动决定出怎么迁移(How to transfer)和迁移什么(What to transfer)。那么这个框架如何来实现这个目的呢?该框架主要包含了两步:
- 第一步:将每个迁移学习经验编码为三个部分:源-目标域对,将被迁移的知识参数化为潜在特征因子(变换矩阵W),以及性能提升(与未使用迁移学习方法的性能相比)。然后L2T将从这些迁移学习经验中学习一个响应函数(reflection function),用于将源-目标域对,将被迁移的知识参数化为潜在特征因子与其对应的性能提升进行映射。然后这个响应函数就用于怎么迁移和迁移什么。
- 第二步:当一个新的源-目标域对来的时候,通过优化响应函数以至于取得最大效果的性能提升。
作者称这种框架opens a new door,因为L2T相当是从以前的迁移学习经验中进行总结,使得迁移学习不用每次都从零开始。
L2T框架
(1)将以前的迁移学习算法总结为三个部分:源-目标对、迁移学习算法的变换矩阵、算法的性能提升。其中
表示第Ne个算法,e表示experiences,由此获得“算法集”。(对应下面内容这一步叫作参数化迁移经验)
(2)从第(1)步中获得的“算法集”上学习出reflection function(一个变化矩阵),也就是从第(1)步中众多的算法中总结出哪些迁移知识用于迁移,怎么迁移。(对应下面内容这一步叫作学习reflection function)
(3)当新的源-目标域对到来时,在第(2)步获得的reflection function(W)基础上优化得到新的reflection function(
)。(对应下面内容这一步叫作更新reflection function)
参数化迁移经验
参数化迁移经验是将迁移学习算法中What to transfer进行参数化,也就是计算出上面(1)中的各迁移学习算法的变换矩阵W,再将性能提升通过
表示,并作为变换矩阵W的标签,其中
是将迁移学习算法k应用到源-目标域中取得的效果,
为未使用迁移的效果。每种迁移学习算法的变化矩阵的求解可能是不同的,W的求解大致可以分为两种情况:1.基于普通特征空间 2.基于流形空间。
基于普通特征空间的W求解方法流程大致如下:
其中
,G为相似性度量矩:
其中
为
的伪逆。通过对G进行LDL分解:
,可以推断出潜在特征系数矩阵W:
基于流形空间的W求解流程类似与基于普通特征空间。公式难打呀,就偷个懒。
学习reflection function
对应于之前的第(2)步,目的在于从第一步中众多算法的变换矩阵W中总结出最好的变换(reflection function)用于What to transfer和How to transfer。作者认为,一个好的迁移,其变换必定也很nice。从两方面考虑:1.潜在空间(经过W变换后的空间)中源域和目标域之间的差异程度。2.潜在空间中目标域的判别能力。
衡量潜在空间中源域和目标域之间的差异程度
潜在空间中源域和目标域之间的差异程度可以通过MMD来衡量,而因为MMD的某些缺陷,作者采用类似于TCA中的MK-MMD,也就是使用了多核的MMD度量。MMD可以衡量出两个域的距离,但是距离近,不一定代表两个域之间的方差小,而距离近方差大的话,同样会导致源域和目标域之间有很小的重叠,而迁移学习中就是想让二者之间重叠甚至重合,这样才可以通过源域很好的判别目标域。所以差异程度衡量除了衡量距离之外还得衡量方差哦。公式较为复杂,以图代公式,其中方差的表示为:
其中h的表达为:
这数学公式有点酸爽,其中那像K一样的字母表示核函数。公式比较复杂,但是从大意上还是很好看的,方差不就等于各元素减去均值的平方嘛,h衡量的是希尔伯特空间中两域之间的距离。这么自我安慰般的理解一下还是很简单的,哈哈。好了,现在距离和方差都知道了,还想干啥,当然是把它们最小化了,将拥有最小化距离和方差的算法变化矩阵作为我们的reflection function。不过别着急,前面不是说了要从两方面考虑嘛-----另外要考虑潜在空间中目标域的判别能力。
衡量潜在空间中目标域的判别能力
作者采用论文《Globally maximizing, locally minimizing: unsupervised discriminant projection with applications to face and palm biometrics》中提到的无监督判别标准来衡量潜在空间中目标域的判别能力,为:
其中, 为局部散射协方差矩阵。感兴趣可以好好看看上面这篇文章。
最小化条件,获得reflection function
现在条件都知道了,通过最小化这些条件,然后取得最小化的时候,得到的变换阵就是我们的reflection function,就像普通的有监督优化一样,这里的这些条件(也就是一些数学参数)相当于有监督优化中的网络参数,而标签使用前面提到的 表示,优化的目的也就是让reflection function尽量逼近 。其公式如下:
其中:
其中f就是我们的reflection function,同样,公式看起来很可怕,但是从大意上理解一下:加号左边的表达式可以看为 ,这是一个普遍的有监督损失函数形式,通过预测标签和真实标签的差获得,为了表方便求解最小化,将损失函数写为了 ,通过最小化损失函数,达到让f尽可能的接近 的目的。然后我们看看 的表达式,因为方法使用的是MK-MMD,所以各项计算都是在多核映射下的表达计算,第一项中表达的是在多核映射下各域之间的MMD距离表示,第二项是方差在多核下的表示,其中 为:
上式中
表示用到的是第k个核函数,然后
表达式的第三项表达的是潜在空间中目标域判别能力衡量
在多核下的表示,然后
为重要程度衡量,b为偏差。
至此,通过完成损失函数的优化,reflection function就得出来了。
更新reflection function
在开头,我们提到,L2T包含两步,第一步是得出reflection function,第二步是,当新的源-目标域对到来的时候,如何更新reflection function。作者通过在原reflection function( )基础上更新来达到在新的源-目标域对上取得最大的效果来完成( )。如下:
其中加号左边的意思是在新的源-目标域对、原reflection function(
)的基础上更新那几个超参,加号右边是正则化项,用来保证
不至于太过复杂。
好勒,框架的介绍到此为止。
L2T框架
作者的实验设计主要包括以下:
- L2T与各算法在源-目标域对上的表现做对比(全测试集的平均性能),及变换目标域中带标签数据数据量大小做对比
- L2T与各算法在源-目标域对上的表现做对比(随机抽取的六个源-目标域对平均性能),及变换目标域中带标签数据数据量大小做对比
- 通过不同算法组合得到的L2T之间进行对比
详细的实验过程就不介绍了,大家感兴趣可以看看原文。
参考
Wei Y, Zhang Y, Yang Q. Learning to Transfer[J]. 2017.