65 注意力分數(shù)【動手學深度學習v2】

注意力分數(shù)

- α(x,xi):注意力權(quán)重(權(quán)重一般是一組大于等于零,相加和為 1 的數(shù))
- 注意力分數(shù):高斯核的指數(shù)部分(相當于是注意力權(quán)重歸一化之前的版本)
- 上圖所展示的是:假設(shè)已知一些 key-value 對和一個 query,首先將 query 和每一個 key 通過注意力分數(shù)函數(shù) a 和 softmax 運算得到注意力權(quán)重(與 key 對應的值的概率分布),將這些注意力權(quán)重再與已知的 value 進行加權(quán)求和,最終就得到了輸出
如何將 key 和 value 拓展到更高的維度

- 假設(shè) query 是一個長為 q 的向量,ki 是長為 k 的向量,vi 是長為 v 的向量(這里 key 和 value 的長度可以不同)
- 其中 query 和 ki 的注意力權(quán)重(標量)是通過注意力評分函數(shù) a 將兩個向量映射成標量,再經(jīng)過 softmax 運算得到的
掩蔽 softmax 操作(masked softmax operation)
softmax 操作用于輸出一個概率分布作為注意力權(quán)重,但是在某些情況下,并非所有的值都應該被納入到注意力匯聚中
- 在處理文本數(shù)據(jù)集的時候,為了提高計算效率,可能會采用填充的方式使每個文本序列具有相同的長度,便于以相同形狀的小批量進行加載,因此可能會存在一些文本序列被填充了沒有意義的特殊詞源(比如“<pad>”詞元)
- 因此,為了僅僅將有意義的詞元作為值來獲取注意力匯聚,可以指定一個有效序列長度(即詞元的個數(shù)),任何超出有效長度的位置都被掩蔽并置于 0,便于在計算 softmax 的時候過濾掉超出指定范圍的位置,這也就是掩蔽 softmax 操作
注意力分數(shù)函數(shù) α 的設(shè)計
1、加性注意力(Additive attention)
- 當 query 和 key 是不同長度的矢量時,可以使用加性注意力作為注意力分數(shù)
- 可學參數(shù)( 3 個):

- h:超參數(shù)
- Wk:key 從 k map 到 h(將 key 向量的長度從 k 轉(zhuǎn)化為 h)
- Wq:query 從q map 到 h(將 query 向量的長度從 q 轉(zhuǎn)化為 h)
- Wk、Wq 都是矩陣,v 是向量
- tanh:激活函數(shù)
- 上式中,k 是長為 k 的向量,q 是長為 q 的向量
- 等價于將 query 和 key 合并起來變成一個長度為 k+q 的向量,然后將其輸入到一個隱藏層大小為 h ( h 是一個超參數(shù)),輸出大小為 1 的但隱藏層的 MLP(沒有偏置項),最終得到輸出
- 優(yōu)點是 key、value 向量可以是任意的長度,可以不同
2、縮放點積注意力(Scaled Dot-Product Attention)
- 使用點積可以得到計算效率更高i的評分函數(shù),但是點積操作要求 query 和 key 具有相同的長度
針對 key 和 query 長度相同的情況

- 假設(shè) query 和 key 的所有元素都是獨立的隨機變量,并且都滿足零均值和單位方差,那么兩個向量的點積的均值為 0 ,方差為 d
- 這里不需要學習任何東西,直接利用 <q,ki> 將 q 和 ki 做內(nèi)積然后除以根號 d (除以根號 d 的目的是為了降低對 ki 的長度的敏感度,使得無論向量的長度如何,點積的方差在不考慮向量長度的情況下仍然是 1 )
總結(jié)
1、注意力分數(shù)是 query 和 key 的相似度(沒有經(jīng)過 normalize ),注意力權(quán)重是注意力分數(shù)的 softmax 結(jié)果( 0 到 1 之間的數(shù))
2、兩種常見的注意力分數(shù)的計算
- 有參數(shù)的版本:將 query 和 key 合并起來進入一個單隱藏層單輸出的 MLP(在 query 和 key 向量長度不同的情況下)
- 無參數(shù)的版本:直接將 query 和 key 做內(nèi)積(在 query 和 key 向量長度一定的情況下),效率更高
Q&A
- 1、核回歸中算法后面的那個紅色的熱圖是什么意思??QA P3 - 00:00?
- 2、query、key、value 的主要區(qū)別是什么??QA P3 - 00:51?
- 3、把之前的 x 和 x_i 換成了 q 和 k_i 嗎,這兩個值是哪里的呢??QA P3 - 01:09?
- 4、為什么注意力分數(shù)可以理解為二者的相似度呢??QA P3 - 01:34?
- 5、masked_softmax() 就相當于把注意力分數(shù)低的過濾掉嗎?那多低算低呢,這個閾值怎么設(shè)置的呢??QA P3 - 03:13?
- 6、看懂了數(shù)學邏輯,還是不太理解 k、q、v 的具體含義 ?QA P3 - 04:28?
----end----
其他參考
1、《動手學深度學習》,https://zh-v2.d2l.ai/chapter_attention-mechanisms/attention-scoring-functions.html
標簽: