Lecture 15:Transfer Learning

Model Fine-tuning

假设我们有很多的source data $(x^s,y^s )$,与任务相关的target data $(x^t,y^t )$ 很少。
我们利用source data训练一个模型,然后用target data来fine tune模型。

conservative training

我们可以用source data训练好的模型的weight作为新的模型的weight,然后设定一些限制,比如source data作为输入的output应和target data作为输入的output尽量相似,或者参数尽量相似等。

layer transfer

也就是新模型有几层是直接copy旧模型的,只训练其它层。注意到不同任务所应copy的层是不同的,语音任务最后几层效果好,图像识别前面几层效果好

Multitask Learning

不同任务之间共享相同的中间层,如:

还有一种progressive neural networks:

首先训练好第一个任务的模型,然后在训练第二个模型的时候将第一个模型的隐层加入到第二个模型的隐层中;训练第三个模型则将第二个和第一个模型的隐层加入到第三个模型的隐层中,以此类推

Domain-adversarial training

source data是有标签的,而target data是无标签的,都属于同一个任务,但数据是mismatch的,如:

因为NN的隐层可以理解成是在抽取图像的特征,我们希望能够在训练NN的过程中去掉source data的一些domain specific的特性,这样就可以用在target data上了。因此我们在feature exactor后面连接两个模块:

一方面我们希望抽取的特征能够使得分类器正确地分类,另一方面我们希望这些特征能够让domain classifier能够无法识别特征是从哪些data抽取得到的,这样得到的特征就是被去掉domain specific特征的。

具体训练:

Zero-shot Learning

source data有标签,target data无标签,但任务不同,如:

Representing each class by its attributes

一种方法是将每一个类都用特征表示,但特征要足够丰富:

在训练的时候,输入是图片,输出则是这些特征:

这样在将target data放入训练好的NN后也会得到一个这样的attribute,查表即可找到最相似的特征对应的类。

Attribute embedding

如果特征维度太高,也可以将特征压缩成一个向量表示,这样在训练的时候,输出则是这样的向量特征,输入target data,输出向量特征,找到最近的特征对应的类即可

Attribute embedding + word embedding

如果没有attribute数据,利用word embedding也可以达到不错的效果。
在zero-shot learning中,光是让相同类的f和g相似是不够的,还应该让不同的f和g尽量远。