
前言做過Transformer、BERT、大模型微調(diào)的開發(fā)者幾乎人人都用過正余弦位置編碼Sinusoidal Positional Encoding。日常開發(fā)中我們只會(huì)機(jī)械套用公式偶數(shù)維用sin、奇數(shù)維用cos固定底數(shù)10000直接加到詞嵌入向量上訓(xùn)練全程固定不更新。但絕大多數(shù)中級(jí)開發(fā)者都停留在會(huì)用但不懂底層的狀態(tài)甚至長(zhǎng)期被各類錯(cuò)誤認(rèn)知誤導(dǎo)。本文徹底破除誤區(qū)從業(yè)務(wù)場(chǎng)景、設(shè)計(jì)目標(biāo)、數(shù)學(xué)原理、工程權(quán)衡四個(gè)維度完整拆解正余弦位置編碼的底層邏輯讀完你將徹底明白為什么Transformer原生選擇正余弦編碼而非可學(xué)習(xí)位置編碼、絕對(duì)位置編碼、相對(duì)位置編碼公式的每一項(xiàng)參數(shù)到底有什么作用絕對(duì)位置編碼為什么不可以絕對(duì)位置編碼最簡(jiǎn)單粗暴的位置編碼最容易想到的辦法直接給序號(hào)貓 第 1 位追 第 2 位狗 第 3 位把「單詞本身的向量」「位置數(shù)字向量」融合在一起。狗 追 小 貓 咪 小 貓 咪 跑 回 家 1 2 3 4 5 6 7 8 9 10 11問題句子長(zhǎng)短不固定長(zhǎng)句子序號(hào)會(huì)巨大序列變長(zhǎng)時(shí)pos數(shù)值無限變大直接疊加到詞向量會(huì)數(shù)值爆炸破壞語(yǔ)義分布、梯度爆炸只能體現(xiàn)絕對(duì)差值 模型很難學(xué)到「相近位置」的關(guān)系第 5 位和第 6 位離得近第 1 位和第 10 位離得遠(yuǎn)單純數(shù)字無法體現(xiàn)遠(yuǎn)近差距。無法體現(xiàn) “相鄰位置更相似、遠(yuǎn)距離差異更大” 的自然語(yǔ)序規(guī)律。比如一句話 200 個(gè)字第 199、200 位序號(hào)很大模型感知不到他倆是緊挨著的??蓪W(xué)習(xí)位置編碼為什么不行BERT 中的使用,直接訓(xùn)練位置向量,初始化一個(gè)參數(shù)矩陣[max_seq_len,dmodel]隨模型訓(xùn)練更新位置向量。 給每個(gè)位置單獨(dú)造一組參數(shù)訓(xùn)練。優(yōu)點(diǎn)簡(jiǎn)單好訓(xùn)缺點(diǎn)長(zhǎng)度超限就報(bào)廢缺陷 無法外推。訓(xùn)練時(shí)最大句子長(zhǎng)度是 512推理時(shí)遇到 600 字長(zhǎng)文本多出的位置沒有訓(xùn)練好的編碼參數(shù)模型直接失效。訓(xùn)練時(shí)最長(zhǎng)句子是 100 個(gè)詞當(dāng)測(cè)試來了 120 個(gè)詞多出 20 個(gè)位置沒有訓(xùn)練過的編碼模型直接懵掉。位置編號(hào)硬性要求唯一不同位置pos編碼向量完全不同相對(duì)位置可推導(dǎo)給定PE(pos)能推出PE(posk)模型感知詞語(yǔ)間隔有界向量數(shù)值穩(wěn)定在[?1,1]疊加詞向量不會(huì)數(shù)值爆炸可外推訓(xùn)練沒見過的超長(zhǎng)位置能直接計(jì)算編碼不用重新訓(xùn)練參數(shù)。正余弦交替位置編碼Transformer原論文標(biāo)準(zhǔn)公式無任何刪減改動(dòng)原因純正弦編碼無法表達(dá)相對(duì)位置的線性變換目標(biāo)希望存在線性變換使得對(duì)所有成立數(shù)學(xué)推導(dǎo) 設(shè)單維度則問題右側(cè)出現(xiàn)但中只有→ 無法用的線性組合表示。解決方案同時(shí)包含和定義二維位置編碼位置偏移可表示為線性旋轉(zhuǎn)其中是僅依賴偏移量的旋轉(zhuǎn)矩陣核心收益? 任意位置偏移可通過線性旋轉(zhuǎn)實(shí)現(xiàn)? 模型只需學(xué)習(xí)旋轉(zhuǎn)角度而非具體位置值? 天然支持相對(duì)位置建模旋轉(zhuǎn)角度 位置差為什么指數(shù)衰減高頻維度小波長(zhǎng)短 → 捕捉精細(xì)位置差異如區(qū)分位置1和2低頻維度大波長(zhǎng)長(zhǎng) → 編碼宏觀位置關(guān)系如區(qū)分前半段和后半段鐘表齒輪類比秒針高頻快速旋轉(zhuǎn)區(qū)分相鄰秒分針中頻中速旋轉(zhuǎn)區(qū)分分鐘級(jí)差異時(shí)針低頻緩慢旋轉(zhuǎn)區(qū)分小時(shí)級(jí)位置 三針組合可唯一確定任意時(shí)刻為什么底數(shù)固定是10000不是100、1000、100000絕非玄學(xué)參數(shù)是長(zhǎng)短距離感知的最優(yōu)平衡值。底數(shù)過小高頻維度周期過密長(zhǎng)距離位置編碼容易重疊混淆無法區(qū)分遠(yuǎn)距離Token底數(shù)過大低頻維度周期過長(zhǎng)局部短距離位置的編碼差異極小模型無法捕捉細(xì)微的位置順序差異10000剛好覆蓋NLP任務(wù)的常規(guī)序列長(zhǎng)度幾百到幾千兼顧局部細(xì)粒度感知與全局長(zhǎng)距離區(qū)分度是理論最優(yōu)解。