iT邦幫忙

2025 iThome 鐵人賽

DAY 25
0
AI & Data

AI、機器學習以及深度學習的語言學應用系列 第 25

Day 25 - Positional Encoding(位置編碼)

  • 分享至 

  • xImage
  •  

昨天我們提到 Transformer 是基於 Attention 的架構,沒有像 RNN 那樣逐步處理字串。

這時候就會有一個問題,如果它不是按照順序讀句子,那它是怎麼知道哪個字在前、哪個字在後呢?

因此, Transformer 需要額外提供「位置資訊」,這就是 Positional Encoding(位置編碼)的作用。

今天就要來談談 Positional Encoding 是在做什麼的~~

Positional Encoding 位置編碼

  • Recurrence(也就是 RNN 這類)和 convolution(也就是 CNN 這類)有內建的機制來去看字串內字的順序,不過因為 Transformer 沒有 recurrence 或是 convolution,它把每個資料點都當作獨立的,所以為了要能夠利用字串的序列,就必須要使用 positional encoding 的方式,來去得知字串中 token(字元基本單位)的 絕對相對位置
  • Self-Attention 機制的順序是不變的,這個機制無法捕捉位置的訊息,因為它計算的過程當中有 排列不變性(permutation invariant),因此如果把輸入的字串序列順序打亂,再放進Transformer,得出的結果會是一樣的
  • 因此,在encoder跟decoder最底下的input embedding,會加上positional encoding,如下圖
  • Positional encoding 跟 embedding 有一樣的 dimension,因此可以加總起來
  • 字串當中的每個位置都會有一個 positional encoding 的向量(矩陣),裡面代表了該字在字串當中所有可能的位置

Transformer 內的 positional encoding

  • Positional encoding 有很多種方式,Transformer 裡面用的是 sine、cosine function(sinusoid)來為字串當中的所有位置產出一個矩陣
  • 這種 positional encoding 的方式得出來的是 絕對位置
  • 不用一般的整數來當作 positional encoding,是因為可能會太大,但是 sine、cosine 得出的數字介於 1和-1之間 ,也就像是經過(正規化)normalization 一樣,數字不會過大
  • 針對 positional encoding 的計算如下圖公式:
    https://ithelp.ithome.com.tw/upload/images/20251009/20178748gSmnxtqA6N.png
  • i為d model/2;偶數位置為PE(pos,2i),奇數位置為PE~(pos,2i+1),重複直到有d model 個元素(d model 為模型 embedding 的大小)

相對位置編碼 Relative positional encoding

  • 在語言處理任務裡,相對位置有時候會比絕對位置來的更重要,因為字跟字之間,相對的位置訊息可以透露出他們之間的關係
  • Attention 進行計算時,除了看字之間的內容相似性,也依賴他們的相對距離
  • 可以說,relative position 是用每對元素之間的位置差異性,來去生成一個相對位置編碼,再去結合self-attention機制

參考資料

Reference 1
Reference 2
Reference 3
Reference 4


上一篇
Day 24 - Transformer
下一篇
Day 26 - Large Language Model(LLM,大型語言模型)
系列文
AI、機器學習以及深度學習的語言學應用26
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言