旋轉位置編碼(Rotary Position Embedding,RoPE):
一種能夠將相對位置信息依賴集成到 self-attention 中并提升 transformer 架構性能的位置編碼方式。
和相對位置編碼相比,RoPE 具有更好的外推性,目前是大模型相對位置編碼中應用最廣的方式之一。
什么是大模型外推性?外推性是指大模型在訓練時和預測時的輸入長度不一致,導致模型的泛化能力下降的問題。例如,如果一個模型在訓練時只使用了512個 token 的文本,那么在預測時如果輸入超過512個 token,模型可能無法正確處理。這就限制了大模型在處理長文本或多輪對話等任務時的效果。
基于 transformer 的位置編碼方法都是著重于構造一個合適的 f(q,k,v) 函數形式。
旋轉編碼 RoPE 可以有效地保持位置信息的相對關系,即相鄰位置的編碼之間有一定的相似性,而遠離位置的編碼之間有一定的差異性。這樣可以增強模型對位置信息的感知和利用。這一點是其他絕對位置編碼方式(如正弦位置編碼、學習的位置編碼等)所不具備的,因為它們只能表示絕對位置,而不能表示相對位置。
旋轉編碼 RoPE 可以通過旋轉矩陣來實現位置編碼的外推,即可以通過旋轉矩陣來生成超過預訓練長度的位置編碼。這樣可以提高模型的泛化能力和魯棒性。這一點是其他固定位置編碼方式(如正弦位置編碼、固定相對位置編碼等)所不具備的,因為它們只能表示預訓練長度內的位置,而不能表示超過預訓練長度的位置。
旋轉編碼 RoPE 可以與線性注意力機制兼容,即不需要額外的計算或參數來實現相對位置編碼。
這樣可以降低模型的計算復雜度和內存消耗。這一點是其他混合位置編碼方式(如Transformer-XL、XLNet等)所不具備的,因為它們需要額外的計算或參數來實現相對位置編碼。