從零學習大模型(5)——位置編碼:讓 AI 讀懂 “語序” 的關鍵技術

0 評論 1876 瀏覽 0 收藏 18 分鐘

在 Transformer 架構中,有一個容易被忽略卻至關重要的模塊 —— 位置編碼(Positional Encoding,PE)。如果說注意力機制讓模型能 “理解關聯(lián)”,前饋神經網絡讓模型能 “提純特征”,那么位置編碼的作用就是讓模型能 “感知順序”。

人類語言中,語序直接決定語義:“我打了你” 和 “你打了我” 僅因語序不同,含義完全相反。而 Transformer 的注意力機制是 “并行計算”(同時處理所有詞),天然缺乏對語序的感知 —— 若沒有位置編碼,模型會把 “我打了你” 和 “你打了我” 視為相同的輸入。位置編碼的核心功能,就是給每個詞 “打上位置標簽”,讓模型知道 “誰在前,誰在后”。

理想的位置編碼需要滿足三個條件。位置唯一性,即不同位置的編碼向量必須不同;距離相關性,位置越近的詞,編碼向量越相似(如位置 2 和 3 的相似度高于 2 和 10);長度適應性,能適配任意長度的句子(訓練時用 100 詞,推理時能處理 200 詞)。接下來介紹的所有位置編碼方案,都是圍繞這三個條件設計的。

絕對位置編碼:給每個位置一個 “唯一身份證”

絕對位置編碼的核心思路是:為每個位置分配一個固定的編碼向量(如位置 0 對應向量 A,位置 1 對應向量 B),無論句子內容如何,位置 n 的編碼始終不變。這種 “一一對應” 的設計能保證 “位置唯一性”,是早期 Transformer 的主流選擇。

1. 正余弦位置編碼(Sinusoidal PE):原始 Transformer 的選擇

Transformer 原始論文提出的正余弦編碼,是最經典的絕對位置編碼方案。它通過正弦和余弦函數(shù)生成位置向量,公式如下:

其中,pos 是詞的位置(0,1,2,…),i 是向量維度(0 到 d_model-1),d_model 是嵌入維度(如 512)。

正余弦編碼的設計有其巧妙之處。在位置唯一性上,不同 pos 的正弦 / 余弦值不同(如 pos=0 時 sin (0)=0,pos=1 時 sin (1/10000^…)≠0);距離相關性方面,位置越近的詞,編碼向量越相似(如位置 2 和 3 的相似度高于 2 和 10);長度適應性上,正弦 / 余弦是周期函數(shù),可無限生成任意 pos 的編碼(即使句子長度超過訓練時的最大長度)。例如對于 512 維的嵌入向量,位置 0 的編碼向量前幾個維度為 [sin (0), cos (0), sin (0), cos (0), …] = [0, 1, 0, 1, …],位置 1 的編碼向量前幾個維度為 [sin (1/10000^0), cos (1/10000^0), sin (1/10000^(2/512)), cos (1/10000^(2/512)), …],這些向量的差異清晰反映了位置差異。

不過,絕對位置編碼存在共性問題,即外推能力弱 —— 當句子長度超過訓練時的最大長度(如訓練用 512 詞,推理用 1024 詞),新增位置(512-1023)的編碼向量在訓練中從未出現(xiàn)過,模型無法準確理解其位置關系。

2. 可學習位置編碼(Learned PE):BERT 等模型的選擇

可學習位置編碼的思路更直接:隨機初始化一組位置向量(如位置 0 到 511 各對應一個向量),通過訓練讓模型自動學習最優(yōu)的位置表示。

例如訓練時最大句子長度為 512,則初始化一個 512×d_model 的矩陣(每行對應一個位置的編碼),這個矩陣會像嵌入層一樣參與模型的參數(shù)更新 —— 模型在學習 “貓追狗” 的語義時,也會同步學習 “貓在位置 0,狗在位置 2” 的位置關聯(lián)。

可學習位置編碼的優(yōu)勢在于靈活性更高,無需人工設計函數(shù),模型可根據(jù)任務自動調整位置編碼(如在詩歌生成任務中,對押韻位置更敏感),而且在訓練長度范圍內,可學習編碼通常比正余弦編碼的效果略優(yōu)。但它的外推能力極差,訓練時未見過的位置(如 512 以上)沒有對應的編碼向量,無法直接處理長于訓練長度的句子,同時泛化性弱,針對特定長度訓練的編碼,遷移到其他長度時性能下降明顯。因此,可學習位置編碼更適合 “固定長度任務”(如句子分類,輸入長度固定為 512),但不適合需要處理變長文本的場景(如文檔生成)。

相對位置編碼:關注 “相對距離” 而非 “絕對位置”

絕對位置編碼的 “外推困境” 源于對 “絕對位置” 的依賴 —— 位置 512 的編碼對模型而言是全新的。相對位置編碼則另辟蹊徑:不編碼絕對位置,只編碼 “詞與詞之間的相對距離”(如 A 在 B 前面 3 個位置)。

這種設計的優(yōu)勢在于:相對距離是 “有限且可復用” 的(如相對距離 -2、-1、0、1、2 覆蓋了大部分關聯(lián)),即使句子長度超過訓練范圍,相對距離的編碼仍能復用訓練時學到的規(guī)律。

1. 自注意力中的相對位置建模:Transformer-XL 的改進

Transformer-XL 首次將相對位置信息引入注意力計算。在傳統(tǒng)注意力中,分數(shù)計算為 Attention (Q, K) = Softmax ((QK^T) / √d_k),而 Transformer-XL 修改為 Attention (Q, K, R) = Softmax ((Q (K^T + R^T)) / √d_k),其中 R 是 “相對位置編碼矩陣”(存儲相對距離為 -1、-2、…、+2 的編碼)。這意味著注意力分數(shù)不僅取決于詞的內容(Q 和 K),還取決于它們的相對距離(R)。

例如計算 “狗” 對 “貓” 的注意力時,若 “貓” 在 “狗” 前面 2 個位置,就會加入 “相對距離 +2” 的編碼 —— 這種關聯(lián)在短句子和長句子中是一致的,因此模型能自然外推到更長文本。

2. ROPE(Rotary Position Embedding):LLaMA、GPT-4 等大模型的主流選擇

ROPE(旋轉位置編碼)是目前最成功的相對位置編碼方案之一,它通過 “向量旋轉” 實現(xiàn)相對位置建模,兼顧了計算效率和外推能力。

ROPE 的關鍵 insight 是:兩個詞的相對位置可以通過 “其中一個詞的向量旋轉一定角度” 來表示。具體來說,對位置為 m 的詞向量 q_m,用旋轉矩陣 R_m 進行旋轉;對位置為 n 的詞向量 k_n,用旋轉矩陣 R_n 進行旋轉;旋轉后的內積 q_m^T R_m^T R_n k_n = q_m^T R_{n-m} k_n(僅與相對距離 n-m 有關)。

這意味著:注意力分數(shù)只取決于詞的內容和相對距離,與絕對位置無關。例如 “貓” 在位置 2,“狗” 在位置 5(相對距離 +3),和 “貓” 在位置 102,“狗” 在位置 105(相對距離 +3)的注意力分數(shù)計算方式完全相同。

ROPE 的優(yōu)勢在于完美外推,相對距離的編碼是固定的(如相對距離 3 的旋轉角度固定),無論句子多長,模型都能復用訓練時學到的相對位置規(guī)律;計算高效,旋轉操作可在復數(shù)域高效實現(xiàn)(無需額外存儲大矩陣),幾乎不增加計算開銷;而且兼容性強,可無縫集成到現(xiàn)有 Transformer 架構,無需修改注意力機制的核心邏輯。正是這些優(yōu)勢,讓 ROPE 成為大模型處理長文本的 “標配”——LLaMA 2 支持 4096 長度,GPT-4 支持 128000 長度,都離不開 ROPE 的貢獻。

3. ALiBi(Attention with Linear Biases):簡化的相對位置建模

ALiBi 是一種更輕量的相對位置編碼方案,它不修改詞向量,而是直接給注意力分數(shù)添加一個 “基于相對距離的偏置”。

具體來說,當兩個詞的相對距離為 k 時,ALiBi 在注意力分數(shù)上減去一個與 k 成正比的偏置(如距離 k 的偏置為 -m×|k|,m 是可學習參數(shù))。這種設計的邏輯是:相對距離越遠,注意力分數(shù)的懲罰越大(符合人類閱讀時 “近鄰詞關聯(lián)更強” 的規(guī)律)。

ALiBi 的優(yōu)勢在于極致簡潔,無需修改嵌入向量或注意力計算,只需添加一個偏置項,實現(xiàn)成本極低,同時外推性好,相對距離的偏置規(guī)則(如距離越遠懲罰越大)可直接應用于長句子,而且適合小模型,計算開銷比 ROPE 更小,在資源受限的場景(如移動端)表現(xiàn)優(yōu)異。不過它的精度略低,偏置的線性假設(距離與懲罰成正比)不如 ROPE 的旋轉編碼精準,在超長文本(如 10 萬詞)中性能略遜于 ROPE。

長度外推策略:讓模型處理 “超長文本” 的技巧

即使采用相對位置編碼,模型處理遠超訓練長度的文本(如訓練用 4096 詞,推理用 16384 詞)時,仍可能出現(xiàn)性能下降。這是因為長文本會帶來新的挑戰(zhàn):注意力計算的噪聲累積、長距離依賴的稀釋。研究者們?yōu)榇嗽O計了多種 “長度外推策略”。

1. 位置插值(Position Interpolation):縮放現(xiàn)有位置編碼

位置插值是最常用的外推方法,核心思路是:將超長文本的位置 “壓縮” 到訓練時的位置范圍內。例如訓練長度為 4096,推理時要處理 16384,則將位置 4096 映射為 1024,位置 8192 映射為 2048(相當于按 1/4 比例縮放)。

這種方法對 ROPE 特別有效:旋轉角度與位置成正比,縮放位置等價于縮放旋轉角度 —— 模型可通過插值學習長距離的相對位置規(guī)律。LLaMA 2 通過位置插值,能將上下文長度從 4096 擴展到 16384,性能僅下降 5% 左右。

2. YARN(Yet Another Rotation-based Position Embedding):動態(tài)調整旋轉周期

YARN 針對 ROPE 在超長距離(如 10 萬詞)的性能下降問題,提出 “動態(tài)旋轉周期”:短距離(如 0-1000 詞)使用小周期旋轉(角度變化快),保證精細的位置區(qū)分;長距離(如 1000-10 萬詞)使用大周期旋轉(角度變化慢),避免旋轉過度導致的信息丟失。

這種 “遠近有別” 的設計,讓 ROPE 在兼顧短距離精度的同時,能更好地處理長距離關聯(lián)。實驗顯示,YARN 可將 LLaMA 的有效上下文長度擴展到 10 萬詞以上,且長距離推理性能提升 30%。

3. 滑動窗口注意力:犧牲全局關聯(lián)換取效率

當文本長度超過模型設計上限(如 100 萬詞)時,即使有外推策略,全局注意力的計算量也會爆炸(O (n2) 復雜度)?;瑒哟翱谧⒁饬νㄟ^ “限制注意力范圍” 降低計算量:每個詞只關注前后 k 個詞(如窗口大小為 2048);對超長篇文檔,按窗口滑動處理(如先處理 1-2048 詞,再處理 1025-3072 詞)。

滑動窗口注意力的優(yōu)勢是計算量從 O (n2) 降至 O (n×k),可處理百萬級長度文本,但它無法捕捉窗口外的長距離關聯(lián)(如文檔開頭和結尾的呼應),適合對全局關聯(lián)要求低的任務(如文本摘要)。

各大模型的長上下文處理方案:從設計到實踐

不同模型根據(jù)任務需求和計算資源,選擇了不同的位置編碼和外推策略,形成了各具特色的長上下文能力。GPT-4 采用 ROPE 作為基礎位置編碼,結合動態(tài)窗口和 YARN 改進的長度外推策略,支持 128000 的最大長度,兼顧超長長度和全局關聯(lián)。LLaMA 2 同樣以 ROPE 為基礎,使用位置插值的外推策略,基礎版支持 4096 長度,擴展版能支持 100000 以上,開源友好且外推成本低。BERT 采用可學習編碼,通過截斷和 Padding 處理長度,支持 512 的最大長度,適合固定長度理解任務。Transformer-XL 運用相對位置編碼,借助片段緩存(Memory)的外推方式,支持 8192 長度,擅長長文檔連貫生成。Mixtral 基于 ROPE,結合滑動窗口和分組注意力,支持 32768 長度,效率極高,適合實時對話。

這些方案的共同趨勢是:以 ROPE 為基礎,結合動態(tài)外推策略,在效率與長距離關聯(lián)間找平衡 —— 對需要全局理解的任務(如法律文檔分析),犧牲部分效率保留全局注意力;對實時性要求高的任務(如聊天機器人),用滑動窗口換取速度。

未來方向:從 “能處理長文本” 到 “能理解長邏輯”

當前位置編碼的研究已從 “如何處理更長文本” 轉向 “如何更好地理解長距離邏輯”。例如邏輯感知位置編碼,在編碼中融入文本的結構信息(如段落邊界、標點符號),讓模型區(qū)分 “句子內關聯(lián)” 和 “段落間關聯(lián)”;動態(tài)注意力窗口,根據(jù)文本內容自動調整窗口大?。ㄈ缭谶壿嬅芗斡眯〈翱诰劢梗跀⑹龆斡么蟠翱诓蹲饺郑?;多尺度位置編碼,同時編碼詞級、句級、段落級的位置信息,適配不同粒度的關聯(lián)學習。

這些方向的探索,將讓大模型不僅能 “讀完” 一本百萬字的書,更能 “讀懂” 書中的邏輯脈絡 —— 這才是長上下文處理的終極目標。

結語:位置編碼的 “簡單與深刻”

位置編碼的設計看似只是 “給詞加位置標簽”,卻蘊含著深度學習的核心智慧:好的結構設計比單純增加參數(shù)更重要。從正余弦編碼的人工設計,到 ROPE 的數(shù)學優(yōu)雅,再到 ALiBi 的極簡思路,每一次進步都不是因為更復雜的計算,而是對 “位置信息本質” 的更深刻理解 —— 模型需要的不是 “絕對位置的數(shù)值”,而是 “相對關系的規(guī)律”。

當我們看到 AI 能生成萬字小說、分析整本書的主題時,不要忽略背后位置編碼的貢獻 —— 正是這些 “看不見的向量”,讓模型能像人類一樣 “按順序理解語言”,最終跨越 “詞” 的局限,觸及 “語義” 的本質。

未來,隨著長上下文需求的不斷提升,位置編碼仍將是大模型創(chuàng)新的關鍵支點 —— 畢竟,理解語言的第一步,是先知道 “誰在前,誰在后”。

本文由 @紅岸小兵 原創(chuàng)發(fā)布于人人都是產品經理。未經作者許可,禁止轉載

題圖來自Unsplash,基于CC0協(xié)議

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!