Positional Encoding 是深度學習中 Transformer 模型用來表示序列中各個元素(例如詞語)位置的技術。由於 Transformer 自身的自注意力機制(self-attention)在處理序列時會把輸入視為一個集合,缺乏對元素順序的內建感知,因此需要注入位置信息讓模型能理解序列中詞語的排列順序。
主要概念
• 目的:將每個詞的「位置信息」與其詞嵌入(embedding)結合,讓模型知道詞語在序列中的具體位置。• 實現方法:通常使用一組基於正弦與餘弦函數的周期性數學函數,為序列中每一個位置產生一個唯一且可微的向量表示。
• 計算公式(部分維度使用正弦波,另一部分使用餘弦波,頻率隨維度變化):
其中 是位置序號, 是維度索引, 是嵌入維度。
• 融合:將位置編碼向量與詞嵌入向量相加,作為 Transformer 輸入。
為什麼選用正弦餘弦?
• 產生平滑且獨特的波形,有利於模型學習序列中元素的相對與絕對位置關係。
• 支援不同序列長度的泛化,不必為固定序列長度訓練新編碼。
簡單比喻
想像每個詞除了有自己的「意義座標」外,還有一個「時間戳」告訴模型詞出現在句子的哪個位置,這個時間戳就是透過正弦餘弦方式產生的位置信號。
總結:
Positional Encoding 是 Transformer 類模型中用來注入序列元素位置信息的機制,確保模型對詞序有感知能力,從而更好理解和生成自然語言。










