这篇paper主要研究TL中,到底我们迁移了什么?或者说到底是哪些特征、哪个网络结构帮我们完成一次好的Transfer。

不过这篇文章的实验基本上是基于CV领域来做,主要从多层的CNN中提取局部信息进行分析。那么其他网络结构是否有这种特性可以进一步深挖。

文章出自Google Brain,之前发的论文偏向于探讨机器学习技术的Why it works?比如之前讨论DNN为什么具备泛化性的Understanding deep learning requires rethinking generalization,以及讨论RL overfitting问题的A study on overfitting in deep reinforcement learning等等。这些工作比起各种灌水文和算法应用文章,都更有意思,也更发人深省。

Method

文章主要提出了TL生效的几个猜想,然后一一验证:

  • Feature Reuse
  • Detail Behavior
  • Loss Landscape
  • Module
  • Checkpoint

Experiment

Feature Reuse

将图片拆分成KxK的blocks并随机打散,观察特征重用。在打散后,很多低维的统计数据在模型决策中依然表现为很重要的特征,但也同样发现,特征重用并非TL work的唯一要素。

Detail Behaviors

Investigating Mistakes

对比pre-train版本和scratch版本模型在判别上的相同和不同。

Feature Similarity

Centered kerenel Alignment(CKA)来衡量特征近似度。

Distance in parameter space

计算同位置参数的l2距离

结论

从同一个pre-train模型继续训练的模型,通常容易make similari mistake;但pre-train和scratch之前的common mistake比较少,从pre-train得到的模型容易共享相似的weights。

Loss Landscape

从pre-trian出来的多个模型,在performance上区别不大。具备相似的basin。
但从random var出来的模型,存在performance barrier(即使用相同的weight),最终的basin也和pre-train不一致。

Module Criticality

对NN中,重新初始化某些模块的权重,而保持其他结构权重不变。这时候,如果一些重要的模块(critical module)发生变更, 模型效果会drop很多。通过这个方法,可以检查迁移学习到底迁移的是哪个模块。

论文中定义了公式(参考原文3.4章),通过对权重加入高斯扰动来计算每个节点的重要性。

Different Checkpoint

如果pre-train模型也在不断迭代,并不断的产生checkpoint,我们从哪个开始训练最好呢?

这里实验结论显示,最终的迁移结果, 和loss landscape保持一致,当loss进入basin之后,无论选择哪个checkpoint,对最终迁移结果的影响都不大了。

Conclusion

读完文章有这么几个启发:

  1. TL中,特征重用和低维统计特征是重要的,所以,在domain迁移中,可以多考虑一些重用的特征。

  2. 从Pre-train出来的模型,在target domain上容易make similar mistake,具备更相近的feature层输出,并且参数的l2距离更近,通常在同一个loss basin里面;相比之下,random 初始化的训练,表现相反。因此,如果pre-train网络不好, 那tansfer很容易受到影响。

  3. 低层网络处理通用特征,高层网络对参数扰动更加敏感。这一点应该是NN的深度决定的,在training时候也会遇到embedding更新值比较少,而高层网络的梯度每次变化比较大。

  4. 从pretrain模型进入了final basin起,从之后产出的任何checkpoint开始训练,对fine-tune模型的影响都不大。是否意味着,pre-train网络进入(局部)最优点后,transfer model也无法逃脱?那么就有两个问题:
    a. 如果pre-train是局部最优模型,是否意味着transfer也是局部最优?
    b. 换用drop out或者一些training noise是否可以解决?