注意力機制

想你时风起發表於2024-04-07

注意力機制

有一個字典(Python中稱為字典,也叫鍵值對)。我們記為(key, value)。

比方說我們有下列腰圍體重資料,我們又有一個樣本,他的腰圍是57,那麼我們預測他的體重值是多少呢?或者說我們怎麼預測他的體重值呢?

image

由於57到56和58的距離一樣,那麼我們可以預測他的體重值為它們對應體重的平均值,即(43 + 48) / 2 = 0.5 * 43 + 0.5 * 48 = 45.5,注意此處,由於56和58離57非常接近,所以我們自然會非常"注意"它們,所以我們分給它們的注意力權重各為0.5。但是這裡有一個問題,我們沒有用上其他的鍵值對

我們好像要調整一下注意力權重,那麼我們該怎麼計算權重呢?

image

簡單理解,體重預測值f(q)就是預測值的key與每個已知值的key所計算出來的權重再乘以與已知值相對應的value再進行求和。

image

而其中的權重就是α(q, ki)

image

我們將上面的q稱為請求(query),k叫做鍵(key),v叫做值(value)。

q,k,v在多維的情況下也是類似的。

假設q是二維的,由於q1和k1都是二維向量,注意力分數可以使以下幾種,如圖所示:

image

以點積模型為例:

image

image

為了方便,我們使用矩陣來表示:

image

為了緩解梯度消失問題,我們還會除以一個特徵維度,我們將其稱為“縮放點積注意力模型”

image

如果Q、K、V是同一個矩陣會發生什麼?那就是自注意力,

image

我麼用X來表示這個矩陣,那麼有:

image

三個可以訓練的矩陣:

image

image

image

寫在最後

以上截圖和文字均來自於嗶哩嗶哩:

【注意力機制的本質|Self-Attention|Transformer|QKV矩陣-嗶哩嗶哩】 https://b23.tv/W4FwAY4

相關文章