自然語言是人類獨有的智慧結(jié)晶。自然語言處理(Natural Language Processing,NLP)是計算機科學(xué)領(lǐng)域與人工智能領(lǐng)域中的一個重要方向,旨在研究能實現(xiàn)人與計算機之間用自然語言進行有效通信的各種理論和方法。用自然語言與計算機進行通信,有著十分重要的實際應(yīng)用意義,也有著革命性的理論意義。
由于理解自然語言,需要關(guān)于外在世界的廣泛知識以及運用操作這些知識的能力,所以自然語言處理,也被視為解決人工智能完備(AI-complete)的核心問題之一。對自然語言處理的研究也是充滿魅力和挑戰(zhàn)的。
本文是來自自然語言處理領(lǐng)域從業(yè)人員、知名博主 Sebatian Ruder的一篇文章,主要從神經(jīng)網(wǎng)絡(luò)技術(shù)方法的角度,討論自然語言處理領(lǐng)域近 15 年來的重大進展,并總結(jié)出與當(dāng)下息息相關(guān)的 8 大里程碑事件。文章內(nèi)容難免會省略了一些其它重要的相關(guān)工作,同時,這份總結(jié)偏向于神經(jīng)網(wǎng)絡(luò)相關(guān)技術(shù),這并不意味著在這段時間內(nèi)其它技術(shù)領(lǐng)域就沒有重要的進展。值得注意的是,文中提及的很多神經(jīng)網(wǎng)絡(luò)模型都是建立在同一時期非神經(jīng)網(wǎng)絡(luò)技術(shù)的里程碑之上的,在文章的最后,我們強調(diào)了這些打下堅實基礎(chǔ)的重要成果。
2001年——神經(jīng)語言模型(Neurallanguage models)
語言模型解決的是在給定已出現(xiàn)詞語的文本中,預(yù)測下一個單詞的任務(wù)。這可以算是最簡單的語言處理任務(wù),但卻有許多具體的實際應(yīng)用,例如智能鍵盤、電子郵件回復(fù)建議等。當(dāng)然,語言模型的歷史由來已久。經(jīng)典的方法基于 n-grams 模型(利用前面 n 個詞語預(yù)測下一個單詞),并利用平滑操作處理不可見的 n-grams。
第一個神經(jīng)語言模型,前饋神經(jīng)網(wǎng)絡(luò)(feed-forward neuralnetwork),是 Bengio 等人于 2001 年提出的。如圖 1 所示。
圖 1 | 前饋神經(jīng)網(wǎng)絡(luò)語言模型(Bengio et al., 2001; 2003)
這個模型以某詞語之前出現(xiàn)的 n 個詞語作為輸入向量。今天,這樣的向量被稱為大家熟知的詞嵌入(word embeddings)。這些詞嵌入在級聯(lián)后進入一個隱藏層,該層的輸出然后通過一個 softmax 層。
近年來,用于構(gòu)建語言模型的前饋神經(jīng)網(wǎng)絡(luò)已經(jīng)被循環(huán)神經(jīng)網(wǎng)絡(luò)(RNNs)和長短期記憶神經(jīng)網(wǎng)絡(luò)(LSTMs)取代。雖然后來提出的許多新模型在經(jīng)典的 LSTM 上進行了擴展,但它仍然是強有力的基礎(chǔ)模型。甚至 Bengio 等人的經(jīng)典前饋神經(jīng)網(wǎng)絡(luò)在某些設(shè)定下也和更復(fù)雜的模型效果相當(dāng),因為這些任務(wù)只需要考慮鄰近的詞語。更好地理解語言模型究竟捕捉了哪些信息也是當(dāng)今一個活躍的研究領(lǐng)域。
語言模型的建立是一種無監(jiān)督學(xué)習(xí)(unsupervised learning),Yann LeCun 也將其稱之為預(yù)測學(xué)習(xí)(predictive learning),是獲得世界如何運作常識的先決條件。關(guān)于語言模型最引人注目的是,盡管它很簡單,但卻與后文許多核心進展息息相關(guān)。
反過來,這也意味著自然語言處理領(lǐng)域的許多重要進展都可以簡化為某種形式的語言模型構(gòu)建。但要實現(xiàn)對自然語言真正意義上的理解,僅僅從原始文本中進行學(xué)習(xí)是不夠的,我們需要新的方法和模型。
2008年——多任務(wù)學(xué)習(xí)(Multi-tasklearning)
多任務(wù)學(xué)習(xí)是在多個任務(wù)下訓(xùn)練的模型之間共享參數(shù)的方法,在神經(jīng)網(wǎng)絡(luò)中可以通過捆綁不同層的權(quán)重輕松實現(xiàn)。多任務(wù)學(xué)習(xí)的思想在 1993 年由 Rich Caruana 首次提出,并應(yīng)用于道路追蹤和肺炎預(yù)測。多任務(wù)學(xué)習(xí)鼓勵模型學(xué)習(xí)對多個任務(wù)有效的表征描述。這對于學(xué)習(xí)一般的、低級的描述形式、集中模型的注意力或在訓(xùn)練數(shù)據(jù)有限的環(huán)境中特別有用。
多任務(wù)學(xué)習(xí)于 2008 年被Collobert 和 Weston 等人首次在自然語言處理領(lǐng)域應(yīng)用于神經(jīng)網(wǎng)絡(luò)。在他們的模型中,詞嵌入矩陣被兩個在不同任務(wù)下訓(xùn)練的模型共享,如圖 2 所示。
圖 2 | 詞嵌入矩陣共享(Collobert & Weston, 2008; Collobert et al., 2011)
共享的詞嵌入矩陣使模型可以相互協(xié)作,共享矩陣中的低層級信息,而詞嵌入矩陣往往構(gòu)成了模型中需要訓(xùn)練的絕大部分參數(shù)。Collobert 和 Weston 發(fā)表于 2008 年的論文,影響遠(yuǎn)遠(yuǎn)超過了它在多任務(wù)學(xué)習(xí)中的應(yīng)用。它開創(chuàng)的諸如預(yù)訓(xùn)練詞嵌入和使用卷積神經(jīng)網(wǎng)絡(luò)處理文本的方法,在接下來的幾年被廣泛應(yīng)用。他們也因此獲得了2018 年機器學(xué)習(xí)國際會議(ICML)的 test-of-time 獎。
如今,多任務(wù)學(xué)習(xí)在自然語言處理領(lǐng)域廣泛使用,而利用現(xiàn)有或“人工”任務(wù)已經(jīng)成為 NLP 指令庫中的一個有用工具。雖然參數(shù)的共享是預(yù)先定義好的,但在優(yōu)化的過程中卻可以學(xué)習(xí)不同的共享模式。當(dāng)模型越來越多地在多個任務(wù)上進行測評以評估其泛化能力時,多任務(wù)學(xué)習(xí)就變得愈加重要,近年來也涌現(xiàn)出更多針對多任務(wù)學(xué)習(xí)的評估基準(zhǔn)。
2013年——詞嵌入
通過稀疏向量對文本進行表示的詞袋模型,在自然語言處理領(lǐng)域已經(jīng)有很長的歷史了。而用稠密的向量對詞語進行描述,也就是詞嵌入,則在 2001 年首次出現(xiàn)。2013 年Mikolov 等人工作的主要創(chuàng)新之處在于,通過去除隱藏層和近似計算目標(biāo)使詞嵌入模型的訓(xùn)練更為高效。盡管這些改變在本質(zhì)上是十分簡單的,但它們與高效的 word2vec(word to vector,用來產(chǎn)生詞向量的相關(guān)模型)組合在一起,使得大規(guī)模的詞嵌入模型訓(xùn)練成為可能。
Word2vec 有兩種不同的實現(xiàn)方法:CBOW(continuous bag-of-words)和skip-gram。它們在預(yù)測目標(biāo)上有所不同:一個是根據(jù)周圍的詞語預(yù)測中心詞語,另一個則恰恰相反。如圖 3 所示。
圖 3 | CBOW 和skip-gram 架構(gòu)(Mikolov et al., 2013a; 2013b)
雖然這些嵌入與使用前饋神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的嵌入在概念上沒有區(qū)別,但是在一個非常大語料庫上的訓(xùn)練使它們能夠獲取諸如性別、動詞時態(tài)和國際事務(wù)等單詞之間的特定關(guān)系。如下圖 4 所示。
圖 4 | word2vec 捕獲的聯(lián)系(Mikolov et al., 2013a; 2013b)
這些關(guān)系和它們背后的意義激起了人們對詞嵌入的興趣,許多研究都在關(guān)注這些線性關(guān)系的來源。然而,使詞嵌入成為目前自然語言處理領(lǐng)域中流砥柱的,是將預(yù)訓(xùn)練的詞嵌入矩陣用于初始化可以提高大量下游任務(wù)性能的事實。
雖然 word2vec 捕捉到的關(guān)系具有直觀且?guī)缀醪豢伤甲h的特性,但后來的研究表明,word2vec 本身并沒有什么特殊之處:詞嵌入也可以通過矩陣分解來學(xué)習(xí),經(jīng)過適當(dāng)?shù)恼{(diào)試,經(jīng)典的矩陣分解方法 SVD 和 LSA 都可以獲得相似的結(jié)果。
從那時起,大量的工作開始探索詞嵌入的不同方面。盡管有很多發(fā)展,word2vec 仍然是目前應(yīng)用最為廣泛的選擇。Word2vec 的應(yīng)用范圍也超出了詞語級別:帶有負(fù)采樣的 skip-gram——一個基于上下文學(xué)習(xí)詞嵌入的方便目標(biāo),已經(jīng)被用于學(xué)習(xí)句子的表征。它甚至超越了自然語言處理的范圍,被應(yīng)用于網(wǎng)絡(luò)和生物序列等領(lǐng)域。
一個激動人心的研究方向是在同一空間中構(gòu)建不同語言的詞嵌入模型,以達(dá)到(零樣本)跨語言轉(zhuǎn)換的目的。通過無監(jiān)督學(xué)習(xí)構(gòu)建這樣的映射變得越來越有希望(至少對于相似的語言來說),這也為語料資源較少的語言和無監(jiān)督機器翻譯的應(yīng)用程序創(chuàng)造可能。
2013年——用于自然語言處理的神經(jīng)網(wǎng)絡(luò)
2013年 和 2014 年是自然語言處理領(lǐng)域神經(jīng)網(wǎng)絡(luò)時代的開始。其中三種類型的神經(jīng)網(wǎng)絡(luò)應(yīng)用最為廣泛:循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural networks)、卷積神經(jīng)網(wǎng)絡(luò)(convolutionalneural networks)和結(jié)構(gòu)遞歸神經(jīng)網(wǎng)絡(luò)(recursive neural networks)。
循環(huán)神經(jīng)網(wǎng)絡(luò)是 NLP 領(lǐng)域處理動態(tài)輸入序列最自然的選擇。Vanilla 循環(huán)神經(jīng)網(wǎng)絡(luò)很快被經(jīng)典的長短期記憶網(wǎng)絡(luò)(long-shortterm memory networks,LSTM)代替,該模型能更好地解決梯度消失和梯度爆炸問題。在 2013 年之前,人們?nèi)哉J(rèn)為循環(huán)神經(jīng)網(wǎng)絡(luò)很難訓(xùn)練,直到 Ilya Sutskever 博士的論文改變了循環(huán)神經(jīng)網(wǎng)絡(luò)這一名聲。雙向的長短期記憶記憶網(wǎng)絡(luò)通常被用于同時處理出現(xiàn)在左側(cè)和右側(cè)的文本內(nèi)容。LSTM 結(jié)構(gòu)如圖 5 所示。
圖 5 | LSTM 網(wǎng)絡(luò)(來源:ChrisOlah)
應(yīng)用于文本的卷積神經(jīng)網(wǎng)絡(luò)只在兩個維度上進行操作,卷積層只需要在時序維度上移動即可。圖6 展示了應(yīng)用于自然語言處理的卷積神經(jīng)網(wǎng)絡(luò)的典型結(jié)構(gòu)。
圖 6 | 卷積神經(jīng)網(wǎng)絡(luò)(Kim,2014)
與循環(huán)神經(jīng)網(wǎng)絡(luò)相比,卷積神經(jīng)網(wǎng)絡(luò)的一個優(yōu)點是具有更好的并行性。因為卷積操作中每個時間步的狀態(tài)只依賴于局部上下文,而不是循環(huán)神經(jīng)網(wǎng)絡(luò)中那樣依賴于所有過去的狀態(tài)。卷積神經(jīng)網(wǎng)絡(luò)可以使用更大的卷積層涵蓋更廣泛的上下文內(nèi)容。卷積神經(jīng)網(wǎng)絡(luò)也可以和長短期記憶網(wǎng)絡(luò)進行組合和堆疊,還可以用來加速長短期記憶網(wǎng)絡(luò)的訓(xùn)練。
循環(huán)神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)都將語言視為一個序列。但從語言學(xué)的角度來看,語言是具有層級結(jié)構(gòu)的:詞語組成高階的短語和小句,它們本身可以根據(jù)一定的產(chǎn)生規(guī)則遞歸地組合。這激發(fā)了利用結(jié)構(gòu)遞歸神經(jīng)網(wǎng)絡(luò),以樹形結(jié)構(gòu)取代序列來表示語言的想法,如圖 7 所示。
圖 7 | 結(jié)構(gòu)遞歸神經(jīng)網(wǎng)絡(luò)(Socher et al., 2013)
結(jié)構(gòu)遞歸神經(jīng)網(wǎng)絡(luò)自下而上構(gòu)建序列的表示,與從左至右或從右至左對序列進行處理的循環(huán)神經(jīng)網(wǎng)絡(luò)形成鮮明的對比。樹中的每個節(jié)點是通過子節(jié)點的表征計算得到的。一個樹也可以視為在循環(huán)神經(jīng)網(wǎng)絡(luò)上施加不同的處理順序,所以長短期記憶網(wǎng)絡(luò)則可以很容易地被擴展為一棵樹。
不只是循環(huán)神經(jīng)網(wǎng)絡(luò)和長短期記憶網(wǎng)絡(luò)可以擴展到使用層次結(jié)構(gòu),詞嵌入也可以在語法語境中學(xué)習(xí),語言模型可以基于句法堆棧生成詞匯,圖形卷積神經(jīng)網(wǎng)絡(luò)可以樹狀結(jié)構(gòu)運行。
2014年——序列到序列模型(Sequence-to-sequencemodels)
2014 年,Sutskever 等人提出了序列到序列學(xué)習(xí),即使用神經(jīng)網(wǎng)絡(luò)將一個序列映射到另一個序列的一般化框架。在這個框架中,一個作為編碼器的神經(jīng)網(wǎng)絡(luò)對句子符號進行處理,并將其壓縮成向量表示;然后,一個作為解碼器的神經(jīng)網(wǎng)絡(luò)根據(jù)編碼器的狀態(tài)逐個預(yù)測輸出符號,并將前一個預(yù)測得到的輸出符號作為預(yù)測下一個輸出符號的輸入。如圖 8 所示。
圖 8 | 序列到序列模型(Sutskever et al., 2014)
機器翻譯是這一框架的殺手級應(yīng)用。2016 年,谷歌宣布他們將用神經(jīng)機器翻譯模型取代基于短語的整句機器翻譯模型。谷歌大腦負(fù)責(zé)人 Jeff Dean 表示,這意味著用 500 行神經(jīng)網(wǎng)絡(luò)模型代碼取代 50 萬行基于短語的機器翻譯代碼。
由于其靈活性,該框架在自然語言生成任務(wù)上被廣泛應(yīng)用,其編碼器和解碼器分別由不同的模型來擔(dān)任。更重要的是,解碼器不僅可以適用于序列,在任意表示上均可以應(yīng)用。比如基于圖片生成描述(如圖 9)、基于表格生成文本、根據(jù)源代碼改變生成描述,以及眾多其他應(yīng)用。
圖 9 | 基于圖像生成標(biāo)題(Vinyalset al., 2015)
序列到序列的學(xué)習(xí)甚至可以應(yīng)用到自然語言處理領(lǐng)域常見的結(jié)構(gòu)化預(yù)測任務(wù)中,也就是輸出具有特定的結(jié)構(gòu)。為簡單起見,輸出就像選區(qū)解析一樣被線性化(如圖 10)。在給定足夠多訓(xùn)練數(shù)據(jù)用于語法解析的情況下,神經(jīng)網(wǎng)絡(luò)已經(jīng)被證明具有產(chǎn)生線性輸出和識別命名實體的能力。
圖 10 | 線性化選區(qū)解析樹(Vinyalset al., 2015)
序列的編碼器和解碼器通常都是基于循環(huán)神經(jīng)網(wǎng)絡(luò),但也可以使用其他模型。新的結(jié)構(gòu)主要都從機器翻譯的工作中誕生,它已經(jīng)成了序列到序列模型的培養(yǎng)基。近期提出的模型有深度長短期記憶網(wǎng)絡(luò)、卷積編碼器、Transformer(一個基于自注意力機制的全新神經(jīng)網(wǎng)絡(luò)架構(gòu))以及長短期記憶依賴網(wǎng)絡(luò)和的 Transformer 結(jié)合體等。
2015年——注意力機制
注意力機制是神經(jīng)網(wǎng)絡(luò)機器翻譯 (NMT) 的核心創(chuàng)新之一,也是使神經(jīng)網(wǎng)絡(luò)機器翻譯優(yōu)于經(jīng)典的基于短語的機器翻譯的關(guān)鍵。序列到序列學(xué)習(xí)的主要瓶頸是,需要將源序列的全部內(nèi)容壓縮為固定大小的向量。注意力機制通過讓解碼器回顧源序列的隱藏狀態(tài),以此為解碼器提供加權(quán)平均值的輸入來緩解這一問題,如圖 11 所示。
圖 11 | 注意力機制(Bahdanau et al., 2015)
之后,各種形式的注意力機制涌現(xiàn)而出。注意力機制被廣泛接受,在各種需要根據(jù)輸入的特定部分做出決策的任務(wù)上都有潛在的應(yīng)用。它已經(jīng)被應(yīng)用于句法分析、閱讀理解、單樣本學(xué)習(xí)等任務(wù)中。它的輸入甚至不需要是一個序列,而可以包含其他表示,比如圖像的描述(圖 12)。
注意力機制一個有用的附帶作用是它通過注意力權(quán)重來檢測輸入的哪一部分與特定的輸出相關(guān),從而提供了一種罕見的雖然還是比較淺層次的,對模型內(nèi)部運作機制的窺探。
圖 12 | 圖像描述模型中的視覺注意力機制指示在生成”飛盤”時所關(guān)注的內(nèi)容(Xu etal., 2015)
注意力機制也不僅僅局限于輸入序列。自注意力機制可以用來觀察句子或文檔中周圍的單詞,獲得包含更多上下文信息的詞語表示。多層的自注意力機制是神經(jīng)機器翻譯前沿模型 Transformer 的核心。
2015年——基于記憶的神經(jīng)網(wǎng)絡(luò)
注意力機制可以視為模糊記憶的一種形式,其記憶的內(nèi)容包括模型之前的隱藏狀態(tài),由模型選擇從記憶中檢索哪些內(nèi)容。與此同時,更多具有明確記憶單元的模型被提出。他們有很多不同的變化形式,比如神經(jīng)圖靈機(Neural Turing Machines)、記憶網(wǎng)絡(luò)(Memory Network)、端到端的記憶網(wǎng)絡(luò)(End-to-end Memory Newtorks)、動態(tài)記憶網(wǎng)絡(luò)(DynamicMemory Networks)、神經(jīng)可微計算機(Neural Differentiable Computer)、循環(huán)實體網(wǎng)絡(luò)(RecurrentEntity Network)。
記憶的存取通常與注意力機制相似,基于與當(dāng)前狀態(tài)且可以讀取和寫入。這些模型之間的差異體現(xiàn)在它們?nèi)绾螌崿F(xiàn)和利用存儲模塊。比如說,端到端的記憶網(wǎng)絡(luò)對輸入進行多次處理并更新內(nèi)存,以實行多次推理。神經(jīng)圖靈機也有一個基于位置的尋址方式,使它們可以學(xué)習(xí)簡單的計算機程序,比如排序。基于記憶的模型通常用于需要長時間保留信息的任務(wù)中,例如語言模型構(gòu)建和閱讀理解。記憶模塊的概念非常通用,知識庫和表格都可以作為記憶模塊,記憶模塊也可以基于輸入的全部或部分內(nèi)容進行填充。
2018——預(yù)訓(xùn)練的語言模型
預(yù)訓(xùn)練的詞嵌入與上下文無關(guān),僅用于初始化模型中的第一層。近幾個月以來,許多有監(jiān)督的任務(wù)被用來預(yù)訓(xùn)練神經(jīng)網(wǎng)絡(luò)。相比之下,語言模型只需要未標(biāo)記的文本,因此其訓(xùn)練可以擴展到數(shù)十億單詞的語料、新的領(lǐng)域、新的語言。預(yù)訓(xùn)練的語言模型于 2015 年被首次提出,但直到最近它才被證明在大量不同類型的任務(wù)中均十分有效。語言模型嵌入可以作為目標(biāo)模型中的特征,或者根據(jù)具體任務(wù)進行調(diào)整。如下圖所示,語言模型嵌入為許多任務(wù)的效果帶來了巨大的改進。
圖 13 | 改進的語言模型嵌入(Peterset al., 2018)
使用預(yù)訓(xùn)練的語言模型可以在數(shù)據(jù)量十分少的情況下有效學(xué)習(xí)。由于語言模型的訓(xùn)練只需要無標(biāo)簽的數(shù)據(jù),因此他們對于數(shù)據(jù)稀缺的低資源語言特別有利。
其他里程碑
一些其他進展雖不如上面提到的那樣流行,但仍產(chǎn)生了廣泛的影響。
基于字符的描述(Character-based representations)
在字符層級上使用卷積神經(jīng)網(wǎng)絡(luò)和長短期記憶網(wǎng)絡(luò),以獲得一個基于字符的詞語描述,目前已經(jīng)相當(dāng)常見了,特別是對于那些語言形態(tài)豐富的語種或那些形態(tài)信息十分重要、包含許多未知單詞的任務(wù)。據(jù)目前所知,基于字符的描述最初用于序列標(biāo)注,現(xiàn)在,基于字符的描述方法,減輕了必須以增加計算成本為代價建立固定詞匯表的問題,并使完全基于字符的機器翻譯的應(yīng)用成為可能。
對抗學(xué)習(xí)(Adversarial learning)
對抗學(xué)習(xí)的方法在機器學(xué)習(xí)領(lǐng)域已經(jīng)取得了廣泛應(yīng)用,在自然語言處理領(lǐng)域也被應(yīng)用于不同的任務(wù)中。對抗樣例的應(yīng)用也日益廣泛,他們不僅僅是探測模型弱點的工具,更能使模型更具魯棒性(robust)。(虛擬的)對抗性訓(xùn)練,也就是最壞情況的擾動,和域?qū)剐該p失(domain-adversariallosses)都是可以使模型更具魯棒性的有效正則化方式。生成對抗網(wǎng)絡(luò) (GANs) 目前在自然語言生成任務(wù)上還不太有效,但在匹配分布上十分有用。
強化學(xué)習(xí)(Reinforcement learning)
強化學(xué)習(xí)已經(jīng)在具有時間依賴性的任務(wù)上證明了它的能力,比如在訓(xùn)練期間選擇數(shù)據(jù)和對話建模。在機器翻譯和概括任務(wù)中,強化學(xué)習(xí)可以有效地直接優(yōu)化”紅色”和”藍(lán)色”這樣不可微的度量,而不必去優(yōu)化像交叉熵這樣的代理損失函數(shù)。同樣,逆向強化學(xué)習(xí)(inverse reinforcement learning)在類似視頻故事描述這樣的獎勵機制非常復(fù)雜且難以具體化的任務(wù)中,也非常有用。
-
人工智能
+關(guān)注
關(guān)注
1791文章
47183瀏覽量
238264 -
自然語言處理
+關(guān)注
關(guān)注
1文章
618瀏覽量
13552
原文標(biāo)題:15年來,自然語言處理發(fā)展史上的8大里程碑
文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論