Transfer Learning
1、什么是迁移学习
2、如何实现迁移学习
1)source有label,target有label
一、model fine-tuning(模型微调)
方法一、conservative training(保守训练)
方法二、layer transfer(层迁移)
二、Multitask Learning(所任务学习)
2)source有label,target无label
一、Domain-Adversial training (领域对抗训练)
二、zero-shot-learning(零样本学习)
1、什么是迁移学习
迁移学习适用于:训练数据中,
- target data:相关的数据,很少
- source data:不直接相关的,很多
迁移学习两大任务:
- source data是相似的领域,要做不同的任务
- source data是不同的领域,要做相同的任务
比如说,现在要做猫狗分类:
- source data是一些大象和老虎(动物领域),用训练大象老虎分类的模型去识别猫狗
- source data是一些卡通的猫和狗(不同领域),用卡通猫狗的训练模型去识别target data的猫狗
2、如何实现迁移学习
1)source有label,target有label
一、model fine-tuning(模型微调)
思想:用source data去训练好模型,再用target data微调模型
方法一、conservative training(保守训练)
如果你直接拿这些去train的话就坏掉了。你可以在training的时候加一些限制(正则化),让新的model跟旧的model不要差太多
方法二、layer transfer(层迁移)
把source data训练好的模型的其中几层直接copy,用target data 训练剩下没copy的层即可
复制哪些层是有讲究的:
语音识别中:一般迁移后几层,因为后几层可能做的是根据人的发音方式做识别;
图像识别中:一般迁移前几层,因为前几层做的事情可能就是一些直线、曲线等通用图形。
二、Multitask Learning(所任务学习)
多任务学习跟fine tuning不同是:在fine tuning里面我们care target domain做的好不好,那在多任务学习里面我们同时care target domain跟source domain做的好不好
2)source有label,target无label
一、Domain-Adversial training (领域对抗训练)
比如现在要做不同领域,相同任务的事情 :
思想:既然是不同领域,那么就减少不同领域的特征差异
把一个neural network当做feature extract,neural network前面几层我们可以看做是抽feature,后面几层可以看做classification
Domain-Adversial training网络结构:
蓝色label predictor:做的事情是把class分类做的正确率越高越好,
红色domain classifier:做的事情是想正确predict image是属于哪个domain。
绿色feature extractor:想要做的事情是:要同时improve label predictor,同时想要minimize domain classifier accuracy
二、zero-shot-learning(零样本学习)
比如现在要做的事情是:用相同领域数据,做不同的任务
思想:找到相同领域数据中更小的attribute(属性)
具体如何训练