編者按:關(guān)于NLP領(lǐng)域的遷移學(xué)習(xí)我們已經(jīng)介紹過了,fast.ai也有很多相應(yīng)的討論。今天給大家展示一個(gè)在亞馬遜評論數(shù)據(jù)集上實(shí)現(xiàn)的任務(wù),即將評論分為積極或消極兩類。
什么是遷移學(xué)習(xí)?
得益于遷移學(xué)習(xí),計(jì)算機(jī)視覺領(lǐng)域的發(fā)展非常迅速。有著幾百萬個(gè)參數(shù)的高度非線性模型通常需要大型數(shù)據(jù)集的訓(xùn)練,經(jīng)過幾天甚至幾周的訓(xùn)練,也只能分辨貓狗。
有了ImageNet挑戰(zhàn)賽后,每年各種隊(duì)伍都會設(shè)計(jì)出不同的圖像分類器。我們發(fā)現(xiàn)這類模型的隱藏層可以捕捉圖像的通用特征(例如線條、形式、風(fēng)格等)。于是,這樣就不用每次都為新的任務(wù)重建模型了。
以VGG-16模型為例:
它的結(jié)構(gòu)相對復(fù)雜,圖層較多,同時(shí)參數(shù)也很多。論文作者稱需要用四個(gè)GPU訓(xùn)練三周。
而遷移學(xué)習(xí)的理念是,由于中間的圖層是學(xué)習(xí)圖像一般特征的,所以我們可以將其用作一個(gè)大型“特征生成器”!我們可以先下載一個(gè)預(yù)訓(xùn)練模型(在ImageNet任務(wù)上訓(xùn)練了好幾周),刪去網(wǎng)絡(luò)的最后一層(全連接層),根據(jù)我們的任務(wù)進(jìn)行調(diào)整,最后只訓(xùn)練我們的分類器圖層。由于使用的數(shù)據(jù)可能和之前訓(xùn)練的模型所用數(shù)據(jù)不同,我們也可以花點(diǎn)時(shí)間訓(xùn)練所有圖層。
由于只在最后一層進(jìn)行訓(xùn)練,遷移學(xué)習(xí)會用到更少的標(biāo)記數(shù)據(jù)。對數(shù)據(jù)進(jìn)行標(biāo)注非常費(fèi)時(shí),所以創(chuàng)建不需要大量數(shù)據(jù)的高質(zhì)量模型就非常受歡迎了。
NLP中的遷移學(xué)習(xí)
說實(shí)話,遷移學(xué)習(xí)在自然語言處理中的發(fā)展并不像在機(jī)器視覺里那樣受重視。讓機(jī)器學(xué)習(xí)線條、圓圈、方塊,然后再用于分析還是比較容易設(shè)計(jì)的。但是用來處理文本數(shù)據(jù)似乎不那么容易。
最初用來處理NLP中的遷移學(xué)習(xí)問題的是詞嵌入模型(常見的是word2vec和GloVe),這些詞嵌入表示利用詞語所在的語境來用向量表示它們,所以相似的詞語有相似的詞語表示。
然而,詞嵌入只能表示大多數(shù)NLP模型的第一個(gè)圖層,之后我們?nèi)孕枰獜牧汩_始訓(xùn)練所有的RNN/CNN等圖層。
對語言模型進(jìn)行微調(diào)
今年年初,Jeremy Howard和Sebastian Ruder提出了ULMFiT模型,這也是對NLP領(lǐng)域遷移學(xué)習(xí)的深入嘗試。具體可參考論智此前報(bào)道的:《用遷移學(xué)習(xí)創(chuàng)造的通用語言模型ULMFiT,達(dá)到了文本分類的最佳水平》。
他們所研究的問題基于語言模型。語言模型是能夠基于已知單詞預(yù)測下一個(gè)單詞的模型(例如手機(jī)上的智能拼寫)。就像圖像分類器一樣,如果NLP模型能準(zhǔn)確預(yù)測下一個(gè)單詞,那就可以認(rèn)為該模型學(xué)了很多自然語言組合的規(guī)則了。這一模型可以作為初始化,能夠針對不同任務(wù)進(jìn)行訓(xùn)練。
ULMFiT提出要在大型語料上訓(xùn)練語言模型(例如維基百科),然后創(chuàng)建分類器。由于你的文本數(shù)據(jù)可能和維基百科的語言風(fēng)格不同,你就需要對參數(shù)進(jìn)行微調(diào),把這些差異考慮進(jìn)去。然后,我們會在語言模型的頂層添加一個(gè)分類圖層,并且只訓(xùn)練這個(gè)圖層!論文建議逐漸解鎖各個(gè)圖層進(jìn)行訓(xùn)練。
ULMFiT論文中的收獲
這篇論文最讓人驚喜之處就是用非常少的標(biāo)記數(shù)據(jù)訓(xùn)練分類器。雖然未經(jīng)標(biāo)記過的數(shù)據(jù)隨處可見,但是標(biāo)記過的數(shù)據(jù)獲取的成本是很高的。下面是對IMDb進(jìn)行情感分析之后的結(jié)果:
只用了100個(gè)案例,他們就達(dá)到了和用2萬個(gè)案例訓(xùn)練出的模型同樣的錯(cuò)誤率水平。除此之外,他們還提供了對模型進(jìn)行預(yù)訓(xùn)練的代碼,因?yàn)榫S基百科有多種語言,這使得我們能快速地進(jìn)行語言轉(zhuǎn)換。除英語之外,其他語種并沒有很多經(jīng)過標(biāo)記的公開數(shù)據(jù)集,所以你可以在語言模型上對自己的數(shù)據(jù)進(jìn)行微調(diào)。
處理亞馬遜評論
為了加深對這種方法的理解,我們在另一個(gè)公開數(shù)據(jù)集上試了試。在Kaggle上發(fā)現(xiàn)了這個(gè)“亞馬遜評論情感分析數(shù)據(jù)集”(地址:www.kaggle.com/bittlingmayer/amazonreviews/home)。它含有400萬條商品評論已經(jīng)相關(guān)的情感標(biāo)簽(積極或消極)。我們用fast.ai提出的ULMFiT對亞馬遜的評價(jià)進(jìn)行分類。我們發(fā)現(xiàn),僅用1000個(gè)案例,模型就達(dá)到了在全部數(shù)據(jù)上訓(xùn)練的FastText模型的表現(xiàn)成果。而用100個(gè)案例進(jìn)行訓(xùn)練,模型也能表現(xiàn)出不錯(cuò)的性能。
如果你想復(fù)現(xiàn)這個(gè)實(shí)驗(yàn),可以參考notebook:github.com/feedly/ml-demos/blob/master/source/TransferLearningNLP.ipynb,在微調(diào)和分類過程中有一個(gè)GPU還是很高效的。
NLP中非監(jiān)督 vs 監(jiān)督學(xué)習(xí)
在使用ULMFiT的過程中,我們用到了非監(jiān)督和監(jiān)督學(xué)習(xí)兩種方法。訓(xùn)練一個(gè)非監(jiān)督式語言模型很“便宜”,因?yàn)槟憧梢詮木W(wǎng)上找到很多文本數(shù)據(jù)。但是,監(jiān)督式模型的成本就很高了,因?yàn)樾枰獦?biāo)記數(shù)據(jù)。
雖然語言模型可以捕捉到很多有關(guān)自然語言組織的信息,但是仍不能確定模型能否捕捉到文本的含義,即它們能否了解說話者想傳達(dá)的信息。
Emily Bender在推特上曾提出了一個(gè)有趣的“泰語實(shí)驗(yàn)”:“假設(shè)給你所有泰語書籍,沒有譯文。假如你一點(diǎn)都不懂泰語,你永遠(yuǎn)不會從中學(xué)會什么。”
所以,我們認(rèn)為語言模型更多的是學(xué)習(xí)語法規(guī)則,而不是含義。而語言模型能做的不僅僅是預(yù)測在語法規(guī)則上相近的句子。例如“I ate this computer”和“I hate this computer”兩句話結(jié)構(gòu)相同,但是一個(gè)良好的模型應(yīng)該會將后者看作是“更正確”的句子。所以我們可以將語言模型看作是學(xué)習(xí)自然語言句子的架構(gòu)的工具,從而幫助我們了解句子含義。
想了解更多這方面的話題,可以觀看ACL 2018上Yejin Choi的演講:sites.google.com/site/repl4nlp2018/home?authuser=0
NLP遷移學(xué)習(xí)的未來
ULMFiT的出現(xiàn)推動(dòng)了遷移學(xué)習(xí)在自然語言處理中的發(fā)展,同時(shí)也出現(xiàn)了其他的微調(diào)工具,例如FineTune Transformer LM。我們注意到隨著更多更好地語言模型的出現(xiàn),遷移的效率也在不斷提高。
-
計(jì)算機(jī)視覺
+關(guān)注
關(guān)注
8文章
1700瀏覽量
46133 -
nlp
+關(guān)注
關(guān)注
1文章
489瀏覽量
22111 -
遷移學(xué)習(xí)
+關(guān)注
關(guān)注
0文章
74瀏覽量
5589
原文標(biāo)題:僅訓(xùn)練了1000個(gè)樣本,我完成了400萬條評論分類
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
遷移學(xué)習(xí)的原理,基于Keras實(shí)現(xiàn)遷移學(xué)習(xí)
![<b class='flag-5'>遷移</b><b class='flag-5'>學(xué)習(xí)</b>的原理,基于Keras實(shí)現(xiàn)<b class='flag-5'>遷移</b><b class='flag-5'>學(xué)習(xí)</b>](https://file.elecfans.com/web1/M00/50/40/o4YBAFrxVgKAMeoHAAAH9hPuyEs376.png)
什么是遷移學(xué)習(xí)?遷移學(xué)習(xí)的實(shí)現(xiàn)方法與工具分析
遷移學(xué)習(xí)訓(xùn)練網(wǎng)絡(luò)
遷移學(xué)習(xí)
遷移學(xué)習(xí)與模型預(yù)訓(xùn)練:何去何從
![<b class='flag-5'>遷移</b><b class='flag-5'>學(xué)習(xí)</b>與模型預(yù)訓(xùn)練:何去何從](https://file.elecfans.com/web1/M00/9D/38/pIYBAF0v59iAZR5XAAAO4bhdTrI957.jpg)
NLP遷移學(xué)習(xí)面臨的問題和解決
![<b class='flag-5'>NLP</b><b class='flag-5'>遷移</b><b class='flag-5'>學(xué)習(xí)</b>面臨的問題和解決](https://file.elecfans.com/web1/M00/BA/64/o4YBAF6bzNmADjmnAABXGbj4sAw249.png)
機(jī)器學(xué)習(xí)方法遷移學(xué)習(xí)的發(fā)展和研究資料說明
![機(jī)器<b class='flag-5'>學(xué)習(xí)</b>方法<b class='flag-5'>遷移</b><b class='flag-5'>學(xué)習(xí)</b>的發(fā)展和研究資料說明](https://file.elecfans.com/web1/M00/C0/F7/o4YBAF8RCNqAQN8yAAFSZnOH82k975.png)
基于脈沖神經(jīng)網(wǎng)絡(luò)的遷移學(xué)習(xí)算法
基于遷移深度學(xué)習(xí)的雷達(dá)信號分選識別
遷移學(xué)習(xí)Finetune的四種類型招式
NLP中的遷移學(xué)習(xí):利用預(yù)訓(xùn)練模型進(jìn)行文本分類
一文詳解遷移學(xué)習(xí)
![一文詳解<b class='flag-5'>遷移</b><b class='flag-5'>學(xué)習(xí)</b>](https://file1.elecfans.com/web2/M00/90/39/wKgZomTV-IeATGr4AAAvJyDtCHY824.png)
視覺深度學(xué)習(xí)遷移學(xué)習(xí)訓(xùn)練框架Torchvision介紹
![視覺深度<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>遷移</b><b class='flag-5'>學(xué)習(xí)</b>訓(xùn)練框架Torchvision介紹](https://file1.elecfans.com/web2/M00/A5/A0/wKgaomUM9ICAERLbAAA693514ag604.png)
評論