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(屬性)
具體如何訓練