91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

NLP中的深度學(xué)習(xí)技術(shù)概述

電子工程師 ? 來源:cc ? 2019-03-01 09:13 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

該項(xiàng)目是對基于深度學(xué)習(xí)的自然語言處理(NLP)的概述,包括用來解決不同 NLP 任務(wù)和應(yīng)用的深度學(xué)習(xí)模型(如循環(huán)神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)和強(qiáng)化學(xué)習(xí))的理論介紹和實(shí)現(xiàn)細(xì)節(jié),以及對 NLP 任務(wù)(機(jī)器翻譯、問答和對話系統(tǒng))當(dāng)前最優(yōu)結(jié)果的總結(jié)。

該項(xiàng)目的主要動機(jī)如下:

維護(hù)最新 NLP 研究學(xué)習(xí)資源,如當(dāng)前最優(yōu)結(jié)果、新概念和應(yīng)用、新的基準(zhǔn)數(shù)據(jù)集、代碼/數(shù)據(jù)集發(fā)布等。

創(chuàng)建開放性資源,幫助指引研究者和對 NLP 感興趣的人。

這是一個合作性項(xiàng)目,專家研究人員可以基于他們近期的研究和實(shí)驗(yàn)結(jié)果提出變更建議。

第一章:簡介

自然語言處理(NLP)是指對人類語言進(jìn)行自動分析和表示的計(jì)算技術(shù),這種計(jì)算技術(shù)由一系列理論驅(qū)動。NLP 研究從打孔紙帶和批處理的時代就開始發(fā)展,那時分析一個句子需要多達(dá) 7 分鐘的時間。到了現(xiàn)在谷歌等的時代,數(shù)百萬網(wǎng)頁可以在不到一秒鐘內(nèi)處理完成。NLP 使計(jì)算機(jī)能夠執(zhí)行大量自然語言相關(guān)的任務(wù),如句子結(jié)構(gòu)解析、詞性標(biāo)注、機(jī)器翻譯和對話系統(tǒng)等。

深度學(xué)習(xí)架構(gòu)和算法計(jì)算機(jī)視覺與傳統(tǒng)模式識別領(lǐng)域帶來了巨大進(jìn)展。跟隨這一趨勢,現(xiàn)在的 NLP 研究越來越多地使用新的深度學(xué)習(xí)方法(見圖 1)。之前數(shù)十年,用于解決 NLP 問題的機(jī)器學(xué)習(xí)方法一般都基于淺層模型(如 SVM 和 logistic 回歸),這些模型都在非常高維和稀疏的特征(one-hot encoding)上訓(xùn)練得到。而近年來,基于稠密向量表征的神經(jīng)網(wǎng)絡(luò)在多種 NLP 任務(wù)上得到了不錯結(jié)果。這一趨勢取決了詞嵌入和深度學(xué)習(xí)方法的成功。深度學(xué)習(xí)使多級自動特征表征學(xué)習(xí)成為可能。而基于傳統(tǒng)機(jī)器學(xué)習(xí)的 NLP 系統(tǒng)嚴(yán)重依賴手動制作的特征,它們及其耗時,且通常并不完備。

圖 1:過去 6 年 ACL、EMNLP、EACL、NAACL 會議上深度學(xué)習(xí)論文的比例(長論文)。

Ronan Collobert 等人 2011 年的研究《Natural Language Processing (Almost) from Scratch》展示了在多個 NLP 任務(wù)上優(yōu)于當(dāng)時最優(yōu)方法的簡單深度學(xué)習(xí)框架,比如命名實(shí)體識別(NER)、語義角色標(biāo)注(SRL)和詞性標(biāo)注。之后,研究人員提出了大量基于復(fù)雜深度學(xué)習(xí)的算法,用于解決有難度的 NLP 任務(wù)。本文綜述了用于自然語言任務(wù)的主要深度學(xué)習(xí)模型和方法,如卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)和遞歸神經(jīng)網(wǎng)絡(luò)。本文還討論了記憶增強(qiáng)策略、注意力機(jī)制,以及如何使用無監(jiān)督模型、強(qiáng)化學(xué)習(xí)方法和深度生成模型解決語言任務(wù)。

本文綜述了 NLP 研究中最流行的深度學(xué)習(xí)方法,結(jié)構(gòu)如下:第二章介紹分布式表征的概念,它們是復(fù)雜深度學(xué)習(xí)模型的基礎(chǔ);第 3、4、5 章討論了流行的模型(如卷積、循環(huán)、遞歸神經(jīng)網(wǎng)絡(luò))及其在不同 NLP 任務(wù)中的應(yīng)用;第 6 章列舉了強(qiáng)化學(xué)習(xí)在 NLP 中的近期應(yīng)用,以及無監(jiān)督句子表征學(xué)習(xí)的近期發(fā)展;第 7 章介紹了深度學(xué)習(xí)模型結(jié)合記憶模塊這一近期趨勢;第 8 章概述了多種深度學(xué)習(xí)方法在 NLP 任務(wù)標(biāo)準(zhǔn)數(shù)據(jù)集上的性能。機(jī)器之心選取了第 2、3、4、8 章進(jìn)行重點(diǎn)介紹。

第二章:分布式表征

基于統(tǒng)計(jì)的 NLP 已經(jīng)成為建模復(fù)雜自然語言任務(wù)的首要選擇。然而在它剛興起的時候,基于統(tǒng)計(jì)的 NLP 經(jīng)常遭受到維度災(zāi)難,尤其是在學(xué)習(xí)語言模型的聯(lián)合概率函數(shù)時。這為構(gòu)建能在低維空間中學(xué)習(xí)分布式詞表征的方法提供了動力,這種想法也就導(dǎo)致了詞嵌入方法的誕生。

第一種在低維空間中學(xué)習(xí)密集型的分布式詞表征是 Yoshua Bengio 等人在 2003 年提出的 A Neural Probabilistic Language Model,這是一種基于學(xué)習(xí)而對抗維度災(zāi)難的優(yōu)美想法。

詞嵌入

如下圖 2 所示,分布式向量或詞嵌入向量基本上遵循分布式假設(shè),即具有相似語義的詞傾向于具有相似的上下文詞,因此這些詞向量嘗試捕獲鄰近詞的特征。分布式詞向量的主要優(yōu)點(diǎn)在于它們能捕獲單詞之間的相似性,使用余弦相似性等度量方法評估詞向量之間的相似性也是可能的。

詞嵌入常用于深度學(xué)習(xí)中的第一個數(shù)據(jù)預(yù)處理階段,一般我們可以在大型無標(biāo)注文本語料庫中最優(yōu)化損失函數(shù),從而獲得預(yù)訓(xùn)練的詞嵌入向量。例如基于上下文預(yù)測具體詞(Mikolov et al., 2013b, a)的方法,它能學(xué)習(xí)包含了一般句法和語義的詞向量。這些詞嵌入方法目前已經(jīng)被證明能高效捕捉上下文相似性,并且由于它們的維度非常小,因此在計(jì)算核心 NLP 任務(wù)是非常快速與高效的。

圖 2:分布式詞向量表征,其中每一個詞向量只有 D 維,且遠(yuǎn)小于詞匯量大小 V,即 D<

多年以來,構(gòu)建這種詞嵌入向量的模型一般是淺層神經(jīng)網(wǎng)絡(luò),并沒有必要使用深層神經(jīng)網(wǎng)絡(luò)構(gòu)建更好的詞嵌入向量。不過基于深度學(xué)習(xí)的 NLP 模型常使用這些詞嵌入表示短語甚至句子,這實(shí)際上是傳統(tǒng)基于詞統(tǒng)計(jì)模型和基于深度學(xué)習(xí)模型的主要差別。目前詞嵌入已經(jīng)是 NLP 任務(wù)的標(biāo)配,大多數(shù) NLP 任務(wù)的頂尖結(jié)果都需要借助它的能力。

本身詞嵌入就能直接用于搜索近義詞或者做詞義的類推,而下游的情感分類、機(jī)器翻譯、語言建模等任務(wù)都能使用詞嵌入編碼詞層面的信息。最近比較流行的預(yù)訓(xùn)練語言模型其實(shí)也參考了詞嵌入的想法,只不過預(yù)訓(xùn)練語言模型在詞嵌入的基礎(chǔ)上進(jìn)一步能編碼句子層面的語義信息??偟亩裕~嵌入的廣泛使用早已體現(xiàn)在眾多文獻(xiàn)中,它的重要性也得到一致的認(rèn)可。

分布式表示(詞嵌入)主要通過上下文或者詞的「語境」來學(xué)習(xí)本身該如何表達(dá)。上個世紀(jì) 90 年代,就有一些研究(Elman, 1991)標(biāo)志著分布式語義已經(jīng)起步,后來的一些發(fā)展也都是對這些早期工作的修正。此外,這些早期研究還啟發(fā)了隱狄利克雷分配等主題建模(Blei et al., 2003)方法和語言建模(Bengio et al., 2003)方法。

在 2003 年,Bengio 等人提出了一種神經(jīng)語言模型,它可以學(xué)習(xí)單詞的分布式表征。他們認(rèn)為這些詞表征一旦使用詞序列的聯(lián)合分布構(gòu)建句子表征,那么就能構(gòu)建指數(shù)級的語義近鄰句。反過來,這種方法也能幫助詞嵌入的泛化,因?yàn)槲匆娺^的句子現(xiàn)在可以通過近義詞而得到足夠多的信息。

圖 3:神經(jīng)語言模型(圖源:http://www.jmlr.org/papers/volume3/bengio03a/bengio03a.pdf)。

Collobert 和 Weston(2008) 展示了第一個能有效利用預(yù)訓(xùn)練詞嵌入的研究工作,他們提出的神經(jīng)網(wǎng)絡(luò)架構(gòu)構(gòu)成了當(dāng)前很多方法的基礎(chǔ)。這一項(xiàng)研究工作還率先將詞嵌入作為 NLP 任務(wù)的高效工具,不過詞嵌入真正走向 NLP 主流還是 Mikolov 等人在 2013 年做出的研究《Distributed Representations of Words and Phrases and their Compositionality》。

Mikolov 等研究者在這篇論文中提出了連續(xù)詞袋模型(CBOW)和 Skip-Gram 模型,這兩種方法都能學(xué)習(xí)高質(zhì)量的分布式詞表征。此外,令這兩種方法受到極大關(guān)注的是另一種附加屬性:語義合成性,即兩個詞向量相加得到的結(jié)果是語義相加的詞,例如「man」+「royal」=「king」。這種語義合成性的理論依據(jù)最近已經(jīng)由 Gittens et al. (2017) 給出,他們表示只有保證某些特定的假設(shè)才能滿足語義合成性,例如詞需要在嵌入空間中處于均勻分布。

Pennington et al. (2014) 提出了另一個非常出名的詞嵌入方法 GloVe,它基本上是一種基于詞統(tǒng)計(jì)的模型。在有些情況下,CBOW 和 Skip-Gram 采用的交叉熵?fù)p失函數(shù)有劣勢。因此 GloVe 采用了平方損失,它令詞向量擬合預(yù)先基于整個數(shù)據(jù)集計(jì)算得到的全局統(tǒng)計(jì)信息,從而學(xué)習(xí)高效的詞詞表征。

一般 GloVe 模型會先對單詞計(jì)數(shù)進(jìn)行歸一化,并通過對數(shù)平滑來最終得到詞共現(xiàn)矩陣,這個詞共現(xiàn)矩陣就表示全局的統(tǒng)計(jì)信息。這個矩陣隨后可以通過矩陣分解得到低維的詞表征,這一過程可以通過最小化重構(gòu)損失來獲得。下面將具體介紹目前仍然廣泛使用的 CBOW 和 Skip-Gram 兩種Word2Vec方法(Mikolov et al., 2013)。

Word2Vec

可以說 Mikolov 等人徹底變革了詞嵌入,尤其是他們提出的 CBOW 和 Skip-Gram 模型。CBOW 會在給定上下文詞的情況下計(jì)算目標(biāo)詞(或中心詞)的條件概率,其中上下文詞的選取范圍通過窗口大小 k 決定。而Skip-Gram的做法正好與CBOW相反,它在給定目標(biāo)詞或中心詞的情況下預(yù)測上下文詞。一般上下文詞都會以目標(biāo)詞為中心對稱地分布在兩邊,且在窗口內(nèi)的詞與中心詞的距離都相等。也就是說不能因?yàn)槟硞€上下文詞離中心詞比較遠(yuǎn),就認(rèn)為它對中心詞的作用比較弱。

在無監(jiān)督的設(shè)定中,詞嵌入的維度可以直接影響到預(yù)測的準(zhǔn)確度。一般隨著詞嵌入維度的增加,預(yù)測的準(zhǔn)確度也會增加,直到準(zhǔn)確率收斂到某個點(diǎn)。一般這樣的收斂點(diǎn)可以認(rèn)為是最佳的詞嵌入維度,因?yàn)樗诓挥绊憸?zhǔn)確率的情況下最精簡。通常情況下,我們使用的詞嵌入維度可以是 128、256、300、500 等,相比于幾十萬的詞匯庫大小已經(jīng)是很小的維度了。

下面我們可以考慮 CBOW 的簡化版,上下文只考慮離中心詞最近的一個單詞,這基本上就是二元語言模型的翻版。

圖 4:CBOW 模型。

如圖 4 所示,CBOW 模型就是一個簡單的全連接神經(jīng)網(wǎng)絡(luò),它只有一個隱藏層。輸入層是上下文詞的 one-hot 向量,它有 V 個神經(jīng)元(詞匯量),而中間的隱藏層只有 N 個神經(jīng)元,N 是要遠(yuǎn)遠(yuǎn)小于 V 的。最后的輸出層是所有詞上的一個 Softmax 函數(shù)。層級之間的權(quán)重矩陣分別是 V*N 階的 W 和 N*V 階的 W',詞匯表中的每一個詞最終會表征為兩個向量:v_c 和 v_w,它們分別對應(yīng)上下文詞表征和目標(biāo)詞表征。若輸入的是詞表中第 k 個詞,那么我們有:

總體而言,在給定上下文詞 c 作為輸入的情況下,對于任意詞 w_i 有:

參數(shù) θ={V_w, V_c} 都是通過定義目標(biāo)函數(shù)而學(xué)習(xí)到的,一般目標(biāo)函數(shù)可以定義為對數(shù)似然函數(shù),且通過計(jì)算以下梯度更新權(quán)重:

在更廣泛的 CBOW 模型中,所有上下文詞的 one-hot 向量都會同時作為輸入,即:

詞嵌入的一個局限是它們無法表示短語(Mikolov et al., 2013),即兩個詞或多個詞的組合并不表示對應(yīng)的短語意義,例如「人民」+「大學(xué)」并不能組合成「人民大學(xué)」。Mikolov 提出的一種解決辦法是基于詞共現(xiàn)識別這些短語,并為它們單獨(dú)地學(xué)一些詞嵌入向量,而 Rie Johnson 等研究者在 15 年更是提出直接從無監(jiān)督數(shù)據(jù)中學(xué)習(xí) n-gram 詞嵌入。

另一種局限性在于學(xué)習(xí)的詞嵌入僅基于周圍詞的小窗口,有時候「good」和「bad」幾乎有相同的詞嵌入,這對于情感分析等下游任務(wù)很不友好。有時候這些相似的詞嵌入有正好相反的情感,這對于需要區(qū)別情感的下游任務(wù)簡直是個災(zāi)難,它甚至比用 One-hot 向量的表征方法還要有更差的性能。Duyu Tang(2014)等人通過提出特定情感詞嵌入(SSWE)來解決這個問題,他們在學(xué)習(xí)嵌入時將損失函數(shù)中的監(jiān)督情感納入其中。

一個比較重要的觀點(diǎn)是,詞嵌入應(yīng)該高度依賴于他們要使用的領(lǐng)域。Labutov 和 Lipson(2013) 提出了一種用于特定任務(wù)的詞嵌入,他們會重新訓(xùn)練詞嵌入,因此將詞嵌入與將要進(jìn)行的下游任務(wù)相匹配,不過這種方法對計(jì)算力的需求比較大。而 Mikolov 等人嘗試使用負(fù)采樣的方法來解決這個問題,負(fù)采樣僅僅只是基于頻率對負(fù)樣本進(jìn)行采樣,這個過程直接在訓(xùn)練中進(jìn)行。

此外,傳統(tǒng)的詞嵌入算法為每個詞分配不同的向量,這使得其不能解釋多義詞。在最近的一項(xiàng)工作中,Upadhyay 等人 (2017) 提出了一種新方法來解決這個問題,他們利用多語平行數(shù)據(jù)來學(xué)習(xí)多語義詞嵌入。例如英語的「bank」在翻譯到法語時有兩種不同的詞:banc 和 banque,它們分別表示金融和地理意義,而多語言的分布信息能幫助詞嵌入解決一詞多義的問題。

下表 1 提供了用于創(chuàng)建詞嵌入的現(xiàn)有框架,它們都可以訓(xùn)練詞嵌入并進(jìn)一步與深度學(xué)習(xí)模型相結(jié)合:

說到這里,小編不得不宣傳一波我們的小項(xiàng)目,我們主要使用維基的中文語料訓(xùn)練了一個中文詞嵌入,并提供了 Skip-Gram 和 GloVe 兩種模型的訓(xùn)練方法。讀者可以簡單地使用我們已訓(xùn)練的詞嵌入,或者根據(jù)我們提供的 Jupyter Notebook 教程學(xué)習(xí)如何訓(xùn)練詞嵌入。簡單而言,訓(xùn)練主要可以分為 5 個步驟,即下載維基中文語料、將繁體轉(zhuǎn)化為簡體、采用結(jié)巴分詞、預(yù)處理并構(gòu)建數(shù)據(jù)集、開始訓(xùn)練。

當(dāng)然我們放在 Colab 的示例代碼只是訓(xùn)練部分維基語料,但也能做出了較為合理的中文詞嵌入。

項(xiàng)目地址:https://github.com/HoratioJSY/cn-words

第三章:卷積神經(jīng)網(wǎng)絡(luò)

隨著詞嵌入的流行及其在分布式空間中展現(xiàn)出的強(qiáng)大表征能力,我們需要一種高效的特征函數(shù),以從詞序列或 n-grams 中抽取高級語義信息。隨后這些抽象的語義信息能用于許多 NLP 任務(wù),如情感分析、自動摘要、機(jī)器翻譯和問答系統(tǒng)等。卷積神經(jīng)網(wǎng)絡(luò)(CNN)因?yàn)槠湓谟?jì)算機(jī)視覺中的有效性而被引入到自然語言處理中,實(shí)踐證明它也非常適合序列建模。

圖 5:用于執(zhí)行詞級分類預(yù)測的 CNN 框架。(Collobert and Weston (2008))

使用 CNN 進(jìn)行句子建??梢宰匪莸?Collobert 和 Weston (2008) 的研究,他們使用多任務(wù)學(xué)習(xí)為不同的 NLP 任務(wù)輸出多個預(yù)測,如詞性標(biāo)注、語塊分割、命名實(shí)體標(biāo)簽和語義相似詞等。其中查找表可以將每一個詞轉(zhuǎn)換為一個用戶自定義維度的向量。因此通過查找表,n 個詞的輸入序列 {s_1,s_2,... s_n } 能轉(zhuǎn)換為一系列詞向量 {w_s1, w_s2,... w_sn},這就是圖 5 所示的輸入。

這可以被認(rèn)為是簡單的詞嵌入方法,其中權(quán)重都是通過網(wǎng)絡(luò)來學(xué)習(xí)的。在 Collobert 2011 年的研究中,他擴(kuò)展了以前的研究,并提出了一種基于 CNN 的通用框架來解決大量 NLP 任務(wù),這兩個工作都令 NLP 研究者嘗試在各種任務(wù)中普及 CNN 架構(gòu)。

CNN 具有從輸入句子抽取 n-gram 特征的能力,因此它能為下游任務(wù)提供具有句子層面信息的隱藏語義表征。下面簡單描述了一個基于 CNN 的句子建模網(wǎng)絡(luò)到底是如何處理的。

基礎(chǔ) CNN

1. 序列建模

對于每一個句子,w_i∈R^d 表示句子中第 i 個詞的詞嵌入向量,其中 d 表示詞嵌入的維度。給定有 n 個詞的句子,句子能表示為詞嵌入矩陣 W∈R^n×d。下圖展示了將這樣一個句子作為輸入饋送到 CNN 架構(gòu)中。

圖 6:使用 CNN 的文本建模(Zhang and Wallace , 2015)。

若令 w_i:i+j 表示 w_i, w_i+1,...w_j 向量的拼接,那么卷積就可以直接在這個詞嵌入輸入層做運(yùn)算。卷積包含 d 個通道的卷積核 k∈R^hd,它可以應(yīng)用到窗口為 h 個詞的序列上,并生成新的特征。例如,c_i 即使用卷積核在詞嵌入矩陣上得到的激活結(jié)果:

若 b 是偏置項(xiàng),f 是非線性激活函數(shù),例如雙曲正切函數(shù)。使用相同的權(quán)重將濾波器 k 應(yīng)用于所有可能的窗口,以創(chuàng)建特征圖。

在卷積神經(jīng)網(wǎng)絡(luò)中,大量不同寬度的卷積濾波器(也叫做內(nèi)核,通常有幾百個)在整個詞嵌入矩陣上滑動。每個內(nèi)核提取一個特定的 n-gram 模式。卷積層之后通常是最大池化策略 c^=max{c},該策略通過對每個濾波器應(yīng)用最大運(yùn)算來對輸入進(jìn)行二次采樣。使用這個策略有兩大原因。

首先,最大池化提供固定長度的輸出,這是分類所需的。因此,不管濾波器的大小如何,最大池化總是將輸入映射到輸出的固定維度上。其次,它在降低輸出維度的同時保持了整個句子中最顯著的 n-gram 特征。這是通過平移不變的方式實(shí)現(xiàn)的,每個濾波器都能從句子的任何地方提取特定的特征(如,否定),并加到句子的最終表示中。

詞嵌入可以隨機(jī)初始化,也可以在大型未標(biāo)記語料庫上進(jìn)行預(yù)訓(xùn)練。第二種方法有時對性能提高更有利,特別是當(dāng)標(biāo)記數(shù)據(jù)有限時。卷積層和最大池化的這種組合通常被堆疊起來,以構(gòu)建深度 CNN 網(wǎng)絡(luò)。這些順序卷積有助于改進(jìn)句子的挖掘,以獲得包含豐富語義信息的真正抽象表征。內(nèi)核通過更深的卷積覆蓋了句子的大部分,直到完全覆蓋并創(chuàng)建了句子特征的總體概括。

2. 窗口方法

上述架構(gòu)將完整句子建模為句子表征。然而,許多 NLP 任務(wù)(如命名實(shí)體識別,詞性標(biāo)注和語義角色標(biāo)注)需要基于字的預(yù)測。為了使 CNN 適應(yīng)這樣的任務(wù),需要使用窗口方法,其假定單詞的標(biāo)簽主要取決于其相鄰單詞。因此,對于每個單詞,存在固定大小的窗口,窗口內(nèi)的子句都在處理的范圍內(nèi)。如前所述,獨(dú)立的 CNN 應(yīng)用于該子句,并且預(yù)測結(jié)果歸因于窗口中心的單詞。按照這個方法,Poira 等人(2016)采用多級深度 CNN 來標(biāo)記句子中的每個單詞為 aspect 或 non-aspect。結(jié)合一些語言模式,它們的集成分類器在 aspect 檢測方面表現(xiàn)很好。

詞級分類的最終目的通常是為整個句子分配一系列的標(biāo)簽。在這樣的情況下,有時會采用結(jié)構(gòu)化預(yù)測技術(shù)來更好地捕獲相鄰分類標(biāo)簽間的關(guān)系,最終生成連貫標(biāo)簽序列,從而給整個句子提供最大分?jǐn)?shù)。

為了獲得更大的上下文范圍,經(jīng)典窗口方法通常與時延神經(jīng)網(wǎng)絡(luò)(TDNN)相結(jié)合。這種方法中,可以在整個序列的所有窗口上進(jìn)行卷積。通過定義特定寬度的內(nèi)核,卷積通常會受到約束。因此,相較于經(jīng)典窗口方法(只考慮要標(biāo)記單詞周圍窗口中的單詞),TDNN 會同時考慮句子中的所有單詞窗口。TDNN 有時也能像 CNN 架構(gòu)一樣堆疊,以提取較低層的局部特征和較高層的總體特征。

應(yīng)用

在這部分,研究者介紹了一些使用 CNN 來處理 NLP 任務(wù)的研究,這些研究在它們當(dāng)時所處時代屬于前沿。

Kim 探討了使用上述架構(gòu)進(jìn)行各種句子分類任務(wù),包括情感、主觀性和問題類型分類,結(jié)果很有競爭力。因其簡單有效的特點(diǎn),這種方法很快被研究者接受。在針對特定任務(wù)進(jìn)行訓(xùn)練之后,隨機(jī)初始化的卷積內(nèi)核成為特定 n-gram 的特征檢測器,這些檢測器對于目標(biāo)任務(wù)非常有用。但是這個網(wǎng)絡(luò)有很多缺點(diǎn),最主要的一點(diǎn)是 CNN 沒有辦法構(gòu)建長距離依存關(guān)系。

圖 7:4 種預(yù)訓(xùn)練 7-gram 內(nèi)核得到的最好核函數(shù);每個內(nèi)核針對一種特定 7-gram。

Kalchbrenner 等人的研究在一定程度上解決了上述問題。他們發(fā)表了一篇著名的論文,提出了一種用于句子語義建模的動態(tài)卷積神經(jīng)網(wǎng)絡(luò)(DCNN)。他們提出了動態(tài) k-max 池化策略,即給定一個序列 p,選擇 k 種最有效的特征。選擇時保留特征的順序,但對其特定位置不敏感。在 TDNN 的基礎(chǔ)上,他們增加了動態(tài) k-max 池化策略來創(chuàng)建句子模型。這種結(jié)合使得具有較小寬度的濾波器能跨越輸入句子的長范圍,從而在整個句子中積累重要信息。在下圖中,高階特征具有高度可變的范圍,可能是較短且集中,或者整體的,和輸入句子一樣長。他們將模型應(yīng)用到多種任務(wù)中,包括情感預(yù)測和問題類型分類等,取得了顯著的成果??偟膩碚f,這項(xiàng)工作在嘗試為上下文語義建模的同時,對單個內(nèi)核的范圍進(jìn)行了注釋,并提出了一種擴(kuò)展其范圍的方法。

圖 8:DCNN 子圖,通過動態(tài)池化,較高層級上的寬度較小濾波器也能建立輸入句子中的長距離相關(guān)性。

情感分類等任務(wù)還需要有效地抽取 aspect 與其情感極性(Mukherjee and Liu, 2012)。Ruder 等人(2016)還將 CNN 應(yīng)用到了這類任務(wù),他們將 aspect 向量與詞嵌入向量拼接以作為輸入,并獲得了很好的效果。CNN 建模的方法一般因文本的長短而異,在較長文本上的效果比較短文本上好。Wang et al. (2015) 提出利用 CNN 建模短文本的表示,但是因?yàn)槿鄙倏捎玫纳舷挛男畔ⅲ麄冃枰~外的工作來創(chuàng)建有意義的表征。因此作者提出了語義聚類,其引入了多尺度語義單元以作為短文本的外部知識。最后 CNN 組合這些單元以形成整體表示。

CNN 還廣泛用于其它任務(wù),例如 Denil et al. (2014) 利用 DCNN 將構(gòu)成句子的單詞含義映射到文本摘要中。其中 DCNN 同時在句子級別和文檔級別學(xué)習(xí)卷積核,這些卷積核會分層學(xué)習(xí)并捕獲不同水平的特征,因此 DCNN 最后能將底層的詞匯特征組合為高級語義概念。

此外,CNN 也適用于需要語義匹配的 NLP 任務(wù)。例如我們可以利用 CNN 將查詢與文檔映射到固定維度的語義空間,并根據(jù)余弦相似性對與特定查詢相關(guān)的文檔進(jìn)行排序。在 QA 領(lǐng)域,CNN 也能度量問題和實(shí)體之間的語義相似性,并借此搜索與問題相關(guān)的回答。機(jī)器翻譯等任務(wù)需要使用序列信息和長期依賴關(guān)系,因此從結(jié)構(gòu)上來說,這種任務(wù)不太適合 CNN。但是因?yàn)?CNN 的高效計(jì)算,還是有很多研究者嘗試使用 CNN 解決機(jī)器翻譯問題。

總體而言,CNN 在上下文窗口中挖掘語義信息非常有效,然而它們是一種需要大量數(shù)據(jù)訓(xùn)練大量參數(shù)的模型。因此在數(shù)據(jù)量不夠的情況下,CNN 的效果會顯著降低。CNN 另一個長期存在的問題是它們無法對長距離上下文信息進(jìn)行建模并保留序列信息,其它如遞歸神經(jīng)網(wǎng)絡(luò)等在這方面有更好的表現(xiàn)。

第四章:循環(huán)神經(jīng)網(wǎng)絡(luò)

循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的思路是處理序列信息?!秆h(huán)」表示 RNN 模型對序列中的每一個實(shí)例都執(zhí)行同樣的任務(wù),從而使輸出依賴于之前的計(jì)算和結(jié)果。通常,RNN 通過將 token 挨個輸入到循環(huán)單元中,來生成表示序列的固定大小向量。一定程度上,RNN 對之前的計(jì)算有「記憶」,并在當(dāng)前的處理中使用對之前的記憶。該模板天然適合很多 NLP 任務(wù),如語言建模、機(jī)器翻譯、語音識別、圖像字幕生成。因此近年來,RNN 在 NLP 任務(wù)中逐漸流行。

對 RNN 的需求

這部分將分析支持 RNN 在大量 NLP 任務(wù)中廣泛使用的基本因素。鑒于 RNN 通過建模序列中的單元來處理序列,它能夠捕獲到語言中的內(nèi)在序列本質(zhì),序列中的單元是字符、單詞甚至句子。語言中的單詞基于之前的單詞形成語義,一個簡單的示例是「dog」和「hot dog」。RNN 非常適合建模語言和類似序列建模任務(wù)中的此類語境依賴,這使得大量研究者在這些領(lǐng)域中使用 RNN,頻率多于 CNN。

RNN 適合序列建模任務(wù)的另一個因素是它能夠建模不定長文本,包括非常長的句子、段落甚至文檔。與 CNN 不同,RNN 的計(jì)算步靈活,從而提供更好的建模能力,為捕獲無限上下文創(chuàng)造了可能。這種處理任意長度輸入的能力是使用 RNN 的主要研究的賣點(diǎn)之一。

很多 NLP 任務(wù)要求對整個句子進(jìn)行語義建模。這需要在固定維度超空間中創(chuàng)建句子的大意。RNN 對句子的總結(jié)能力使得它們在機(jī)器翻譯等任務(wù)中得到更多應(yīng)用,機(jī)器翻譯任務(wù)中整個句子被總結(jié)為固定向量,然后映射回不定長目標(biāo)序列。

RNN 還對執(zhí)行時間分布式聯(lián)合處理(time distributed joint processing)提供網(wǎng)絡(luò)支持,大部分序列標(biāo)注任務(wù)(如詞性標(biāo)注)屬于該領(lǐng)域。具體用例包括多標(biāo)簽文本分類、多模態(tài)情感分析等應(yīng)用。

上文介紹了研究人員偏好使用 RNN 的幾個主要因素。然而,就此認(rèn)為 RNN 優(yōu)于其他深度網(wǎng)絡(luò)則大錯特錯。近期,多項(xiàng)研究就 CNN 優(yōu)于 RNN 提出了證據(jù)。甚至在 RNN 適合的語言建模等任務(wù)中,CNN 的性能與 RNN 相當(dāng)。CNN 與 RNN 在建模句子時的目標(biāo)函數(shù)不同。RNN 嘗試建模任意長度的句子和無限的上下文,而 CNN 嘗試提取最重要的 n-gram。盡管研究證明 CNN 是捕捉 n-gram 特征的有效方式,這在特定長度的句子分類任務(wù)中差不多足夠了,但 CNN 對詞序的敏感度有限,容易限于局部信息,忽略長期依賴。

《Comparative Study of CNN and RNN for Natural Language Processing》對 CNN 和 RNN 的性能提供了有趣的見解。研究人員在多項(xiàng) NLP 任務(wù)(包括情感分類、問答和詞性標(biāo)注)上測試后,發(fā)現(xiàn)沒有明確的贏家:二者的性能依賴于任務(wù)所需的全局語義。

下面,我們討論了文獻(xiàn)中廣泛使用的一些 RNN 模型。

RNN 模型

1. 簡單 RNN

在 NLP 中,RNN 主要基于 Elman 網(wǎng)絡(luò),最初是三層網(wǎng)絡(luò)。圖 9 展示了一個較通用的 RNN,它按時間展開以適應(yīng)整個序列。圖中 x_t 作為網(wǎng)絡(luò)在時間步 t 處的輸入,s_t 表示在時間步 t 處的隱藏狀態(tài)。s_t 的計(jì)算公式如下:

因此,s_t 的計(jì)算基于當(dāng)前輸入和之前時間步的隱藏狀態(tài)。函數(shù) f 用來做非線性變換,如 tanh、ReLU,U、V、W 表示在不同時間上共享的權(quán)重。在 NLP 任務(wù)中,x_t 通常由 one-hot 編碼或嵌入組成。它們還可以是文本內(nèi)容的抽象表征。o_t 表示網(wǎng)絡(luò)輸出,通常也是非線性的,尤其是當(dāng)網(wǎng)絡(luò)下游還有其他層的時候。

圖 9:簡單 RNN 網(wǎng)絡(luò)(圖源:https://www.nature.com/articles/nature14539)

RNN 的隱藏狀態(tài)通常被認(rèn)為是其最重要的元素。如前所述,它被視為 RNN 的記憶元素,從其他時間步中累積信息。但是,在實(shí)踐中,這些簡單 RNN 網(wǎng)絡(luò)會遇到梯度消失問題,使學(xué)習(xí)和調(diào)整網(wǎng)絡(luò)之前層的參數(shù)變得非常困難。

該局限被很多網(wǎng)絡(luò)解決,如長短期記憶網(wǎng)絡(luò)(LSTM)、門控循環(huán)單元(GRU)和殘差網(wǎng)絡(luò)(ResNet),前兩個是 NLP 應(yīng)用中廣泛使用的 RNN 變體。

2. 長短期記憶(LSTM)

LSTM 比簡單 RNN 多了『遺忘』門,其獨(dú)特機(jī)制幫助該網(wǎng)絡(luò)克服了梯度消失和梯度爆炸問題。

圖 10:LSTM 和 GRU 門圖示(圖源:https://arxiv.org/abs/1412.3555)

與原版 RNN 不同,LSTM 允許誤差通過無限數(shù)量的時間步進(jìn)行反向傳播。它包含三個門:輸入門、遺忘門和輸出門,并通過結(jié)合這三個門來計(jì)算隱藏狀態(tài),如下面的公式所示:

3. 門控循環(huán)單元(GRU)

另一個門控 RNN 變體是 GRU,復(fù)雜度更小,其在大部分任務(wù)中的實(shí)驗(yàn)性能與 LSTM 類似。GRU 包括兩個門:重置門和更新門,并像沒有記憶單元的 LSTM 那樣處理信息流。因此,GRU 不加控制地暴露出所有的隱藏內(nèi)容。由于 GRU 的復(fù)雜度較低,它比 LSTM 更加高效。其工作原理如下:

研究者通常面臨選擇合適門控 RNN 的難題,這個問題同樣困擾 NLP 領(lǐng)域開發(fā)者??v觀歷史,大部分對 RNN 變體的選擇都是啟發(fā)式的?!禘mpirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling》對前面三種 RNN 變體進(jìn)行了對比評估,不過評估不是在 NLP 任務(wù)上進(jìn)行的,而是復(fù)調(diào)音樂建模和語音信號建模相關(guān)任務(wù)。他們的評估結(jié)果明確表明門控單元(LSTM 和 GRU)優(yōu)于傳統(tǒng)的簡單 RNN(實(shí)驗(yàn)中用的是 tanh 激活函數(shù)),如下圖所示。但是,他們對這兩種門控單元哪個更好沒有定論。其他研究也注意到了這一點(diǎn),因此人們在二者之間作出選擇時通常利用算力等其他因素。

圖 11:不同 RNN 變體在訓(xùn)練集和驗(yàn)證集上的學(xué)習(xí)曲線,上圖 x 軸表示迭代次數(shù),下圖 x 軸表示掛鐘時間,y 軸表示模型的負(fù)對數(shù)似然(以對數(shù)標(biāo)尺顯示)。

應(yīng)用

1. 用于單詞級別分類任務(wù)的 RNN

之前,RNN 經(jīng)常出現(xiàn)在單詞級別的分類任務(wù)中。其中的很多應(yīng)用到現(xiàn)在仍然是所在任務(wù)中的最優(yōu)結(jié)果。論文《Neural Architectures for Named Entity Recognition》提出 LSTM+CRF 架構(gòu)。它使用雙向 LSTM 解決命名實(shí)體識別問題,該網(wǎng)絡(luò)捕捉目標(biāo)單詞周圍的任意長度上下文信息(緩解了固定窗口大小的約束),從而生成兩個固定大小的向量,再在向量之上構(gòu)建另一個全連接層。最終的實(shí)體標(biāo)注部分使用的是 CRF 層。

RNN 在語言建模任務(wù)上也極大地改善了基于 count statistics 的傳統(tǒng)方法。該領(lǐng)域的開創(chuàng)性研究是 Alex Graves 2013 年的研究《Generating Sequences With Recurrent Neural Networks》,介紹了 RNN 能夠有效建模具備長距離語境結(jié)構(gòu)的復(fù)雜序列。該研究首次將 RNN 的應(yīng)用擴(kuò)展到 NLP 以外。之后,Sundermeyer 等人的研究《From Feedforward to Recurrent LSTM Neural Networks for Language Modeling》對比了在單詞預(yù)測任務(wù)中用 RNN 替換前饋神經(jīng)網(wǎng)絡(luò)獲得的收益。該研究提出一種典型的神經(jīng)網(wǎng)絡(luò)層級架構(gòu),其中前饋神經(jīng)網(wǎng)絡(luò)比基于 count 的傳統(tǒng)語言模型有較大改善,RNN 效果更好,LSTM 的效果又有改進(jìn)。該研究的一個重點(diǎn)是他們的結(jié)論可應(yīng)用于多種其他任務(wù),如統(tǒng)計(jì)機(jī)器翻譯。

2. 用于句子級別分類任務(wù)的 RNN

Xin Wang 等人 2015 年的研究《Predicting Polarities of Tweets by Composing Word Embeddings with Long Short-Term Memory》提出使用 LSTM 編碼整篇推文(tweet),用 LSTM 的隱藏狀態(tài)預(yù)測情感極性。這種簡單的策略被證明與 Nal Kalchbrenner 等人 2014 年的研究《A Convolutional Neural Network for Modelling Sentences》提出的較復(fù)雜 DCNN 結(jié)構(gòu)性能相當(dāng),DCNN 旨在使 CNN 模型具備捕捉長期依賴的能力。在一個研究否定詞組(negation phrase)的特殊案例中,Xin Wang 等人展示了 LSTM 門的動態(tài)可以捕捉單詞 not 的反轉(zhuǎn)效應(yīng)。

與 CNN 類似,RNN 的隱藏狀態(tài)也可用于文本之間的語義匹配。在對話系統(tǒng)中,Lowe 等人 2015 年的研究《The Ubuntu Dialogue Corpus: A Large Dataset for Research in Unstructured Multi-Turn Dialogue Systems》提出用 Dual-LSTM 匹配信息和候選回復(fù),Dual-LSTM 將二者編碼為固定大小的向量,然后衡量它們的內(nèi)積用于對候選回復(fù)進(jìn)行排序。

3. 用于生成語言的 RNN

NLP 領(lǐng)域中的一大難題是生成自然語言,而這是 RNN 另一個恰當(dāng)?shù)膽?yīng)用?;谖谋净蛞曈X數(shù)據(jù),深度 LSTM 在機(jī)器翻譯、圖像字幕生成等任務(wù)中能夠生成合理的任務(wù)特定文本。在這些案例中,RNN 作為解碼器。

在 Ilya Sutskever 等人 2014 年的研究《Sequence to Sequence Learning with Neural Networks》中,作者提出了一種通用深度 LSTM 編碼器-解碼器框架,可以實(shí)現(xiàn)序列之間的映射。使用一個 LSTM 將源序列編碼為定長向量,源序列可以是機(jī)器翻譯任務(wù)中的源語言、問答任務(wù)中的問題或?qū)υ捪到y(tǒng)中的待回復(fù)信息。然后將該向量作為另一個 LSTM(即解碼器)的初始狀態(tài)。在推斷過程中,解碼器逐個生成 token,同時使用最后生成的 token 更新隱藏狀態(tài)。束搜索通常用于近似最優(yōu)序列。

該研究使用了一個 4 層 LSTM 在機(jī)器翻譯任務(wù)上進(jìn)行端到端實(shí)驗(yàn),結(jié)果頗具競爭力?!禔 Neural Conversational Model》使用了同樣的編碼器-解碼器框架來生成開放域的有趣回復(fù)。使用 LSTM 解碼器處理額外信號從而獲取某種效果現(xiàn)在是一種普遍做法了。《A Persona-Based Neural Conversation Model》提出用解碼器處理恒定人物向量(constant persona vector),該向量捕捉單個說話人的個人信息。在上述案例中,語言生成主要基于表示文本輸入的語義向量。類似的框架還可用于基于圖像的語言生成,使用視覺特征作為 LSTM 解碼器的初始狀態(tài)(圖 12)。

視覺 QA 是另一種任務(wù),需要基于文本和視覺線索生成語言。2015 年的論文《Ask Your Neurons: A Neural-based Approach to Answering Questions about Images》是首個提供端到端深度學(xué)習(xí)解決方案的研究,他們使用 CNN 建模輸入圖像、LSTM 建模文本,從而預(yù)測答案(一組單詞)。

圖 12:結(jié)合 LSTM 解碼器和 CNN 圖像嵌入器,生成圖像字幕(圖源:https://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Vinyals_Show_and_Tell_2015_CVPR_paper.pdf)

《Ask Me Anything: Dynamic Memory Networks for Natural Language Processing》提出動態(tài)記憶網(wǎng)絡(luò)(dynamic memory network,DMN)來解決這個問題。其思路是重復(fù)關(guān)注輸入文本和圖像,以使每次迭代中的信息都得到改善。注意力網(wǎng)絡(luò)用于關(guān)注輸入文本詞組。

圖 13:神經(jīng)圖像 QA(圖源:https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Malinowski_Ask_Your_Neurons_ICCV_2015_paper.pdf)

注意力機(jī)制

傳統(tǒng)編碼器-解碼器框架的一個潛在問題是:有時編碼器會強(qiáng)制編碼可能與目前任務(wù)不完全相關(guān)的信息。這個問題在輸入過長或信息量過大時也會出現(xiàn),選擇性編碼是不可能的。

例如,文本摘要任務(wù)可以被視為序列到序列的學(xué)習(xí)問題,其中輸入是原始文本,輸出是壓縮文本。直觀上看,讓固定大小向量編碼長文本中的全部信息是不切實(shí)際的。類似的問題在機(jī)器翻譯任務(wù)中也有出現(xiàn)。

在文本摘要和機(jī)器翻譯等任務(wù)中,輸入文本和輸出文本之間存在某種對齊,這意味著每個 token 生成步都與輸入文本的某個部分高度相關(guān)。這啟發(fā)了注意力機(jī)制。該機(jī)制嘗試通過讓解碼器回溯到輸入序列來緩解上述問題。具體在解碼過程中,除了最后的隱藏狀態(tài)和生成 token 以外,解碼器還需要處理基于輸入隱藏狀態(tài)序列計(jì)算出的語境向量。

《Neural Machine Translation by Jointly Learning to Align and Translate》首次將注意力機(jī)制應(yīng)用到機(jī)器翻譯任務(wù),尤其改進(jìn)了在長序列上的性能。該論文中,關(guān)注輸入隱藏狀態(tài)序列的注意力信號由解碼器最后的隱藏狀態(tài)的多層感知機(jī)決定。通過在每個解碼步中可視化輸入序列的注意力信號,可以獲得源語言和目標(biāo)語言之間的清晰對齊(圖 14)。

圖 14:詞對齊矩陣(圖源:https://arxiv.org/abs/1409.0473)

類似的方法也被應(yīng)用到摘要任務(wù)中,《A Neural Attention Model for Abstractive Sentence Summarization》用注意力機(jī)制處理輸入句子從而得到摘要中的每個輸出單詞。作者執(zhí)行 abstractive summarization,它與 extractive summarization 不同,但可以擴(kuò)展到具備最小語言輸入的大型數(shù)據(jù)。

在圖像字幕生成任務(wù)中,《Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》用 LSTM 解碼器在每個解碼步中處理輸入圖像的不同部分。注意力信號由之前的隱藏狀態(tài)和 CNN 特征決定?!禛rammar as a Foreign Language》將解析樹線性化,從而將句法解析問題作為序列到序列學(xué)習(xí)任務(wù)。該研究證明注意力機(jī)制更加數(shù)據(jù)高效。指回輸入序列的進(jìn)一步步驟是:在特定條件下,直接將輸入中的單詞或子序列復(fù)制到輸出序列,這在對話生成和文本摘要等任務(wù)中也有用。解碼過程中的每個時間步可以選擇復(fù)制還是生成。

在基于 aspect 的情感分析中,《Attention-based LSTM for Aspect-level Sentiment Classification》提出基于注意力的解決方案,使用 aspect 嵌入為分類提供額外支持(圖 15)。注意力模塊選擇性關(guān)注句子的某些區(qū)域,這會影響 aspect 的分類。圖 16 中,對于 a 中的 aspect「service」,注意力模塊動態(tài)聚焦詞組「fastest delivery times」,b 中對于 aspect「food」,注意力在整個句子中識別了多個關(guān)鍵點(diǎn),包括「tasteless」和「too sweet」。近期,《Targeted Aspect-Based Sentiment Analysis via Embedding Commonsense Knowledge into an Attentive LSTM》用層級注意力機(jī)制(包含目標(biāo)級注意力和句子級注意力)增強(qiáng) LSTM,利用常識處理基于目標(biāo) aspect 的情感分析。

圖 15:使用注意力機(jī)制進(jìn)行 aspect 分類(圖源:https://aclanthology.coli.uni-saarland.de/papers/D16-1058/d16-1058)

圖 16:對于特定 aspect,注意力模塊對句子的關(guān)注點(diǎn)(圖源:https://aclanthology.coli.uni-saarland.de/papers/D16-1058/d16-1058)

另一方面,《Aspect Level Sentiment Classification with Deep Memory Network》采用基于記憶網(wǎng)絡(luò)(也叫 MemNet)的解決方案,使用多跳注意力(multiple-hop attention)。記憶網(wǎng)絡(luò)上的多個注意力計(jì)算層可以改善對記憶中大部分信息區(qū)域的查找,從而有助于分類。這一研究目前仍是該領(lǐng)域的當(dāng)前最優(yōu)結(jié)果。

由于注意力模塊應(yīng)用的直觀性,NLP 研究者和開發(fā)者在越來越多的應(yīng)用中積極使用注意力模塊。

并行化注意力:Transformer

CNN 和 RNN 在包括編碼器-解碼器架構(gòu)在內(nèi)的序列傳導(dǎo)應(yīng)用中非常關(guān)鍵。注意力機(jī)制可以進(jìn)一步提升這些模型的性能。但是,這些架構(gòu)面臨的一個瓶頸是編碼步中的序列處理。為了解決該問題,《Attention Is All You Need》提出了 Transformer,它完全去除了編碼步中的循環(huán)和卷積,僅依賴注意力機(jī)制來捕捉輸入和輸出之間的全局關(guān)系。因此,整個架構(gòu)更加并行化,在翻譯、解析等任務(wù)上訓(xùn)練得到積極結(jié)果所需的時間也更少。

圖 17:multi-head 注意力(圖源:https://arxiv.org/abs/1706.03762)

Transformer 的編碼器和解碼器部分都有一些堆疊層。每個層有兩個由 multi-head 注意力層組成的子層(圖 17),之后是 position-wise 前饋網(wǎng)絡(luò)。對于查詢集 Q、關(guān)鍵 K 和值 V,multi-head 注意力模塊執(zhí)行注意力 h 次,計(jì)算公式如下:

此處,W_i^{[.]} 和 W^o 是投影參數(shù)。該模型融合了殘差連接、層歸一化、dropout、位置編碼等技術(shù),在英語-德語、英語-法語翻譯和 constituency parsing 中獲得了當(dāng)前最優(yōu)結(jié)果。

第八章:不同模型在不同 NLP 任務(wù)上的表現(xiàn)

在下面表 2 到表 7 中,我們總結(jié)了一系列深度學(xué)習(xí)方法在標(biāo)準(zhǔn)數(shù)據(jù)集上的表現(xiàn),這些數(shù)據(jù)集都是近年來最流行的探究主題。我們的目標(biāo)是向讀者展示深度學(xué)習(xí)社區(qū)常用的數(shù)據(jù)集以及不同模型在這些數(shù)據(jù)集上的當(dāng)前最佳結(jié)果。

詞性標(biāo)注

WSJ-PTB(the Wall Street Journal part of the Penn Treebank Dataset)語料庫包含 117 萬個 token,已被廣泛用于開發(fā)和評估詞性標(biāo)注系統(tǒng)。Giménez 和 arquez(2004)在 7 個單詞窗口內(nèi)采用了基于人工特征的一對多 SVM,其中有些基本的 n-gram 模式被評估用來構(gòu)成二元特征,如:「前一個單詞是 the」,「前兩個標(biāo)簽是 DT NN」等。詞性標(biāo)注問題的一大特征是相鄰標(biāo)簽之間的強(qiáng)依賴性。通過簡單的從左到右標(biāo)注方案,該方法僅通過特征工程建模相鄰標(biāo)簽之間的依賴性。

為了減少特征工程,Collobert 等人(2011)通過多層感知機(jī)僅依賴于單詞窗口中的詞嵌入。Santos 和 Zadrozny(2014)將詞嵌入和字符嵌入連接起來,以便更好地利用形態(tài)線索。在論文《Learning Character-level Representations for Part-of-Speech Tagging》中,他們沒有考慮 CRF,但由于單詞級的決策是在上下文窗口上做出的,可以看到依賴性被隱式地建模。Huang 等人(2015)把單詞嵌入和手動設(shè)計(jì)的單詞級特征連接起來,并采用雙向 LSTM 來建模任意長度的上下文。

一系列消融分析(ablative analysis)表明,雙向 LSTM 和 CRF 都提升了性能。Andor 等人(2016)展示了一種基于轉(zhuǎn)換(transition-based)的方法,該方法通過簡單的前饋神經(jīng)網(wǎng)絡(luò)上產(chǎn)生了具有競爭性的結(jié)果。當(dāng)應(yīng)用于序列標(biāo)注任務(wù)時,DMN(Kumar et al., 2015)允許通過把每個 RNN 的隱藏狀態(tài)視為記憶實(shí)體來多次關(guān)注上下文,且每次都關(guān)注于上下文的不同部分。

表 2:詞性標(biāo)注

句法分析

有兩種句法分析:依存句法分析(dependency parsing)和成分句法分析(constituency parsing)。前者將單個單詞及其關(guān)系聯(lián)系起來,后者依次將文本拆分成子短語(sub-phrase)。基于轉(zhuǎn)換的方法是很多人的選擇,因?yàn)樗鼈冊诰渥娱L度上是線性的。解析器(parser)會做出一系列決定:根據(jù)緩沖器(buffer)順序讀取單詞,然后逐漸將它們組合到句法結(jié)構(gòu)中(Chen and Manning, 2014)。

在每個時間步,決策是基于包含可用樹節(jié)點(diǎn)的堆棧、包含未讀單詞的緩沖器和獲得的依存關(guān)系集來確定的。Chen and Manning 利用帶有一個隱藏層的神經(jīng)網(wǎng)絡(luò)來建模每個時間步做出的決定。輸入層包含特定單詞、詞性標(biāo)注和弧標(biāo)簽的嵌入向量,這些分別來自堆棧、緩沖器和依存關(guān)系集。

Tu 等人(2015)擴(kuò)展了 Chen and Manning 的工作,他們用了帶有兩個隱藏層的深度模型。但是,不管是 Tu 等人還是 Chen 和 Manning,他們都依賴于從解析器狀態(tài)中選擇手動特征,而且他們只考慮了少數(shù)最后的幾個 token。Dyer 等人(2015)提出堆棧-LSTMs 來建模任意長度的 token 序列。當(dāng)我們對樹節(jié)點(diǎn)的堆棧進(jìn)行 push 或 pop 時,堆棧的結(jié)束指針(end pointer)會改變位置。Zhou 等人(2017)整合集束搜索和對比學(xué)習(xí),以實(shí)現(xiàn)更好的優(yōu)化。

基于變換的模型也被應(yīng)用于成分句法分析。Zhu 等人(2013)基于堆棧和緩沖器頂部幾個單詞的特征(如詞性標(biāo)簽、成分標(biāo)簽)來進(jìn)行每個轉(zhuǎn)換動作。通過用線性標(biāo)簽序列表示解析樹,Vinyals 等人(2015)將 seq2seq 學(xué)習(xí)方法應(yīng)用于該問題。

表 3.1:依存句法分析(UAS/LAS=未標(biāo)記/標(biāo)記的 Attachment 分?jǐn)?shù);WSJ=The Wall Street Journal Section of Penn Treebank)

表 3.2:成分句法分析

命名實(shí)體識別

CoNLL 2003 是用于命名實(shí)體識別(NER)的標(biāo)準(zhǔn)英語數(shù)據(jù)集,其中主要包含四種命名實(shí)體:人、地點(diǎn)、組織和其它實(shí)體。NER 屬于自然語言處理問題,其中詞典非常有用。Collobert 等人(2011)首次通過用地名索引特征增強(qiáng)的神經(jīng)架構(gòu)實(shí)現(xiàn)了具有競爭性的結(jié)果。Chiu and Nichols(2015)將詞典特征、字符嵌入和單詞嵌入串聯(lián)起來,然后將其作為雙向 LSTM 的輸入。

另一方面,Lample 等人(2016)僅靠字符和單詞嵌入,通過在大型無監(jiān)督語料庫上進(jìn)行預(yù)訓(xùn)練嵌入實(shí)現(xiàn)了具有競爭性的結(jié)果。與 POS 標(biāo)簽類似,CRF 也提升了 NER 的性能,這一點(diǎn)在 Lample 等人(2016)的《Neural Architectures for Named Entity Recognition》中得到了證實(shí)。總體來說,帶有 CRF 的雙向 LSTM 對于結(jié)構(gòu)化預(yù)測是一個強(qiáng)有力的模型。

Passos 等人(2014)提出經(jīng)修正的 skip-gram 模型,以更好地學(xué)習(xí)與實(shí)體類型相關(guān)的詞嵌入,此類詞嵌入可以利用來自相關(guān)詞典的信息。Luo 等人(2015)聯(lián)合優(yōu)化了實(shí)體以及實(shí)體和知識庫的連接。Strubell 等人(2017)提出用空洞卷積,他們希望通過跳過某些輸入來定義更寬的有效輸入,因此實(shí)現(xiàn)更好的并行化和上下文建模。該模型在保持準(zhǔn)確率的同時展示出了顯著的加速。

表 4:命名實(shí)體識別

語義角色標(biāo)注

語義角色標(biāo)注(SRL)旨在發(fā)現(xiàn)句子中每個謂詞的謂詞-論元(predicate-argument)結(jié)構(gòu)。至于每個目標(biāo)動詞(謂語),句子中充當(dāng)動詞語義角色的所有成分都會被識別出來。典型的語義論元包括施事者、受事者、工具等,以及地點(diǎn)、時間、方式、原因等修飾語 (Zhou and Xu, 2015)。表 5 展示了不同模型在 CoNLL 2005 & 2012 數(shù)據(jù)集上的性能。

傳統(tǒng) SRL 系統(tǒng)包含幾個階段:生成解析樹,識別出哪些解析樹節(jié)點(diǎn)代表給定動詞的論元,最后給這些節(jié)點(diǎn)分類以確定對應(yīng)的 SRL 標(biāo)簽。每個分類過程通常需要抽取大量特征,并將其輸入至統(tǒng)計(jì)模型中(Collobert et al., 2011)。

給定一個謂詞,T?ckstr?m 等人(2015)基于解析樹,通過一系列特征對該謂詞的組成范圍以及該范圍與該謂詞的可能關(guān)系進(jìn)行打分。他們提出了一個動態(tài)規(guī)劃算法進(jìn)行有效推斷。Collobert 等人(2011)通過解析以附加查找表形式提供的信息,并用卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)了類似的結(jié)果。Zhou 和 Xu(2015)提出用雙向 LSTM 來建模任意長度的上下文,結(jié)果發(fā)現(xiàn)不使用任何解析樹的信息也是成功的。

表 5:語義角色標(biāo)注

情感分類

SST 數(shù)據(jù)集(Stanford Sentiment Treebank)包含從電影評論網(wǎng) Rotten Tomatoe 上收集的句子。它由 Pang 和 Lee(2005)提出,后來被 Socher 等人(2013)進(jìn)一步拓展。該數(shù)據(jù)集的標(biāo)注方案啟發(fā)了一個新的情感分析數(shù)據(jù)集——CMU-MOSI,其中模型需要在多模態(tài)環(huán)境中研究情感傾向。

Socher 等人(2013)和 Tai 等人(2015)都是通過成分解析樹及遞歸神經(jīng)網(wǎng)絡(luò)來改善語義表征。另一方面,樹形 LSTM(tree-LSTM)比線性雙向 LSTM 表現(xiàn)更好,說明樹結(jié)構(gòu)能夠更好地捕捉自然句子的句法特性。Yu 等人(2017)提出用情感詞匯微調(diào)預(yù)訓(xùn)練的詞嵌入,然后基于 Tai 等人(2015)的研究觀察改進(jìn)結(jié)果。

Kim(2014)和 l Kalchbrenner 等人(2014)都使用卷積層。Kim 等人提出的模型與圖 5 中的相似,而 Kalchbrenner 等人通過將 k-max 池化層和卷積層交替使用,以分層方式構(gòu)建模型。

表 6:不同情感分類模型在 SST-1 和 SST-2 數(shù)據(jù)集上的效果。

機(jī)器翻譯

基于短語的 SMT 框架(Koehn et al., 2003)將翻譯模型分解為原語短語和目標(biāo)語短語之間的概率匹配問題。Cho et al. (2014) 進(jìn)一步提出用 RNN 編碼器-解碼器框架學(xué)習(xí)原語與目標(biāo)語的匹配概率。而基于循環(huán)神經(jīng)網(wǎng)絡(luò)的編碼器-解碼器架構(gòu),再加上注意力機(jī)制在一段時間內(nèi)成為了業(yè)內(nèi)最標(biāo)準(zhǔn)的架構(gòu)。Gehring et al. (2017) 提出了基于 CNN 的 Seq2Seq 模型,CNN 以并行的方式利用注意力機(jī)制計(jì)算每一個詞的表征,解碼器再根據(jù)這些表征確定目標(biāo)語序列。Vaswani et al. (2017) 隨后提出了完全基于注意力機(jī)制的 Transformer,它目前已經(jīng)是神經(jīng)機(jī)器翻譯最常見的架構(gòu)了。

表 7:不同機(jī)器翻譯模型和 BLEU 值。

問答系統(tǒng)

QA 問題有多種形式,有的研究者根據(jù)大型知識庫來回答開放性問題,也有的研究者根據(jù)模型對句子或段落的理解回答問題。對于基于知識庫的問答系統(tǒng),學(xué)習(xí)回答單關(guān)系查詢的核心是數(shù)據(jù)庫中找到支持的事實(shí)。

表 8:不同模型在不同問答數(shù)據(jù)集上的效果。

上下文嵌入

2018 年,使用預(yù)訓(xùn)練的語言模型可能是 NLP 領(lǐng)域最顯著的趨勢,它可以利用從無監(jiān)督文本中學(xué)習(xí)到的「語言知識」,并遷移到各種 NLP 任務(wù)中。這些預(yù)訓(xùn)練模型有很多,包括 ELMo、ULMFiT、OpenAI Transformer 和 BERT,其中又以 BERT 最具代表性,它在 11 項(xiàng) NLP 任務(wù)中都獲得當(dāng)時最佳的性能。不過目前有 9 項(xiàng)任務(wù)都被微軟的新模型超過。下圖展示了不同模型在 12 種 NLP 任務(wù)中的效果:

小編曾解讀過 BERT 的的核心過程,它會先從數(shù)據(jù)集抽取兩個句子,其中第二句是第一句的下一句的概率是 50%,這樣就能學(xué)習(xí)句子之間的關(guān)系。其次隨機(jī)去除兩個句子中的一些詞,并要求模型預(yù)測這些詞是什么,這樣就能學(xué)習(xí)句子內(nèi)部的關(guān)系。最后再將經(jīng)過處理的句子傳入大型 Transformer 模型,并通過兩個損失函數(shù)同時學(xué)習(xí)上面兩個目標(biāo)就能完成訓(xùn)練。

如上所示為不同預(yù)訓(xùn)練模型的架構(gòu),BERT 可以視為結(jié)合了 OpenAI GPT 和 ELMo 優(yōu)勢的新模型。其中 ELMo 使用兩條獨(dú)立訓(xùn)練的 LSTM 獲取雙向信息,而 OpenAI GPT 使用新型的 Transformer 和經(jīng)典語言模型只能獲取單向信息。

BERT 的主要目標(biāo)是在 OpenAI GPT 的基礎(chǔ)上對預(yù)訓(xùn)練任務(wù)做一些改進(jìn),以同時利用 Transformer 深度模型與雙向信息的優(yōu)勢。這種「雙向」的來源在于 BERT 與傳統(tǒng)語言模型不同,它不是在給定所有前面詞的條件下預(yù)測最可能的當(dāng)前詞,而是隨機(jī)遮掩一些詞,并利用所有沒被遮掩的詞進(jìn)行預(yù)測。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5598

    瀏覽量

    124382
  • nlp
    nlp
    +關(guān)注

    關(guān)注

    1

    文章

    491

    瀏覽量

    23280

原文標(biāo)題:萬字長文概述NLP中的深度學(xué)習(xí)技術(shù)

文章出處:【微信號:aicapital,微信公眾號:全球人工智能】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    拿高薪必備的深度學(xué)習(xí)nlp技術(shù),這篇文章講得很透徹

    本文通過深度學(xué)習(xí)技術(shù)來闡述2017年NLP領(lǐng)域所取得的一系列進(jìn)步
    的頭像 發(fā)表于 12-16 07:59 ?7648次閱讀

    2017全國深度學(xué)習(xí)技術(shù)應(yīng)用大會

    的一種仿生模擬。深度學(xué)習(xí)在一些應(yīng)用的突破從一個側(cè)面展示了腦機(jī)理的研究對于智能技術(shù)發(fā)展的重要性。智能的本質(zhì)來源于腦的工作機(jī)理,我們對于腦不斷的認(rèn)識、不斷的理解,應(yīng)用到我們的計(jì)算技術(shù)
    發(fā)表于 03-22 17:16

    基于深度學(xué)習(xí)的異常檢測的研究方法

    的研究方法進(jìn)行了系統(tǒng)而全面的綜述。此外,我們回顧了這些方法在不同應(yīng)用領(lǐng)域中的應(yīng)用,并評估了它們的有效性。我們根據(jù)所采用的基本假設(shè)和方法,將最先進(jìn)的深度異常檢測研究技術(shù)分為不同的類別。在每個類別,我們
    發(fā)表于 07-12 07:10

    基于深度學(xué)習(xí)的異常檢測的研究方法

    ABSTRACT1.基于深度學(xué)習(xí)的異常檢測的研究方法進(jìn)行結(jié)構(gòu)化和全面的概述2.回顧這些方法在各個領(lǐng)域這個中的應(yīng)用情況,并評估他們的有效性。3.根據(jù)基本假設(shè)和采用的方法將最先進(jìn)的深度異常
    發(fā)表于 07-12 06:36

    專欄 | 深度學(xué)習(xí)NLP的運(yùn)用?從分詞、詞性到機(jī)器翻譯、對話系統(tǒng)

    從分詞、詞性等基礎(chǔ)模塊,到機(jī)器翻譯、知識問答等領(lǐng)域,本文列舉并分析一些深度學(xué)習(xí)NLP 領(lǐng)域的具體運(yùn)用,希望對大家研究深度學(xué)習(xí)
    的頭像 發(fā)表于 08-18 17:06 ?8143次閱讀
    專欄 | <b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>在<b class='flag-5'>NLP</b><b class='flag-5'>中</b>的運(yùn)用?從分詞、詞性到機(jī)器翻譯、對話系統(tǒng)

    從語言學(xué)到深度學(xué)習(xí)NLP,一文概述自然語言處理

    本文從兩篇論文出發(fā)先簡要介紹了自然語言處理的基本分類和基本概念,再向讀者展示了深度學(xué)習(xí)NLP。這兩篇論文都是很好的綜述性入門論文,希望詳細(xì)了解自然語言處理的讀者可以進(jìn)一步閱讀這兩
    的頭像 發(fā)表于 08-22 14:56 ?7235次閱讀

    如何提取文本實(shí)體?深度學(xué)習(xí)遠(yuǎn)遠(yuǎn)領(lǐng)先傳統(tǒng)算法

    文本實(shí)體提取是自然語言處理(NLP)的主要任務(wù)之一。隨著近期深度學(xué)習(xí)領(lǐng)域快速發(fā)展,我們可以將這些算法應(yīng)用到 NLP 任務(wù),并得到準(zhǔn)確率遠(yuǎn)超
    發(fā)表于 07-13 08:33 ?7148次閱讀
    如何提取文本實(shí)體?<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>遠(yuǎn)遠(yuǎn)領(lǐng)先傳統(tǒng)算法

    對2017年NLP領(lǐng)域中深度學(xué)習(xí)技術(shù)應(yīng)用的總結(jié)

    本文作者Javier Couto是tryo labs公司的一名研發(fā)科學(xué)家,專注于NLP技術(shù)。這篇文章是他對2017年NLP領(lǐng)域中深度學(xué)習(xí)
    的頭像 發(fā)表于 12-28 10:02 ?6126次閱讀
    對2017年<b class='flag-5'>NLP</b>領(lǐng)域中<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>技術(shù)</b>應(yīng)用的總結(jié)

    NLP的介紹和如何利用機(jī)器學(xué)習(xí)進(jìn)行NLP以及三種NLP技術(shù)的詳細(xì)介紹

    本文用簡潔易懂的語言,講述了自然語言處理(NLP)的前世今生。從什么是NLP到為什么要學(xué)習(xí)NLP,再到如何利用機(jī)器學(xué)習(xí)進(jìn)行
    的頭像 發(fā)表于 06-10 10:26 ?7.9w次閱讀
    <b class='flag-5'>NLP</b>的介紹和如何利用機(jī)器<b class='flag-5'>學(xué)習(xí)</b>進(jìn)行<b class='flag-5'>NLP</b>以及三種<b class='flag-5'>NLP</b><b class='flag-5'>技術(shù)</b>的詳細(xì)介紹

    采用深度學(xué)習(xí)對自然語言處理進(jìn)行分類

    深度學(xué)習(xí)對自然語言處理(NLP)進(jìn)行分類
    的頭像 發(fā)表于 11-05 06:51 ?4106次閱讀

    回顧2018年深度學(xué)習(xí)NLP十大創(chuàng)新思路

    Sebastian Ruder 是一位 NLP 方向的博士生、研究科學(xué)家,目前供職于一家做 NLP 相關(guān)服務(wù)的愛爾蘭公司 AYLIEN,同時,他也是一位活躍的博客作者,發(fā)表了多篇機(jī)器學(xué)習(xí)、NL
    的頭像 發(fā)表于 01-08 11:25 ?4068次閱讀

    AI 深度學(xué)習(xí) 機(jī)器學(xué)習(xí)NLP四種先進(jìn)技術(shù)的不同

    隨著人類技術(shù)的不斷發(fā)展,人工智能,深度學(xué)習(xí),機(jī)器學(xué)習(xí)NLP都是受歡迎的搜索熱詞。
    的頭像 發(fā)表于 05-03 18:09 ?3402次閱讀

    如何使用深度學(xué)習(xí)執(zhí)行文本實(shí)體提取

    隨著近期深度學(xué)習(xí)領(lǐng)域快速發(fā)展,我們可以將這些算法應(yīng)用到 NLP 任務(wù),并得到準(zhǔn)確率遠(yuǎn)超傳統(tǒng)方法的結(jié)果。我嘗試過分別使用深度
    的頭像 發(fā)表于 12-25 19:15 ?1183次閱讀

    深度學(xué)習(xí)nlp的區(qū)別在哪

    深度學(xué)習(xí)和自然語言處理(NLP)是計(jì)算機(jī)科學(xué)領(lǐng)域中兩個非常重要的研究方向。它們之間既有聯(lián)系,也有區(qū)別。本文將介紹深度學(xué)習(xí)
    的頭像 發(fā)表于 07-05 09:47 ?2245次閱讀

    GPU深度學(xué)習(xí)應(yīng)用案例

    GPU在深度學(xué)習(xí)的應(yīng)用廣泛且重要,以下是一些GPU深度學(xué)習(xí)應(yīng)用案例: 一、圖像識別 圖像識別是深度
    的頭像 發(fā)表于 10-27 11:13 ?2452次閱讀