迁移学习

开始学习迁移学习,记录一些基础概念等,就不加在论文报告里了

主要是跟着王晋东来学习的啦~

基础知识

  1. 什么是迁移学习?

    “迁移”这两个字就很好地说明了什么是迁移学习,就是一个系统将别的相关领域中的知识应用到本应用中的学习模式。比如:学习c++后,学习JAVA就很轻松

    One-shot learning: 当目标域中的样例很少时


    形式化定义:

    特征空间$P(X)$,$X=\{X_1, X_2, \cdot\cdot\cdot X_n\}$;域:$D=(X, P(X))$;

    目标预测函数:$f(\cdot)$;目标:$T=(Y,f(\cdot))$,$Y$标签空间

    • 条件:给定一个源域$D_S$和源域上的学习任务$T_S$,目标域$D_T$和目标域上的学习任务$T_T$
    • 目标:利用$D_S$和$T_S$学习在目标域上的预测函数$f(\cdot)$
      $min_\epsilon(f_T(X),Y_T)$
    • 限制条件:$D_S\not= D_T$或$T_s\not=T_T$
  2. 为什么要学习?

    • 【标签难获取】:数据的标签难获取
    • 【提升可靠性】从头建立模型是复杂和耗时的,可以降低成本,同时可以学习前人的经验;并且迁移学习所训练的模型具有适应性,可以迁移到多个领域而不产生显著的性能下降。
    • 【冷启动问题】:刚开始没有数据(eg. 推荐系统无法工作)
    • 【满足个性化】:更好地提供个性化服务
    • 【适应小数据】训练数据分布不同,但数据集较小的时候,容易过拟合

    这样我们就可以实现:从已有的大型标注数据集,迁移知识到小型无标注(或少量标注)的数据集

    相比于机器学习来说,他不需要大量的数据标注,也不需要重新建模,训练和测试数据也可以不同分布

    在杨强2017年的演讲中,有提到:我们的昨天在深度学习上——大量数据、基于特征、应准确性来衡量(这一块已经做的比较好了);我们的今天在强度学习上——大量数据、基于反馈、通过策略;而我们的明天应该会在迁移学习上——少量数据、通过学习方法以适应冷启动和个性化的情况

  3. 专有名词

    • :由数据特征和特征分布组成,学习的主体
      • 源域:已有知识域
      • 目标域:要进行学习的域
    • 任务:由目标函数和学习结果组成,是学习的结果
  4. 分类方法

    • 按迁移情境

      • 归纳式Inductive TL

        源域和目标域的学习任务不同(需要进行归纳)

      • 直推式Transductive TL

        源域和目标域不同(也可以相同,但他们的特征不同),学习任务相同(可以直接推导)

        域适应属于这一块

      • 无监督Unsupervised TL

        源域和目标域均没有标签

    • 按迁移方法
      前三者是数据层面,后者是模型层面

      • 基于实例的迁移Instance based TL

        源域和目标域的一些数据共享很多共同特征

        所以首先需要筛选出与目标域数据相似度高的数据,然后进行训练学习

        • 优点
          • 方法较简单,实现容易
        • 缺点
        • 权重选择与相似度度量依赖经验
          • 源域和目标域的数据分布往往不同
      • 基于特征的迁移Feature based TL

        源域和目标域仅仅有一些交叉特征

        所以先特征变换,将两个域的数据变换到同一特征空间(两个域需要重叠起来),然后进行传统的机器学习


        优点

      • 大多数方法采用

        • 特征选择与变换可以取得好效果

        缺点

      • 往往是一个优化问题,难求解

    • 容易发生过适配

    • 基于关系的迁移Relational TL

      两个域相似,则它们会共享某种相似关系

      所以先利用源域学习逻辑关系模型,再应用于目标域上

    • 基于模型的迁移Parameter/model based TL

      源域和目标域可以共享一些模型参数

      所以,先将源域学习得到的模型运用在目标域上,再根据目标域学习新的模型;

      常用在神经网络上,比如fine-tuning


      避免过拟合的方法:

      • Conservative Training: 在训练时,增加限制使得新的模型参数和原来的模型参数差别不太大
      • Layer Transfer:在训练时,一些层直接复制参数,对于少数层进行调整参数
      • 语音:一般复制最后几层,输入层调整;因为每个人的说话方式语调不同
      • 图像:一般复制前面几层,最后层调整;因为前几层做的是简单的时间,比如检测是否是直线、曲线,最后几层是复杂的

      优点

      • 模型间存在相似性,可以被利用

      缺点

      • 模型参数不易收敛
    • 按特征空间
      按照特征维度分布空间是否相同

      • 同构
      • 异构体

        • 分为两种

          • 源域和目标域都包含图像,并且特征空间的发散主要由不同的感觉设备(例如,可见光(VIS)与近红外(NIR)或RGB与深度),不同的感知设备引起图像样式不同(例如,草图与照片)。
          • 源和目标域中存在不同类型的媒体(例如,文本与图像和语言与图像)

          • 根据变换是否对称分为两种:

            • 对称变换学习特征变换以将源和目标特征投影到公共子空间上。
            • 非对称变换将源和目标特征之一转换为与另一个对齐。

        上述两者都可以根据目标域是否有可用的标记数据分为监督、半监督、无监督这三个子类

    注:

    1. Zero-shot:目标域无标识,且两个源的目标不同

      如果对于一个在没有在源域中出现的X,可以:

      1. 用database找到特点,这样我们可以得到一个$f(X)$,然后找到近的$g(Y)$,这样X就是Y;
      2. 也可以,通过convex combination of semantic embedding来实现,就比如说,是由0.5A,也有0.5B可能性,那么用A、B向量得到$0.5V(A)+0.5V(B)$,然后根据这个向量寻找最近的,且离其他最远的Y

      衡量标准,可以用式子表示:

      • Maximum Mean Discrepancy MMD最大均值差异

      ​ 一般表示为:

      ​ $\phi:x\to H,\ H$是再生希尔伯特核空间RKHS。

      ​ 希尔伯特空间是一个完备的内积空间(完备意味着里面的数列取极限是收敛的,再生,意味着其有再生的性质,他的再生核是唯一的,也就是说,只要找到一个再生性的核函数,那么一定对应着一个唯一的希尔伯特空间。如果没有再生性,那么这个核函数可能对应着多个不同的空间。

      ​ 第一部分表示最小化分布之间的距离,第二项表示特征空间中的方差最大化;或者说第一部分表示离正确的值很近,而和其他不正确的值相距很远。

      ​ 那么zero loss发生在后面那项小于0时,整理得到:

      • Cosine similarity余弦相似度

      • Kullback-Leibler (KL) divergence用来估计分布之间的距离

      • Jensen-Shannon divergence (JSD)

  1. Distance Loss衡量

    杨强老师在2017年报告总结了现有工作对领域间距离损失的三种主要范式:

    1. 差异损失(discrepancy loss)和基于差异的范式】:直接度量和最小化两个领域之间的差异。
  2. 对抗损失(adversarial loss)和基于对抗的范式】:基于对抗目标(adversarial objective),构建共同的特征空间,设计领域鉴别器(domain discriminator)。

  3. 重建损失(reconstruction loss)和基于共享的范式】:结合非监督学习和监督学习,建立介于源领域和目标领域之间的共享领域(Intermediate domain),后者作为中介一样承载着知识迁移。

  4. 存在的问题

    • 负迁移:两个task不像,不可以随便“东施效颦”

      可以通过Progressive Neural Networks:每一层都对于新的高一层进行贡献

      或者从方法层面来说,就是源域和目标域是相似的,但是,迁移学习方法不够好,没找到可迁移的成分。

      传统迁移学习只有两个领域足够相似才可以完成,而当两个领域不相似时,传递迁移学习却可以利用处于这两个领域之间的若干领域,将知识传递式的完成迁移。

    • 缺乏理论支撑

    • 相似度衡量

  5. 难点

    找到两个域的共同点,不变量

研究领域

域适配Domain adaptation

迁移学习与领域自适应公开数据集https://github.com/jindongwang/transferlearning/blob/master/doc/dataset.md

有标签的源域无标签的目标域共享相同的特征和类别,但是特征分布不同,利用源域标定目标域

基本假设:

  • 数据分布角度:源域和目标域的概率分布相似——最小化概率分布距离
  • 特征选择角度:源域和目标域共享着某些特征——选择出这部分公共特征
  • 特征变换角度:源域和目标域共享某些子空间——把两个域变换到相同的子空间

这个假设是有一定局限性的,无法衡量源域和目标域之间相似性,可能发生负迁移

根据假设的三个角度,提出了三个方面的解决思路:概率分布适配法(Distribution Adaptation)、特征选择法(Feature Selection)、子空间学习法(Subspace Learning)

概率分布适配法

对于一个随机变量$X$,$x\in X$是它的元素,对于每一个元素,都对应一个类别$y\in Y$。那么,它的边缘概率为$P(X)$,条件概率为$P(y|X)$,联合概率为$P(X, y)$。

边缘分布适配法

假设:$P(X_s)\not=P(X_t)$

TCA迁移成分分析

TCA: transfer component analysis

TCA是一种边缘假设:$P(X_s)\not=P(X_t)$,属于域适配(边缘分布不同,条件分布相同)

PCA:主成分分析,一种降维的方法,用很少的一些代表性维度来表示,而不丢失关键的数据信息。

TCA:类似于PCA的思想。源域和目标域处于不同数据分布时,将两个领域的数据一起映射到一个高维的再生核希尔伯特空间。在此空间中,最小化源和目标的数据距离,同时最大程度地保留它们各自的内部属性。直观地理解就是,在现在这个维度上不好最小化它们的距离,那么就找个映射,在映射后的空间上让它们最接近。将两个矩阵(域)通过变换,转换为两个小的矩阵。即,在边缘分布不同的情况下,学习一个映射函数φ,使得边缘分布$P(φ(X_s))≈P(φ(X_t))$和条件分布$P(Y_s |φ(X_s))≈P(Y_t|φ(X_t))$

核心贡献

解决了当边缘分布不同时的迁移学习,并且将问题转换成了数学问题,且这个数学问题转换到通用而简单的地步(虽然它实现简单,但尽管它绕开了SDP问题求解,然而对于大矩阵还是需要很多计算时间。主要消耗时间的操作是,最后那个伪逆的求解以及特征值分解)。

核心内容

假设存在一个特征映射$\phi$,使得x映射后数据的分布$P(\phi(X_S))\approx P(\phi(X_T))$

MMD是用来求映射后源域和目标域的均值之差,MMD距离平方展开后,有二次项乘积的部分。把一个难求的映射以核函数的形式来求。于是,TCA引入一个核矩阵$K=\left(\begin{matrix}K_{src,src}&K_{src,tar}\\K_{tar,src}&K_{tar,tar}\end{matrix}\right)$以及$L_{ij}=\begin{cases}\frac 1 {n_1^2},\ x_i,x_j\in X_{src}\\ \frac 1 {n_2^2},\ x_i,x_j\in X_{tar}\-\frac 1 {n_1n_2},\ otherwise\end{cases}$

这样我们对于MMD:$dist(X’
_{src},X’
_{tar})=|\frac 1 {n_1}\sum_{i=1}^{n_1}\phi(x_{src_i})-\frac 1 {n_2}\sum_{i=1}^{n_2}\phi(x_{tar_i})|_H$可以转变为$trace(KL)-\lambda trace(K)$

转变的推导如下:

重要的性质:

  1. $||\mathbf{A}||^2 = \operatorname{tr}(\mathbf{A} \mathbf{A}^{\mathrm{T}})$,用在第二个等式中
  2. $\operatorname{tr}(\mathbf{A} \mathbf{B}) = \operatorname{tr}(\mathbf{B} \mathbf{A})$,用在第四个等式中

注:王晋东推导公式中第五个等式错误,应该如上等式,然后再根据性质2,可以得到结论

那么核心的公式就可以推导如下:

此时问题已变成数学中的半定规划的问题,解决仍然耗时。因此用了降维的方法。

  • 首先将核矩阵K进行分解,称为经验核映射:

  • 利用矩阵$\tilde W$,将经验核映射转换为m维空间,核矩阵表示为

    那么一般的,$\tilde k(x_i,x_j)=(k_{x_i}^TWW^TK_{x_j})$, $\tilde k_x=[k(x_1,x),\cdots,k(x_{n_1+n_2},x)]^T$

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

  • 这样我们就可以重写MMD了:

但是这样是不够的,映射$\Phi$还需要保留对目标监督学习任务有用的数据属性,即最大限度地保留数据方差。

因此,我们现在转换为:

这里的H是一个中心矩阵,$H=I_{n_1+n_2}-1/(n_1+n_2)11^T$,$μ>0$是一个平衡参数;$I$是单位矩阵;正则化项$tr(WTW)$来控制$W$的复杂性。

对于一个矩阵A,它的scatter matrix就是$AHA^T$,因此第二个约束说的是要维持各自的数据特征,即散度。

对于上述的优化,则用了拉格朗日对偶。

我们首先可以将上式再整理一下,变为

这样表示成拉格朗日形式就是:

接下来开始解拉格朗日,首先对其求导并等于0,解得:

其中,Z是包含拉格朗日乘子的对角矩阵。

两边同时乘以$W^T$,得到:

最后,类似于KFD,W的解就是$(I+\mu KLK)^{-1}KHK$的前m个特征值。

总结来说,就是:输入是两个特征矩阵,我们首先计算L和H矩阵,然后选择一些常用的核函数进行映射(比如线性核、高斯核)计算K,接着求$(KLK+\mu I)^{-1}KHK$的前m个特征值。然后,得到的就是源域和目标域的降维后的数据,我们就可以在上面用传统机器学习方法了。

遗留问题

KFD没有理解到位

伪代码

Algorithm: TCA

输入:源域和目标域

输出:转换矩阵W

  1. 构建核矩阵K以及矩阵L,中心矩阵H
  2. (无监督)特征分解$(KLK+\mu I)^{-1}KHK$,选择前m个特征值构建转换矩阵W
  3. (半监督)特征分解矩阵$(K(L+\lambda)LK+\mu I)^{-1}KH\tilde K_{yy}HK$,选择前m个特征值构建转换矩阵W
  4. 返回矩阵W
实验结果

取了一组情况,发现准确率不错。

DDC

TAC的扩展,把MMD加入到神经网络中

核心贡献

提出了在源域与目标域之间添加一个适应层,相当于在网络上添加了正则化。适应层将两个并行的CNN网络(这里是AlexNet)连接到了一起,通过传递域混淆损失函数(这里是MMD loss)的方式,减小源域与目标域之间的分布差异,将两个分布通过网络表征后的特征,强行拉到同一个分布上,从而实现域自适应

img

核心内容

在域适应中,由于目标无标记,所以直接进行fine-tune是不可行的。域适应的核心就是要学习在目标上最优的分类器,同时最小化源域和目标域的差异。

DDC:网络包括两个流向,第一条流向的输入为带标签的源数据;另一条流向的输入为包含少量的标签或不带标签的目标数据,两个流向的卷积神经网络共享权值。

与之不同的是在原有的AlexNet网络的基础上,在fc7层后加上一层适配层,通过适应层的输出计算出域损失函数,以此来单独考察网络对源域和目标域的判别能力。而在第7层(也就是feature层)加入了MMD距离来减小源与目标的差异。

img

损失函数为:

其中,是分类损失函数,衡量了源域与目标域之间的距离。

通过MMD距离来确定适应层的位置及尺寸。首先,通过逐层计算源数据与目标数据之间的MMD距离,来选择适应层的位置(在DDC中,因为使用的是ALexNet网络,作者已经将位置确定了,如下图,因此选择Fc7 256的适应层),使得MMD距离最小化。适应层位置确定后,同样通过尝试不同的尺寸的适应层,选择能使MMD距离最小化的尺寸。

img

DAN

把MKK-MMD加入到神经网络中

核心贡献

DAN解决了DDC的两个问题:

  1. 【多层适配】DDC只适配了一层网络,可能不够,不同层都是可以迁移的;DAN多适配了几层
  2. 【多核MMD】DDC用了单一固定核的MMD,但是单一固定的核可能不是最优的核;DAN用了多核的MMD(MK-MMD)
核心内容
  1. 【冻结浅层(Frozen Shallow-Layer)】:多个领域共享浅层权值,认为浅层权值是具有强适应性的共性知识
  2. 【区分深层(Distinguish Deep-Layer for Different Domains)】:认为深层权值代表了领域知识,因此要把多个领域之间的距离刻画出来。
  3. 【微调中层(Fine-tune Intermediate-Layer)】:介于浅层共性知识和深层领域知识之间,通过微调权值以满足对应领域的需求。

目标是学习$\Theta$和MK-MMD中的$\beta$

优化目标(损失函数):

其中,$\Theta$表示网络的所有权重和bias参数;$\lambda$是惩罚系数;$J(\cdot)$损失函数,在深度网络中一般是cross-entropy($H(p,q)=-\sum_x p(x)\text{log}q(x)$)

多层适配

DAN基于AlexNet网络。

在上述公式中$l_1=6,l_2=8$表示,第6层到第8层进行适配,即适配最后三层。在的文章中已经说了,网络的迁移能力在这三层开始就会以任务而具体分开,task-specific,所以要着重适配这三层。但是别的网络(比如GoogLeNet、VGG)等不一定是这三层。

Multi-kernel MMD

MK-MMD提出用多个核去构造这个总的核,这样效果肯定会比一个核好呀。对于两个概率分布$p,q$,它们的MK-MMD距离就是

则,kernel就可以通过m个不同的kernel进行加权,权重就是$\beta_u$:

如果通过内积计算会很复杂,$O(n^2)$;可以通过对MK-MMD的无偏估计:

这样就变成计算连续的一对数据的距离,可以把复杂度降低到$O(n)$

条件分布适配法

假设:$P(y_s|X_s)\not=P(y_t|X_t)$

联合分布适配法 JDA

直接继承于TCA,但是加入了条件分布适配

假设:

  1. 源域和目标域边缘分布不同
  2. 源域和目标域条件分布不同$P(X_s, y_s)\not=P(X_t,y_t)$(与TCA不同之处)

因此同时适配两个分布就可以了

核心贡献

JDA完成了在原则维数约简过程中同时调整边际分布和条件分布,并构建新的特征表示。

核心内容

那么,JDA方法的目标就是,寻找一个变换后的$P(A^Tx_s)$和$P(A^Tx_t)$的距离尽可能接近的变换A,同时也要让条件分布的距离$P(y_s|A^Tx_s)$和$P(y_t|A^Tx_t)$的距离尽可能的小。

因此,我们可以简单地认为此方法分为两个步骤,即边缘分布适配以及条件分布适配。

那么第一步的边缘分布适配实际上也就是TCA。式子为

同样,我们引入核方法,用迹表示为

A是变换矩阵,X是源域和目标域合并起来的数据,$M_0$是一个MMD矩阵,相当于在TCA中的L

接着做第二步,条件分布适配。但是在我们的目标域里,没有$y_t$。这是一种后验概率,比较复杂,但是我们可以根据贝叶斯公式$P(A|B)=\frac{P(B|A)P(A)}{P(B)}$,转换为$P(y_t|x_t)P(x_t)=P(y_t)P(x_t|y_t)$。又因为充分统计量(如果样本里有太多的东西未知,而样本足够好,我们就能够从中选择一些统计量,近似地代替我们要估计的分布)这样就可以用$P(x_t|y_t)$来代替$P(y_t|x_t)$,而省去$P(y_t)/P(x_t)$。

现在,我们用$x_s,y_s$来训练一个简单的分类器(比如knn、逻辑斯特回归),到$x_t$上直接进行预测。得到一些伪标签$\hat y_t$。最后根据伪标签来计算。

有了源标签和伪目标标签,我们可以匹配类条件分布$Q_s(x_s | y_s = c)$和$Q_t(x_t | y_t = c)$

此时,MMD距离表示为

其中,$D_s = \{x_ i : x_i ∈ D_s ∧ y (x_i ) = c\}$,表示一组输入数据中,属于c类的元素;$y(x_i)$表示$x_i$的标签;$n_s=|D_s^{(c)}|$;同样的,$D_t = \{x_ j : x_j ∈ D_t ∧ \hat y (x_j ) = c\}$,表示一组目标数据中,属于c类的元素;$\hat y(x_i)$表示$x_i$的伪标签;$n_t=|D_t^{(c)}|$

同样适用核方法,简化为(注意,这里的下标是1)

$M_c$为:

现在将两个距离合并起来,得到一个总的优化目标:(论文中,当数据集是数字、面部的时候,$\lambda=0.1$;当是物体数据集时,$\lambda = 1$)

其中后面这一项是正则项,使得模型良好定义。

同TCA一样,还需加上一个条件:变换前后数据的方差要维持不变。同样的,其中$A^TXHX^TA=I,\ s.t.\ max\ A^TXHX^TA$

合并后为:

可以化简为:

这时,我们就可以用拉格朗日了。变为:

其中,$\Phi$为拉格朗日乘子。

根据拉格朗日求解规则,让$\frac{\partial L}{\partial A}=0$,则有:

最后,将上述等式简化为求解k个最小特征向量的等式,得到最佳自适应矩阵A。

这样我们得到了伪标签,可以用迭代的方法(论文中迭代了10次),让结果更好。

伪代码

Algorithm: JDA

输入:源域X和目标域Y,子空间基数k,正则化参数$\lambda$

输出:自适应矩阵A,嵌入Z,自适应分类器f

Begin:

​ 根据等式(3)来构建MMD矩阵$M_0$,让 $\{M_c := 0\}_{c=1}^C $

​ Repeat:

​ 根据等式(10)解决广义特征值分解的问题,求解k个最小特征向量,以此来构建自适应矩阵A,嵌入$Z:=A^T_X$

​ 训练一个在$ \{(A^Tx_i , y_i )\}_{i=1}^{n_s} $域上标准的自适应分类器$f$,来更新伪标签的值,${\hat y_j := f(A^T x_j )} _{j=n_s + 1}^{ n_s +n_t}$

​ 根据等式(6)来构建MMD矩阵$\{M_c := 1\}_{c=1}^C $

​ 直到收敛为止
返回在$\{Ax_i , y_i \}_{i=1}^{ n_s} $上的自适应分类器f

实验结果

这组准确率并不高,不过不是因为算法的问题,而是这两者共同点较少,在已有的算法中,准确率都比较低。见Github上另外一些配对准确率可以达到79.62%。

与TCA的主要区别
  1. TCA是无监督的(边缘分布适配不需要label);JDA需要源域有label;
  2. TCA不需要迭代,JDA需要迭代

特征选择法

从源域和目标域中选择提取共享的特征,建立统一模型

SCL寻找Pivot feature,将源域和目标域进行对齐

子空间学习法

将源域和目标域变换到相同的子空间,然后建立统一的模型

SA:直接寻求一个线性变换,把source变换到target空间中

多源Multi-source TL

多个源域和目标域,进行有效的域筛选,从而进行迁移

综合多个可用域,效果较好,但衡量多个域之间的相关性仍是一个问题

一个很好的应用:多语言的识别,前面几个参数相同(都是语言),后面不太同(语言不同)

深度Deep TL

利用深度神经网络的结构进行迁移学习

DHN、Domain-adversarial neural network深度网络中加入对抗

How transferable are features in deep neural networks?

在神经网络中,前面几层都学习到的是通用的特征(general feature),随着网络的加深,后面的网络更偏重于学习特定的特征(specific feature)。

AnB:(所有实验都是针对数据B来说的)将A网络的前n层拿来并将它frozen,剩下的8-n层随机初始化,然后对B进行分类。

BnB:把训练好的B网络的前n层拿来并将它frozen,剩下的8-n层随机初始化,然后对B进行分类。

这篇研究主要是通过实验来得出结论:

  1. 从BnB+来说,结果基本保持不变,说明fine-tune对模型结果有着很好的促进作用!
  2. 从AnB+的实验,加入了fine-tuning后对于所有的n几乎都非常好,甚至比初始更好,说明fine-tune对于深度迁移有着非常好的促进作用!
  3. 通过改变A、B例子,使得几乎没有相似类别后,得到:随着可迁移层数的增加,模型性能下降。但是,前3层仍然还是可以迁移的!同时,与随机初始化所有权重比较,迁移学习的精度是很高的!
  4. 神经网络的前3层基本都是general feature,进行迁移的效果会比较好;
  5. 深度迁移网络中加入fine-tune,效果会提升比较大,可能会比原网络效果还好;
  6. Fine-tune可以比较好地克服数据之间的差异性;
  7. 深度迁移网络要比随机初始化权重效果好;

异构Heterogeneous TL

后记

就不分篇了,可以在我的github上看到项目内容。

转载请注明出处,谢谢。

愿 我是你的小太阳



买糖果去喽