當前位置:
首頁 > 新聞 > 萬字長文概述NLP中的深度學習技術之循環神經網路

萬字長文概述NLP中的深度學習技術之循環神經網路

循環神經網路(RNN)的思路是處理序列信息。「循環」表示 RNN 模型對序列中的每一個實例都執行同樣的任務,從而使輸出依賴於之前的計算和結果。通常,RNN 通過將 token 挨個輸入到循環單元中,來生成表示序列的固定大小向量。一定程度上,RNN 對之前的計算有「記憶」,並在當前的處理中使用對之前的記憶。該模板天然適合很多 NLP 任務,如語言建模、機器翻譯、語音識別、圖像字幕生成。因此近年來,RNN 在 NLP 任務中逐漸流行。

對 RNN 的需求

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

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

很多 NLP 任務要求對整個句子進行語義建模。這需要在固定維度超空間中創建句子的大意。RNN 對句子的總結能力使得它們在機器翻譯等任務中得到更多應用,機器翻譯任務中整個句子被總結為固定向量,然後映射回不定長目標序列。

RNN 還對執行時間分散式聯合處理(time distributed joint processing)提供網路支持,大部分序列標註任務(如詞性標註)屬於該領域。具體用例包括多標籤文本分類、多模態情感分析等應用。

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

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

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

RNN 模型

1. 簡單 RNN

在 NLP 中,RNN 主要基於 Elman 網路,最初是三層網路。圖 9 展示了一個較通用的 RNN,它按時間展開以適應整個序列。圖中 x_t 作為網路在時間步 t 處的輸入,s_t 表示在時間步 t 處的隱藏狀態。s_t 的計算公式如下:

萬字長文概述NLP中的深度學習技術之循環神經網路

因此,s_t 的計算基於當前輸入和之前時間步的隱藏狀態。函數 f 用來做非線性變換,如 tanh、ReLU,U、V、W 表示在不同時間上共享的權重。在 NLP 任務中,x_t 通常由 one-hot 編碼或嵌入組成。它們還可以是文本內容的抽象表徵。o_t 表示網路輸出,通常也是非線性的,尤其是當網路下游還有其他層的時候。

萬字長文概述NLP中的深度學習技術之循環神經網路

圖 9:簡單 RNN 網路(圖源:https://www.nature.com/articles/nature14539)

RNN 的隱藏狀態通常被認為是其最重要的元素。如前所述,它被視為 RNN 的記憶元素,從其他時間步中累積信息。但是,在實踐中,這些簡單 RNN 網路會遇到梯度消失問題,使學習和調整網路之前層的參數變得非常困難。

該局限被很多網路解決,如長短期記憶(LSTM)、門控循環單元(GRU)和殘差網路(ResNet),前兩個是 NLP 應用中廣泛使用的 RNN 變體。

2. 長短期記憶(LSTM)

LSTM 比簡單 RNN 多了『遺忘』門,其獨特機制幫助該網路克服了梯度消失和梯度爆炸問題。

萬字長文概述NLP中的深度學習技術之循環神經網路

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

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

萬字長文概述NLP中的深度學習技術之循環神經網路

3. 門控循環單元(GRU)

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

萬字長文概述NLP中的深度學習技術之循環神經網路

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

萬字長文概述NLP中的深度學習技術之循環神經網路

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

應用

1. 用於單詞級別分類任務的 RNN

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

RNN 在語言建模任務上也極大地改善了基於 count statistics 的傳統方法。該領域的開創性研究是 Alex Graves 2013 年的研究《Generating Sequences With Recurrent Neural Networks》,介紹了 RNN 能夠有效建模具備長距離語境結構的複雜序列。該研究首次將 RNN 的應用擴展到 NLP 以外。之後,Sundermeyer 等人的研究《From Feedforward to Recurrent LSTM Neural Networks for Language Modeling》對比了在單詞預測任務中用 RNN 替換前饋神經網路獲得的收益。該研究提出一種典型的神經網路層級架構,其中前饋神經網路比基於 count 的傳統語言模型有較大改善,RNN 效果更好,LSTM 的效果又有改進。該研究的一個重點是他們的結論可應用於多種其他任務,如統計機器翻譯。

2. 用於句子級別分類任務的 RNN

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

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

3. 用於生成語言的 RNN

NLP 領域中的一大難題是生成自然語言,而這是 RNN 另一個恰當的應用。基於文本或視覺數據,深度 LSTM 在機器翻譯、圖像字幕生成等任務中能夠生成合理的任務特定文本。在這些案例中,RNN 作為解碼器。

在 Ilya Sutskever 等人 2014 年的研究《Sequence to Sequence Learning with Neural Networks》中,作者提出了一種通用深度 LSTM 編碼器-解碼器框架,可以實現序列之間的映射。使用一個 LSTM 將源序列編碼為定長向量,源序列可以是機器翻譯任務中的源語言、問答任務中的問題或對話系統中的待回複信息。然後將該向量作為另一個 LSTM(即解碼器)的初始狀態。在推斷過程中,解碼器逐個生成 token,同時使用最後生成的 token 更新隱藏狀態。束搜索通常用於近似最優序列。

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

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

萬字長文概述NLP中的深度學習技術之循環神經網路

圖 12:結合 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》提出動態記憶網路(dynamic memory network,DMN)來解決這個問題。其思路是重複關注輸入文本和圖像,以使每次迭代中的信息都得到改善。注意力網路用於關注輸入文本片語。

萬字長文概述NLP中的深度學習技術之循環神經網路

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

注意力機制

傳統編碼器-解碼器框架的一個潛在問題是:有時編碼器會強制編碼可能與目前任務不完全相關的信息。這個問題在輸入過長或信息量過大時也會出現,選擇性編碼是不可能的。

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

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

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

萬字長文概述NLP中的深度學習技術之循環神經網路

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

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

在圖像字幕生成任務中,《Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》用 LSTM 解碼器在每個解碼步中處理輸入圖像的不同部分。注意力信號由之前的隱藏狀態和 CNN 特徵決定。《Grammar as a Foreign Language》將解析樹線性化,從而將句法解析問題作為序列到序列學習任務。該研究證明注意力機制更加數據高效。指回輸入序列的進一步步驟是:在特定條件下,直接將輸入中的單詞或子序列複製到輸出序列,這在對話生成和文本摘要等任務中也有用。解碼過程中的每個時間步可以選擇複製還是生成。(參見:新聞太長不想看?深度解析 MetaMind 文本摘要新研究)

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

萬字長文概述NLP中的深度學習技術之循環神經網路

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

萬字長文概述NLP中的深度學習技術之循環神經網路

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

另一方面,《Aspect Level Sentiment Classification with Deep Memory Network》採用基於記憶網路(也叫 MemNet)的解決方案,使用多跳注意力(multiple-hop attention)。記憶網路上的多個注意力計算層可以改善對記憶中大部分信息區域的查找,從而有助於分類。這一研究目前仍是該領域的當前最優結果。

由於注意力模塊應用的直觀性,NLP 研究者和開發者在越來越多的應用中積極使用注意力模塊。

並行化注意力:Transformer

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

萬字長文概述NLP中的深度學習技術之循環神經網路

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

Transformer 的編碼器和解碼器部分都有一些堆疊層。每個層有兩個由 multi-head 注意力層組成的子層(圖 17),之後是 position-wise 前饋網路。對於查詢集 Q、關鍵 K 和值 V,multi-head 注意力模塊執行注意力 h 次,計算公式如下:

萬字長文概述NLP中的深度學習技術之循環神經網路

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

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

對話Gary Marcus:人工智慧還未找到它的牛頓,我們不能依賴它
拳打Adam,腳踢SGD:北大提出全新優化演算法AdaBound

TAG:機器之心 |