NLP中的迁移学习
摘要:?遷移學(xué)習(xí)正在各個領(lǐng)域大展拳腳,NLP領(lǐng)域正在受到?jīng)_擊!
在我們之前的文章中,我們展示了如何使用CNN與遷移學(xué)習(xí)為我們自己創(chuàng)建圖片構(gòu)建分類器。今天,我們介紹NLP中遷移學(xué)習(xí)的最新趨勢,并嘗試進行分類任務(wù):將亞馬遜評論的數(shù)據(jù)集分類為正面或負(fù)面。
NLP中的遷移學(xué)習(xí)理念在fast.ai課程中得到了很好的體現(xiàn),我們鼓勵你查看論壇。我們這里的參考文件是??Howard,Ruder,“用于文本分類的通用語言模型微調(diào)”。
什么是遷移學(xué)習(xí)?
計算機視覺是一個使用遷移學(xué)習(xí)而取得巨大進步的領(lǐng)域。它具有數(shù)百萬參數(shù)的高度非線性模型需要大量數(shù)據(jù)集進行訓(xùn)練,并且通常需要數(shù)天或數(shù)周才能進行訓(xùn)練,只是為了能夠?qū)D像分類為包含狗或貓!
隨著ImageNet的挑戰(zhàn),團隊每年都參與競爭,以設(shè)計出最佳的圖像分類器。已經(jīng)觀察到這些模型的隱藏層能夠捕獲圖像中的一般知識(邊緣、某些形式、樣式......)。因此,每次我們想要改變?nèi)蝿?wù)時,沒有必要從頭開始重新訓(xùn)練模型。
讓我們以VGG-16模型為例(Simonyan、Karen和Zisserman·“用于大規(guī)模圖像識別的非常深的卷積網(wǎng)絡(luò)。”(2014))
這種架構(gòu)比較復(fù)雜、層數(shù)多、參數(shù)數(shù)量多。作者聲稱使用4個強大的GPU訓(xùn)練了為3周時間。
遷移學(xué)習(xí)的想法是,由于中間層被認(rèn)為是學(xué)習(xí)圖像的一般知識,我們可以將它們用作當(dāng)成比較全面的特征!我們將下載一個預(yù)先訓(xùn)練好的模型(在ImageNet任務(wù)上訓(xùn)練數(shù)周),刪除網(wǎng)絡(luò)的最后一層(完全連接的層,在ImageNet挑戰(zhàn)的1000個類上投射功能),添加put而不是我們選擇的分類器,適合我們的任務(wù)(如果我們有興趣對貓和狗進行分類,則為二元分類器),最后僅訓(xùn)練我們的分類層。并且因為我們使用的數(shù)據(jù)可能與之前訓(xùn)練過的模型數(shù)據(jù)不同,我們也可以進行微調(diào)步驟,這樣我們就能在相當(dāng)短的時間內(nèi)訓(xùn)練所有層。
除了更快地進行訓(xùn)練之外,遷移學(xué)習(xí)特別有趣,因為僅在最后一層進行訓(xùn)練使我們僅使用較少的標(biāo)記數(shù)據(jù)即可,而端對端訓(xùn)練整個模型則需要龐大的數(shù)據(jù)集。標(biāo)記數(shù)據(jù)很昂貴,并且非常需要建立高質(zhì)量模型而不需要大數(shù)據(jù)集。
那么NLP中的遷移學(xué)習(xí)呢?
NLP深度學(xué)習(xí)的進展不像計算機視覺那樣成熟。雖然可以想象機器能夠?qū)W習(xí)邊緣、圓形、正方形等形狀,然后使用這些知識做其他事情,但對于文本數(shù)據(jù)來說這些并不簡單。
最初流行的在NLP中遷移學(xué)習(xí)是由嵌入模型這個詞(由word2vec和GloVe廣泛推廣)帶來的。這些單詞矢量表示利用單詞的上下文,將它們表示為向量,其中相似的單詞應(yīng)具有相似的單詞表示。
在這個圖中,來自word2vec論文,我們看到該模型能夠?qū)W習(xí)國家與其首都城市之間的關(guān)系。
包括預(yù)先訓(xùn)練的單詞向量已經(jīng)顯示出在大多數(shù)NLP任務(wù)中改進度量,因此已經(jīng)被NLP社區(qū)廣泛采用,被用來尋找甚至更好的單詞/字符/文檔表示。與計算機視覺一樣,預(yù)訓(xùn)練的單詞向量可以被視為特征化函數(shù),轉(zhuǎn)換一組特征中的每個單詞。
但是,單詞嵌入僅代表大多數(shù)NLP模型的第一層。之后,我們?nèi)匀恍枰獜念^開始訓(xùn)練所有RNN / CNN /自定義層。
用于文本分類的語言模型微調(diào)
今年早些時候霍華德和羅德提出了ULMFit模型,以此來進一步提升了遷移學(xué)習(xí)在NLP的應(yīng)用。
他們正在探索的想法是基于語言模型。語言模型是一種能夠根據(jù)已經(jīng)看到的單詞預(yù)測下一個單詞的模型(想想你的智能手機在你發(fā)短信時為你猜測下一個單詞)。就像圖像分類器通過對圖像分類來獲得圖像的內(nèi)在知識一樣,如果NLP模型能夠準(zhǔn)確地預(yù)測下一個單詞,那么說明它已經(jīng)學(xué)到了很多關(guān)于自然語言結(jié)構(gòu)。這些知識應(yīng)提供良好的初始化,然后可以在自定義任務(wù)上進行訓(xùn)練!
ULMFit建議在非常大的文本語料庫(例如維基百科)上訓(xùn)練語言模型,并將其用作任何分類器的主干!由于你的文本數(shù)據(jù)可能與維基百科的編寫方式不同,因此你需要微調(diào)語言模型的參數(shù)以將這些差異考慮在內(nèi)。然后,我們將在此語言模型的頂部添加分類器層,并僅訓(xùn)練此層!
ULMfit paper
讓人驚訝的結(jié)果是,使用這種預(yù)訓(xùn)練的語言模型使我們能夠在更少標(biāo)記的數(shù)據(jù)上訓(xùn)練分類器!雖然未標(biāo)記的數(shù)據(jù)在網(wǎng)絡(luò)上幾乎是無限的,但標(biāo)記數(shù)據(jù)非常昂貴且耗時。
以下是他們從IMDb情緒分析任務(wù)中報告的結(jié)果:
雖然只有100個示例,它們能夠達到與使用20k示例從頭開始訓(xùn)練時模型達到的相同錯誤率!
此外,他們還提供了代碼,以你選擇的語言預(yù)先訓(xùn)練語言模型。由于維基百科存在很多的語言中,因此我們可以使用維基百科數(shù)據(jù)快速從一種語言遷移到另一種語言。眾所周知,公共標(biāo)簽數(shù)據(jù)集更難以使用英語以外的語言進行訪問。在這里,你可以對未標(biāo)記數(shù)據(jù)上的語言模型進行微調(diào),花幾個小時手動注釋幾百/千個數(shù)據(jù)點,并使分類器頭部適應(yīng)你預(yù)先訓(xùn)練的語言模型來執(zhí)行你的任務(wù)!
?
游樂場與亞馬遜評論
為了改變這種方法的不足之處,我們使用為其論文中的公共數(shù)據(jù)集上進行了嘗試。我們在Kaggle上找到了這個數(shù)據(jù)集:它包含4百萬條關(guān)于亞馬遜產(chǎn)品的評論,并用積極或消極的情緒標(biāo)記它們。我們將針對ULMfit的fast.ai課程調(diào)整將亞馬遜評論分類為正面或負(fù)面。我們發(fā)現(xiàn)只需要1000個數(shù)據(jù)點,該模型就能夠匹配通過在完整數(shù)據(jù)集上從頭開始訓(xùn)練FastText模型獲得的準(zhǔn)確度分?jǐn)?shù)。僅使用100個標(biāo)記示例,該模型仍然能夠獲得良好的性能。
要重現(xiàn)此實驗,你可以使用此筆記本,建議使用GPU來運行微調(diào)和分類部分。
NLP中的無監(jiān)督與監(jiān)督學(xué)習(xí),圍繞意義進行討論
使用ULMFit,我們使用了無監(jiān)督和監(jiān)督學(xué)習(xí)。訓(xùn)練無監(jiān)督的語言模型是“便宜的”,因為你可以在線訪問幾乎無限的文本數(shù)據(jù)。但是,使用監(jiān)督模型很昂貴,因為你需要對數(shù)據(jù)進行標(biāo)記。
雖然語言模型能夠從自然語言的結(jié)構(gòu)中捕獲大量相關(guān)信息,但尚不清楚它是否能夠捕獲文本的含義,即“發(fā)送者打算傳達的信息或概念”。
你可能已經(jīng)關(guān)注了NLP中非常有趣的Twitter主題。在這個帖子中,艾米莉·本德利用“泰國房間實驗”對她進行了反對意義捕獲的論證:想象一下,你在一個巨大的圖書館里得到了所有泰國文學(xué)的總和。假設(shè)你還不懂泰語,你就不會從中學(xué)到任何東西。
所以我們可以認(rèn)為語言模型學(xué)到的更多是語法而不是意義。然而,語言模型比僅僅預(yù)測語法相關(guān)的句子更好。例如,“我要吃來這臺電腦”和“我討厭這臺電腦”兩者在語法上都是正確的,但一個好的語言模型應(yīng)該能夠知道“我討厭這臺電腦”應(yīng)該比另外一句更“準(zhǔn)確”。所以,即使我看過整個泰語維基百科,我也無法用泰語寫作,但很容易看出語言模型確實超越了簡單的語法/結(jié)構(gòu)理解。
我們不會在這里進一步探討意義的概念(這是一個無窮無盡且引人入勝的話題/辯論),如果你有興趣,我們建議你看下Yejin Choi在ACL 2018的演講中是如何探討這一主題的。
NLP中遷移學(xué)習(xí)的未來
ULMFit取得的進展推動了NLP遷移學(xué)習(xí)的研究。對于NLP來說,這是一個激動人心的時刻,因為其他微調(diào)語言模型也開始出現(xiàn),特別是FineTune Transformer LM。我們還注意到,隨著更好的語言模型的出現(xiàn),我們甚至可以改善這種知識遷移。
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
- 上一篇: 理解卷积神经网络的利器:9篇重要的深度学
- 下一篇: Quick BI v3.0版本全新起航—