您本可以設計出最先進的位置編碼

TL;DR

Hugging Face 部落格文章解釋如何逐步改進 transformer 自注意力的位置編碼,最終形成用於 Llama 3.2 和其他現代模型的旋轉位置編碼 (RoPE),以及為什麼添加位置資訊對於區分出現在不同位置的標記是必不可少的。

問題陳述

Transformer 的自注意具有置換等變性;若沒有位置資訊,模型無法判斷兩個相同的標記是否指向不同的實體。

動機範例

在句子 “The dog chased another dog” 中,當未添加位置編碼時,兩個 “dog” 的出現會產生相同的自注意輸出,這證明需要位置資訊來區分它們。

理想特性

理想的位置編碼應該:(1) 為每個位置提供獨立於長度的唯一編碼;(2) 允許透過簡單的線性運算從位置 p 的編碼得到位置 p + k 的編碼;(3) 能推廣到訓練時未見過的更長序列長度;(4) 由模型可學習的确定性過程生成;以及 (5) 自然地擴展到多維度,適用於圖像等模態。

整數位置編碼

將原始整數位置加到每個嵌入分量上會產生遠超過典型嵌入幅度的值,這會損害信號雜噪比並使學習變得困難。

二進位位置編碼

將位置表示為二進位字串,並將其位元分散到嵌入維度上,會得到在 [0,1] 範圍內、隨序列長度一致的值,但得到的模式是離散且「跳躍」的,這對基於梯度的優化而言不是理想的。

正弦位置編碼

使用幾何波長遞增的正弦和餘弦函數會產生平滑且連續的編碼。位置 p 和維度 2i 的編碼為 sin(p / 10000^{2i/d}),而維度 2i+1 的編碼為 cos(p / 10000^{2i/d}),其中 d 為模型維度。由於固定偏移 k 對每個 (sin,cos) 對應一個旋轉矩陣,因此此方案滿足唯一性和線性關係特性。

絕對 vs 相對位置編碼

絕對位置告訴標記在整個序列中的位置,但意義通常取決於標記與鄰近標記的關係。正弦編碼可被解釋為透過旋轉編碼相對位置,這促使從加法組合轉為與查詢和鍵向量的乘法組合。

位置編碼在上下文中

在自注意力中,點積 QKᵀ 決定每個鍵對查詢的影響程度。由於點積等於 ‖Q‖‖K‖cos θ,旋轉 Q 或 K 會改變角度 θ,從而改變注意力權重,而不改變向量範數,這樣就能保存範數中儲存的語義資訊。

旋轉位置編碼 (RoPE)

RoPE 將正弦方案推導出的旋轉矩陣直接應用於查詢和鍵向量中的維度對,在進行點積之前。對於每一對 i,旋轉角度為 ω_i · p,其中 ω_i = 1 / 10000^{2i/d}。該操作可以逐元素執行: - q′{2i} = q{2i} · cos(p θ_i) − q_{2i+1} · sin(p θ_i) - q′{2i+1}= q{2i} · sin(p θ_i) + q_{2i+1} · cos(p θ_i) (對 k 亦同)。這種乘法方法在保持向量範數不變的同時編碼了相對位置。

將 RoPE 擴展到 n 維

對於圖像等 2‑D 數據,RoPE 會獨立處理每個空間維度:它會旋轉 x 維度內的配對以編碼水平偏移,並旋轉 y 維度內的配對以編碼垂直偏移。這避免了 x 和 y 資訊的混合,並通過將嵌入的不相交子空間分配給每個維度來推廣到任意數量的維度。

位置編碼的未來

最近的分析顯示,模型傾向於依賴 RoPE 的最低頻率,而移除(而非旋轉)這些頻率可以在某些模型上提升性能。未來工作可能會參考訊號處理工具,如小波或層級方案,並尋找在低精度量化下仍能保持穩健的編碼。

結論

位置編碼不應該是事後才想到的;它直接解決了自注意力的置換等變性限制。透過反覆改進編碼——從原始整數到二進位,再到正弦函數,最後到乘法旋轉 (RoPE)——我們得到一種符合所需特性且在最先進的 transformer 中廣泛使用的方案。

SUMMARY: Hugging Face 部落格文章逐步說明了 transformer 的位置編碼迭代設計,展示了正弦編碼如何導致旋轉位置編碼 (RoPE),以及為什麼它對建模標記關係很重要。

TITLE: 您本可以設計出最先進的位置編碼

Sources