摘要: 在沒有足夠的訓練數據時,本文詳細介紹瞭如何使用FloydHub、fast.ai和PyTorch進行遷移學習。html
如今,人工智能的發展處於跳躍式階段,咱們也對AI在大型數據集的應用進展感到吃驚。更重要的是,那些咱們沒有跟蹤的數十億張照片或餐廳的評論並無被遺漏掉:遷移學習技術讓收集數據變得更加「容易」。另外,得益於PyTorch框架、fast.ai應用程序庫以及FloydHub公司,小團隊或者是個別開發人員也能輕鬆的應用這些方法。網絡
本文要講的例子就是ULMFiT:Jeremy Howard和Sebastian Ruder在fast.ai展現瞭如何用幾百個標記準確的對電影評論進行分類。除此以外,還有一個在通用英語文本語料庫中訓練的模型。框架
除了英語文本資料庫和標記對評論進行分類外,fast.ai還有一個小技巧,它擁有大量特定領域的文本:10萬多個樣本評論,來展現普通英語和電影評論之間的區別。這引起了咱們的思考:至少得須要多少數據,才足以彌合訓練示例和通用語言模型之間的差距?dom
這並非一個特別愚蠢的問題。Frame能夠幫助Zendesk,Intercom和Slack等規模性公司標記、評價和理解與客戶的對話。也就是說, 「只要有足夠的對話,咱們就能夠手動評價」和「咱們有足夠的數據從頭訓練一個模型」,這兩者之間有很大的差距。僅僅幾十個標籤和幾千條相關對話,這可以作什麼?性能
事實證實,這很是有用。在本文中,咱們將使用相同的電影評論數據集來證實:即使是隻有少部分的數據,數據遷移依然能夠有效。更加詳細的代碼請參考ULMFiT。學習
遷移什麼?人工智能
深度神經網絡是當前最新人工智能背後的關鍵技術,好比理解圖像、音頻或文本。深度神經網絡的核心是它由層(「深度」)組成,每一個層都將輸入轉換爲更接近網絡訓練答案的新的表示。翻譯
咱們一般會抱怨,不瞭解神經網絡的中間層到底發生了什麼……其實,它們一般被設計爲更加清晰、可解釋的角色!好比:不少語言模型利用嵌入層將單個單詞或短語進行分類,將具備類似含義的單詞或短語放在一塊兒。舉個例子來講,這將有助於翻譯AI在須要使用「傑出」(illustrious)這個詞的時候,會根據經驗選擇使用「偉大」(great)。設計
如今變得更有趣了:一個「知道」「illustrious = great」的層不只有利於翻譯,還能夠學習情緒估計,將不一樣的觀點彙集起來。這就是遷移學習,也就是說模型在一個任務中學習到的東西能夠對另一個學習任務有幫助。事實上,這個特殊的例子特別受歡迎,以致於改進的通用語言模型已經成爲一個全新的領域!3d
遷移學習不只有利於任務之間的轉移:它能夠幫助通常模型在特定環境中更好的工做。例如:一個通用的英語情緒模型或許能夠預測電影評論,可是可能不知道「緊張、緊張的驚悚」是件好事。
這就是Jeremy和Sebastian Rudder的通用語言模型微調文本分類(ULMFiT)的用武之地。他們對一個包含100,000個IMDB評論的通用語言模型作了改進。即使是隻標記幾百個單詞,其他的單詞也可以幫助AI學習審稿人常常用「傑出」或「很好」代替「緊張、緊繃」等,這很好的彌補了數據不足的缺陷。結果的準確度令咱們感到驚訝:僅僅有500個標記示例,分類的準確度卻高達94%。
未被標記的數據最少須要多少?
ULMFiT爲NLP提供了一個有力的依據,使模型可以更有效的利用較小的數據集。在這項研究中,咱們專一於回答如下問題:
若是咱們對標記示例的預算特別少,那麼,得須要收集多少未標記的數據纔能有效的使用遷移學習?
爲了解決這個問題,咱們使用了大量固定的域數據池,並改變了標記示例的數量,來看看模型應該如何改進。將標記示例的數量保持不變,並改變未標記的其餘域示例的數量。也就是說,咱們的實驗包括:
1.語言建模(變量)
2.語言任務(不變量)
咱們的語言任務、情感分類和原始的ULMFiT論文中的任務相同,另外,也使用了IMDB電影評論數據集。在實驗中,標記情緒訓練樣本的數量保持在500個,500個樣本能夠用於不少小領域的研究,而且,有助於強調不一樣語言模型的差別提高能力。
對於語言建模,咱們改變了可用於語言任務的三種語言模型的域數據量:
•僅限ULM:這是使用Wikitext103預訓練英語語言模型
•僅限域(domain):僅在IMDB數據上的基於域訓練的模型。
•ULM +域(domain):ULMFiT模型
訓練這些模型的計算量特別大,最大的域訓練可能須要幾天的時間才能完成。爲了加快訓練速度和有效的執行網格搜索,咱們使用了FloydHub。
結果
通過大約50個小時GPU處理,結果以下:
從實驗結果,咱們可得知:
•使用33%的域數據,就能夠得到75%數據的UMLFiT性能。
•使人驚訝的是,ULM + 2,000域示例的語言任務預測準確率約爲85%。