iT邦幫忙

2025 iThome 鐵人賽

DAY 24
0

在深度學習模型的發展當中, Transformer 是一個劃時代的模型。

在 Transformer 出現之前,RNN 等神經網路模型和 Encoder–Decoder 架構是處理序列資料的主流方法,但它們在文本內長距離關係與計算效率上都有明顯的限制。

Transformer 的誕生,重新定義了建立序列的方式,也成為了後來眾多大型語言模型(如 BERT、GPT)的基礎。

今天就要來看看 Transformer 究竟是什麼樣的一個模型~~


為什麼需要 Transformer

  • RNN (recurrent 的模型) 能處理序列的資料,但對於較長字串表現不佳,因為會受到記憶(memory)限制
  • Recurrent 模型的運算具有固定次序(sequential computation),無法充分利用資料的 平行化(parallelization) 潛力
  • Transformer 不採用 recurrence,而是依賴 attention 機制 來捕捉輸入與輸出之間的整體相互依賴性
  • Transformer 具備高度平行化能力,在訓練速度與抓住長距離關係上都有顯著提升

Encoder-Decoder

Transformer 採用的是 Encoder 跟 Decoder 的架構

  • Encoder:將輸入序列 x map 到另外一個串列 z
  • Decoder:根據 z 生成輸出序列 y
  • 模型在每個步驟都是 autoregressive(自我迴歸) 的,也就是在產生下一個 token 時,會將前一個輸出作為額外輸入

🌟 不同於傳統的 recurrent 結構,Transformer 在這個架構中使用 stacked self-attention 和 全連接層(feedforward layers) 來建立模型。

以下是Transformer的模型架構圖:
https://ithelp.ithome.com.tw/upload/images/20251008/201787487zUW9yBIUY.png
image source

Transformer 基本架構

Encoder

  • Encoder是由 6 個 layers 所組成
  • 每個 layer 都有兩個 sub-layer :
    1. Multi-head attention
    2. Feedforward network
      ➔ 這兩個 layers 都會有 residual connection ,然後會經過 normalization ,以穩定訓練

Decoder

  • Decoder 除了 Encoder 有的兩個layers之外,還增加了一層 multi-head attention layer,這層 layer 是用來接收 encoder 的 輸出
  • 不過 Decoder 的 attention layer 會被調整一下(masking),主要是為了在預測時,避免去看到未來的序列,也就是說在預測位置 i 時,只能根據小於 i 的位置

Scaled Dot-Product Attention

https://ithelp.ithome.com.tw/upload/images/20251008/20178748708OrefIAN.png
image source

  • Transformer 所用的 attention 叫做 scaled dot-product attention
  • 以下為算式
    https://ithelp.ithome.com.tw/upload/images/20251008/20178748mV4LCwXLP5.png
    image source
  • Q為 query ,K為 key ,V為 value
  • 首先會先算 Q 跟所有 K 的dot product,再把它除以 dk開根號 (dk 為 key、query 的 dimension),接著再套用 softmax,去得到 value 的權重
  • Value的權重可以說是 compatibility function 根據 query 以及其對應的 key 所算出來的
  • 實際操作時,會把query、key、value 都變成矩陣去做計算
  • 一般來說,最常用的 attention 有 additive 跟 dot-product attention,但是transformer多了scaling,而這個 scaling 就是除以 dk開根號 的這項計算
    • dot-product 會比 additive 來得快,以及省空間
    • dk 數值小的 value,兩種attention表現相似,但是數值大時,additive 反而比較小,原因可能是因為當數值越來越大時,dot-product 會變非常大,把softmax 逼到梯度(gradient)很小的區域
      ➔ 因此transformer裡面就採用了scaling的方式來解決這個問題

Multi-Head Attention

https://ithelp.ithome.com.tw/upload/images/20251008/20178748tvKU0NGTXh.png
image source

  • Transformer 不是用 single attention function,而是用 multi-head,也就是線性投射Q、K、V,讓他們平行經過 attention function,最後再整合起來
  • Multi-Head 可以讓模型學到任何位置的訊息,但是 single head 不行
  • Multi-Head Attention 在 Transformer 裡面有三個應用的位置:
    1. 在encoder-decoder attention layer裡,queries 從 decoder 的前一層 layer 進來,keys 跟 values 從 encoder 的 output 裡來
    2. 在 encoder 裡面 self-attention layer 裡的 queries、keys、values 是從encoder裡的前一個 layer 來的
    3. 在 decoder 裡面 self-attention layer 裡的 queries、keys、values 是從 decoder 裡的前一個 layer 來的,不過為了避免看到未來的資料,會把不 ok 的連結去掉 (mask out)

Reference:Attention Is All You Need


上一篇
Day 23 - Encoder-Decoder
下一篇
Day 25 - Positional Encoding(位置編碼)
系列文
AI、機器學習以及深度學習的語言學應用26
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言