為此,可以使用以下方式轉換查詢、鍵和值,而不是執行單個注意力池h獨立學習線性投影。那么這些h投影查詢、鍵和值被并行輸入注意力池。到底,h 注意池的輸出與另一個學習的線性投影連接并轉換以產生最終輸出。這種設計稱為多頭注意力,其中每個hattention pooling outputs 是一個頭 (Vaswani et al. , 2017)。使用全連接層執行可學習的線性變換,圖 11.5.1描述了多頭注意力。
圖 11.5.1多頭注意力,其中多個頭連接起來然后進行線性變換。
11.5.1。模型
在提供多頭注意力的實現之前,讓我們從數學上形式化這個模型。給定一個查詢 q∈Rdq, 關鍵 k∈Rdk和一個值 v∈Rdv, 每個注意力頭 hi(i=1,…,h) 被計算為
其中可學習參數 Wi(q)∈Rpq×dq, Wi(k)∈Rpk×dk和 Wi(v)∈Rpv×dv, 和f是注意力集中,例如11.3 節中的附加注意力和縮放點積注意力。多頭注意力輸出是另一種通過可學習參數進行的線性變換Wo∈Rpo×hpv的串聯h負責人:
基于這種設計,每個頭可能會關注輸入的不同部分。可以表達比簡單加權平均更復雜的函數。
11.5.2。執行
在我們的實現中,我們為多頭注意力的每個頭選擇縮放的點積注意力。為了避免計算成本和參數化成本的顯著增長,我們設置 pq=pk=pv=po/h
評論