在這篇文章中將總結注意力機制在NLP問題中的應用。
參考論文:An Introductory Survey on Attention Mechanisms in NLP Problems
https://arxiv.org/pdf/1811.05544.pdf
1.基礎的注意力機制的形式
直觀理解:輸入兩個向量,輸出一個分數
1.1傳統的注意機制形式:
(1)計算注意力機制的分數(2)正則化(3)根據注意力機制進行整合輸入
在步驟(1)計算注意力機制的分數時,常用的有三種方式:
a.乘法方式(Multiplicative)
乘法方式就是簡單地將兩個向量做點乘計算,得到注意力分數。由於該種計算方式比較簡單,因此常用做詞語的計算(詞語必須通過同意語料訓練,不能用來搜索知識)。
此外該種方式由於向量的長度可能存在不同,因此嘗試用中間乘一個矩陣來完成計算。
b.加法方式(Additive)
加法方式通常是指將uv拼接到一起,然后通過矩陣運算,再通過非線性變換等方式進行。
顯然,加法方式比乘法方式復雜一些,因此他可以再機器學習任務中可能會學到有更強的能力。
c.全連接方式
全連接方式顯然經過了更多的運算,因此常用有更強的能力。
2.討論在不同任務中注意力機制的變種
2.1舉例分析
在自然語言處理任務中,這些注意力機制往往不能滿足我們的要求。
以基於知識的問答問題為例:
從例子中,傳統的注意力機制很難從問題找到句子(4)。
2.2注意力機制
本節會介紹:多維注意力機制(multi-dimensional attention),層次注意力機制(hierachical attention),自注意力機制(self attention),記憶網絡(memory-based attention), 特定任務注意力(task specific attention)
(1)多維注意力機制(例如tranformer的multi-head)
出發點:捕捉“源”與“目標”在不同表示空間中的多個聯系。
Wk表示的維度為N*N,多維注意力機制就是將單個注意力機制的輸出拼接起來。可以將其理解為在不同的層面做相似計算。
(2)層次注意力機制
以短文本分類為例,在分類中每個詞的貢獻程度可能不同,詞可以成為相應對的clue。因為文本的組成形式為:字母(字)=>詞=>句子=>文章。在長文本中,句子也自然成為相應的clue。
層次注意的結構有從底至上(詞->句子),也有從頂至下(句子->詞)。
a.從底至上的形式(目標得到文檔級別的輸出)
以文檔分類分類為例,通常是構建詞級別和句子級別的編碼器,通常的形式如下:
b.從頂至下的形式(目標是詞級別的輸出)
以語法糾錯為例,我們首先需要明白該句話的意思,來限制修改句子的大體,然后才需要關注到不同的詞。
(3)自注意機制
傳統的注意力機制是根據patterrn u和一個sequence{Vi},從而計算u和Vi的相關分數。自注意力機制的目標就是使用sequence中的元素作為相應的pattern。
目的:(1)是抓住句子中本身存在的關系。(2)以自注意力模型以自適應形式的方式學習復雜的上下問的token表示。
self attention獲取的關系我們可以大致分為兩類:詞義間的關系、句子結構的關系。具體抓住了什么關系,我們使用自適應的形式。
(4)記憶網絡
記憶網絡中,存在一個query和一個存儲記憶信息的序列。
注意機制的形式可以被根據如下理解:
記憶網絡與普通的注意力機制相比,增加了可迭代單元,即將閱讀到的信息重新增加到query中,這樣的增加機制是因為答案和問題可能是簡介相關的。此外,由於query和key都是顯示表示,因此可以結合先驗知識甚至人為設計。
以下是記憶網絡的結構:
例子:
(5)特定任務的注意力機制
針對具體的不同任務,我們可以設計不同的注意力機制。
例如我們可以根據pagerank的思想,根據其相關鏈接的多少,提出對應的注意力機制。
....
3.注意力機制可以用來做什么
1.Ensemble
如果我們將序列中的元素看作是獨立的,則相關系數則是他們的權重。因此我們可以通過權重加權求和得到該元素的ensumble結果。
以詞向量為例,我們使用加權多個詞向量,能夠得到相應的中間詞向量來獲得更好的表征能力。
2.gating
使用注意力機制可以使用門機制的控制。
原本的GRU
注意力門控的GRU
3.Pre-training
預訓練模型旨在通過大規模的語料庫,來訓練詞語的表征能力。在Bert之類的模型中,顯然通過注意力機制增加了模型的表征能力。
在我們使用Bert等預訓練模型作為詞向量嵌入時,由於其多層結構,越底層提取的越是詞級別的信息,因此在具體任務中國通常可以把幾個層使用注意的形式加到一起,以獲得更好的詞語表征效果。
4.未來
注意力機制是一個很成功的機器學習方法,但它也存在一些缺點。例如序列中的元素過多時,就會導致注意分數變得平均。此外,如何設計相應的query也是目前比較困難的問題。