【深度學(xué)習(xí)系列】遷移學(xué)習(xí)Transfer Learning
在前面的文章中,我們通常是拿到一個(gè)任務(wù),譬如圖像分類、識別等,搜集好數(shù)據(jù)后就開始直接用模型進(jìn)行訓(xùn)練,但是現(xiàn)實(shí)情況中,由于設(shè)備的局限性、時(shí)間的緊迫性等導(dǎo)致我們無法從頭開始訓(xùn)練,迭代一兩百萬次來收斂模型,所以這個(gè)時(shí)候遷移學(xué)習(xí)就派上用場了。
什么是遷移學(xué)習(xí)?
為什么需要遷移學(xué)習(xí)?
- 滿足深度學(xué)習(xí)訓(xùn)練數(shù)據(jù)量的數(shù)據(jù)太少。對于一個(gè)機(jī)器學(xué)習(xí)的任務(wù),譬如分類,如果數(shù)據(jù)量過小,我們是否一定要上深度學(xué)習(xí)呢?其實(shí)不必然。如果在實(shí)際的生產(chǎn)過程中,能夠用規(guī)則就能得到好的效果的就用規(guī)則,能夠用簡單的模型就用簡單的模型,我們常聽到的“奧卡姆剃刀”其實(shí)就是這個(gè)意思,減少模型的復(fù)雜度,能夠從某種程度上避免過擬合的情況。那么對于小量數(shù)據(jù)集,沒有必要一定需要用深度學(xué)習(xí)的方法來做。同樣,如果要對一個(gè)新任務(wù)分類,或者識別,搜集不了大量的正負(fù)樣本,怎么訓(xùn)練呢?
-
新數(shù)據(jù)集相比于原數(shù)據(jù)集更小但內(nèi)容很不相同。由于數(shù)據(jù)較小,只訓(xùn)練一個(gè)線性分類器可能更好。因?yàn)閿?shù)據(jù)集不同,從網(wǎng)絡(luò)頂部就開始訓(xùn)練分類器可能不是***的選擇,這包含更多的數(shù)據(jù)集特定特征。另外,從網(wǎng)絡(luò)前部的激活函數(shù)開始訓(xùn)練分類器可能更好一點(diǎn)。
-
新數(shù)據(jù)集相比于原數(shù)據(jù)集較大,但內(nèi)容非常不同。由于數(shù)據(jù)集很大,我們可能會期望從頭開始訓(xùn)練一個(gè) DCNN。然而,在實(shí)踐中從一個(gè)預(yù)訓(xùn)練模型開始初始化權(quán)重仍然是一種有益的方法。在這種情況下,我們會有足夠的數(shù)據(jù)和信心對整個(gè)網(wǎng)絡(luò)進(jìn)行微調(diào)。
如何做遷移學(xué)習(xí)?
在實(shí)踐中,我們通常不會完全從頭開始隨機(jī)初始化訓(xùn)練 DCNN,這是因?yàn)橛心軡M足深度網(wǎng)絡(luò)需求的足夠大小的數(shù)據(jù)集相當(dāng)?shù)纳僖?。作為代替,常見的是在一個(gè)大型數(shù)據(jù)集上預(yù)訓(xùn)練一個(gè) DCNN,然后使用這一訓(xùn)練的 DCNN 的權(quán)重作為初始設(shè)置或作為相關(guān)任務(wù)的固定的特征提取器。 舉個(gè)例子,我們知道Imagnet是目前***的圖像識別數(shù)據(jù)庫,目前已經(jīng)有很多基于imagenet數(shù)據(jù)訓(xùn)練的網(wǎng)絡(luò)模型,如inceptionv3、v4等,假如現(xiàn)在給你一個(gè)任務(wù),希望你能做一個(gè)車系識別,你有兩個(gè)選擇:
一是搜集大量的車系數(shù)據(jù),對這些車系數(shù)據(jù)進(jìn)行模型訓(xùn)練;
二是基于imagenet訓(xùn)練好的網(wǎng)絡(luò)模型,然后把搜集好的車系數(shù)據(jù)加到基于之前訓(xùn)練好的模型繼續(xù)訓(xùn)練,進(jìn)行fine-tuning。
傳統(tǒng)的做法都是***種,但是這就會遇到一個(gè)問題,一是車系的圖片夠不夠多,體量夠不夠大?如果數(shù)據(jù)量不夠,***訓(xùn)練的效果會不會很不好?其實(shí)我們可以通過 把ImageNet 或其他大型數(shù)據(jù)集學(xué)習(xí)到的網(wǎng)絡(luò)特征運(yùn)用于一個(gè)圖片分類或其他基于圖片特征的任務(wù),這就是遷移學(xué)習(xí)的思想。其實(shí)可以這樣理解,如果從零開始訓(xùn)練,那么初始化權(quán)重一般情況下要么是都為0,要么隨機(jī)設(shè)置,當(dāng)我們導(dǎo)入了在大規(guī)模數(shù)據(jù)集上訓(xùn)練好的模型后,相當(dāng)于在以這個(gè)模型現(xiàn)有的參數(shù)作為初始化的權(quán)重,不過至于在具體的任務(wù)上的泛化能力如何,還是得看具體的場景。
遷移學(xué)習(xí)的限制
上文提到我們在遷移學(xué)習(xí)中會使用預(yù)訓(xùn)練的網(wǎng)絡(luò),所以我們在模型架構(gòu)方面受到了一點(diǎn)點(diǎn)限制。比如說,我們不能隨意移除預(yù)訓(xùn)練網(wǎng)絡(luò)中的卷積層。但由于參數(shù)共享的關(guān)系,我們可以很輕松地在不同空間尺寸的圖像上運(yùn)行一個(gè)預(yù)訓(xùn)練網(wǎng)絡(luò)。這在卷積層和池化層和情況下是顯而易見的,因?yàn)樗鼈兊那跋蚝瘮?shù)(forward function)獨(dú)立于輸入內(nèi)容的空間尺寸。在全連接層(FC)的情形中,這仍然成立,因?yàn)槿B接層可被轉(zhuǎn)化成一個(gè)卷積層。所以當(dāng)我們導(dǎo)入一個(gè)預(yù)訓(xùn)練的模型時(shí),網(wǎng)絡(luò)結(jié)構(gòu)需要與預(yù)訓(xùn)練的網(wǎng)絡(luò)結(jié)構(gòu)相同,然后再針對特定的場景和任務(wù)進(jìn)行訓(xùn)練。
遷移學(xué)習(xí)的相關(guān)資料
對遷移學(xué)習(xí)感興趣的同學(xué),可以關(guān)注這個(gè)github repo:transferlearning,以及王晉東寫的系列文章:
《小王愛遷移》系列之零:遷移學(xué)習(xí)領(lǐng)域著名學(xué)者和研究機(jī)構(gòu)
《小王愛遷移》系列之二:聯(lián)合分布適配(JDA)方法簡介
《小王愛遷移》系列之三:深度神經(jīng)網(wǎng)絡(luò)的可遷移性
《小王愛遷移》系列之四:深度適配網(wǎng)絡(luò)(DAN)
《小王愛遷移》系列之六:學(xué)習(xí)遷移(Learning To Transfer)
《小王愛遷移》系列之七:負(fù)遷移(Negative Transfer)
《小王愛遷移》系列之八:深度遷移學(xué)習(xí)文章解讀
《小王愛遷移》系列之九:開放集遷移學(xué)習(xí)(Open Set Domain Adaptation)
《小王愛遷移》系列之十:張量遷移學(xué)習(xí)(tensor unsupervised domain adaptation)
《小王愛遷移》系列之十一:選擇性對抗遷移學(xué)習(xí)(Selective Adversarial Network)
《小王愛遷移》系列之十二:新年新氣象-重新整理的遷移學(xué)習(xí)資源倉庫
參考資料:
1.https://zhuanlan.zhihu.com/p/33369085
2.http://blog.csdn.net/maweifei/article/details/52444342