深度| 從各種注意力機制窺探深度學習在NLP中的神威

2020-12-04 機器之心Pro

選自 arXiv

作者Antoine J.-P. Tixier

機器之心編譯

參與:思源

隨著層級表徵的興起,自然語言處理在很多方面都應用了深度神經網絡。它們可以實現語言建模、情感分析、機器翻譯、語義解析等非常多的任務,這些序列建模任務可以使用循環神經網絡、卷積神經網絡甚至近來比較流行的 Transformer。機器之心也介紹過基於循環與卷積的序列建模方法,而近日一篇綜述文章進一步介紹了 NLP 中各種深度技術。由於很多基礎知識讀者可能已經比較熟悉了,因此本文只重點介紹該綜述文章討論的注意力機制。

綜述文章地址:https://arxiv.org/abs/1808.09772

作者 Antoine Tixier 表示整篇綜述筆記也是他學習過程的一部分,所以這一文章還會在 arXiv 上繼續更新。為了完成整篇文章,作者主要借鑑了各種卷積神經網絡的原論文、斯坦福 CS231n 課程筆記、 Zhang 和 Wallace 關於在 NLP 中運用 CNN 的實戰指南、基於 CNN 的文本分類論文等,這些構建了該綜述文章卷積神經網絡部分的主體內容。

對於循環神經網絡,作者參考了 Denny Britz 的 RNN 教程、Chris Colah 關於理解 LSTM 單元的技術博客、關於 GRU 單元的新穎論文、編碼器-解碼器架構和注意力機制方面的論文。最後,Yoav Golderg 的 NLP 神經網絡入門和 Manning 關於神經機器翻譯的教程也都非常有幫助。

作者在完成綜述文章的同時,還根據 Keras 與 IMDB 數據集實現了很多模型算法,這些代碼都能在作者的 GitHub 項目中找到。

項目地址:https://github.com/Tixierae/deep_learning_NLP

整個綜述文章分為七章,我們僅會展示第七章的編碼器解碼器架構與注意力機制。其餘關於卷積神經網絡和循環神經網絡的具體內容可查閱原文章,以下展示了整篇綜述文章的目錄:

7 注意力機制

注意力機制 [1] 是在編碼器-解碼器結構下用於神經機器翻譯(NMT)[2, 24] 的一種結構,它已經非常快速地擴展到了其它相關任務,例如圖像描述 [25] 和文本摘要 [21] 等。直觀而言,注意力機制通過允許解碼器在多個向量中關注它所需要的信息,從而使編碼器避免了將輸入嵌入為定長向量,因此能保留更多的信息 [1]。

如今,注意力機制在深度模型中已經非常普遍,它已經不再僅流行於編碼器-解碼器架構。尤其是一些注意力變體,它們僅作用於編碼器而解決文本分類或表徵學習等問題,這些變體適用於自注意力或內部注意力。

在本文中,我們會首先討論編碼器-解碼器架構中的注意力機制,它們常用於神經機器翻譯,隨後本文會介紹自注意力與層級注意力等。

7.1 編碼器-解碼器注意力機制

7.1.1 編碼器解碼器架構

從概念上來說,如圖 10 所示編碼器希望將輸入嵌入為一個向量,而解碼器根據該向量生成一些輸出。

圖 10:編碼器-解碼器架構概覽。

在神經機器翻譯中,輸入與輸出都是由單詞組成的序列,即 x=(x_1, ... , x_T) 和 y=(y_1, ... , y_T),其中 x 和 y 通常表示原語句子與目標語句子。因為輸入與輸出都是序列,編碼器-解碼器架構也稱為序列到序列的模型(Seq2Seq)。因為編碼器-解碼器架構處處可微,所以它們的參數θ可以根據平行語料庫和最大似然估計同時得到優化,這種訓練類型也稱為端到端的訓練。

如上所示,我們希望最大化的函數即正確翻譯的對數概率。

7.1.2 編碼器

原語句子可以通過 CNN 或全連接網絡等某個模型編碼為一個向量,機器翻譯通常會選擇 RNN 作為編碼器。Bahdanau[1] 等人最開始使用雙向深度 RNN 網絡,該模型使用兩條深度單向 RNN 構建模型,且方向相反的兩條 RNN 不會共享參數。第一個前向 RNN 從左到右處理原語句子,而第二條反向的 RNN 由右到左處理原語句子。兩個 RNN 編碼的隱向量在每一個時間步都會拼接在一起,從而作為雙向 RNN 的內部表徵:

雙向 RNN 在考慮整個句子所有信息的情況下再編碼原語句子,它不會僅考慮當前時間步之前的單詞。因此 h_t 偏向於利用以 x_t 為中心的小區間信息,而在單向 RNN 中,h_t 偏向於利用 x_t 的信息。關注 x_t 周圍小區間的信息可能會產生一些優勢,但並不是絕對性的。Luong et al. [20] 使用一般的單向深度 RNN 編碼器同樣獲得了當前最優的模型性能。在下文中,編碼器的隱藏狀態將寫為 h_t bar。

7.1.3 解碼器

編碼器可以使用不同的模型,而在 NMT 中,解碼器通常會使用深度的單向 RNN,這主要因為單向 RNN 會比較自然地適應於序列生成任務。解碼器的目標是在每一個時間步生成目標語中的一個詞,直到讀到停止詞而完成整句話的輸出。

解碼器的關鍵思想是僅使用原語句子最後時間步編碼的隱藏向量來生成目標語句子,這會強迫編碼器擬合儘可能多的原語句子信息,並整合到最後的隱藏向量 h_T 中。因為 h_T 是一個定長的向量,因此表徵能力十分有限,很多信息也會損失掉。另一方面,注意力機制允許解碼器在每一個時間步考慮整個編碼器的隱藏狀態序列 (h_1, ... , h_T),也就是說解碼器在生成每一個目標語單詞中能決定需要注意哪些編碼向量。

更具體而言,目標語序列 y=(y_1, ... , y_T) 中每一個詞 y_t 的生成都基於條件分布:

其中 h_t tilde 為注意的隱藏狀態,它的計算表達式為:

h_t 為解碼器的隱藏狀態,當解碼器是深度 RNN 時,h_t 就是編碼器頂層的隱藏狀態,它提供了前面所生成目標語詞序列 {y_1, ... , y_(t-1)} 的信息。c_t 為原語的上下文向量,而「;」則表示了拼接操作。W_s 和 W_c 矩陣為可訓練的參數,且該式子為了簡化並沒有展示偏置項。如下圖 11 所示,上下文向量 c_t 能通過兩種方式計算:全局和局部。本文在後面會討論這兩種方法。

圖 11:全局注意力(左)和局部注意力(右)。

7.1.4 全局注意力

在全局注意力中,上下文向量 c_t 為整個原語序列隱藏狀態 h_i bar 的加權和,即編碼器所有時間步上隱藏狀態的加權和。其中每一個隱藏狀態向量的維度為編碼器隱藏層的神經元數量,c_t 的維度與編碼器的隱藏狀態相等。校準向量α_t 的維度等於原語句子序列長度 T_x,所以它是一個變量。

校準向量(alignment vector)α_t 需要先對當前目標語隱藏狀態 h_t 和所有原語隱藏狀態 h_i bar 之間做校準運算(score()),然後再對運算結果應用 Softmax:

換而言之,α_t 為所有原語隱藏狀態上的概率分布,即所有α_t 都在 0 和 1 之間,且加和為 1。α_t 表明原語句子中哪一個單詞對預測目標語下一個單詞最重要。score() 在理論上可以是任何對比函數,Luong et al. [20] 通過點乘試驗該函數

,而更一般的公式是通過參數矩陣與全連接層確定

。他們發現點乘在全局注意力中有更好的效果,而全連接層在局部注意力中有更好的效果。全局注意力在圖 12 中有所總結:

圖 12:全局注意力機制總結。

7.1.5 局部注意力

每生成單個目標詞都需要考慮原語句子的所有詞在計算上是非常昂貴的,也不是必需的。為了減少這種問題,Luong et al. [20] 提出了一種僅關注固定窗口大小 2D+1 的局部注意力機制:

D 是開發者指定的超參數,位置 p_t 為窗口的中心,它可以設置為 t(單調性校準)或者由可微分機制確定(預測性校準),其中預測性校準基於前面生成的目標語單詞信息 {y_1, ... , y_t-1},即儲存在 h_t 中的信息:

其中 T_x 為原語句子的長度、σ為 Sigmoid 函數、v_p 和 w_p 為可訓練參數。校準權重的計算方式與全局注意力相同(公式 19),只是加了一個均值為 p_t、標準差為 D/2 的正態分布項:

注意

。增加的高斯分布項會確保校準權重會隨著 i 遠離窗口中心 p_t 而衰減,即它會認為窗口中心附近的詞更重要。同樣不同於全局注意力,α_t 的維度固定等於 2D+1,只有在窗口內的隱藏向量才會得到考慮。局部注意力其實也可以視為全局注意力,只不過校準權重會乘上一個截斷的正態分布。下圖 13 總結了局部注意力機制:

圖 13:局部注意力的總結,其帶有預測性的校準機制。

7.2 自注意力

現在假定單個 RNN 編碼器採用序列 (x_1, ..., x_T) 作為輸入,其長度為 T,該 RNN 會將輸入序列映射到隱藏向量序列 (h_1, ..., h_T)。該模型的目標與編碼器-解碼器架構中的注意力機制一樣:它不希望僅考慮最後一個隱藏向量 h_T 作為對整個序列的總結,這會引起輸入信息的損失,它希望考慮所有時間步下的隱藏狀態,並計算一個新的上下文向量。為了這個目標,2016/2017 年提出了自注意力或內部注意力機制。

如下公式 23 所示,隱藏向量 h_t 首先會傳遞到全連接層。然後校準係數 α_t 會對比全連接層的輸出 u_t 和可訓練上下文向量 u(隨機初始化),並通過 Softmax 歸一化而得出。注意力向量 s 最後可以為所有隱藏向量的加權和。

score 函數理論上可以是任意校準函數,一個比較直接的方式是使用點乘 score(u_t , u) =u_t*u。上下文向量可以解釋為在平均上表徵的最優單詞。但模型面臨新的樣本時,它會使用這一知識以決定哪一個詞需要更加注意。在訓練中,模型會通過反向傳播更新上下文向量,即它會調整內部表徵以確定最優詞是什麼。

7.2.1 與 Seq2Seq 注意力的不同

自注意力中定義的上下文向量與 Seq2Seq 注意力中定義的上下文向量是不同的。在 Seq2Seq 中,上下文向量 c_t 等於加權和

,它用來計算需要注意的隱藏狀態 h_t tilde = tanh(W_c [c_t; h_t]。在自注意力中,上下文向量用來替代解碼器的隱藏狀態,因為模型沒有解碼器。所以在自注意力中,校準向量 α 表示每一個輸入單詞與平均最優單詞的相似性,而在 Seq2Seq 注意力中,α 表示每一個原語單詞對生成下一個目標語單詞的相關性。

7.2.2 層級注意力

圖 14 展示了一個很好的案例,它表示自注意力機制為什麼在實踐中非常有用。在該架構中,自注意力機制共使用了兩次:在詞層面與在句子層面。該方法因為兩個原因而非常重要,首先是它匹配文檔的自然層級結構(詞——句子——文檔)。其次在計算文檔編碼的過程中,它允許模型首先確定哪些單詞在句子中是非常重要的,然後再確定哪個句子在文檔中是非常重要的。

圖 14:層級注意力架構。

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權

相關焦點

  • 一文解讀NLP中的注意力機制
    新智元推薦 來源:AI小白入門作者:yuquanle 整理編輯:三石【新智元導讀】注意力機制越發頻繁的出現在文獻中,因此對注意力機制的學習、掌握與應用顯得十分重要。本文便對注意力機製做了較為全面的綜述。
  • 深度學習在NLP中的運用?從分詞、詞性到機器翻譯、對話系統
    自然語言是人類知識的抽象濃縮表示,而自然語言理解是人工智慧研究領域中極具挑戰的一個分支。上次,《自然語言處理在 2017 年有哪些值得期待的發展?》中,我們已經講到,2016 年是深度學習大潮衝擊 NLP 的一年,通過去年一年的努力,深度學習在 NLP 領域已經站穩了腳跟。
  • 自然語言處理(NLP)中的深度學習發展史和待解難題
    近年來,深度學習技術在自然語言處理方面的研究和應用也取得了顯著的成果。技術博客Sigmoidal最近發布了一篇文章,作者是機器學習工程師Rafal。這篇文章討論了自然語言處理方法的發展史,以及深度學習帶來的影響。
  • 從語言學到深度學習NLP,一文概述自然語言處理
    第二部分描述的是基於深度學習的 NLP,該論文首先描述了深度學習中的詞表徵,即從 one-hot 編碼、詞袋模型到詞嵌入和 word2vec 等,我們首先需要數字表徵詞彙才能進一步做自然語言處理。隨後,本論文介紹了各種應用於 NLP 的模型,包括卷積神經網絡、循環神經網絡、長短期記憶和門控循環神經網絡等,這一些模型加上其它如注意力機制那樣的技巧就能實現十分強大的能力,如機器翻譯、問答系統和情感分析等。
  • 深度學習概述:NLP vs CNN
    現在,每家公司都希望在其系統中實現這一尖端技術,以降低成本、節省時間,並通過自動化使整個工作流程更加高效。最初的人工智慧和深度學習算法比較簡單,就像我們所知的簡單感知器模型和單層神經網絡一樣。隨著時間的推移和更加專注的研究,我們已經擁有了具有多層結構的複雜神經網絡。一些公司在他們的軟體和服務中使用了LSTMs、GANs、變分自編碼器等算法。
  • 微軟亞研:對深度神經網絡中空間注意力機制的經驗性研究
    空間注意力(Spatial Attention)機制最近在深度神經網絡中取得了很大的成功和廣泛的應用,但是對空間注意力機制本身的理解和分析匱乏。(Spatial Attention)機制最近在深度神經網絡中取得了很大的成功和廣泛的應用,但是對空間注意力機制本身的理解和分析匱乏。
  • 一文概述 2018 年深度學習 NLP 十大創新思路
    4)元學習(Meta-learning)元學習已在小樣本學習、強化學習和機器人技術中得到廣泛應用——最突出的例子是與模型無關的元學習(MAML,https://arxiv.org/abs/1703.03400),但其很少在 NLP 中得到成功應用。元學習對於訓練示例數量有限的問題非常有用。
  • 獨家 | NLP的深度學習:ANN,RNN和LSTM詳解!(附資源)
    它遠不及Siri或Alexa,但它卻能很好地說明:即使使用非常簡單的深度神經網絡架構,也可以獲得不錯的結果。在這篇文章中,我們將學習人工神經網絡,深度學習,遞歸神經網絡和長短期記憶網絡。在下一篇文章中,我們將在真實項目中利用它來回答問題在開始討論神經網絡之前,先仔細看看下面的圖像。
  • 回望2017,基於深度學習的NLP研究大盤點
    在過去的幾年裡,深度學習(DL)架構和算法在諸如圖像識別和語音處理等領域取得了世人矚目的進步。然而在最開始的時候,深度學習在自然語言處理(Natural Language Processing, NLP)領域的效果一般,但是現在已經被證實深度學習在自然語言處理領域依然能夠發揮巨大的作用。並且在一些常見的自然語言處理任務中,基於深度學習的方法已經取得了最佳的結果。
  • 乾貨| 請收下這份2018學習清單:150個最好的機器學習,NLP和Python...
    深度學習教程 (Quoc V.NLP基於深度學習的NLP應用(arxiv.org)https://arxiv.org/pdf/1703.03091.pdf基於深度學習的NLP(Richard Socher)https://nlp.stanford.edu/courses/NAACL2013/NAACL2013-Socher-Manning-DeepLearning.pdf
  • ...請收下這份2018學習清單:150個最好的機器學習,NLP和Python教程
    深度神經網絡中的多任務學習概述(sebastianruder.com)http://sebastianruder.com/multi-task/index.html/2015/11/understanding-convolutional-neural-networks-for-nlp/深度學習,NLP,表示學習(colah.github.io)http://colah.github.io/posts/2014-07-NLP-RNNs-Representations
  • 乾貨 | 請收下這份2018學習清單:150個最好的機器學習,NLP和Python教程
    深度學習教程 (Quoc V.NLP基於深度學習的NLP應用(arxiv.org)https://arxiv.org/pdf/1703.03091.pdf 基於深度學習的NLP(Richard Socher)https://nlp.stanford.edu/courses/NAACL2013/NAACL2013-Socher-Manning-DeepLearning.pdf
  • 簡單有效的注意力機制
    在日常生活中,我們通過視覺、聽覺、觸覺等方式接收大量的感覺輸入。但是我們的人腦可以在這些外界的信息轟炸中還能有條不紊地工作,是因為人腦可以有意或無意地從這些大量輸入信息中選擇小部分的有用信息來重點處理,並忽略其他信息。這種能力就叫做注意力。
  • 這套1600贊的NLP課程已開放,面向實戰,視頻代碼都有丨資源
    裡面融合了此前經典NLP課程的基礎內容,比如正則表達、SVD、樸素貝葉斯,還加入了最近興起的神經網絡中新方法,比如RNN、seq2seq、注意力機制和Transformer架構。還加上了對道德問題、偏見問題和虛假信息可能帶來的影響。既然偏向實戰,那代碼必須全。
  • NLP深度學習的高級介紹RNN和變換器的工作原理
    在本文中,我們將為您提供NLP深度學習的高級介紹; 我們將簡要解釋RNN和變壓器如何工作以及後者的哪些特定屬性使其成為適用於各種NLP任務的更好架構。開始了!讓我們從RNN開始,為什麼,直到最近,它們才被認為是特殊的。遞歸神經網絡是一系列神經架構,具有很酷的屬性 - 循環機制 - 使其成為處理可變長度序列數據的自然選擇。
  • 告別2019:屬於深度學習的十年,那些我們必須知道的經典
    在這十年中,伴隨著計算能力和大數據方面的發展,深度學習已經攻克了許多曾經讓我們感到棘手的問題,尤其是計算機視覺和自然語言處理方面。此外,深度學習技術也越來越多地走進我們的生活,變得無處不在。這篇文章總結了過去十年中在深度學習領域具有影響力的論文,從 ReLU、AlexNet、GAN 到 Transformer、BERT 等。
  • 一文探討可解釋深度學習技術在醫療圖像診斷中的應用
    然後,結合三篇文章具體分析了可解釋深度學習模型在醫療圖像分析中的應用。作為一種領先的人工智慧方法,深度學習應用於各種醫學診斷任務都是非常有效的,在某些方面甚至超過了人類專家。其中,一些計算機視覺方面的最新技術已經應用於醫學成像任務中,如阿爾茨海默病的分類、肺癌檢測、視網膜疾病檢測等。
  • NeuralNLP-NeuralClassifier:騰訊開源深度學習文本分類工具
    NeuralNLP是騰訊廣告(Tencent Marketing Solution,TMS)(https://e.qq.com/)數據算法團隊搭建的一個基於PyTorch的深度學習NLP公共實驗平臺,主要涵蓋文本分類、序列標註、語義匹配、BERT微調和文本生成等,目前已經廣泛應用於騰訊廣告業務文本相關的需求場景中,如廣告定向、相關性計算、LookAlike、動態創意、點擊率/轉化率預估等
  • 注意力機制想要覺醒AI,總共分幾步?
    在2015年提出了關注機制後,它們被ICLR接受,如今,它的各種變體已成為機器翻譯算法的「標準」。第二個是減少機器學習的成本,同時增加可解釋性。眾所周知,深度學習神經網絡的模型訓練通常取決於大規模數據集。不僅數據獲取的成本非常高,而且訓練力和時間也很昂貴,並且關注機制的「選擇性」可以直接提高質量和效率,還可以為序列數據建立權重和映射,從而可以連結輸入和輸出,避免了算法的「黑匣子」。
  • 深度學習與統計力學(I) :深度學習中的基礎理論問題
    這些見解產生了深度學習與各種物理和數學主題之間的聯繫,包括隨機曲面、自旋玻璃、幹擾、動態相變、混沌、黎曼幾何、隨機矩陣理論、自由概率和非平衡統計力學。事實上,統計力學和機器學習領域長期以來都有著豐富的強耦合相互作用的歷史,而統計力學和深度學習交叉點的最新進展表明,這些相互作用只會加深未來的發展。