一種深度學(xué)習(xí)方法---遷移學(xué)習(xí)了解下
點(diǎn)擊下方卡片,關(guān)注“新機(jī)器視覺”公眾號(hào)
重磅干貨,第一時(shí)間送達(dá)
作者:王抒偉
來源:機(jī)器學(xué)習(xí)算法工程師
接下來我會(huì)介紹關(guān)于遷移學(xué)習(xí)的以下內(nèi)容。
它是什么?
它是如何工作的?
為什么使用它?
什么時(shí)候使用?
轉(zhuǎn)移學(xué)習(xí)的方法:
訓(xùn)練模型;
使用預(yù)先訓(xùn)練的模型;
和特征提取
總結(jié):
進(jìn)一步閱讀
1. 什么是遷移學(xué)習(xí)?
遷移學(xué)習(xí):遇到一個(gè)新問題,不是從頭訓(xùn)練一個(gè)網(wǎng)絡(luò)模型,而是在現(xiàn)有的預(yù)訓(xùn)練模型上,再次訓(xùn)練或者直接使用。
因?yàn)樗梢杂幂^少的數(shù)據(jù)來訓(xùn)練深度神經(jīng)網(wǎng)絡(luò),如果你數(shù)據(jù)不足,可以考慮下遷移學(xué)習(xí)。現(xiàn)在大多數(shù)問題通常沒有數(shù)百萬個(gè)標(biāo)記數(shù)據(jù)點(diǎn)是無法訓(xùn)練出一個(gè)商用模型的。

如果你訓(xùn)練了一個(gè)簡單的分類器來預(yù)測(cè)圖像是否包含背包,則可以利用模型在訓(xùn)練中獲得的“知識(shí)”(其實(shí)就是網(wǎng)絡(luò)權(quán)重)來識(shí)別其他物體,例如太陽鏡。
通過轉(zhuǎn)移學(xué)習(xí),我們基本上嘗試?yán)迷谝豁?xiàng)任務(wù)中學(xué)到的知識(shí)來提高另一項(xiàng)任務(wù)的泛化性??梢詫⒕W(wǎng)絡(luò)從“任務(wù)A”中學(xué)到的權(quán)重遷移到新的“任務(wù)B”。
這就是遷移學(xué)習(xí)。

由于一個(gè)模型的商用需要大量的計(jì)算能力,因此遷移學(xué)習(xí)主要用于計(jì)算機(jī)視覺CV和自然語言處理任務(wù)NLP(如情感分析)中。
遷移學(xué)習(xí)不算是一種機(jī)器學(xué)習(xí)技術(shù),但可以看作是該領(lǐng)域的“設(shè)計(jì)方法論”,例如主動(dòng)學(xué)習(xí)。我給他起了一個(gè)名字,寄生學(xué)習(xí)。哈哈哈
2. 遷移學(xué)習(xí)如何工作的?
例如,在計(jì)算機(jī)視覺中,神經(jīng)網(wǎng)絡(luò)通常是這樣的:較早的層檢測(cè)到的是邊緣,中間層檢測(cè)到的是形狀,越靠后的網(wǎng)絡(luò)層檢測(cè)的是特定于任務(wù)的特征(例如人臉中的眼睛)。
在遷移學(xué)習(xí)中,很少取最后的層,一般是取前面的和中間的層,對(duì)于最后的特征層我們自己重新訓(xùn)練。
例如有一個(gè)模型,可以識(shí)別圖像上的背包,該背包將用于識(shí)別太陽鏡。在較早的層中,該模型已學(xué)會(huì)識(shí)別物體,因此,我們將僅對(duì)后一層進(jìn)行重新訓(xùn)練,從而學(xué)習(xí)如何把“太陽鏡與其他物體區(qū)分開”。像個(gè)小孩兒一樣哈哈哈。

在遷移學(xué)習(xí)中,就是試著把模型訓(xùn)練的先前任務(wù)中的學(xué)習(xí)能力,盡可的遷移到手頭的新任務(wù)。
相當(dāng)于把別人的腦子給自己灌進(jìn)去哈哈哈。
根據(jù)問題和數(shù)據(jù),此知識(shí)可以采用各種形式。例如,可能是模型的構(gòu)成方式,這樣可以更輕松地識(shí)別新的對(duì)象,相當(dāng)于獲取最新的能力。
3. 為啥要用這個(gè)方法?
遷移學(xué)習(xí)有很多好處,但是主要優(yōu)點(diǎn)是節(jié)省訓(xùn)練時(shí)間,神經(jīng)網(wǎng)絡(luò)的性能更好(在大多數(shù)情況下)以及不需要大量數(shù)據(jù)。
通常,從頭開始訓(xùn)練神經(jīng)網(wǎng)絡(luò)需要大量數(shù)據(jù),但同樣的數(shù)據(jù)你可能拿不到啊,現(xiàn)在就是轉(zhuǎn)移學(xué)習(xí)大顯神威的時(shí)候了。
通過遷移學(xué)習(xí),可以使用相對(duì)較少的訓(xùn)練數(shù)據(jù)來構(gòu)建可靠的機(jī)器學(xué)習(xí)模型,因?yàn)樵撃P鸵呀?jīng)過預(yù)訓(xùn)練。
這在自然語言處理中特別有價(jià)值,因?yàn)閯?chuàng)建大型的標(biāo)記數(shù)據(jù)集通常需要專業(yè)知識(shí)。此外,減少了訓(xùn)練時(shí)間,因?yàn)橛袝r(shí)可能需要幾天甚至幾周的時(shí)間來從頭開始訓(xùn)練復(fù)雜任務(wù)的深度神經(jīng)網(wǎng)絡(luò)。
根據(jù)DeepMind首席執(zhí)行官Demis Hassabis的說法,遷移學(xué)習(xí)也是最有前途的技術(shù)之一,有朝一日可能會(huì)導(dǎo)致人工智能(AGI):

4. 何時(shí)使用轉(zhuǎn)移學(xué)習(xí)?
與機(jī)器學(xué)習(xí)一樣,很難形成通用的規(guī)則,但是以下是什么時(shí)候可以使用轉(zhuǎn)移學(xué)習(xí)的一些準(zhǔn)則:
沒有足夠的標(biāo)簽訓(xùn)練數(shù)據(jù)來從頭開始訓(xùn)練您的網(wǎng)絡(luò)。
已經(jīng)存在一個(gè)預(yù)先訓(xùn)練過類似任務(wù)的網(wǎng)絡(luò),通常會(huì)對(duì)大量數(shù)據(jù)進(jìn)行訓(xùn)練。
當(dāng)任務(wù)1和任務(wù)2具有相同的輸入時(shí)。
如果原始模型是使用TensorFlow訓(xùn)練的,則只需還原它并為任務(wù)重新訓(xùn)練一些網(wǎng)絡(luò)層即可。
但是請(qǐng)記住,只有在從第一個(gè)任務(wù)中學(xué)到的功能是通用的情況下,遷移學(xué)習(xí)才會(huì)有用,也就是遷移到類似的任務(wù)才行。
同樣,模型的輸入必須與最初訓(xùn)練時(shí)使用的大小相同。如果沒有,添加一個(gè)預(yù)處理步驟就行了,把輸入的大小調(diào)整為所需的大小。
5. 轉(zhuǎn)移學(xué)習(xí)的方法
1.訓(xùn)練模型以重用它
假設(shè)您要解決任務(wù)A,但沒有足夠的數(shù)據(jù)來訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)。解決此問題的一種方法是找到具有大量數(shù)據(jù)的相關(guān)任務(wù)B。在任務(wù)B上訓(xùn)練深度神經(jīng)網(wǎng)絡(luò),并將模型用作解決任務(wù)A的起點(diǎn)。
那是否需要使用整個(gè)模型還是僅需使用幾層模型,在很大程度上取決于你要解決的問題。
如果兩個(gè)任務(wù)的輸入都相同,則可以重新使用模型并為新輸入進(jìn)行預(yù)測(cè)?;蛘撸暮椭匦掠?xùn)練不同的特定于任務(wù)的層和輸出層也可以。
2.使用預(yù)先訓(xùn)練的模型
第二種方法是使用已經(jīng)預(yù)先訓(xùn)練的模型。這些模型很多,最好先做些工作。重復(fù)用多少層以及重新訓(xùn)練多少層取決于你要解決的問題。
例如,Keras提供了九種預(yù)訓(xùn)練模型,可用于遷移學(xué)習(xí),預(yù)測(cè),特征提取和微調(diào)。
你可以在此處找到這些模型,以及一些有關(guān)如何使用它們的簡短教程 ,也有許多研究機(jī)構(gòu)開源了訓(xùn)練好的模型。
這種類型的遷移學(xué)習(xí)是整個(gè)深度學(xué)習(xí)中最常用的方法。
3.特征提取
另一種方法是使用深度學(xué)習(xí)來發(fā)現(xiàn)問題的最優(yōu)特征,這意味著找到最重要的特征。這種方法也稱為表示學(xué)習(xí),與手工設(shè)計(jì)的表示相比,通常可以產(chǎn)生更好的結(jié)果。

在機(jī)器學(xué)習(xí)中,一些函數(shù)通常是由研究人員和領(lǐng)域?qū)<沂謩?dòng)設(shè)計(jì)的。但是深度學(xué)習(xí)可以自動(dòng)提取特征。
當(dāng)然,這并不意味著特征工程和相關(guān)領(lǐng)域知識(shí)不再重要, 仍然必須決定將哪些函數(shù)放入網(wǎng)絡(luò)。
也就是說,神經(jīng)網(wǎng)絡(luò)能夠了解哪些特征真正重要,哪些特征不重要。表示學(xué)習(xí)算法可以在非常短的時(shí)間內(nèi)發(fā)現(xiàn)功能的良好組合,即使是復(fù)雜的任務(wù),否則這些工作都要耗費(fèi)大量的人工。
然后,學(xué)習(xí)到的表示也可以用于其他問題。將數(shù)據(jù)鑲?cè)刖W(wǎng)絡(luò)并使用中間層之一作為輸出層。然后可以將此層解釋為原始數(shù)據(jù)的表示。
這種方法主要用于計(jì)算機(jī)視覺,因?yàn)樗梢詼p小數(shù)據(jù)集的大小,從而減少計(jì)算時(shí)間,并且也更適合于傳統(tǒng)算法。
6. 熱門的預(yù)訓(xùn)練模型
有一些非常流行的經(jīng)過預(yù)訓(xùn)練的機(jī)器學(xué)習(xí)模型。其中之一是Inception-v3模型,該模型已針對(duì)ImageNet “大型視覺識(shí)別挑戰(zhàn)賽” 進(jìn)行了訓(xùn)練 。在這一挑戰(zhàn)中,參與者必須將圖像分為 1,000類, 例如“斑馬”,“斑點(diǎn)狗”和“洗碗機(jī)”。
這是 TensorFlow上非常好的教程,介紹了如何重新訓(xùn)練圖像分類器。
其他頗受歡迎的模型是ResNet和AlexNet。你可以訪問這個(gè),這是一個(gè)經(jīng)過分類且可搜索的經(jīng)過預(yù)編譯的深度學(xué)習(xí)模型的匯總,有演示和代碼。
譯
本文僅做學(xué)術(shù)分享,如有侵權(quán),請(qǐng)聯(lián)系刪文。
