每日最新頭條.有趣資訊

15年來,自然語言處理發展史上的8大裡程碑

自然語言是人類獨有的智慧結晶。自然語言處理(Natural Language Processing,NLP)是電腦科學領域與人工智能領域中的一個重要方向,旨在研究能實現人與電腦之間用自然語言進行有效通信的各種理論和方法。用自然語言與電腦進行通信,有著十分重要的實際應用意義,也有著革命性的理論意義。

由於理解自然語言,需要關於外在世界的廣泛知識以及運用操作這些知識的能力,所以自然語言處理,也被視為解決人工智能完備(AI-complete)的核心問題之一。對自然語言處理的研究也是充滿魅力和挑戰的。

本文是來自自然語言處理領域從業人員、知名博主 Sebatian Ruder的一篇文章,主要從神經網絡技術方法的角度,討論自然語言處理領域近 15 年來的重大進展,並總結出與當下息息相關的 8 大裡程碑事件。文章內容難免會省略了一些其它重要的相關工作,同時,這份總結偏向於神經網絡相關技術,這並不意味著在這段時間內其它技術領域就沒有重要的進展。值得注意的是,文中提及的很多神經網絡模型都是建立在同一時期非神經網絡技術的裡程碑之上的,在文章的最後,我們強調了這些打下堅實基礎的重要成果。

2001年——神經語言模型(Neurallanguage models)

語言模型解決的是在給定已出現詞語的文本中,預測下一個單詞的任務。這可以算是最簡單的語言處理任務,但卻有許多具體的實際應用,例如智能鍵盤、電子郵件回復建議等。當然,語言模型的歷史由來已久。經典的方法基於 n-grams 模型(利用前面 n 個詞語預測下一個單詞),並利用平滑操作處理不可見的 n-grams。

第一個神經語言模型,前饋神經網絡(feed-forward neuralnetwork),是 Bengio 等人於 2001 年提出的。如圖 1 所示。

圖 1 | 前饋神經網絡語言模型(Bengio et al., 2001; 2003)

這個模型以某詞語之前出現的 n 個詞語作為輸入向量。今天,這樣的向量被稱為大家熟知的詞嵌入(word embeddings)。這些詞嵌入在級聯後進入一個隱藏層,該層的輸出然後通過一個 softmax 層。

近年來,用於構建語言模型的前饋神經網絡已經被循環神經網絡(RNNs)和長短期記憶神經網絡(LSTMs)取代。雖然後來提出的許多新模型在經典的 LSTM 上進行了擴展,但它仍然是強有力的基礎模型。甚至 Bengio 等人的經典前饋神經網絡在某些設定下也和更複雜的模型效果相當,因為這些任務只需要考慮鄰近的詞語。更好地理解語言模型究竟捕捉了哪些資訊也是當今一個活躍的研究領域。

語言模型的建立是一種無監督學習(unsupervised learning),Yann LeCun 也將其稱之為預測學習(predictive learning),是獲得世界如何運作常識的先決條件。關於語言模型最引人注目的是,儘管它很簡單,但卻與後文許多核心進展息息相關。

反過來,這也意味著自然語言處理領域的許多重要進展都可以簡化為某種形式的語言模型構建。但要實現對自然語言真正意義上的理解,僅僅從原始文本中進行學習是不夠的,我們需要新的方法和模型。

2008年——多任務學習(Multi-tasklearning)

多任務學習是在多個任務下訓練的模型之間共享參數的方法,在神經網絡中可以通過捆綁不同層的權重輕鬆實現。多任務學習的思想在 1993 年由 Rich Caruana 首次提出,並應用於路線追蹤和肺炎預測。多任務學習鼓勵模型學習對多個任務有效的表征描述。這對於學習一般的、低級的描述形式、集中模型的注意力或在訓練數據有限的環境中特別有用。

多任務學習於 2008 年被Collobert 和 Weston 等人首次在自然語言處理領域應用於神經網絡。在他們的模型中,詞嵌入矩陣被兩個在不同任務下訓練的模型共享,如圖 2 所示。

圖 2 | 詞嵌入矩陣共享(Collobert & Weston, 2008; Collobert et al., 2011)

共享的詞嵌入矩陣使模型可以相互協作,共享矩陣中的低層級資訊,而詞嵌入矩陣往往構成了模型中需要訓練的絕大部分參數。Collobert 和 Weston 發表於 2008 年的論文,影響遠遠超過了它在多任務學習中的應用。它開創的諸如預訓練詞嵌入和使用卷積神經網絡處理文本的方法,在接下來的幾年被廣泛應用。他們也因此獲得了 2018 年機器學習國際會議(ICML)的 test-of-time 獎。

如今,多任務學習在自然語言處理領域廣泛使用,而利用現有或“人工”任務已經成為 NLP 指令庫中的一個有用工具。雖然參數的共享是預先定義好的,但在優化的過程中卻可以學習不同的共享模式。當模型越來越多地在多個任務上進行測評以評估其泛化能力時,多任務學習就變得愈加重要,近年來也湧現出更多針對多任務學習的評估基準。

2013年——詞嵌入

通過稀疏向量對文本進行表示的詞袋模型,在自然語言處理領域已經有很長的歷史了。而用稠密的向量對詞語進行描述,也就是詞嵌入,則在 2001 年首次出現。2013 年Mikolov 等人工作的主要創新之處在於,通過去除隱藏層和近似計算目標使詞嵌入模型的訓練更為高效。儘管這些改變在本質上是十分簡單的,但它們與高效的 word2vec(word to vector,用來產生詞向量的相關模型)組合在一起,使得大規模的詞嵌入模型訓練成為可能。

Word2vec 有兩種不同的實現方法:CBOW(continuous bag-of-words)和 skip-gram。它們在預測目標上有所不同:一個是根據周圍的詞語預測中心詞語,另一個則恰恰相反。如圖 3 所示。

圖 3 | CBOW 和skip-gram 架構(Mikolov et al., 2013a; 2013b)

雖然這些嵌入與使用前饋神經網絡學習的嵌入在概念上沒有區別,但是在一個非常大語料庫上的訓練使它們能夠獲取諸如性別、動詞時態和國際事務等單詞之間的特定關係。如下圖 4 所示。

圖 4 | word2vec 捕獲的聯繫(Mikolov et al., 2013a; 2013b)

這些關係和它們背後的意義激起了人們對詞嵌入的興趣,許多研究都在關注這些線性關係的來源。然而,使詞嵌入成為目前自然語言處理領域中流砥柱的,是將預訓練的詞嵌入矩陣用於初始化可以提高大量下遊任務性能的事實。

雖然 word2vec 捕捉到的關係具有直觀且幾乎不可思議的特性,但後來的研究表明,word2vec 本身並沒有什麽特殊之處:詞嵌入也可以通過矩陣分解來學習,經過適當的調試,經典的矩陣分解方法 SVD 和 LSA 都可以獲得相似的結果。

從那時起,大量的工作開始探索詞嵌入的不同方面。儘管有很多發展,word2vec 仍然是目前應用最為廣泛的選擇。Word2vec 的應用範圍也超出了詞語級別:帶有負采樣的 skip-gram——一個基於上下文學習詞嵌入的方便目標,已經被用於學習句子的表征。它甚至超越了自然語言處理的範圍,被應用於網絡和生物序列等領域。

一個激動人心的研究方向是在同一太空中構建不同語言的詞嵌入模型,以達到(零樣本)跨語言轉換的目的。通過無監督學習構建這樣的映射變得越來越有希望(至少對於相似的語言來說),這也為語料資源較少的語言和無監督機器翻譯的應用程式創造可能。

2013年——用於自然語言處理的神經網絡

2013年 和 2014 年是自然語言處理領域神經網絡時代的開始。其中三種類型的神經網絡應用最為廣泛:循環神經網絡(recurrent neural networks)、卷積神經網絡(convolutionalneural networks)和結構遞歸神經網絡(recursive neural networks)。

循環神經網絡是 NLP 領域處理動態輸入序列最自然的選擇。Vanilla 循環神經網絡很快被經典的長短期記憶網絡(long-shortterm memory networks,LSTM)代替,該模型能更好地解決梯度消失和梯度爆炸問題。在 2013 年之前,人們仍認為循環神經網絡很難訓練,直到 Ilya Sutskever 博士的論文改變了循環神經網絡這一名聲。雙向的長短期記憶記憶網絡通常被用於同時處理出現在左側和右側的文本內容。LSTM 結構如圖 5 所示。

圖 5 | LSTM 網絡(來源:ChrisOlah)

應用於文本的卷積神經網絡只在兩個維度上進行操作,卷積層只需要在時序維度上移動即可。圖6 展示了應用於自然語言處理的卷積神經網絡的典型結構。

圖 6 | 卷積神經網絡(Kim,2014)

與循環神經網絡相比,卷積神經網絡的一個優點是具有更好的並行性。因為卷積操作中每個時間步的狀態隻依賴於局部上下文,而不是循環神經網絡中那樣依賴於所有過去的狀態。卷積神經網絡可以使用更大的卷積層涵蓋更廣泛的上下文內容。卷積神經網絡也可以和長短期記憶網絡進行組合和堆疊,還可以用來加速長短期記憶網絡的訓練。

循環神經網絡和卷積神經網絡都將語言視為一個序列。但從語言學的角度來看,語言是具有層級結構的:詞語組成高階的短語和小句,它們本身可以根據一定的產生規則遞歸地組合。這激發了利用結構遞歸神經網絡,以樹形結構取代序列來表示語言的想法,如圖 7 所示。

圖 7 | 結構遞歸神經網絡(Socher et al., 2013)

結構遞歸神經網絡自下而上構建序列的表示,與從左至右或從右至左對序列進行處理的循環神經網絡形成鮮明的對比。樹中的每個節點是通過子節點的表征計算得到的。一個樹也可以視為在循環神經網絡上施加不同的處理順序,所以長短期記憶網絡則可以很容易地被擴展為一棵樹。

不只是循環神經網絡和長短期記憶網絡可以擴展到使用層次結構,詞嵌入也可以在語法語境中學習,語言模型可以基於句法堆棧生成詞匯,圖形卷積神經網絡可以樹狀結構運行。

2014年——序列到序列模型(Sequence-to-sequencemodels)

2014 年,Sutskever 等人提出了序列到序列學習,即使用神經網絡將一個序列映射到另一個序列的一般化框架。在這個框架中,一個作為編碼器的神經網絡對句子符號進行處理,並將其壓縮成向量表示;然後,一個作為解碼器的神經網絡根據編碼器的狀態逐個預測輸出符號,並將前一個預測得到的輸出符號作為預測下一個輸出符號的輸入。如圖 8 所示。

圖 8 | 序列到序列模型(Sutskever et al., 2014)

機器翻譯是這一框架的殺手級應用。2016 年,谷歌宣布他們將用神經機器翻譯模型取代基於短語的整句機器翻譯模型。谷歌大腦負責人 Jeff Dean 表示,這意味著用 500 行神經網絡模型代碼取代 50 萬行基於短語的機器翻譯代碼。

由於其靈活性,該框架在自然語言生成任務上被廣泛應用,其編碼器和解碼器分別由不同的模型來擔任。更重要的是,解碼器不僅可以適用於序列,在任意表示上均可以應用。比如基於圖片生成描述(如圖 9)、基於表格生成文本、根據源代碼改變生成描述,以及眾多其他應用。

圖 9 | 基於影像生成標題(Vinyalset al., 2015)

序列到序列的學習甚至可以應用到自然語言處理領域常見的結構化預測任務中,也就是輸出具有特定的結構。為簡單起見,輸出就像選區解析一樣被線性化(如圖 10)。在給定足夠多訓練數據用於語法解析的情況下,神經網絡已經被證明具有產生線性輸出和識別命名實體的能力。

圖 10 | 線性化選區解析樹(Vinyalset al., 2015)

序列的編碼器和解碼器通常都是基於循環神經網絡,但也可以使用其他模型。新的結構主要都從機器翻譯的工作中誕生,它已經成了序列到序列模型的培養基。近期提出的模型有深度長短期記憶網絡、卷積編碼器、Transformer(一個基於自注意力機制的全新神經網絡架構)以及長短期記憶依賴網絡和的 Transformer 結合體等。

2015年——注意力機制

注意力機制是神經網絡機器翻譯 (NMT) 的核心創新之一,也是使神經網絡機器翻譯優於經典的基於短語的機器翻譯的關鍵。序列到序列學習的主要瓶頸是,需要將源序列的全部內容壓縮為固定大小的向量。注意力機制通過讓解碼器回顧源序列的隱藏狀態,以此為解碼器提供加權平均值的輸入來緩解這一問題,如圖 11 所示。

圖 11 | 注意力機制(Bahdanau et al., 2015)

之後,各種形式的注意力機制湧現而出。注意力機制被廣泛接受,在各種需要根據輸入的特定部分做出決策的任務上都有潛在的應用。它已經被應用於句法分析、閱讀理解、單樣本學習等任務中。它的輸入甚至不需要是一個序列,而可以包含其他表示,比如影像的描述(圖 12)。

注意力機制一個有用的附帶作用是它通過注意力權重來檢測輸入的哪一部分與特定的輸出相關,從而提供了一種罕見的雖然還是比較淺層次的,對模型內部運作機制的窺探。

圖 12 | 影像描述模型中的視覺注意力機制指示在生成”飛盤”時所關注的內容(Xu etal., 2015)

注意力機制也不僅僅局限於輸入序列。自注意力機制可以用來觀察句子或文檔中周圍的單詞,獲得包含更多上下文資訊的詞語表示。多層的自注意力機制是神經機器翻譯前沿模型 Transformer 的核心。

2015年——基於記憶的神經網絡

注意力機制可以視為模糊記憶的一種形式,其記憶的內容包括模型之前的隱藏狀態,由模型選擇從記憶中檢索哪些內容。與此同時,更多具有明確記憶單元的模型被提出。他們有很多不同的變化形式,比如神經圖靈機(Neural Turing Machines)、記憶網絡(Memory Network)、端到端的記憶網絡(End-to-end Memory Newtorks)、動態記憶網絡(DynamicMemory Networks)、神經可微電腦(Neural Differentiable Computer)、循環實體網絡(RecurrentEntity Network)。

記憶的存取通常與注意力機制相似,基於與當前狀態且可以讀取和寫入。這些模型之間的差異體現在它們如何實現和利用存儲模塊。比如說,端到端的記憶網絡對輸入進行多次處理並更新記憶體,以實行多次推理。神經圖靈機也有一個基於位置的尋址方式,使它們可以學習簡單的電腦程式,比如排序。基於記憶的模型通常用於需要長時間保留資訊的任務中,例如語言模型構建和閱讀理解。記憶模塊的概念非常通用,知識庫和表格都可以作為記憶模塊,記憶模塊也可以基於輸入的全部或部分內容進行填充。

2018——預訓練的語言模型

預訓練的詞嵌入與上下文無關,僅用於初始化模型中的第一層。近幾個月以來,許多有監督的任務被用來預訓練神經網絡。相比之下,語言模型只需要未標記的文本,因此其訓練可以擴展到數十億單詞的語料、新的領域、新的語言。預訓練的語言模型於 2015 年被首次提出,但直到最近它才被證明在大量不同類型的任務中均十分有效。語言模型嵌入可以作為目標模型中的特徵,或者根據具體任務進行調整。如下圖所示,語言模型嵌入為許多任務的效果帶來了巨大的改進。

圖 13 | 改進的語言模型嵌入(Peterset al., 2018)

使用預訓練的語言模型可以在數據量十分少的情況下有效學習。由於語言模型的訓練只需要無標簽的數據,因此他們對於數據稀缺的低資源語言特別有利。

其他裡程碑

一些其他進展雖不如上面提到的那樣流行,但仍產生了廣泛的影響。

基於字元的描述(Character-based representations)

在字元層級上使用卷積神經網絡和長短期記憶網絡,以獲得一個基於字元的詞語描述,目前已經相當常見了,特別是對於那些語言形態豐富的語種或那些形態資訊十分重要、包含許多未知單詞的任務。據目前所知,基於字元的描述最初用於序列標注,現在,基於字元的描述方法,減輕了必須以增加計算成本為代價建立固定詞匯表的問題,並使完全基於字元的機器翻譯的應用成為可能。

對抗學習(Adversarial learning)

對抗學習的方法在機器學習領域已經取得了廣泛應用,在自然語言處理領域也被應用於不同的任務中。對抗樣例的應用也日益廣泛,他們不僅僅是探測模型弱點的工具,更能使模型更具魯棒性(robust)。(虛擬的)對抗性訓練,也就是最壞情況的擾動,和域對抗性損失(domain-adversariallosses)都是可以使模型更具魯棒性的有效正則化方式。生成對抗網絡 (GANs) 目前在自然語言生成任務上還不太有效,但在匹配分布上十分有用。

強化學習(Reinforcement learning)

強化學習已經在具有時間依賴性的任務上證明了它的能力,比如在訓練期間選擇數據和對話建模。在機器翻譯和概括任務中,強化學習可以有效地直接優化”紅色”和”藍色”這樣不可微的度量,而不必去優化像交叉熵這樣的代理損失函數。同樣,逆向強化學習(inverse reinforcement learning)在類似影片故事描述這樣的獎勵機制非常複雜且難以具體化的任務中,也非常有用。

獲得更多的PTT最新消息
按讚加入粉絲團