五、迁移学习
文章目錄
- 一、遷移學(xué)習(xí)簡介
- 二、為什么要使用遷移學(xué)習(xí)
- 三、遷移學(xué)習(xí)的實現(xiàn)
- 四、遷移學(xué)習(xí)系統(tǒng)介紹
- (一)原始數(shù)據(jù)有標簽,目標數(shù)據(jù)有標簽
- 1、模型微調(diào)(model fine-tune)[也叫再優(yōu)化]
- (1)保守訓(xùn)練 Conservative Training
- (2)層遷移 Layer Transfer
- 2、多任務(wù)的學(xué)習(xí)——應(yīng)用在語音識別
- 二、原始數(shù)據(jù)有標簽,目標數(shù)據(jù)無標簽
一、遷移學(xué)習(xí)簡介
遷移學(xué)習(xí)(transfer learning)通俗來說就是找到已有知識和新知識之間的相似性,由于直接對目標開始從頭學(xué)習(xí)的成本太高,硬件要求和時間周期要求也很高,所以我們轉(zhuǎn)而利用相關(guān)知識來輔助盡快的學(xué)習(xí)新知識。
遷移學(xué)習(xí)的核心就是找到目標和已有知識之間的相似性,進而對新知識進行學(xué)習(xí)。
在遷移學(xué)習(xí)中,我們已有的知識叫做源域(source domain),要學(xué)習(xí)的新知識叫目標域(target domain)。遷移學(xué)習(xí)研究如何把源域的知識遷移到目標域上。特別地,在機器學(xué)習(xí)領(lǐng)域中,遷移學(xué)習(xí)研究如何將已有模型應(yīng)用到新的不同的、但是有一定關(guān)聯(lián)的領(lǐng)域中。傳統(tǒng)機器學(xué)習(xí)在應(yīng)對數(shù)據(jù)的分布、維度,以及模型的輸出變化等任務(wù)時,模型不夠靈活、結(jié)果不夠好,而遷移學(xué)習(xí)放松了這些假設(shè)。在數(shù)據(jù)分布、特征維度以及模型輸出變化條件下,有機地利用源域中的知識來對目標域更好地建模。另外,在有標定數(shù)據(jù)缺乏的情況下,遷移學(xué)習(xí)可以很好地利用相關(guān)領(lǐng)域有標定的數(shù)據(jù)完成數(shù)據(jù)的標定。
理論上,任何領(lǐng)域之間都可以做遷移學(xué)習(xí)。但是,如果源域和目標域之間相似度不夠,遷移結(jié)果并不會理想,出現(xiàn)所謂的負遷移情況。比如,一個人會騎自行車,就可以類比學(xué)電動車;但是如果類比著學(xué)開汽車,那就有點天方夜譚了。如何找到相似度盡可能高的源域和目標域,是整個遷移過程最重要的前提。
二、為什么要使用遷移學(xué)習(xí)
三、遷移學(xué)習(xí)的實現(xiàn)
深度學(xué)習(xí)中,最強大的理念之一就是,有時候可以從一個任務(wù)中學(xué)到知識,并將這些知識應(yīng)用到另一個獨立的任務(wù)中去。
例如你已經(jīng)訓(xùn)練好了一個神經(jīng)網(wǎng)絡(luò),可以識別出貓這樣的對象,然后使用這些學(xué)到的知識來更好的閱讀x射線掃描圖,這就是所謂的遷移學(xué)習(xí)。
假設(shè)已經(jīng)訓(xùn)練好了一個圖像識別神經(jīng)網(wǎng)絡(luò),要用該網(wǎng)絡(luò)去進行另外的工作的話,可以將最后一層輸出層替換掉,將最后一層的連接權(quán)重也刪除,然后隨機為最后一層重新賦予隨機權(quán)重,然后在新數(shù)據(jù)集上訓(xùn)練。
1、兩種訓(xùn)練方法:
如果新數(shù)據(jù)集很小,那么只需要重新訓(xùn)練最后一層的權(quán)重,也就是wL,bLw^L,b^LwL,bL,并保持其他參數(shù)不變
如果新數(shù)據(jù)將較大,可以重新訓(xùn)練網(wǎng)絡(luò)中的所有參數(shù)。
2、遷移學(xué)習(xí)的預(yù)訓(xùn)練和微調(diào):
預(yù)訓(xùn)練模型:已經(jīng)訓(xùn)練好的優(yōu)秀的模型,和你需要解決的問題有一定的相似性,比如VGG、GoogLeNet等。
- ImageNet的目標是將所有的圖像正確的劃分到1000類目錄下,這1000個分類基本上都來源于我們的日常生活,比如說貓貓狗狗的種類,各種家庭用品,日常通勤工具等等。在遷移學(xué)習(xí)中,這些預(yù)訓(xùn)練的網(wǎng)絡(luò)對于ImageNet數(shù)據(jù)集外的圖片也表現(xiàn)出了很好的泛化性能。既然預(yù)訓(xùn)練模型已經(jīng)訓(xùn)練得很好,我們就不會在短時間內(nèi)去修改過多的權(quán)重,在遷移學(xué)習(xí)中用到它的時候,往往只是進行微調(diào)(fine tune)。
微調(diào):使用已經(jīng)訓(xùn)練好的模型對目標數(shù)據(jù)進行訓(xùn)練的時候,不會修改過多的參數(shù),只是進行很少的參數(shù)調(diào)整。
微調(diào)模型有下列三種方法:
-
特征提取:將預(yù)訓(xùn)練模型當(dāng)做特征提取裝置來使用,具體做法是將輸出層去掉,然后將剩下的網(wǎng)絡(luò)當(dāng)做一個固定的特征提取機,從而應(yīng)用到新的數(shù)據(jù)集中。
-
采用預(yù)訓(xùn)練模型的結(jié)構(gòu):還可以采用預(yù)訓(xùn)練模型的結(jié)構(gòu),但是先將所有的權(quán)重隨機初始化,然后依據(jù)自己的數(shù)據(jù)集進行訓(xùn)練
-
訓(xùn)練特定層,凍結(jié)其他層:將模型起始的一些曾的權(quán)重保持不變,重新訓(xùn)練后面的層,得到新的權(quán)重,在這個過程中,可以多次進行嘗試,從而能夠依據(jù)結(jié)果找到凍結(jié)層和重新訓(xùn)練的層之間的最佳搭配。
3、微調(diào)模型不同方法的應(yīng)用場景:
- 數(shù)據(jù)集小,目標數(shù)據(jù)和預(yù)訓(xùn)練模型的數(shù)據(jù)相似度高:
該情況不用重新訓(xùn)練模型,只需要將輸出層改成符合問題情景下的輸出結(jié)構(gòu)即可,使用預(yù)處理模型作為模式提取器。
比如說我們使用在ImageNet上訓(xùn)練的模型來辨認一組新照片中的小貓小狗。在這里,需要被辨認的圖片與ImageNet庫中的圖片類似,但是我們的輸出結(jié)果中只需要兩項——貓或者狗。在這個例子中,我們需要做的就是把dense layer和最終softmax layer的輸出從1000個類別改為2個類別。
- 數(shù)據(jù)集小,數(shù)據(jù)相似度不高:
該情況下我們可以凍結(jié)預(yù)訓(xùn)練模型中的前k個層中的權(quán)重,然后重新訓(xùn)練后面的n-k個層,當(dāng)然最后一層也需要根據(jù)相應(yīng)的輸出格式來進行修改。
因為數(shù)據(jù)的相似度不高,重新訓(xùn)練的過程就非常關(guān)鍵,而新數(shù)據(jù)將的大小不足,則是通過凍結(jié)預(yù)訓(xùn)練模型的前k層進行彌補。
為什么凍結(jié)前k層:前幾層的網(wǎng)絡(luò)捕獲的是邊緣、輪廓等普遍的特征,這些特征和很多問題都是相關(guān)的,所以可以保持前面的權(quán)重不變,讓網(wǎng)絡(luò)在學(xué)習(xí)的過程中重點關(guān)注后面的特有的特征,從而對后面的網(wǎng)絡(luò)進行參數(shù)的學(xué)習(xí)。
- 數(shù)據(jù)集大,數(shù)據(jù)相似度不高
該情況我們有一個很大的數(shù)據(jù)集,所以神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程會比較有效率,然鵝實際數(shù)據(jù)和預(yù)訓(xùn)練模型的訓(xùn)練數(shù)據(jù)之間有很大的差異,采用預(yù)訓(xùn)練模型不會是一種很高效的方法。
因此最好的方法還是通過將預(yù)訓(xùn)練模型中的權(quán)重全部初始化后的新數(shù)據(jù)集的基礎(chǔ)上重頭開始訓(xùn)練。
- 數(shù)據(jù)集大,數(shù)據(jù)相似度高
該情況是最理想的情況,采用預(yù)訓(xùn)練模型會變得很高效,最好的運用方式是保持模型原有的結(jié)構(gòu)和初始權(quán)重不變,隨后在新數(shù)據(jù)集的基礎(chǔ)上重新訓(xùn)練。
4、為什么遷移學(xué)習(xí)會有好的效果:
從類似于ImageNet的龐大的圖像庫中學(xué)習(xí)到了很多結(jié)構(gòu)信息、圖像的形狀信息等等,這些東西很有用且有較好的魯棒性,訓(xùn)練好的參數(shù)代表提取不同特征的模板,所以訓(xùn)練好的模型相當(dāng)于可以提取不同種類特征的特征提取器,我們只需要將新樣本輸入,就可以獲得有效的特征。
四、遷移學(xué)習(xí)系統(tǒng)介紹
當(dāng)前的任務(wù)和已有模型可能有某種關(guān)聯(lián),如果自己訓(xùn)練網(wǎng)絡(luò)的話,訓(xùn)練過程很漫長,并且數(shù)據(jù)集不夠大,利用已有的模型可以快速收斂到較好的效果。
前提:保證原本的任務(wù)和當(dāng)前任務(wù)有聯(lián)系
為什么需要遷移學(xué)習(xí):
深度學(xué)習(xí)需要大量的數(shù)據(jù),來學(xué)到本質(zhì)的規(guī)律,遷移學(xué)習(xí)將在一個領(lǐng)域中已經(jīng)學(xué)習(xí)到的能力拿來處理另外一個領(lǐng)域的問題。
<img src =“https://img-blog.csdn.net/20180903215425920?",width=80%,alt=”"/>
工業(yè)界的有監(jiān)督學(xué)習(xí)用的最多,也最有效,無監(jiān)督學(xué)習(xí)做一個輔助作用,遷移學(xué)習(xí)是由很大的的發(fā)展空間。
(一)原始數(shù)據(jù)有標簽,目標數(shù)據(jù)有標簽
1、模型微調(diào)(model fine-tune)[也叫再優(yōu)化]
<img src =“https://img-blog.csdn.net/20180903220054516?",width=70%,alt=”"/>
無法利用自己的小樣本數(shù)據(jù)集去訓(xùn)練,肯定會過擬合,所以借用已有的模型在我們的數(shù)據(jù)集上做一個調(diào)優(yōu),但也可能會出現(xiàn)過擬合,因為已有的ImageNet網(wǎng)絡(luò)能力太強了,新的數(shù)據(jù)效果沒有那么好。
(1)保守訓(xùn)練 Conservative Training
原本大的數(shù)據(jù)集訓(xùn)練得到的GoogLeNet,能力很強大,如果放任它去學(xué)習(xí)我們小樣本數(shù)據(jù)集,肯定會過擬合,給了參數(shù)太大的自由空間,模型功能太強大,但是已經(jīng)過擬合了。
**如何去控制過擬合:**因為原本的模型是泛化能力很好的模型,所以新的模型可以允許參數(shù)在原來的基礎(chǔ)上做微小的變動,也就是兩個數(shù)據(jù)集上得到的模型參數(shù)很接近,可以將正則化模型變?yōu)?span id="ze8trgl8bvbq" class="katex--inline">∑∣∣wi′?wi∣∣\sum ||w_i'-w_i||∑∣∣wi′??wi?∣∣,也就是將“新參數(shù)-原參數(shù)”的差作為正則項,約束參數(shù)在原始基礎(chǔ)上的變化。
<img src=“https://img-blog.csdn.net/20180903221955284?",width=60%,alt=”"/>
(2)層遷移 Layer Transfer
<img src=“https://img-blog.csdn.net/20180903222106419?",width=60%,alt=”"/>
如果數(shù)據(jù)量很小:固定前面幾層,將其學(xué)習(xí)率調(diào)為0,只訓(xùn)練剩下的后面的層,可以調(diào)整的參數(shù)變少了,學(xué)習(xí)受到了限制,會避免過擬合。
數(shù)據(jù)量足夠大:可以將前面的學(xué)習(xí)率調(diào)的小一些,不是直接置為0,可以置為0.001等,訓(xùn)練整個網(wǎng)絡(luò),但是還是不要給太大的自由度。
如果選擇固定那些層:
- 圖像:固定開始的層
圖像是從底層開始學(xué)的,前面的層通常提取的是底層特征,比如邊緣等,最后的層是底層特征的組合,所以我們將之前的層固定住,對后面的有分類作用的層進行優(yōu)化。
- 語音:通常是最后一些層
每個人都有不同的發(fā)聲方式,根據(jù)語音識別得到文本,通過前面的層對不同人的發(fā)聲做一個抽象,說話的內(nèi)容都是由基本單元組成的,但是每個人發(fā)出的基本單元是不同的,通過音素來組成最后的話的過程是一樣的。
2、多任務(wù)的學(xué)習(xí)——應(yīng)用在語音識別
(1)在做遷移學(xué)習(xí)的時候,保證在原來的任務(wù)上效果不會太差,但是肯定不是用同一個網(wǎng)絡(luò),所以會造出來一個組合網(wǎng)絡(luò),共用前面的幾個層的參數(shù),前面幾層是捕捉兩個任務(wù)的共性。
(2)前面的層抽取不同的卡通/真實圖像的特征,兩個數(shù)據(jù)形態(tài)是由一定差距的,中間的一層是共用的,
<img src=“https://img-blog.csdn.net/20180904084455285?",width=60%,alt=”"/>
不同的語種的人類語言的共性學(xué)習(xí)出來,后面的階段再區(qū)分不同語種的文本表達。
<img src=“https://img-blog.csdn.net/20180904085323873?",width=60%,alt=”"/>
二、原始數(shù)據(jù)有標簽,目標數(shù)據(jù)無標簽
<img src=“https://img-blog.csdn.net/20180904091425753?",width=60%,alt=”"/>
源數(shù)據(jù)黑白分明很干凈,目標數(shù)據(jù)是彩色且有干擾背景的無標簽的。
可視化之后,不同的數(shù)字被投影到不同的區(qū)域,也就是映射為不同的特征了,前面的綠色是特征抽取的過程,MNIST-M被分類后都集中在一塊,分類效果很差。
<img src=“https://img-blog.csdn.net/20180904092027372?",width=60%,alt=”"/>
1、域?qū)?/strong>
域?qū)?#xff1a;兩個數(shù)據(jù)集是兩個不同的類,域?qū)棺龅氖虑椴皇菂^(qū)分1,2,3,而是區(qū)分這個數(shù)據(jù)來源于MNIST還是MNIST-M,也就是這個通用的方法將域的信息去掉了,不關(guān)心其來源于那個域,只要判斷它是1,2,3即可。
左邊的綠色區(qū)域抽特征,同時要滿足:
-
可以抽取到不同類別數(shù)字的特征
-
區(qū)別不出來來源于哪個domain
上面的分支訓(xùn)練的時候只用MNIST,因為它有標簽,
2、零樣本學(xué)習(xí):
通過屬性來表征類,所以現(xiàn)在不直接用來識別貓、狗、兔子,而是通過它們的屬性,再查找屬性表來表征它們可能屬于某個類。
總結(jié)
- 上一篇: 苹果笔一代和二代区别有哪些
- 下一篇: 密室逃脱24第5关怎么玩