摘要:遷移學習正在各個領域大展拳腳,nlp領域正在受到衝擊!nlp中的遷移學習理念在fast.ai課程中得到了很好的體現,我們鼓勵你檢視論壇。我們這裡的參考檔案是 howard,ruder,「用於文字分類的通用語言模型微調」。
計算機視覺是乙個使用遷移學習而取得巨大進步的領域。它具有數百萬引數的高度非線性模型需要大量資料集進行訓練,並且通常需要數天或數週才能進行訓練,只是為了能夠將影象分類為包含狗或貓!
隨著imagenet的挑戰,團隊每年都參與競爭,以設計出最佳的影象分類器。已經觀察到這些模型的隱藏層能夠捕獲影象中的一般知識(邊緣、某些形式、樣式......)。因此,每次我們想要改變任務時,沒有必要從頭開始重新訓練模型。
讓我們以vgg-16模型為例(simonyan、karen和zisserman·「用於大規模影象識別的非常深的卷積網路。」(2014))
這種架構比較複雜、層數多、引數數量多。作者聲稱使用4個強大的gpu訓練了為3周時間。
除了更快地進行訓練之外,遷移學習特別有趣,因為僅在最後一層進行訓練使我們僅使用較少的標記資料即可,而端對端訓練整個模型則需要龐大的資料集。標記資料很昂貴,並且非常需要建立高質量模型而不需要大資料集。
nlp深度學習的進展不像計算機視覺那樣成熟。雖然可以想象機器能夠學習邊緣、圓形、正方形等形狀,然後使用這些知識做其他事情,但對於文字資料來說這些並不簡單。
最初流行的在nlp中遷移學習是由嵌入模型這個詞(由word2vec和glove廣泛推廣)帶來的。這些單詞向量表示利用單詞的上下文,將它們表示為向量,其中相似的單詞應具有相似的單詞表示。
在這個圖中,來自word2vec**,我們看到該模型能夠學習國家與其首都城市之間的關係。
包括預先訓練的單詞向量已經顯示出在大多數nlp任務中改進度量,因此已經被nlp社群廣泛採用,被用來尋找甚至更好的單詞/字元/文件表示。與計算機視覺一樣,預訓練的單詞向量可以被視為特徵化函式,轉換一組特徵中的每個單詞。
但是,單詞嵌入僅代表大多數nlp模型的第一層。之後,我們仍然需要從頭開始訓練所有rnn / cnn /自定義層。
今年早些時候霍華德和羅德提出了ulmfit模型,以此來進一步提公升了遷移學習在nlp的應用。
他們正在探索的想法是基於語言模型。語言模型是一種能夠根據已經看到的單詞**下乙個單詞的模型(想想你的智慧型手機在你發簡訊時為你猜測下乙個單詞)。就像影象分類器通過對影象分類來獲得影象的內在知識一樣,如果nlp模型能夠準確地**下乙個單詞,那麼說明它已經學到了很多關於自然語言結構。這些知識應提供良好的初始化,然後可以在自定義任務上進行訓練!
ulmfit建議在非常大的文字語料庫(例如維基百科)上訓練語言模型,並將其用作任何分類器的主幹!由於你的文字資料可能與維基百科的編寫方式不同,因此你需要微調語言模型的引數以將這些差異考慮在內。然後,我們將在此語言模型的頂部新增分類器層,並僅訓練此層!
讓人驚訝的結果是,使用這種預訓練的語言模型使我們能夠在更少標記的資料上訓練分類器!雖然未標記的資料在網路上幾乎是無限的,但標記資料非常昂貴且耗時。
以下是他們從imdb情緒分析任務中報告的結果:
雖然只有100個示例,它們能夠達到與使用20k示例從頭開始訓練時模型達到的相同錯誤率!
此外,他們還提供了**,以你選擇的語言預先訓練語言模型。由於維基百科存在很多的語言中,因此我們可以使用維基百科資料快速從一種語言遷移到另一種語言。眾所周知,公共標籤資料集更難以使用英語以外的語言進行訪問。在這裡,你可以對未標記資料上的語言模型進行微調,花幾個小時手動注釋幾百/千個資料點,並使分類器頭部適應你預先訓練的語言模型來執行你的任務!
要重現此實驗,你可以使用此筆記本,建議使用gpu來執行微調和分類部分。
雖然語言模型能夠從自然語言的結構中捕獲大量相關資訊,但尚不清楚它是否能夠捕獲文字的含義,即「傳送者打算傳達的資訊或概念」。
你可能已經關注了nlp中非常有趣的twitter主題。在這個帖子中,艾公尺莉·本德利用「泰國房間實驗」對她進行了反對意義捕獲的論證:想象一下,你在乙個巨大的圖書館裡得到了所有泰國文學的總和。假設你還不懂泰語,你就不會從中學到任何東西。
所以我們可以認為語言模型學到的更多是語法而不是意義。然而,語言模型比僅僅**語法相關的句子更好。例如,「我要吃來這台電腦」和「我討厭這台電腦」兩者在語法上都是正確的,但乙個好的語言模型應該能夠知道「我討厭這台電腦」應該比另外一句更「準確」。所以,即使我看過整個泰語維基百科,我也無法用泰語寫作,但很容易看出語言模型確實超越了簡單的語法/結構理解。
nlp中遷移學習的未來
ulmfit取得的進展推動了nlp遷移學習的研究。對於nlp來說,這是乙個激動人心的時刻,因為其他微調語言模型也開始出現,特別是finetune transformer lm。我們還注意到,隨著更好的語言模型的出現,我們甚至可以改善這種知識遷移。
閱讀原文
NLP學習筆記 nlp入門介紹
為什麼計算機難以理解人類的自然語言呢?主要是下面6個特性 詞彙量在自然語言中含有很豐富的詞彙,而程式語言中能使用的關鍵字數量是有限的 結構化自然語言是非結構化的,而程式語言是結構化的,例如類和成員。自然語言是線性字串,要分析它,需要用到分詞 命名實體識別 指代消解和關係抽取等。歧義性我們說話含有大量...
NLP學習過程中參考的網頁
雷鋒網 完全 rnn rnn變體 seq2seq attention機制 譯 理解 lstm long short term memory,lstm 網路 attention is all you need 淺讀 簡介 自然語言處理中的attention機制總結 問題對相似度比賽 transform...
NLP 學習資源
中文nlp資料 tensorflow gpu版本安裝 tensorflow官方中文 官方文件 attention is all you need attention is all you need 原始碼 tensorflow官方資料集 tensor2tensor xlnet xlnet 原始碼 部...