迁移学习
-
目标
将某个领域或任务上学习到的知识或模式应用到不同但相关的领域或问题中。 -
主要思想
从相关领域中迁移标注数据或者知识结构、完成或改进目标领域或任务的学习效果。
概述
- Target data:和你的任务有直接关系的数据,但数据量少;
- Source data:和你现在的任务没有直接关系的数据,数据量多。
按照是否有标签分为四类:
第一类迁移学习
target data和source data都是有标签,可分为模型的微调(Fine-tuning),和多任务学习(Multitask Learning)。
预训练微调 Fine-tuning
微调加速收敛,但是不一定对精度有提升
-
编码器:提取特征
-
解码器:分类
-
微调方法:
- 初始模型权重不随机,解码器随机初始
- 为保证泛化能力:
较小学习率
训练时间不要太长
- 冻结层:
- 底层学的是像素底层特征,上层学的语义相关,根据预训练模型情况冻结对应的层,图片一般冻结前面几层,声音则是冻结后面几层
多任务学习 Multitask Learning
同时关注两个域上的结果,设任务A和任务B可以共用同一组输入特征,它们前面几层是共用的,但是在某个隐藏层会产生两个分支,一条产生的是任务A的分支,另一条是任务B的。
两个模型一起训练,某几层特征可以:共用,例如:多国语言,翻译
第二类迁移学习
source data有标签,target data无标签的情况
* 领域对抗性训练(Domain Adversarial Training)
和生成对抗网络相比,域适应问题免去了生成样本的过程,直接将目标域中的数据看作生成的样本。因此,生成器的目的发生了变化,不再是生成样本,而是扮演了一个特征提取(feature extractor)的功能:如何从源域和目标域中提取特征,使得判别器无法区分提取的特征是来自源域,还是目标?
- DANN 域对抗迁移网络
DANN结构主要包含3个部分:
- 特征提取器 (feature extractor) - 图示绿色部分,用来将数据映射到特定的特征空间,使标签预测器能够分辨出来自源域数据的类别的同时,域判别器无法区分数据来自哪个域。
- 标签预测器 (label predictor) - 图示蓝色部分,对来自源域的数据进行分类,尽可能分出正确的标签。
- 域判别器(domain classifier)- 图示红色部分,对特征空间的数据进行分类,尽可能分出数据来自哪个域。
零次学习(Zero-shot Learning)
零次学习(Zero-shot Learning)说的是source data和target data它们的任务都不相同。
语音识别一直都有训练数据(source data)和测试数据(target data)是不同任务的问题。 很有可能在测试数据中出现的词汇,在训练数据中从来没有出现过。语音识别在处理这个问题的时候,做法是找出比词汇更小的单位。通常语音识别都是拿音位(phoneme,可以理解为音标)做为单位。
如果把词汇都转成音位,在识别的时候只去识别音位,然后再把音位转换为词汇的话就可以解决训练数据和测试数据不一样的问题。
第三类迁移学习
自我学习
自我学习(Self-taught learning)其实和半监督学习很像,都是有少量的有标签数据,和非常多的无标签数据。但是与半监督学习有个很大的不同是,有标签数据可能和无标签数据是没有关系的。
第四类迁移学习
自学成簇
如果target data和source data都是无标签的话,可以用Self-taught Clustering来做。
可以用无标签的source data,可以学出一个较好的特征表示,再用这个较好的特征表示用在聚类上,就可以得到较好的结果。