三、三种不同的迁移方法
将这些概念加起来,就可以总结出三个不同的迁移方法
1.基于差异的方法
在哪里做迁移的转换、自适应。可以在某个层次来做,也可以在多个层次来做,如何来衡量两个领域之间的距离,可以用先验的这种概率、模型,也可以用联合概率、模型;另外还可以将源领域的信息加进来,建立一个更准确的Loss。这都是图像领域获得的知识,那自然语言会不会有类似的方式?
下面一篇描述NLP的文章也证明了这一点,假设我们把自然语言的深度处理分成三个层次,即E、H、O,如果我们锁定不变,而其他的层次有可能变化,也有可能不变化,这样可以发现,先迁移后微调的效果最好。
还有,在目标领域我们能够让它的再生后期做自适应的学习,就是开锁的这种,效果是最好的。
这个模型也可以发展到多模态,上面的源领域是图像,下面的可以是文字,可以让它们之间有一些层次可以分享。最后得到的系统就是既可以理解一个源领域(比如图像可以转化为文字),又可以把文字转化成图像。另外还可以加入正则化,我们可以变化各种各样的正则,使得靠上层的层次之间互相靠拢。
2.传递式迁移学习
有了刚才的这些层次概念,可以将迁移学习进一步的发展。过去的迁移学习都是给一个源领域、一个目标领域,从源到迁移目标,现在我们可以多步迁移,从A到B,然后从B到C,就像石头过河一样的,这是我们最近做的工作,传递式的迁移学习。
传递式的迁移学习也可以利用深度学习的分层这个概念进行。我们右边这里有三类数据,有一个是源领域的数据,比如图像;有一个是目标领域的数据,比如说文字;中间有很多文字和图像混杂在一起的领域。一个做法就是在中间领域挑一些样本,让它更好地帮助源领域迁移到目标领域,这些就像中间石头过河一样的。
如何得到这个,在训练目标模型时就有两个数据,一个是不断地检测在目标领域的分类效果;另外一个是不断地尝试新样本,这些样本来自于中间领域和源领域,最后使整个不同的数据集之间形成一个新的数据集。
这样的一个理念在应用中也非常有用,这是斯坦福大学最近做的一项工作,是从一个图像到卫星图像区分在非洲大陆上的贫困情况,最后就发现这种传递式的迁移方法效果确实和人为地去采样、标注效果差不多,一个是0.776,一个是0.761,而它中间人为的参与大大减少,因为它用了传递的过程。
3.生成对抗网络 GAN
还有一种最近比较火的思想就是叫生成对抗网络GAN。它的思想来自两个模型交互,一个是生成模型,可以生成样板,就是右边的G模块,它一开始是非常粗糙的;还有是D模型,比较生成和真实的样本,它可以告诉你有没有被发现,生成模型生成的样本够不够好。经过它们两者之间的博弈,最后就产生了学习的跃进,使得G和D两者都得到了改进。
很多学者也用这个方法来做迁移学习,比如说给两个数据集。我们一开始并没有一个数据,并不知道这个包对应这个鞋,系统通过深度网络,可以把这个Alignment模型生成出来,根据这个模型找到一个最匹配的鞋的模型,而且是完全生成的,在原数据,鞋的数据集是没有的,就像右边这里展示的。这种也是迁移学习的概念。
Cycle GAN的思想也非常有趣,一个源领域可以迁移到一个目标领域,我们同样也应该让一个目标领域的数据、知识迁移到源领域,如果回来还能返回原来的样本,那么就是说明迁移已经学得靠谱了。就像我们拿一首唐诗到机器翻译的软件翻译成英文,然后再拿同样的软件再翻译回中文,我们大家知道往往得到像乱码一样的东西,完全回不到原来的一首诗,如果能够回到原来的诗,那翻译就靠谱了。概念也是类似的。
GAN的模型确实带来了迁移的新意,让两个领域同时做两件事。这个图表示做的两件事,绿色部分是两者共享深度学习的层次空间。如何找到这样的层次?就依靠第二件事,就是尽量找到一个区分领域的模型,我们有源领域A和目标领域B,如果有一天模型发展到我们区分不了数据来自哪个模型,那就说明共享的模型靠谱了,它就是抓住了两个领域之间的不变量,那就回到了左右开车的场景,那个不变量就找到了,这就可以用这部分做迁移。最后得到的领域,准确率最高的就是通过刚才的模型得到的。