注意力機制中的鍵、查詢和值到底是什麼?
應該如何理解注意力機制中經常提到的鍵、查詢和值?
我嘗試過在線搜索,但我找到的所有資源都只是在談論它們,就好像讀者已經知道它們是什麼一樣。
從 Bahdanau 所寫的論文(Neural Machine Translation by Jointly Learning to Align and Translate)來看,似乎值是標註向量 $ h $ 但不清楚“查詢”和“鍵”是什麼意思。
我提到的論文指出,注意力是由
$$ c_i = \sum^{T_x}{j = 1} \alpha{ij} h_j $$
和
$$ \begin{align} \alpha_{ij} & = \frac{e^{e_{ij}}}{\sum^{T_x}{k = 1} e^{ik}} \\ e{ij} & = a(s_{i - 1}, h_j) \end{align} $$
人們從哪裡獲得這些方程式的關鍵、查詢和價值?
謝謝你。
注意的鍵/值/查詢公式來自論文Attention Is All You Need。
應該如何理解查詢、鍵和值
鍵/值/查詢概念類似於檢索系統。例如,當您在 Youtube 上搜索視頻時,搜索引擎會將您的查詢(搜索欄中的文本)映射到與其數據庫中與候選視頻相關的一組鍵(視頻標題、描述等),然後呈現給您最佳匹配的視頻(值)。
注意操作也可以被認為是一個檢索過程。
正如您引用的論文(聯合學習對齊和翻譯的神經機器翻譯)中提到的,根據定義,注意力只是值的加權平均值,
$$ c=\sum_{j}\alpha_jh_j $$ 在哪裡 $ \sum \alpha_j=1 $ .
如果我們限制 $ \alpha $ 要成為一個單熱向量,此操作與從一組元素中檢索相同 $ h $ 帶索引 $ \alpha $ . 去掉限制後,attention 操作可以認為是根據概率向量進行“比例檢索” $ \alpha $ .
應該清楚的是 $ h $ 在這種情況下是價值。兩篇論文的區別在於概率向量如何 $ \alpha $ 是計算出來的。第一篇論文 (Bahdanau et al. 2015) 通過神經網絡計算分數$$ e_{ij}=a(s_i,h_j), \qquad \alpha_{i,j}=\frac{\exp(e_{ij})}{\sum_k\exp(e_{ik})} $$ 在哪裡 $ h_j $ 來自編碼器序列,並且 $ s_i $ 來自解碼器序列。這種方法的一個問題是,假設編碼器序列有長度 $ m $ 並且解碼序列是有長度的 $ n $ ,我們必須通過網絡 $ m*n $ 獲得所有註意力分數的次數 $ e_{ij} $ .
一個更有效的模型是第一個項目 $ s $ 和 $ h $ 到一個公共空間上,然後選擇一個相似性度量(例如點積)作為註意力分數,比如 $$ e_{ij}=f(s_i)g(h_j)^T $$ 所以我們只需要計算 $ g(h_j) $ $ m $ 次和 $ f(s_i) $ $ n $ 獲得投影向量的時間和 $ e_{ij} $ 可以通過矩陣乘法有效地計算。
這本質上是第二篇論文 (Vaswani et al. 2017) 提出的方法,其中兩個投影向量稱為查詢(用於解碼器)和鍵(用於編碼器),這與檢索系統中的概念非常吻合。(有後來的技術可以進一步降低計算複雜度,例如Reformer、Linformer。)
查詢、鍵和值是如何獲得的
單獨提出的多頭注意力並沒有說明如何獲得查詢、鍵和值,它們可以來自不同的來源,具體取決於應用場景。
$$ \begin{align}\text{MultiHead($Q$, $K$, $V$)} & = \text{Concat}(\text{head}1, \dots, \text{head}h) W^{O} \ \text{where head$i$} & = \text{Attention($QW_i^Q$, $KW_i^K$, $VW_i^V$)} \end{align} $$ 其中投影是參數矩陣: $$ \begin{align} W_i^Q & \in \mathbb{R}^{d\text{model} \times d_k}, \ W_i^K & \in \mathbb{R}^{d\text{model} \times d_k}, \ W_i^V & \in \mathbb{R}^{d\text{model} \times d_v}, \ W_i^O & \in \mathbb{R}^{hd_v \times d_{\text{model}}}. \end{align} $$
對於像GPT這樣的無監督語言模型訓練, $ Q, K, V $ 通常來自同一來源,因此這種操作也稱為自註意力。
對於第二篇論文中的機器翻譯任務,它首先將 self-attention 分別應用於源序列和目標序列,然後在此之上應用另一個 attention,其中 $ Q $ 來自目標序列並且 $ K, V $ 來自源序列。
對於推薦系統, $ Q $ 可以來自目標項目, $ K, V $ 可以來自用戶配置文件和歷史記錄。