回望2017,基於深度學習的NLP研究大盤點

雷鋒網 AI 科技評論按:本文是一篇發佈於 tryolabs 的文章,作者 Javier Couto 針對 2017 年基於深度學習的自然語言處理研究進行了大盤點。雷鋒網 AI 科技評論根據原文進行了編譯。

在過去的幾年裡,深度學習(DL)架構和算法在諸如圖像識別語音處理等領域取得了世人矚目的進步。然而在最開始的時候,深度學習在自然語言處理(Natural Language Processing, NLP)領域的效果一般,但是現在已經被證實深度學習在自然語言處理領域依然能夠發揮巨大的作用。並且在一些常見的自然語言處理任務中,基於深度學習的方法已經取得了最佳的結果。神經網絡模型在諸如命名實體識別(Named entity recognition, NER)、詞性標註(Part of speech tagging)情感分析(Sentiment analysis)等任務中的表現已經超越了傳統方法,另外在機器翻譯上的進步也許是最明顯的

在這篇文章中,我將細數 2017 年裡基於深度學習技術的自然語言處理所取得的一些進步。另外由於實在是存在着太多的相關論文、框架和工具,所以我並不打算進行詳盡的介紹。我只是想和大家分享一下今年產出的我所喜歡的工作,而且我認為 2017 年自然語言處理領域取得的成績斐然。今年深度學習在自然語言處理領域研究中的應用不斷擴大,並且在某些情況下取得了驚人的結果,所有這些跡象都在表明這一應用正方興未艾。

一、從訓練 word2vec 到使用預訓練模型

詞嵌入(Word embeddings)可以說是自然語言處理眾多任務中與深度學習相關的且最廣為人知的一項技術。該技術遵循 Harris ( 1954 ) 的分佈假說(Distributional hypothesis),根據這個假說,那些具有相似含義的詞彙通常出現在相似的語境中。關於詞嵌入更詳細的解釋,我建議你去閱讀這篇由 Gabriel Mordecki 所寫的文章

分佈詞向量樣例

諸如 word2vec ( Mikolov et al. , 2013) 和 GloVe ( Pennington et al. , 2014 ) 等算法已經成為該領域的先驅,雖然它們並不能算作深度學習(word2vec 中的神經網絡很淺,而 GloVe 則實現了一個基於計數的方法),但是通過這些方法訓練出來的模型卻在許多的基於深度學習的自然語言處理算法中被作為輸入數據而使用。總之,在自然語言處理領域使用詞嵌入已經幾乎成了行業準則,並且確實帶來了很好的實踐效果。

一開始,對於一個需要詞嵌入的特定自然語言處理問題,我們傾向於從一個領域相關的大型語料庫中訓練自己的模型。當然,這樣使用詞嵌入還不夠平民化,因此慢慢地便出現了預訓練模型。這些模型經過維基百科、推特、谷歌新聞等數據的訓練,可以讓你輕鬆地將詞嵌入整合到自己深度學習算法中。

今年證實了預訓練詞嵌入模型仍然是自然語言處理中的一個關鍵問題。比如說,來自 Facebook 人工智能研究實驗室(Facebook AI Research, FAIR)的 fastText 發佈了支持 294 種語言的預訓練(詞)向量,這對我們的社區而言是一項偉大的工作和貢獻。除了支持大量的語言之外,fastText 還使用了字符 n 元語法(n-grams)作為特徵。這樣使得 fastText 能夠避免出現超出詞彙量(Out of Vocabulary, OOV)的問題,因為即使是一個非常罕見的單詞也可能與一些更為常見的詞彙共享某些字符 n 元語法。從這個意義上來說,fastText 比 word2vec 和 GloVe 表現得更好,而且針對小型數據集而言,fastText 的表現更是超越了它們

雖然我們確實見證了這個領域所取得的進步,但是我們依然還有許多工作需要去完成。比如說,spaCy 是一個非常偉大的自然語言處理框架,它以原生的方式將詞嵌入和深度學習模型集成到了命名實體識別和依賴分析(Dependency Parsing)等任務中,並且允許用戶更新模型或者使用自定義模型。

依我拙見,將來將會出現許多針對某一特定領域的預訓練模型(比如,生物學、文學、經濟等),這些模型能夠很方便地在自然語言處理框架上進行使用。而在我們的日常使用中,最容易實現也是最錦上添花的功能,可能就是支持對模型的微調(fine-tuning)。同時,適應性詞嵌入(Adapting word embedding)方法也開始出現。

二、調整通用嵌入(Generic embeddings)模型適配特定用例

也許使用預訓練詞嵌入的主要缺點是,訓練數據與真實數據之間的單詞分佈存在差異。假設你只擁有一個較小的語料庫,這個語料庫中存儲了生物論文、食譜或者經濟學論文。不過可能你的語料庫的數據量又不足以訓練出好的詞嵌入,所以這時採用通用詞嵌入反而可能幫助你提高結果。但是如果可以調整通用嵌入模型去適配你的特定用例呢?

這種適配性通常被稱為自然語言處理中的跨域(Cross-domain)或者域適應(Domain adaptation)技術,並且與遷移學習(Transfer learning)非常相似。Yang 等人今年提出了一項非常有趣的工作。他們提出了一個正則化的 skip-gram 模型,該模型能夠在給定源域(Source domain)的嵌入時學習得到目標域(Target domain)的嵌入

核心思想簡潔而有效。假設我們已經知道了源域中單詞 w 的詞嵌入 ws。為了計算出目標域的嵌入 wt,作者給 ws 增加了一個傳輸量,而這個傳輸量則是基於兩個域計算得到。基本上,如果這個詞在兩個域中都具有很高的頻率,那就意味着它的語義不依賴於域。在這種情況下,傳輸量將很高,而因此兩個域中產生的嵌入將非常相似。但是由於某一特定域中的詞彙出現頻率總是比其它域要來的高,所以傳輸量會很小。

這個關於詞嵌入的研究課題還沒有被廣泛地探索,所以我認為它在近期將得到更多的關注。

三、不可思議的副作用——情感分析

一如青霉素、X 光甚至是便利貼都是來源於意外的發現。今年 Radford 等人正在探索位元組級別(Byte-level)的循環語言模型的特性,其目標是預測亞馬遜評論區中的下一個字符,但是當時他們意外發現訓練模型中的單個神經元對情感價值具有非常高的預測能力。並且這個單一的「情感神經元」能夠以相當準確的方式將評論情緒分類為積極的或者消極的。

在注意到這種現象之後,作者決定在斯坦福情感分析數據庫(Stanford Sentiment Treebank)上測試模型,結果發現它的準確性達到 91.8%,而之前的最好的結果是 90.2%。這意味着,他們的模型能夠使用更少的訓練樣例,以無監督方式進行訓練,然後在斯坦福情感分析數據庫這一被廣泛研究的數據集上實現了最高的情感分析準確度。

「情感神經元」

由於模型是在字符級別上進行工作的,所以神經元會針對文本中的每一個字符改變自身的狀態,而看到它的這種行為也是相當令人吃驚的。

情感神經元的行為展示,圖片來自於《Unsupervised Sentiment Neuron

例如,在掃描過積極的單詞之後,神經元的值也變成一個較大的正整數。然後這種效果將隨着掃描到消極單詞之後而逐漸消失,而這種現象也是符合直覺的

生成極性偏見(Polarity biased)的文本

當然該模型仍然是一個有效的生成模型,所以它能夠被用來生成與亞馬遜評論相類似的文本內容。但是我覺得更棒的一點是,你可以通過簡單地改寫情感神經元的值,來影響所生成文本的極性。

生成文本樣例,來自於《Unsupervised Sentiment Neuron

該樣例所採用的神經網絡模型是由 Krause 等人(2016)所提出的乘性 LSTM,這主要是因為他們發現,在他們所探索的超參數配置下乘性 LSTM 比一般的 LSTM 收斂更快。它有 4096 個單元並且使用了一個具有 8200 萬條亞馬遜評論的數據語料庫進行訓練。

至於為什麼訓練有素的模型能夠以如此精確的方式捕捉到情感概念仍然是一個開放性的未解之謎。同時,你可以嘗試訓練自己的模型來進行實驗。當然如果你有許多時間和 GPU 集群,那麼根據作者所提供的信息,在四個英偉達 Pascal 圖形處理器(GPU)上訓練這個特定模型需要花費一個月時間。

四、Twitter 上的情感分析

無論是要獲取人們對企業品牌的評價,或是分析營銷活動的影響,亦或是衡量上次美國大選期間全球人們對 Hillary Clinton 和 Donald Trump 的看法,Twitter 上的情感分析都是一個非常強大的工具。

希拉里對上川普:來自 Twitter 的情感分析,圖片來自於《Donald Trump vs Hillary Clinton: sentiment analysis on Twitter mentions

情感評估(SemEval) 2017

Twitter 上的情感分析已經引起了自然語言處理研究人員的大量關注,而且也引起了政治和社會科學界的關注。這就是為什麼自 2013 年以來,SemEval 每年都會提出一個特定的任務進行比賽。

今年一共有 48 支隊伍參加了評測,為了讓你更好地了解 Twitter 推出的 SemEval 究竟是什麼,讓我們來看看今年提出的五項子任務。

  1. 子任務 A:給出一條推文,然後判定該推文表達了積極、消極或是中立的情緒。

  2. 子任務 B:給出一條推文和一個主題,然後把這個主題所傳達出的情感進行二分類:積極或者消極。

  3. 子任務 C:給出一條推文和一個主題,然後把這個主題所傳達出的情感進行五分類:非常積極、積極、中立、消極和非常消極。

  4. 子任務 D:給出一組與某個主題相關的推文,評估該組中所有推文在積極和消極兩個情緒中的分佈情況。

  5. 子任務 E:給出一組與某個主題相關的推文,評估該組中所有推文在積極和消極五個情緒中的分佈情況,五個情緒分別是:非常積極、積極、中立、消極和非常消極。

如你所見,子任務 A 是最常見的任務,有 38 個團隊參與了這個任務,但是其它的四項子任務則更具挑戰性。主辦方指出,基於深度學習的方法受到越來越多參賽者的歡迎,今年有 20 個團隊採用了卷積神經網絡(CNN)長短時記憶(LSTM)等模型。此外,儘管 SVM 模型仍然非常流行,但是一些參與者選擇將它們與神經網絡方法相結合或者是使用詞嵌入特徵。

BB_twtr 系統

今年我發現一個純深度學習系統——BB_twtr 系統(Cliche, 2017)英語的第五項子任務中排名第一。作者將 10 個 CNN 和 10 個 biLSTM  組合起來,然後採用不同的超參數和不同的預訓練策略進行訓練。你可以從論文中獲得這個網絡結構的具體信息。

為了訓練這些模型,作者使用了人類標記的推文(子任務 A 有 49,693 條數據),並且構建了一個包含 1 億條推文的無標籤數據。作者對每條推文進行了簡單標記,也就是使用諸如「:-)」這樣積極的表情來標記積極情緒的推文,然後使用消極的表情標記消極的推文,通過這種方式作者從包含有 1 億條推文的數據集中抽取出了一個遠程數據集。所有的推文都被轉化為小寫,然後其中的標記、URL和表情符號被替換為特定的標記,並且對重複的字符也進行了統一,例如「niiice」和「niiiiiiiiiice」都變成「niice」

CNN 和 biLSTM 採用詞嵌入作為輸入,為了獲得該預訓練的詞嵌入,作者在所有未標記數據上使用了 word2vec、GloVe 和 fastText(全部使用默認設置)。然後他使用遠程的數據集來微調詞嵌入模型,以便給模型添加極性信息,之後他使用人類標記的數據集對模型再次進行微調。

作者使用以前的 SemEval 數據集進行實驗,結果表明使用 GloVe 會降低性能,並且對於所有的標準數據集沒有一個唯一的最佳模型。然後作者通過一個軟投票(Soft voting)策略將所有模型組合起來。由此產生的模型比 2014 年和 2016 年的歷史最佳的成績還更勝一籌,並且與其它年份的結果也非常接近。最終,該模型 SemEval 2017 的第五個子任務中取得了英語語言排名第一的成績。

雖然這種組合不是以一種有機的方式進行的,而是採用一種簡單的軟投票策略,但是該工作表明了將不同深度學習模型結合起來的可能性,還以一種近乎端到端的方法(輸入必須經過預處理)證明了在 Twitter 的情感分析中,端到端策略是能夠超越監督方法的。

五、一個令人興奮的摘要生成系統

自動摘要(Automatic summarization)生成和自動翻譯都是自然語言處理領域中最早出現的一類研究問題。自動摘要生成的實現主要有兩類方法:基於抽取(Extraction-based),該方法的摘要是通過從源文本中提取最重要的片段而建立的,而基於抽象(Abstraction-based)的方法則是通過生成文本來構成摘要。歷史中,由於基於抽取的方法比起基於抽象的方法更加簡單,因此基於抽取的方法是最常使用的。

在過去的幾年裡,基於 RNN 模型在文本生成方面取得了驚人的成就。它們對於簡短的輸入和輸出文本表現得非常好,但是對於長文本就顯得差強人意,所生成內容往往顛三倒四和語義不通。在他們的工作中,Paulus 等人提出了一種新穎的神經網絡模型來克服這個局限性。結果令人吃驚,如下圖所示。

摘要生成展示,圖片來自於《A deep reinforced model for abstractive summarization

作者使用 biLSTM 編碼器讀取輸入,並使用 LSTM 解碼器生成輸出。他們的主要貢獻是提出了分別關注輸入和連續生成輸出的一種全新的內部注意力(Intra-attention)策略,以及結合標準監督詞語預測和強化學習的全新的訓練方法

內部注意力策略

內部注意力策略的目標是避免輸出中出現重複。為了實現這個目標,他們在解碼時使用時間注意力機制來查看輸入文本的前一片段,然後再決定下一個要生成的詞語。這迫使模型在生成過程中使用了輸入的不同部分。他們還允許模型從解碼器訪問以前的隱藏狀態。然後將這兩個函數組合起來,為輸出摘要選擇最好的下一個單詞。

強化學習

要生成一個摘要,對於不同的人可能會採用不同的詞彙和語序,但是這些摘要卻都可能是有效的。因此,一個好的摘要不一定是儘可能與訓練數據集中的序列相匹配的單詞序列。在理解到這一點之後,作者避開使用標準教師強迫算法(Standard teacher forcing algorithm),由於該算法在每個解碼步驟(即對每個生成的單詞)最小化損失,並且它們依賴於那些被證明是極好選擇的強化學習策略。

優異的結果

該模型在 CNN/每日郵報數據集上進行了測試,並且取得了最好的結果。在另一項有人類評估者參與的實驗表明,該模型生成的摘要在可讀性和質量上均有提高。總體來看,這些結果令人印象深刻。另外該模型的預處理包括有:標記輸入文本、採用小寫、數字被替換為「0」並且移除數據集中的一些特定實體

六、邁向無監督學習機器翻譯的第一步

雙語詞彙歸納法,即用兩種語言的源語和單語語料庫來識別單詞翻譯對,這是一種古老的自然語言處理任務。然後自動生成的雙語詞典有助於其它自然語言處理任務,如信息檢索和統計機器翻譯。然而,這些方法大部分時間都依賴於某種資源,通常是一個初始的雙語詞典,而這個詞典並不總是可用或者容易建立。

隨着詞嵌入取得成功,業內也開始出現了跨語言詞嵌入的想法,而其目標是對齊嵌入空間而不是詞典。不幸的是,第一種方法也依賴於雙語詞典或平行語料庫。在他們的工作中,Conneau 等人(2018)提出了一個非常有前途的方法,它不依賴於任何特定的資源,並且對於多個語言對的語言翻譯、句子翻譯檢索和跨語言單詞相似性的任務要優於現有技術的監督方法。

作者發明的方法是將輸入的兩組詞嵌入在單語數據上進行獨立訓練,並學習它們之間的映射,使得翻譯在公共空間中相互接近。他們使用 fastText 在維基百科文檔上訓練無監督的單詞向量。以下圖片說明了算法的核心思想。

建立兩個詞嵌入空間之間的映射,紅色的 X 分佈是英語單詞的嵌入,而藍色的 Y 分佈是意大利語單詞的嵌入。

首先他們使用對抗學習(Adversarial learning)來學習要執行第一次原始對齊的旋轉矩陣 W。他們根據 Goodfellow 等人(2014)提出的主張,先訓練了一個基礎的對抗神經網絡(Generative Adversarial Network, GAN)。如果想要了解 GAN 是如何工作的,我推薦這篇由 Pablo Soto 撰寫的優秀文章

為了在對抗學習方面對問題進行建模,他們將判別模型(Discriminator)定義為具有判定能力的角色,對於所給定的從 WXY 隨機採樣的一些元素(參見上圖中的第二列),判別模型將判定每個元素屬於哪種語言。然後他們訓練 W 以避免判別模型做出更好的預測。我認為這種做法非常聰明和優雅,並且最終的結果也相當不錯。

之後,他們還再經過兩個步驟來完善映射關係。一是為了避免映射計算中因為罕見詞彙而引入的噪聲;另一個則是主要通過使用學習到的映射關係與一個距離度量來建立實際的翻譯

在某些情況下這些結果非常令人印象深刻。例如,對於英語-意大利語單詞翻譯,他們的模型在 P@10 的情況下超過了最佳平均精度將近 17%。

英語-意大利語單詞翻譯平均精度

作者聲稱,他們的方法可以用作無監督機器翻譯的第一步。如果真是這樣,這將非常棒。同時,讓我們看看這個新的富有前途的方法還能走多遠吧。

七、專門的框架與工具

當前存在着許多的深度學習框架和工具,其中有一些已經被廣泛使用了,比如 TensorFlowKeras或者 PyTorch。然而,面向特定開源自然語言處理的深度學習框架和工具才剛剛興起。今年總歸行情不錯,因為一些非常有用的框架已經在社區中進行了開源。其中有三個引起了我的特別注意。

AllenNLP

AllenNLP框架是構建在 PyTorch 之上的一個平台,可以實現在語義自然語言處理任務中輕鬆使用深度學習方法。其目標是讓研究人員設計和評估新模型。它包含了常用的語義自然語言處理任務模型的參考實現,例如語義角色標註、文字蘊涵(Textual entailment)和指代消除(Coreference resolution)

ParlAI

ParlAI 框架是針對對話研究(Dialog research)而設計的一款開源軟件。它採用 Python 進行實現,其設計目標是為對話模型的共享、訓練和測試提供一個統一的框架。ParlAI 提供了一個與 Amazon Mechanical Turk 輕鬆集成的機制。它還提供了該領域所流行的數據集,並且支持多種模型,包括記憶網絡、seq2seq 和 LSTM。

OpenNMT

OpenNMT 工具箱是專門用於序列到序列(Sequence-to-sequence)模型的通用框架。它可以用於執行諸如機器翻譯、摘要生成、圖像轉文本和語音識別等任務。

八、其它想法

用於處理自然語言處理的深度學習技術不斷增加這一事實是不可否認的。一個很好的指標就是過去幾年裡在 ACL、EMNLP、EACL 和 NAACL 等關鍵的自然語言處理會議上深度學習論文比例在不斷提升。

深度學習論文佔比

然而,真正的端到端學習才剛剛開始出現。我們仍然在處理一些經典的自然語言處理任務來準備數據集,例如清洗、標記或統一某些實體(例如URL、數字、電子郵件地址等)。我們也使用通用嵌入(Generic embeddings),其缺點是不能捕捉到特定領域術語的重要性,而且它們對於多詞語表達式的表現能力不佳,這也是我在工作中經常發現的一個關鍵問題。

九、擴展閱讀

如果想要獲取更多今年的基於深度學習自然語言處理研究方法的資訊,我強烈建議你閱讀 Young 等人的優秀論文《Recent Trends in Deep Learning Based Natural Language Processing》(2017)。

另一份有趣的閱讀材料是由 Blunsom 等人(2017)在學術研討會上所做的報告「從字符到理解自然語言(C2NLU):強大的 NLP 端到端深度學習」。出席研討會的人都是自然語言處理領域的研究員。研討會上討論了深度學習和一般機器學習的優勢,同時也探討了使用多個字符而不是特定語言標記(Language-specific tokens)作為深度學習模型輸入所帶來的挑戰。

為了在模型之間進行比較,Yin 等人提出了一個非常有趣的 CNN 和 RNN 的對比研究(2017)。

關於詞嵌入的詳細解釋,我建議你閱讀 Gabriel Mordecki 的這篇文章。他寓教於樂,不僅解釋了詞嵌入的不同方法,而且還介紹了一些關於詞嵌入的神話。

最後,Sebastian Ruder 在 2017 年寫了一篇非常好非常詳細的有關於詞嵌入的文章——《About Word embedding in 2017: Trends and future directions

十、引用

Via : Deep Learning for NLP, advancements and trends in 2017,雷鋒網編譯


想在手機閱讀更多周邊設備資訊?下載【香港矽谷】Android應用
分享到Facebook
技術平台: Nasthon Systems