1. 程式人生 > >小資料、高準確率的文字分類:利用遷移學習創造通用語言模型

小資料、高準確率的文字分類:利用遷移學習創造通用語言模型

作者 | Jeremy Howard、Sebastian Ruder

譯者 | Liu Zhiyong

編輯 | Natalie,Vincent

AI 前線導讀:本文是對 Fast.ai 新論文的介紹,面向大眾讀者,闡述瞭如何自動對文件進行分類,同時比以前的方法具有更高的準確率,以及更少的資料需求。本文將用簡單的術語來解釋:自然語言處理、文字分類、遷移學習、語言建模;以及這個新的方法是如何將這些想法結合在一起的。如果你已經熟悉自然語言處理和深度學習,你可以訪問這個專案主頁來獲得技術資訊:http://nlp.fast.ai/category/classification.html

更多幹貨內容請關注微信公眾號“AI 前線”,(ID:ai-front)

前 言

我們發表了論文 Universal Language Model Fine-tuning for Text Classification,(ULMFiT)(https://arxiv.org/abs/1801.06146),提供了預訓練模型(pre-trained models)和 Python 實現的完整程式碼。這篇論文在已經在國際頂級會議 ACL 2018 經過同行評議並接收(Annual Meeting of the Association for Computational Linguistics,ACL 2018,http://acl2018.org/)。可以在此網頁(http://nlp.fast.ai/category/classification.html)觀看相關視訊,視訊提供了對該方法的深入探討、所有使用的 Python 模組、預訓練模型以及用於構建自己的模型的指令碼。

這種方法大大改進了以前的文字分類方法,任何人都可以用我們的程式碼和預訓練模型來更好地解決以下問題:

  • 查詢與法律案件相關的檔案;

  • 識別垃圾郵件、機器人回覆和攻擊性評論;

  • 對產品的正面和負面評論進行分類;

  • 按政治傾向進行文章分類;

  • 其他。

與以前的方法相比,ULMFiT 需要的資料量要少得多。(論文中的圖 3)

那麼這種新技術究竟做了什麼改進呢?讓我們首先看一看論文摘要的部分內容,看看它是怎麼說的,然後在本文接下來的章節,我們將由此展開並準確瞭解其全部含義:

遷移學習極大地影響了計算機視覺,但是自然語言處理現有的方法,仍然需要從頭開始進行特定任務的修改和訓練。我們提出了一種有效的遷移學習方法,可以應用於自然語言處理中的任何任務,並引入對語言模型進行微調的關鍵技術。我們的方法在六種文字分類任務上,明顯優於現有的技術,在大多數資料集上的錯誤減少了 18~20%。此外,這種方法只用了帶 100 個帶標記的樣本,就可以與擁有 100 倍以上資料並且從頭開始訓練的模型效能相媲美。

自然語言處理、深度學習和分類

自然語言處理(Natural language processing,NLP)是電腦科學和人工智慧的一個領域,顧名思義,它是指使用計算機來處理自然語言。自然語言是指我們日常交流的正常語言,如英語或漢語,而不是像計算機程式碼或音樂符號那樣的專門語言。自然語言處理用於各種應用,如搜尋、個人助理、摘要等等。總體來說,自然語言處理頗具挑戰性,因為我們在編寫計算機程式碼時,所使用的嚴格規則並不適用於語言的細微差別和靈活性。你自己也可能遇到過這些限制,比如嘗試與自動電話應答系統交流,帶給你的是令人沮喪的體驗;或者像 Siri 那樣的早期對話式機器人那可憐的能力。

在過去的幾年中,我們已經目睹深度學習正大舉進入那些計算機以前只能取得有限成功的領域。深度學習並不需要程式設計師來定義一組固定規則,而是使用神經網路,直接從資料中習得豐富的非線性關係。最值得注意的是,深度學習在計算機視覺上取得的成功,例如在 ImageNet 影象分類競賽中的突飛猛進地發展。

深度學習在自然語言處理也取得了一些成功,例如在《紐約時報》的文章中曾談及的自動翻譯。大凡成功的自然語言處理任務的一個共同特點是,都有大量的標記資料可用於訓練模型。然而到目前為止,這些應用僅限於那些能夠收集和標記大型資料集,並擁有計算資源可以在計算機叢集上長時間處理它們的機構。

說來也奇怪的是,自然語言處理對於深度學習來說仍然極具挑戰性的一個子領域,也正是它在計算機視覺領域大獲成功的領域:分類。它指的是,你的目標是將事物(如影象或文件)分類的任何問題(如貓和狗的影象,或正面與負面的評論,等等)。大量重要的現實問題主要是關於分類的,這就是為什麼深度學習在 ImageNet(一個分類問題)取得的成功催生了大量的商業應用的原因。在自然語言處理中,目前的方法能夠很好地識別,例如,判斷關於某部電影的評論是正面還是負面,這是一個稱之為“情感分析”的問題。然而,當事情變得更加模糊時,模型就會“猶豫不決”,這通常是因為沒有足夠的標籤資料來學習。

遷移學習

我們的目標是解決這兩個問題:a) 處理自然語言處理問題,我們並沒有大量的資料和計算資源;b) 使自然語言處理的分類更容易。我們(Jeremy 和 Sebastian)都在研究解決這個問題的確切領域:遷移學習。遷移學習指的是使用經過訓練解決某個問題(如將 ImageNet 中影象分類)的模型作為解決其他類似問題的基礎。一種常見的方法是對原始模型進行微調(如將 CT 掃描分類為癌症或非癌症,這是 Jeremy 在建立 Enlitic 時所開發的遷移學習的應用)。由於微調模型不需要從頭開始學習,因此,與不使用遷移學習的模型相比,它通常可以達到更高的準確率,而且所需的資料和計算時間也少得多。

非常簡單的遷移學習只使用一層權重(稱為嵌入),在這幾年來紅得發紫,比如 Google 的 word2vec 嵌入。然而在實踐中,完整的神經網路包含了許多層,所以,僅使用單個層的遷移學習,顯然只是對無盡可能性的淺嘗即止。

那麼問題來了,為了解決自然語言處理的問題,我們可以從哪裡進行遷移學習?這個問題的答案就在 Jeremy 手上,當時他的朋友 Stephen Merity 宣佈開發了 AWD 長短期記憶網路模型(AWD LSTM language model, https://github.com/salesforce/awd-lstm-lm ),這與以前的語言建模方法相比有了很大的改進。語言模型是一種自然語言處理的模型,它學習預測句子中的下一個單詞。例如,如果你需要手機鍵盤猜測接下來要鍵入的單詞,那麼就需要使用語言模型。很重要的原因是,語言模型很擅長猜測你接下來要說什麼,它需要大量世界性的常識(如:“I ate a hot” →“dog”;“It is very hot” → “weather”),並深入理解語法、語義和自然語言的其他元素。這正是我們在閱讀和分類文件時所具備卻渾然不知的能力。

我們發現,在實踐中,這種遷移學習的方法具有使其成為自然語言處理遷移學習的通用方法的特徵:

  • 適用於不同文件大小、數量和標籤型別的任務;

  • 使用單一架構和訓練過程;

  • 不需要自定義特徵工程或預處理;

  • 不需要額外的域內文件或標籤。

讓它發揮作用

ULMFiT 高階方法(以 IMDb 為例)

這個想法以前就嘗試過,但需要數百萬份文件才能獲得足夠的效能。我們發現,通過更聰明地對語言模型進行微調,就可以做得更好。特別是,我們發現,如果仔細地控制模型學習的速度,並更新預訓練模型,這樣它就不會忘記之前學過的東西,那麼模型就可以更好地適應新的資料集。有一件事令我們感到特別興奮,那就是模型可以很好地從有限的樣本中學習。在一個包含兩個類的文字分類資料集中,我們發現,僅用 100 個標記的樣本來訓練我們的方法(並允許它訪問大約 50000 個未標記的樣本),我們就能夠實現與用 10000 個標記樣本從頭開始訓練模型相同的效能。

另一個重要的見解是,我們可以使用任何合理且通用的大型語言語料庫來建立通用語言模型:我們可以對任何自然語言處理目標語料庫進行微調。我們決定使用 Stephen Merity 的 Wikitext 103 資料集,它包含了英文版維基百科的預處理大型子集。

自然語言處理的研究主要集中在英語上,而非英語語言的模型訓練會帶來一系列挑戰。一般而言,非英語語言的公開資料集的數量很少,如果你想為一種語言(如泰語)訓練文字分類模型,就得收集自己的資料。以非英語語言收集資料通常意味著你需要對資料進行標註,或者自己找到標註者,因為像 Amazon Mechanical Turk 這樣的眾包服務大多使用了講英語的標註者。

在 ULMFiT 的幫助下,我們可以使除英語以外的語言訓練文字分類模型變得更容易,因為我們所需要的只是訪問維基百科,而維基百科目前有 301 種語言,少量文件可以方便手動進行標註,還可以隨意新增未標記的文件。為了讓這更容易,我們將很快推出一個模型合集(model zoo,http://nlp.fast.ai/category/model_zoo.html),為多種語言提供預訓練語言模型。

ULMFiT 的未來我們發現,這種方法在不同的任務中,使用相同的設定效果很好。除了文字分類外,還有很多其他重要的自然語言處理問題,如序列標記或自然語言生成,我們希望 ULMFiT 將來能更容易地解決這些問題。一旦我們完成實驗並在這些領域構建模型,我們將會更新這個網站。

在計算機視覺領域中,遷移學習的成功和預訓練 ImageNet 模型的可用性已經改變了這一領域。包括企業家、科學家和工程師在內的許多人,他們正在使用微調的 ImageNet 模型來解決涉及計算機視覺的重要問題:從提高非洲農作物產量到製造樂高積木的機器人。現在,同樣的工具可以用來處理自然語言,我們希望在這個領域也能看到同樣應用的激增。

雖然我們已經闡述了文字分類的最新成果,但是仍然需要做大量的工作,才能真正充分利用自然語言處理遷移學習。在計算機視覺領域中,已經湧現許多重要而有見地的論文,深入分析了該領域的遷移學習。尤其是 Yosinski 等人試圖回答“how transferable are features in deep neural networks(https://arxiv.org/abs/1411.1792)”這一問題,Huh 等人研究了“what makes ImageNet good for transfer learning(https://arxiv.org/abs/1608.08614)”。Yosinski 甚至建立了一個豐富的視覺化工具包(visualization toolkit,https://github.com/yosinski/deep-visualization-toolbox),幫助從業者更好地理解他們的計算機視覺模型中的特徵,如下視訊所示:

Deep Visualization Toolbox

原文連結:

http://nlp.fast.ai/classification/2018/05/15/introducting-ulmfit.html