到底什麼方法 訓練1000個樣本,就能完成400萬條評論分類!

  • 2019 年 11 月 20 日
  • 筆記

來源:feedly blog

編譯:Bing

編者按:關於NLP領域的遷移學習我們已經介紹過了,fast.ai也有很多相應的討論。今天給大家展示一個在亞馬遜評論數據集上實現的任務,即將評論分為積極或消極兩類。 GitHub地址在這裡:github.com/feedly/ml-demos/blob/master/source/TransferLearningNLP.ipynb,感興趣的同學可以自己動手試試。

PS:閱讀原文,領取復現程式碼!

什麼是遷移學習?

得益於遷移學習,電腦視覺領域的發展非常迅速。有著幾百萬個參數的高度非線性模型通常需要大型數據集的訓練,經過幾天甚至幾周的訓練,也只能分辨貓狗。

有了ImageNet挑戰賽後,每年各種隊伍都會設計出不同的影像分類器。我們發現這類模型的隱藏層可以捕捉影像的通用特徵(例如線條、形式、風格等)。於是,這樣就不用每次都為新的任務重建模型了。

以VGG-16模型為例:

它的結構相對複雜,圖層較多,同時參數也很多。論文作者稱需要用四個GPU訓練三周。

而遷移學習的理念是,由於中間的圖層是學習影像一般特徵的,所以我們可以將其用作一個大型「特徵生成器」!我們可以先下載一個預訓練模型(在ImageNet任務上訓練了好幾周),刪去網路的最後一層(全連接層),根據我們的任務進行調整,最後只訓練我們的分類器圖層。由於使用的數據可能和之前訓練的模型所用數據不同,我們也可以花點時間訓練所有圖層。

由於只在最後一層進行訓練,遷移學習會用到更少的標記數據。對數據進行標註非常費時,所以創建不需要大量數據的高品質模型就非常受歡迎了。

NLP中的遷移學習

說實話,遷移學習在自然語言處理中的發展並不像在機器視覺里那樣受重視。讓機器學習線條、圓圈、方塊,然後再用於分析還是比較容易設計的。但是用來處理文本數據似乎不那麼容易。

最初用來處理NLP中的遷移學習問題的是詞嵌入模型(常見的是word2vec和GloVe),這些詞嵌入表示利用詞語所在的語境來用向量表示它們,所以相似的詞語有相似的詞語表示。

然而,詞嵌入只能表示大多數NLP模型的第一個圖層,之後我們仍需要從零開始訓練所有的RNN/CNN等圖層。

對語言模型進行微調

今年年初,Jeremy Howard和Sebastian Ruder提出了ULMFiT模型,這也是對NLP領域遷移學習的深入嘗試。具體可參考論智此前報道的:《用遷移學習創造的通用語言模型ULMFiT,達到了文本分類的最佳水平》。

他們所研究的問題基於語言模型。語言模型是能夠基於已知單詞預測下一個單詞的模型(例如手機上的智慧拼寫)。就像影像分類器一樣,如果NLP模型能準確預測下一個單詞,那就可以認為該模型學了很多自然語言組合的規則了。這一模型可以作為初始化,能夠針對不同任務進行訓練。

ULMFiT提出要在大型語料上訓練語言模型(例如維基百科),然後創建分類器。由於你的文本數據可能和維基百科的語言風格不同,你就需要對參數進行微調,把這些差異考慮進去。然後,我們會在語言模型的頂層添加一個分類圖層,並且只訓練這個圖層!論文建議逐漸解鎖各個圖層進行訓練。

ULMFiT論文中的收穫

這篇論文最讓人驚喜之處就是用非常少的標記數據訓練分類器。雖然未經標記過的數據隨處可見,但是標記過的數據獲取的成本是很高的。下面是對IMDb進行情感分析之後的結果:

只用了100個案例,他們就達到了和用2萬個案例訓練出的模型同樣的錯誤率水平。除此之外,他們還提供了對模型進行預訓練的程式碼,因為維基百科有多種語言,這使得我們能快速地進行語言轉換。除英語之外,其他語種並沒有很多經過標記的公開數據集,所以你可以在語言模型上對自己的數據進行微調。

處理亞馬遜評論

為了加深對這種方法的理解,我們在另一個公開數據集上試了試。在Kaggle上發現了這個「亞馬遜評論情感分析數據集」(地址:www.kaggle.com/bittlingmayer/amazonreviews/home)。它含有400萬條商品評論已經相關的情感標籤(積極或消極)。我們用fast.ai提出的ULMFiT對亞馬遜的評價進行分類。我們發現,僅用1000個案例,模型就達到了在全部數據上訓練的FastText模型的表現成果。而用100個案例進行訓練,模型也能表現出不錯的性能。

如果你想復現這個實驗,可以參考notebook:github.com/feedly/ml-demos/blob/master/source/TransferLearningNLP.ipynb,在微調和分類過程中有一個GPU還是很高效的。

NLP中非監督 vs 監督學習

在使用ULMFiT的過程中,我們用到了非監督和監督學習兩種方法。訓練一個非監督式語言模型很「便宜」,因為你可以從網上找到很多文本數據。但是,監督式模型的成本就很高了,因為需要標記數據。

雖然語言模型可以捕捉到很多有關自然語言組織的資訊,但是仍不能確定模型能否捕捉到文本的含義,即它們能否了解說話者想傳達的資訊。

Emily Bender在推特上曾提出了一個有趣的「泰語實驗」:「假設給你所有泰語書籍,沒有譯文。假如你一點都不懂泰語,你永遠不會從中學會什麼。」

所以,我們認為語言模型更多的是學習語法規則,而不是含義。而語言模型能做的不僅僅是預測在語法規則上相近的句子。例如「I ate this computer」和「I hate this computer」兩句話結構相同,但是一個良好的模型應該會將後者看作是「更正確」的句子。所以我們可以將語言模型看作是學習自然語言句子的架構的工具,從而幫助我們了解句子含義。

想了解更多這方面的話題,可以觀看ACL 2018上Yejin Choi的演講:sites.google.com/site/repl4nlp2018/home?authuser=0

NLP遷移學習的未來

ULMFiT的出現推動了遷移學習在自然語言處理中的發展,同時也出現了其他的微調工具,例如FineTune Transformer LM。我們注意到隨著更多更好地語言模型的出現,遷移的效率也在不斷提高。

最後再附上ULMFiT的原論文:arxiv.org/pdf/1801.06146.pdf

原文地址:blog.feedly.com/transfer-learning-in-nlp/

獲 論智 授權