迁移学习应用(二)

今天我们继续来介绍和梳理一些和迁移学习相关的内容,先来介绍几个在一个台湾大学ML课程学到的几个模型。
第一个模型的任务描述下:
s o u r c e d a t a = ( x s , y s )
t a r g e t d a t a = ( x t )
t a s k ( s o u r c e ) = t a s k ( t a r g e t )
简单而言,就是source data是由标注的数据,但是target数据确没有标注,但是source data和target data对应的是同样的任务,比方说都是把图片中的数字识别到1-10,都是把一段文本的情感信息分为正向和负向。如果直接用source data训练出模型运用在target data上,由于source data和target data又不属于同一分布,效果肯定非常的烂,如下图所示:
这里写图片描述

以图像识别为例,source data就是图中的黑白底色的数字识别问题,target data就是图中的彩色底色的数字识别问题。从图中可以清楚的看出,整个网络分为两个部分:1 特征提取层(绿色部分);2 分类识别部分(蓝色部分)。如果按照source data的 ( x s , y s ) 进行训练,那么特征提取层提取到的数据在target data和source data上的分布如图中的蓝色点和红色点那样,从中可以看出红点和蓝色的分布是有显著差异的(蓝点指的是source data的,红点指的是target data的,蓝点在特征提取部分就被很好的聚成了10簇),因此我们的思路就是如何让特征提取部分把source data和target data映射到同一分布上去,这样后面的分类识别部分的参数就可以直接迁移到target data上用了。具体的策略如下所示:
这里写图片描述
可以看出相对于上图,增加了红色的部分,这部分叫做domain classifier,它是用来区分target data和source data的。之所以这个网络叫做Domain-adversarial ,是因为feature extractor部分是为了让source和target数据尽量混在一起,而domain classifier是为了尽量区分target data和source data,这两个部分互相对抗,让彼此之间都越来越强(和GAN的思想非常类似),我们最后需要的就是feature extractor,这样source data就和target data完美的混合在了一起,这样训练出的label classifier就能很好的迁移到target任务中去。可以看出,整个网络各个部分都有不同的功能、不同的目标,就像老师说的“各怀鬼胎”,具体来说整个网络如何训练,采用了gradient reversal layer技术,如下所示:
这里写图片描述
其实就是在domain classifier部分进行梯度误差传播的时候,到了feature extractor部分就将从domain classifier传过来的梯度取反,这样feature extractor和domain classifier就拥有了相反的优化目标:domain classifier是拼命区分source data和target data,feature拼命混淆source data和target data,同时feature extractor还要保证抽取出的特征还要能够给label classifier 正确分类,这样就能够利仅仅利用有标注的source data来训练出适合在target data上运行的模型。

课程上说其实这样的网络训练起来并不容易,因为网络最终目标是要训练出的feature extractor要打败domain classifier,一开始的时候还要让domain classifier保持一定的“战斗力”,这样对手的强大才能把feature extractor的性能逼到极限,即让domain classifier“分离挣扎”后再死(你只有打败更强的对手,才能使自己的实力达到最强)。如果一开始domain classifier就很弱,一上来就被“干死”,恐怕也很难训练出高混淆性能的feature extractor。

第二个模型任务如下:
s o u r c e d a t a = ( x s , y s )
t a r g e t d a t a = ( x t )
t a s k ( s o u r c e ) != t a s k ( t a r g e t )
和第一个模型任务一样的是第二个模型面对的source data也是有标注的,target data也是无标注的,但是不同的是第二个模型面对的场景是source data和target data拥有不同的task,比方说source data数据是区分狗和猫,但是target data则是区分狮子和老虎,由于任务空间即 y i 都不一样了,直接对source data进行训练其实意义并不大,所以这个时候要对原始的问题进行一些巧妙的转换,一种转换方式如下:
这里写图片描述
简单来说,就是把直接对于类别的预测和判断,转换到对属性的预测和判断中来,虽然 s p a c e s p a c e 不一致,但是所有动物都可按照属性进行划分,比方说:是否有尾巴,是几条腿,毛皮的颜色等,这样虽然对于未知的类别分类器无法直接判断,起码我可以知道这个未知的类别拥有怎样的属性特征。
这里写图片描述
当然定义那些合适的反应动物的属性特征是需要一定的专家知识,如果我们没有这样的知识,就可以借助从大规模语料中训练出的词向量信息,比方说狗的属性信息就可以从“狗”词对应的word embedding中反映出来,图中x代表的就是待识别的图片信息,y代表的就是word embedding信息,当然这两个信息属于不同的空间,需要 f ( x ) g ( x ) 来将它们分别映射到同一空间,那么如何来学习 f ( x ) g ( x ) ,其优化形式如下:
f , g = a r g m i n f , g n m a x ( 0 , k f ( x n ) g ( y n ) + m a x m ! = n f ( x n ) g ( y m ) )
也就是让映射不但具有相同含义的 f ( x ) g ( x ) 之间的距离尽可能的近,而且要让不同含义的 f ( x ) g ( x ) 距离尽可能的远。这样来一个新图片的时候,可以将其映射到统一空间中去,看其和哪个词向量映射后的距离更近,就认为其属于哪一个类型。

第三个要讲的是一篇2017年ACL的一篇paper《Cross-lingual Distillation for Text Classification》,跨语言的文本分类模型。其实从本质上来看,这个模型和第一部分介绍的情况是非常类似的,也是source data有label,target data没有label,而这里的source data指的是英文,target data指的是中文。
首先,任务描述如下:我们有一批标注好的英文数据集(比方说按照情感倾向进行标注),一批无标注的英文数据集以及对应翻译的中文数据集,一批需要test的中文数据集,即对中文数据进行情感倾向判断,需要从英文标注的数据集中学习规律,运用到中文数据集中去。
整个网络的学习策略如下:
1 类比第一部分讲的feature extractor-domain classifier对抗模式,在英文有标注和无标注数据集中训练出模型A;
2 将A模型对英文无标注数据进行soft预测,并对其对应的中文翻译打label;
3 同样使用第一部分讲的feature extractor-domain classifier对抗模式,对中文有标注(在对中文训练的时候,采用的是soft的方式)和中文test进行训练,并最终对test预测结果。
这里首先说一下提到的soft预测,soft的方式,这个soft到底指的是什么,公式如下所示:
p i = e x p ( q i / T ) k = 1 | V | e x p ( q k / T )
和普通的softmax相比,这个soft的方式就是都除了一个T,相当于放缩了一下,增加了平滑度。在这篇paper提出的模型中,实验部分的feature extractor使用的是CNN(其他的网络结构比方说RNN也同样适用)

猜你喜欢

转载自blog.csdn.net/guoyuhaoaaa/article/details/80845486
今日推荐