1. 程式人生 > >遷移學習與fine-tuning有什麼區別

遷移學習與fine-tuning有什麼區別

遷移學習,個人感覺是一種思想吧,並不是一種特定的演算法或者模型,目的是將已學習到的知識應用到其他領域,提高在目標領域上的效能,比如說一個通用的語音模型遷移到某個人的語音識別,一個ImageNet上的圖片分類問題遷移到醫療疾病識別上。

作為知識的搬運工,下面的內容就要開始盜圖大法了,臺大李巨集毅老師的slides,一個能把ML&DL講成笑話的男人,非常推薦:

1. 首先,回答第一個問題?Why Transfer Learning?

遷移大法好,無論是語音、圖片,還是文字處理,都有遷移學習的應用場景和例項,藉助現有學習到的知識,能夠很好的解決目標問題;


<img src="https://pic2.zhimg.com/50/v2-7c4ae21abed8ef8acf67190921a4586a_hd.jpg" data-rawwidth="1410" data-rawheight="1024" class="origin_image zh-lightbox-thumb" width="1410" data-original="https://pic2.zhimg.com/v2-7c4ae21abed8ef8acf67190921a4586a_r.jpg">

2. 回答正題,fine tune和Transfer Learning的關係(經典技法之一吧,適用在source和target中都有標籤資料集的情形)

李巨集毅老師按照源問題資料集和目標問題資料集是否有標籤,可以像下圖這樣劃分,方格中是典型的方法技巧,當然這種分類的標準有很多,像楊強老師早在08年的Trasfer Learning Survey中,就按照domain和task的劃分方法,又進一步區分了instance transfer,feature transfer,parameter transfer,knowledge transfer;


<img src="https://pic2.zhimg.com/50/v2-fcaf713f373f3f993829249c1041059f_hd.jpg" data-rawwidth="1406" data-rawheight="990" class="origin_image zh-lightbox-thumb" width="1406" data-original="https://pic2.zhimg.com/v2-fcaf713f373f3f993829249c1041059f_r.jpg">

3. 具體聊一聊fine tune吧,應用情景是我們在target上有少量的label data,如何有效利用這部分label data,而且還不過擬合呢,我們以NN的角度為例,在原問題中學習到的NN,我們在target上採用保守學習的方式,比如讓target和source上的輸出儘可能相近,神經網路中間的引數儘可能相近,或者tune的時候,只tune某幾層,其他層的引數不發生變化;


<img src="https://pic3.zhimg.com/50/v2-b74a86fc76cd60e0cc2554d760677e91_hd.jpg" data-rawwidth="1370" data-rawheight="998" class="origin_image zh-lightbox-thumb" width="1370" data-original="https://pic3.zhimg.com/v2-b74a86fc76cd60e0cc2554d760677e91_r.jpg">

<img src="https://pic3.zhimg.com/50/v2-26cf67b53ad6dac55c75b989e28c3f73_hd.jpg" data-rawwidth="1440" data-rawheight="984" class="origin_image zh-lightbox-thumb" width="1440" data-original="https://pic3.zhimg.com/v2-26cf67b53ad6dac55c75b989e28c3f73_r.jpg">

4. 不同領域的問題,在NN上fine tune的經驗也不同,語音識別領域一般tune前幾層,圖片識別問題tune後面幾層(背後的哲學,還請大神指點了);

5. 最後舉一下遷移學習中的其他技巧吧,比如multi-task learning,怎麼說呢?multi-task學習的哲學是同時學,transfer learning的思想是先學習source,在學習target。但技巧還是可以應用的,比如ACL 2015的工作,同時進行多語音的語音識別,效果會好於單獨一種語言的識別效果,底層共享神經元,學習到通用特徵:


<img src="https://pic3.zhimg.com/50/v2-392ce77b235c80df5baa67e71aa0b506_hd.jpg" data-rawwidth="1462" data-rawheight="1046" class="origin_image zh-lightbox-thumb" width="1462" data-original="https://pic3.zhimg.com/v2-392ce77b235c80df5baa67e71aa0b506_r.jpg">

6. Transfer Learning中的其他技巧也都蠻有意思的,比如domain adversarial training,對抗的思想有點像GAN,通過source domain和target domain的資料投影到同一個空間內,再進行學習;

推薦材料: