本文是對文獻 《An Attentive Survey of Attention Models》 的總結,詳細內容請參照原文。html
注意力模型如今已經成爲神經網絡中的一個重要概念,並已經應用到多個應用領域。本文給出了注意力機制的主要思想,並對現有的一些注意力模型進行了分類,以及介紹了注意力機制與不一樣的神經結構的融合方法,而且還展現了注意力是如何提升神經網絡模型的可解釋性的。最後,本文討論了一些具體應用程序中注意力機制的應用與建模過程。web
Attention Model(AM)首次被 Bahdanau1 等人引用來解決機器翻譯等問題,並已經做爲神經網絡架構的重要組成部分來普遍應用與天然語言處理,統計學習,語音和計算機視覺等多種領域。注意力機制的主要思想請參考資料:淺談 Attention 機制的理解。神經網絡中的 attention model 的快速發展主要有三個緣由:算法
該文獻依然是從經典的 Encoder-Decoder 模型中來引入注意力模型,這有利於讀者對 Attention 機制有更直觀的理解,一樣能夠參考淺談 Attention 機制的理解。數據庫
以 Sequence-to-sequence 模型爲例,該模型包含了一個 Encoder-Decoder 架構。其中,Encoder 是一個 RNN 結構,將序列 \(\lbrace x_1,x_2,\dots,x_T \rbrace\) 做爲其輸入,\(T\) 表示輸入序列的長度,並將該序列編碼成固定長度的向量集合 \(\lbrace h_1,h_2,\dots,h_T \rbrace\) 。Decoder 也是一個 RNN 結構,將一個單一的固定長度的向量 \(h_T\) 做爲輸入,而且迭代地生成一個輸出序列 \(\lbrace y_1,y_2,\dots,y_{T'} \rbrace\),\(T^{'}\) 表示輸出序列的長度。在每一個時刻 \(t\),\(h_t\) 和 \(s_t\) 分佈表示 Encoder 和 Decoder 的隱藏層狀態。網絡
Attention Model 旨在經過容許 Decoder 訪問整個編碼的輸入序列 \(\lbrace h_1,h_2,\dots,h_T \rbrace\) 來解決上述的問題。中心思想時在輸入序列上引入 attention 權重 \(\alpha\) ,從而在生成下一個輸出標記時優先考慮集合中存在相關信息的位置集。架構
相應的具備註意力機制的 Encoder-Decoder 的架構如 Figure 2(b) 所示。架構中的 attention block 負責自動學習注意力權重 \(\alpha_{ij}\) ,該參數表示了 \(h_i\) 和 \(s_i\) 之間的相關性,其中 \(h_i\) 爲 Encoder 隱藏狀態,也稱之爲候選狀態,\(s_i\) 爲 Decoder 隱藏層狀態,也稱之爲查詢狀態。這些注意力權重而後被用來創建一個上下文向量 \(c\),該向量做爲一個輸入傳遞給 Decoder。在每一個解碼位置 \(j\),上下文向量 \(c_j\) 是全部 Encoder 的隱藏層狀態和他們對應的注意力權重的加權和,即 \(c_j=\sum_{i=1}^T{\alpha_{ij}h_i}\)。該機制的優點是 Decoder 不只考慮了整個輸入序列的信息,並且集中關注了那些在輸入序列中相關的信息。app
注意力權重是經過在體系結構中併入一個額外的前饋神經網絡來學習的。該前饋神經網絡學習將候選狀態和查詢狀態做爲神經網絡的輸入,並學習一個關於這兩個隱藏層狀態 \(h_i\) 和 \(s_{j-1}\) 的特定注意力權重 \(\alpha_{ij}\)。注意,此前饋神經網絡須要和架構中的 encoder-decoder 組件一塊兒聯合訓練。框架
此處在計算注意力權重的時候使用的是 \(s_{j-1}\),這是由於咱們當前在計算 \(y_j\) 時是不知道 \(s_j\) 狀態的,因此只能使用前一個狀態。機器學習
該文獻將注意力主要分爲四大類,可是須要注意的是這些類別並非互斥的,Attention 能夠應用於多種類型的組合當中,例如 Yang2 等人將 multi-level 和 self and soft attention 進行組合使用。所以,咱們能夠將這些類別看做是將注意力用於感興趣的應用時能夠考慮的維度。函數
到目前爲止,咱們只考慮了涉及到單個輸入和對應輸出序列的狀況。當候選狀態和查詢狀態分佈屬於兩個不一樣的輸入序列和輸出序列時,就會使用這種類型的注意力,咱們稱之爲 distinctive
。
co-attention
模型同時對多個輸入序列進行操做,並共同窗習它們的注意力,以捕獲這些輸入之間的相互做用。
相反,對於諸如文本分類和推薦之類的任務,輸入是序列,但輸出不是序列。在這種狀況下,可使用注意力來學習輸入序列中對應於相同輸入序列中的每一個標記的相關標記。換句話說,查詢和候選狀態屬於這種類型的關注的相同序列,這種注意力模型稱爲 self-attention
。
在最通常的狀況中,僅針對原始的輸入序列計算注意力權重,這種類型的注意力能夠稱之爲 single-level
。另外一方面,能夠按照順序將注意力應用於輸入序列的多個抽象層次,較低抽象級別的輸出(上下文向量)成爲較高抽象級別的查詢狀態。此外,使用 multi-level
注意力的模型能夠進一步根據權重自上而下學習或者自下而上學習來進一步分類。多層注意力模型的最典型的示例就是文檔的學習,文檔是由句子組成的,而句子是由單詞組成的,所以能夠創建兩層的 attention 機制。
在該分類依據中,主要是根據在計算注意力函數時輸入序列的位置。Bahdanau3 等人提出的注意力也被稱爲 soft-attention
。顧名思義,它使用輸入序列的全部隱藏狀態的加權平均值來構建上下文向量。這種軟加權方法的使用使得神經網絡易於經過反向傳播進行有效學習,但也致使二次計算成本。
Xu4 等人提出了一種 hard-attention
模型,其中上下文向量是經過從輸入序列中隨機採樣隱藏層狀態來計算獲得,這是經過一個由注意力權重參數化的多項式分佈來實現的。因爲下降了計算成本,hard-attention
模型是有效的,可是在輸入的每一個位置作出一個艱難的判決使得所獲得的框架不可微而且難以優化。所以,爲了克服這一侷限性,文獻中提出了變分學習方法和強化學習中的策略梯度方法。
Luong5等人提出了兩種注意力模型用於機器翻譯任務,分別命名爲 local attention
和 global attention
。其中,global attention
和 soft-attention
是類似的,而 local attention
介於 soft-attention
和 hard-attention
之間。關鍵思想是首先檢測輸入序列中的注意點或位置,並在該位置周圍選擇一個窗口以建立局部軟注意(local soft attention)模型。輸入序列的位置能夠直接設置(單調對齊)或經過預測函數(預測對齊)學習。所以,local attention
的優勢是在 soft-attention
和 hard-attention
、計算效率和窗口內的可微性之間提供參數權衡。
一般,大多數應用程序都使用輸入序列的單一特徵表示。而後,在某些場景中,使用輸入的一個特徵表示可能沒法知足下游任務。在這種狀況下,通常會經過多個特徵表示來捕獲輸入的不一樣方面。attention 機制能夠用於將重要性權重分配給這些不一樣的表示,這些表示能夠肯定最相關的方面,而忽略輸入中的噪聲和冗餘。咱們將這種模型稱爲 multi representational AM
,所以它能夠肯定下游應用的輸入的多個表示的相關性。最終表示形式是這些多個表示形式及其注意權重的加權組合。attention 機制的一個好處是經過檢查權重能夠直接評估哪些嵌入更適合哪些特定的下游任務。例如,Kiela6等人經過學習相同輸入句子的不一樣單詞嵌入的注意權重,以改善句子表示。
基於類似的直覺,在 multi-dimensional
注意中,能夠引入權重來肯定輸入嵌入向量的每一個維度的相關性。由於計算向量的每一個特徵的得分能夠選擇可以在任何給定的上下文中最好地描述標記的特定含義的特徵。這對於天然語言應用程序來講尤爲有用,由於在天然語言應用程序中,word 嵌入會存在一詞多義的問題。
文獻介紹了三個主要與 attention 機制進行結合的神經網絡架構:(1)encoder-decoder 架構;(2)將注意力擴展到單個輸入序列以外的內存網絡(memort networks);(3)利用注意力繞過遞歸模型的順序處理組件的體系結構。
注意力機制的早期使用是做爲基於 RNN 的 encoder-decoder 架構的一部分來對長的輸入語句進行編碼。
一個有趣的事實是,Attention Model 能夠採用任何輸入表示,並將其減小爲一個固定長度的上下文向量,以應用於解碼步驟。所以,它容許將輸入表示與輸出解耦。人們能夠利用這個好處來引入混合編碼器 - 解碼器,最流行的就是將卷積神經網絡(CNN)做爲編碼器,而把 RNN 或長短時間存儲器(LSTM)做爲解碼器。這種類型的架構特別適用於那些多模態任務,例如圖像和視頻字幕,視覺問答和語音識別。
然而,並不是全部輸入和輸出都是順序數據的問題均可以用上述模式解決,例如排序和旅行商問題。文獻給出了一個指針網絡的示例,能夠閱讀文獻進一步瞭解。
像問答和聊天機器人這樣的應用程序須要可以從事實數據庫中的信息進行學習。網絡的輸入是一個知識數據庫和一個查詢,其中存在一些事實比其餘事實更與查詢相關。端到端內存網絡經過使用一組內存塊存儲事實數據庫來實現這一點,並使用 attention 機制在回答查詢時在內存中爲每一個事實創建關聯模型。attention 機制經過使目標連續,並支持端到端的訓練反向傳播模型來提升計算效率。端到端內存網絡(End-to-End Memory Networks)能夠看做是 AM 的一種泛化,它不是隻在單個序列上建模注意力,而是在一個包含大量序列 (事實) 的數據庫上建模注意力。
循環體系結構依賴於在編碼步驟對輸入的順序處理,這致使計算效率低,由於處理不能並行化。爲此,Vaswani7 等人提出了 Transformer
架構,其中 encoder 和 decoder 由一堆具備兩個子層的相同的層組成,兩個子層分別爲位置定向前饋網絡層(FFN)和多抽頭自注意層(multi-head self attention)。
Position-wise FFN:輸入是順序的,要求模型利用輸入的時間方面,可是不使用捕獲該位置信息的組件(即 RNN/CNN)。爲此,轉換器中的編碼階段使用 FFN 爲輸入序列的每一個標記生成內容嵌入和位置編碼。
Multi-head Self-Attention:在每一個子層中使用 self-attention 來關聯標記及其在相同輸入序列中的位置。此外,注意力被稱爲 multi-head ,由於幾個注意力層是並行堆疊的,具備相同輸入的不一樣線性變換。這有助於模型捕獲輸入的各個方面,並提升其表達能力。轉換結構實現了顯著的並行處理,訓練時間短,翻譯精度高,無需任何重複的組件,具備顯著的優點。
受到模型的性能以及透明度和公平性的推進,人工智能模型的可解釋性引發了人們的極大興趣。然而,神經網絡,特別是深度學習架構因其缺少可解釋性而受到普遍的吐槽。
從可解釋性的角度來看,建模注意力機制特別有趣,由於它容許咱們直接檢查深度學習架構的內部工做。假設注意力權重的重要性與序列中每一個位置的輸出的預測和輸入的特定區域的相關程度高度相關。這能夠經過可視化一組輸入和輸出對的注意權重來輕鬆實現。
注意力模型因爲其直觀性、通用性和可解釋性,已成爲研究的一個活躍領域。注意力模型的變體已經被用來處理不一樣應用領域的獨特特徵,如總結、閱讀理解、語言建模、解析等。主要包括:
近年來,人們的注意力以新穎的方式被利用,爲研究開闢了新的途徑。一些有趣的方向包括更平滑地整合外部知識庫、訓練前嵌入和多任務學習、無監督的表明性學習、稀疏性學習和原型學習,即樣本選擇。
該文獻討論了描述注意力的不一樣方法,並試圖經過討論注意力的分類、使用注意力的關鍵神經網絡體系結構和已經看到顯著影響的應用領域來概述各類技術。文獻討論了在神經網絡中加入注意力是如何帶來顯著的性能提升的,經過促進可解釋性提供了對神經網絡內部工做的更深刻的瞭解,並經過消除輸入的順序處理提升了計算效率。
Neural machine translation by jointly learning to align and translate↩
Hierarchical attention networks for document classification↩
Neural machine translation by jointly learning to align and translate↩
Show, Attend and Tell: Neural Image Caption Generation with Visual Attention↩
Effective approaches to attention-based neural machine translation↩
Dynamic meta-embeddings for improved sentence representations↩