Query-Key-Value Perspective on Attention Mechanism 怎么用“查詢-鍵-值”理解注意力機制

注意力機制

RNN編碼-解碼模型

論文[1]中,從RNN編碼-解碼模型演進出注意力機制炕柔。RNN編碼-解碼模型中,編碼器輸入序列\mathbb{x} = (x_1,..., x_{Tx} )象缀,h_t\in \mathbb{R}^n是編碼器RNN在t時刻的隱狀態(tài)(hidden state),
h_t = f (x_t, h_{t-1}) \tag{1}
隱狀態(tài)序列\mathbb{h}=[h_1,..., h_{Tx}]的生成向量(編碼)c
c = q ([h_1,..., h_{Tx}]) \tag{2}
其中fg都是非線性函數(shù)爷速。
解碼器用來預(yù)測下一個y_{t'}央星,定義了一個條件概率
p(\mathbb{y}) = \prod_{t=1}^T p(y_t | [y_1,..., y_{t-1}], c) \tag{3}
其中解碼器輸出\mathbb{y} = [y_1,..., y_{Ty}],對RNN有
p(y_t | [y_1,..., y_{t-1}], c) = g(y_{t-1},s_t,c) \tag{4}
其中s_t是解碼器RNN在t時刻的隱狀態(tài)惫东。

注意力機制

The graphical illustration of the proposed model trying to generate the t-th target word y_t given a source sentence x.

定義(3)中的條件概率為
p(y_i | y_1,..., y_{i-1}, \mathbb{x}) = g(y_{i-1}, s_i, c_i) \tag{5}
s_i是RNN在i時刻的隱狀態(tài)莉给。
s_i = f(s_{i-1}, y_{i-1}, c_i) \tag{6}
這里條件概率依賴的是上下文向量(context vector)c_i,在每個i是不同的廉沮。
c_i = \sum_{j=1}^{T_x} \alpha_{ij} h_j \tag{6}
權(quán)重
\alpha_{ij} = \frac{e^{e_{ij} } }{\sum_{k=1}^{Tx} e^{e_{ik}} } \tag{7}
其中
e_{ij} = a(s_{i-1}, h_j) \tag{8}
這種調(diào)整模型(alignment model)對輸入在位置j和輸出在位置i的匹配程度進行打分颓遏。

查詢-鍵-值

RNN編解碼結(jié)構(gòu)的例子

根據(jù)(8)注意力的權(quán)重分?jǐn)?shù)(attention scores)取決于編碼RNN狀態(tài)h_j和解碼RNN狀態(tài)s_{i-1}。則獲取attention scorese_{ij}需要計算這個網(wǎng)絡(luò)T_x\times T_y次滞时,其中編碼序列長度T_x叁幢,解碼序列長度T_y
可以考慮把sh先投影到同一個空間漂洋,再定義個這個空間內(nèi)的測度(如點乘)來計算attention scores[2]遥皂。除了用“Dot-Product Attention”,也可以用其他測度刽漂,如“additive attention”演训。其他形式的可以參考[3]
e_{ij} = f(s_i)g(h_j)^T \tag{9}
這樣只要計算T_yf(s_i)贝咙,T_xg(h_j)样悟,再矩陣乘法即可。這兩個投影就是[4][5]里面提到的查詢(query)和鍵(key)庭猩。
\mathrm{Attention}(Q, K, V ) = \mathrm{softmax}(\frac{QK^T}{\sqrt{d_k}})V \tag{10}
公式(10)來自論文[4]窟她,\frac{1}{\sqrt{d_k}}是縮放因子,所以這種注意力稱之為“Scaled Dot-Product Attention”蔼水。容易看出震糖,值V對應(yīng)的是h,(對解碼器)查詢Q對應(yīng)f(s_i)趴腋,(對編碼器的)鍵K對應(yīng)g(h_j)吊说。鍵g(h_j)就是值h_j在某個空間上的投影∮啪妫可以參考論文[6]的中2.2節(jié)Self-Attention颁井,寫的很明確。論文中提出“Relative Position Representations”蠢护,相等于限定了attention的“感受視野”雅宾。

Self-Attention

論文[4]中,沒有用RNN的編碼-解碼結(jié)構(gòu)葵硕,而是“self-attention”眉抬,QK的獲取更直接:對每個不同的輸入元素(單詞)都對應(yīng)一個Query向量贯吓,一個Key向量,一個Value向量蜀变。這三個向量都是輸入單詞的embedding向量乘以投影矩陣W^Q宣决,W^KW^V得到的[5]昏苏。

Multiplying x1 by the WQ weight matrix produces q1, the "query" vector associated with that word. We end up creating a "query", a "key", and a "value" projection of each word in the input sentence.

寫成矩陣的形式[5]

Every row in the X matrix corresponds to a word in the input sentence. We again see the difference in size of the embedding vector (512, or 4 boxes in the figure), and the q/k/v vectors (64, or 3 boxes in the figure)

所以公式(10)的形式如下威沫。


The self-attention calculation in matrix form

這樣贤惯,一個單詞的attentionz_i包含了來自其他單詞的編碼。

Multi-Headed Attention

論文[4]提出的“multi-headed” attention是對“self-attention layer”的擴展棒掠。self-attention中可能把大部分權(quán)重集中到一個輸入單詞上孵构,而事實上可能有多個關(guān)聯(lián)的單詞。Multi-headed attention采用多組矩陣獨立計算烟很,得到多組Z颈墅,然后把多組Z聯(lián)接起來組成一個矩陣,方便前向-后向傳遞(詳見[5])雾袱。只有第一個“head”需要輸入embeddingsX恤筛,后面的輸入上一個的輸出R即可[5]

如下表對“it”進行編碼時芹橡,一個attention head焦點在“the anima”毒坛,另一個attention head在“tired”。采用多個attention head更容易表示某個輸入單詞林说。

2 single self-attention layer Multi-headed attention

總結(jié)

序列到序列的編碼-解碼結(jié)構(gòu)中煎殷,引入注意力機制來建立對某一個輸出和一系列輸入(的編碼)直接的關(guān)系。查詢和鍵分別對應(yīng)兩個張量(tensor)腿箩,可以看作是輸入的數(shù)據(jù)/編碼/狀態(tài)序列和輸出的數(shù)據(jù)/編碼/狀態(tài)序列在某個空間上的投影豪直。值對應(yīng)輸入的數(shù)據(jù)/編碼/狀態(tài)序列,鍵可以看作是值的投影珠移。鍵和值可以完全相等[7]弓乙,也可以是同源對不同空間的投影張量。查詢對應(yīng)輸出剑梳,對應(yīng)target唆貌,對應(yīng)解碼器;鍵和值對應(yīng)輸入垢乙,對應(yīng)source锨咙,對應(yīng)編碼器。對于self-attention特例追逮,查詢也對應(yīng)輸入酪刀,來獲取輸入序列(可以是數(shù)據(jù)/編碼/狀態(tài))的某個輸入元素和序列中相鄰其他元素的關(guān)系粹舵。

附錄

其他例子

Image Transformer

把用注意力機制來生成文本的方法應(yīng)用到生成圖像[8](提高分辨率、修復(fù)骂倘、補足)眼滤。生成的像素點對應(yīng)的某個通道的數(shù)值q'取決于原始像素點數(shù)據(jù)q、前后生成的數(shù)據(jù)m_1,m_2,...和位置編碼p_q, p_1,p_2,...


從公式可以看出構(gòu)成了self-attention历涝。因為是圖像處理诅需,文中還介紹了1D attention和2D attention。

并行計算

前面提到過荧库,用“Dot-Product Attention”可以減少計算量堰塌、增加并行度。由于序列的相關(guān)性P(y_t| y_{t-1}, y_{t-2}, y_1)分衫,生成y_t前需要生成y_{t-1}, y_{t-2}, y_1场刑,這不利于并行計算。訓(xùn)練時候因為標(biāo)記已知蚪战,根據(jù)前面符號的條件概率可以并行計算牵现,但解碼時只能順序計算y_1,...,y_n
為了解決這個問題邀桑,[9]提出用一組離散的隱變量(discrete latent variables):l_1,...,l_m來綜合y_1,...,y_n的相對信息瞎疼,m<n,通常m = n/8壁畸。目標(biāo)是可以獨立地由l_1,...,l_m來重構(gòu)y_1,...,y_n的每個元素丑慎,實現(xiàn)并行計算。這需要一個自編碼(autoencode)把y_1,...,y_n編碼為l_1,...,l_m瓤摧。隱變量通常是連續(xù)的竿裂,期望l_1,...,l_m是離散的,通常有三種方法來使用這些離散隱變量

  • Gumbel-Softmax
  • VQ-VAE
  • Improved semantic hashing

作者比較驗證了這幾種方法照弥,還提出了decomposed vector quantization (DVQ)腻异,比VQ-VAE好[9]

論文[10]中这揣,通過使用“memory-compressed attention”減少了VK參與計算的參數(shù)簡化了計算(下圖中間)悔常。使用“l(fā)ocal attention”,把長序列分成幾個短的子序列给赞,并行運算后再融合(下圖最右)机打。

Reference


  1. Neural Machine Translation by Jointly Learning to Align and Translate ?

  2. what-exactly-are-keys-queries-and-values-in-attention-mechanisms ?

  3. Effective Approaches to Attention-based Neural Machine Translation.pdf ?

  4. Attention Is All You Need ? ? ? ?

  5. The Illustrated Transformer ? ? ? ? ?

  6. Self-Attention with Relative Position Representations ?

  7. Depthwise Separable Convolutions for Neural Machine Translation ?

  8. Image Transformer ?

  9. Fast Decoding in Sequence Models using Discrete Latent Variables ? ?

  10. Generating Wikipedia by Summarizing Long Sequences ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市片迅,隨后出現(xiàn)的幾起案子残邀,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芥挣,死亡現(xiàn)場離奇詭異驱闷,居然都是意外死亡,警方通過查閱死者的電腦和手機空免,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門空另,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蹋砚,你說我怎么就攤上這事扼菠。” “怎么了坝咐?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵娇豫,是天一觀的道長。 經(jīng)常有香客問我畅厢,道長,這世上最難降的妖魔是什么氮昧? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任框杜,我火速辦了婚禮,結(jié)果婚禮上袖肥,老公的妹妹穿的比我還像新娘咪辱。我一直安慰自己,他們只是感情好椎组,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布油狂。 她就那樣靜靜地躺著,像睡著了一般寸癌。 火紅的嫁衣襯著肌膚如雪专筷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天蒸苇,我揣著相機與錄音磷蛹,去河邊找鬼。 笑死溪烤,一個胖子當(dāng)著我的面吹牛味咳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播檬嘀,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼槽驶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了鸳兽?” 一聲冷哼從身側(cè)響起掂铐,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后堡纬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體聂受,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年烤镐,在試婚紗的時候發(fā)現(xiàn)自己被綠了蛋济。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡炮叶,死狀恐怖碗旅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情镜悉,我是刑警寧澤祟辟,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站侣肄,受9級特大地震影響旧困,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜稼锅,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一吼具、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧矩距,春花似錦拗盒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至哮肚,卻和暖如春登夫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背允趟。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工悼嫉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拼窥。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓戏蔑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鲁纠。 傳聞我的和親對象是個殘疾皇子总棵,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容