摘要

近些年來,注意力(Attention)機制已經成為深度學習中的一個熱點。在自然語言處理領域中,特別是在Seq2Seq模型中,注意力機制更是成為一種「標配」,出現在各種各樣的任務裏。本文將按照時間和分類順序,對自然語言處理中出現過的注意力機制、常見變種以及評價指標等進行介紹。

目錄

  1. 簡介
  2. 基本概念
  3. 變種
    1. Multi-dimensional Attention
    2. Soft Attention 和 Hard Attention
    3. Global Attention 和 Local Attention
    4. Hierarchical Attention
    5. Attention Over Attention
    6. Memory-based Attention
    7. Self-Attention
  4. 評價指標
    1. 定量指標
    2. 定性指標
  5. 結論
  6. 引用

簡介

注意力機制的思想很早就存在,第一次應用在深度學習是在計算機視覺中。我們在觀察一幅圖時,我們的注意力會自然地集中於圖像的某些地方,例如,當我們看到下圖時,我們的注意力會集中在小智、皮卡丘、噴火龍等角色上,而非圖片背景上。

精靈寶可夢示意圖

而在自然語言處理中,注意力機制的一大應用在Seq2Seq模型中。Seq2Seq模型由編碼器Encoder解碼器Decoder組成,兩者由Encoder的上下文編碼Context連接。如圖:

Seq2Seq

事實上,在我們閱讀句子的時候,也存在注意力機制。對於句子中某些重要的詞,往往會抓住我們的注意力。然而,在基礎的Seq2Seq模型中,在解碼的過程中,並沒有獲得「注意力」,對於每個解碼時刻,使用的編碼器信息均相同。而引入了注意力機制的Seq2Seq模型,結構如下圖:

Seq2Seq with Different Context

在不同解碼時刻,都存在一個不同的隱藏層狀態。於是,我們使用某時刻的解碼器的隱藏層狀態編碼器所有時刻的狀態進行匹配計算,得出各自的權重值,進而對編碼器的狀態進行加權求和作為額外的注意力知識。如下圖所示:

Attention

注意力機制在2014年首次正式使用在計算機視覺領域,而後在2014-2015年出現在神經機器翻譯中,這是注意力機制首次出現在自然語言處理的時間點。而後,在2015-2016年,注意力機制及其在循環神經網路、卷積神經網路中的變種也陸陸續續出現在自然語言處理中的各個任務裏。在2017年,注意力機制再一次被推上熱點,Google提出的Transformer模型非常好地使用了Self-Attention模塊,獲得了學術界和工業界的重點關注。

Attention發展過程

基本概念

在前面提到的Seq2Seq模型中,我們需要計算解碼器狀態和編碼器狀態的注意力分數,此處我們可以把計算分數的對象抽象為請求Query鍵Key請求Query為解碼器狀態,鍵Key是編碼器狀態

其中函數a為對齊函數,用來計算請求Query和鍵Key的相似度。常見的函數有:

進而,對每個請求Query產生的一組注意力分數進行標準化。

最終,計算值Value和上述結果的加權求和。此處值Value和鍵Key一樣,均為編碼器狀態

在上述介紹中,容易讓人產生疑問的是為什麼會有Key和Value這樣的概念,既然兩者相同為什麼要拆分開?事實上,在最基礎的注意力機制中,確實只有兩個元素,而非三個元素,之所以要拆分成Key和Value,是因為在某些需求中,計算相似度的對象和最終的注意力對象並非是相同的。例如,在閱讀理解問題中,我們可以把三者這樣對應:Query表示提出的問題,Key表示知識庫中的問題,Value表示知識庫中的答案。

綜上所述,我們可以把注意力機制分為三個步驟:

  1. 計算請求Query和鍵Key的注意力分數。
  2. 標準化每組注意力分數。
  3. 計算標準化後的注意力分數和值Value的加權求和。

變種

?Multi-dimensional Attention

Multi-dimensional Attention是一種較為容易理解的Attention變種。原始的Attention中,每個Query對應一組Attention分數。然而,這樣的表示在很多時候會認為是信息不足的,當Key本身包括多維度信息時,顯然我們需要多組Attention分數共同表示其結果。於是,Multi-dimensional Attention使用2維Attention而不是1維Attention,如下表:

最終,對於每個Query我們可以計算出多個加權求和的結果,因此如果想用向量表示結果,就需要將多個Attention結果拼接起來。

此外,我們可能需要加入一些強約束來保證各組Attention能學到更加充分的信息,如果各組Attention的結果相同,那麼將失去其意義。儘管隨機初始化也可能隱式地讓各組Attention能夠到達自己的局部最優點,但顯式的強約束將讓該條件變得更加有力:

該式子中A表示權重矩陣,I表示單位矩陣,F表示Frobenius範數,這是一種應用於矩陣上的範數,類似於向量上的L2範數。利用上述約束,我們可以讓權重矩陣A傾向於是正交的,進而保證各個權重維度都能盡量垂直。

Soft Attention 和 Hard Attention

原始的Attention即為Soft Attention,每個權重取值在[0, 1]。

對於Hard Attention而言,每個Key的注意力只會取0或者1。也就是說,對於特定的Query,我們會強限制其只會對某些Key存在注意力,且權重相同,均為1。

如下圖所示,Hard Attention在Soft Attention的第二步和第三步中間加入了採樣層,這裡使用的是蒙特卡洛採樣,可以保證整個模型的端到端特性。在採樣層中,以標準化後的權重為概率值,隨機抽樣出有限個權重值,抽樣中的結果權重設置為1,其餘設置為0。

Hard Attention

Global Attention 和 Local Attention

原始的Attention即為Global Attention。根據原始的Attention機制,每個解碼時刻,並不限制編碼器狀態的個數,而是能夠動態適配編碼器長度,進而和所有的編碼器狀態匹配。如下圖:

Global Attention

在長文本中,我們對整個編碼器長度進行對齊匹配,可能會導致注意力不集中的問題,因此我們可以通過限制注意力機制的範圍,令注意力機制更加有效。

在Local Attention中,每個解碼器的ht對應一個編碼器位置pt,根據經驗值選定區間大小D,進而只在編碼器的[pt-D, pt+D]位置使用注意力機制。根據不同的pt選擇方式,存在兩種常見的Local Attention分類:Local-m和Local-p。

Local Attention

Local-m:簡單設置pt為ht對應位置。

Local-p:利用ht預測pt,進而使用高斯分佈令Local Attention的權重以pt呈現出峯值形狀。

在高斯分佈中,我們設置:

?Hierarchical Attention

Hierarchical Attention也可以用來解決長文本注意力不集中的問題,與Local Attention不同的是,Local Attention強行限制了注意力機制的範圍,忽略剩餘位置。而Hierarchical Attention則使用分層的思想,在所有的狀態上都利用了注意力機制,如下圖:

Hierarchical Attention

在篇章級文本分類中,文本由多個句子組成,句子由多個詞語組成。在這樣的思路中,首先分別在各個句子中使用注意力機制,提取出每個句子的關鍵信息,進而對每個句子的關鍵信息使用注意力機制,提取出文本的關鍵信息,最終利用文本的關鍵信息進行篇章及文本分類,公式如下:

Attention Over Attention

Attention Over Attention在閱讀理解的完形填空任務中提出,基本思想是對Attention之後的結果再進行Attention,但具體步驟區別於Hierarchical Attention。

在Attention Over Attention中,第一次Attention的對象是請求中的詞向量和閱讀中整個文本構成的詞向量

在第一次Attention中,我們可以獲取到一個權重矩陣,兩個維度分別是請求長度和文本長度,橫軸和縱軸分別代表一方對另一方的注意力分佈。在文本長度上進行取均值並歸一化,則能得出和請求長度相同的注意力平均分佈向量,可以用來表示引入了注意力機制的請求Query。在請求長度上歸一化,則可以表示文本中各個詞關於請求的注意力分佈矩陣

在第二次Attention中,我們用第一次Attention的兩個結果再次求Attention權重,可以得到一個請求關於閱讀文本的注意力分佈向量,進而可以用來進行完形填空,例如求出P(「Mary」|D, Q)。模型架構圖如下:

Attention Over Attention

?Memory-based Attention

Memory Network也可以視為是一種Attention的變種,這裡列出End-to-End Memory Network來解釋Memory-based Attention,如下圖(a):

End-to-End Memory Network

圖中是閱讀理解任務,閱讀理解任務中,給定一個閱讀,閱讀由多個語句構成,然後給定一個問題,返回一個答案。圖中對閱讀中的多個句子進行兩套Embedding,藍色部分表示抽離出的問題Embedding,對應於注意力機制中的Key,黃色部分表示抽離出的答案Embedding,對應於注意力機制中的Value。對於整個過程中,對應於注意力中Query的輸入問題,與問題Embedding進行對齊匹配,得到權重後,與答案Embedding進行加權求和。整個過程中都可以和注意力機制中的步驟對應,如下:

Memory Network中,把上述的問題Embedding和答案Embedding當做記憶,表示對記憶的顯式建模。Memory-based Attention實際上是輸入問題和記憶之間的Attention。

Self-Attention

《Attention is all you need》中的Transformer模型幾乎把Self-Attention應用到了極致。簡單理解Self-Attention,即為Attention基礎概念中的Query,Key和Value均來自於相同的對象,例如可以為同一個句子,句子中每個詞語都和整個句子的中的詞語進行對齊匹配,得到權重後再合整個句子的詞向量進行加權求和,結果為融入整個句子注意力信息的詞向量。下圖為Transformer模型中使用的Self-Attention模塊:

Self-Attention

整個計算公式為:

在Transformer模型中,區別於傳統的Seq2Seq模型,不再使用RNN或者CNN充當編碼器和解碼器,而是僅使用Attention機制來完成全部的編碼和解碼。如下圖:

Transformer

Transformer模型讓Self-Attention獲得了更多的重視,並在多個任務上屠榜。從2017年開始,許多論文都成功將Transformer和Self-Attention應用到了各種任務裏。2018年的BERT更是一個再次成功的典範。

評價指標

Attention的評價方式主要分為兩類:定量指標定性指標

定量指標

一般而言,Attention機制是模型的一部分,而非獨立為一個模型。因此,想要定量評價Attention的效果一般都需要下游任務指標的支撐。例如,我們會使用BLEU值去評價機器翻譯任務,那麼可以在機器翻譯模型中加入Attention機制,根據最終機器翻譯的BLEU值的升降來評價Attention機制的好壞。

除此之外,也存在直接評價Attention機制的方法,但存在一定的困難。例如,某些數據存在實現標註好的對齊值,可以當做Attention的目標值,那麼可以計算出實際值和目標值的差異來計算出對齊錯誤率(AER)。但這樣的方式非常受限,標註對齊值的成本過大。

定性指標

定性指標也是Attention機制常用的一種評價標準,我們可以通過可視化的方式來定性評價Attention機制的好壞。

定性評價示意圖-1

例如,在某個Seq2Seq任務中,我們可以用顏色表示Attention的權重值,深紅色表示權重值接近於1,白色表示接近於0,那麼我們可以通過顏色深淺的直觀可視化表示來判斷Attention機制的好壞。

此外,也存在其他類似的可視化表示:

定性評價示意圖-2
定性評價示意圖-3

結論

目前,Attention機制已經成為深度學習和自然語言處理中重要的一部分,出現在各種各樣的模型和任務裏。事實證明,Attention機制在許多場景下是非常有效的,並且由於其形式簡潔,通常不會為模型帶來更多的複雜度。因此,Attention機制應當是我們在做自然語言處理尤其是Seq2Seq任務中幾乎必不可少的幫手。

引用

1. Hu D. An Introductory Survey on Attention Mechanisms in NLP Problems[J]. arXiv preprint arXiv:1811.05544, 2018.

2. Bahdanau D, Cho K, Bengio Y. Neural machine translation by jointly learning to align and translate[J]. arXiv preprint arXiv:1409.0473, 2014.

3. Luong M T, Pham H, Manning C D. Effective approaches to attention-based neural machine translation[J]. arXiv preprint arXiv:1508.04025, 2015.

4. Yang Z, Yang D, Dyer C, et al. Hierarchical attention networks for document classification[C]//Proceedings of the 2016 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. 2016: 1480-1489.

5. Sukhbaatar S, Weston J, Fergus R. End-to-end memory networks[C]//Advances in neural information processing systems. 2015: 2440-2448.

6. Cui Y, Chen Z, Wei S, et al. Attention-over-attention neural networks for reading comprehension[J]. arXiv preprint arXiv:1607.04423, 2016.

7. Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[C]//Advances in Neural Information Processing Systems. 2017: 5998-6008.

8. 深度學習中的注意力機制


推薦閱讀:
相關文章