內容已複查
25 分鐘 · 0 張概念卡 · 1 題對應考古題

Self-Attention 機制與 Transformer 架構詳解

本頁為依教材與考古題整理的原創摘要;考古題答案經技術覆核,但不是官方答案。

第一次接觸也沒關係

這堂先懂這些詞

先記住白話意思,不必急著背英文。看到正文時,再把正式名稱接回來。

注意力機制與 Transformer

也會看到:attention、self-attention、Transformer、注意力機制

attention 讓模型依當下任務衡量不同內容的重要性,Transformer 以此處理序列關係。

生活例子:
讀代名詞「他」時,回頭特別注意前文可能指的是誰。
別搞混:
attention 不是模型具有人的專注或理解;Transformer 也不只用於文字。

大型語言模型與 token

也會看到:LLM、Large Language Model、token、GPT、大型語言模型

LLM 從大量 token 序列學習下一個 token 的機率,token 是模型切分文字的基本單位。

生活例子:
像根據前文玩的超大型接龍,但每一步選的是文字片段而非必然完整單字。
別搞混:
token 不等於一個中文字或一個英文單字;流暢輸出也不保證事實正確。

神經網路

也會看到:neural network、layer、weight、activation function、神經網路

由多層可調參數的計算單元組成,透過資料調整權重來近似複雜關係。

生活例子:
像一排排篩選站,各站把前一站訊息重新加權後再傳下去。
別搞混:
名稱來自生物啟發,但不是大腦的完整複製品。

從 Q/K/V 矩陣運算理解 scaled dot-product attention,再組合成 multi-head attention,搭配 positional encoding、layer normalization 與 feed-forward layers 構成完整 Transformer block。覆蓋 encoder-only(BERT)、decoder-only(GPT)與 encoder-decoder 三種變體。

先抓住這幾件事

  • 從 Q、K、V 矩陣推導 scaled dot-product attention 的計算流程
  • 解釋 multi-head attention 為何能捕捉不同 subspace 的關聯
  • 說明 positional encoding 如何補償 self-attention 的 permutation invariance
  • 區分 BERT(encoder-only)與 GPT(decoder-only)的 pre-training 策略

先想像這個場景

圓桌會議的注意力分配

一場圓桌會議中,每位與會者(token)先準備三張卡片:我想問什麼(Query)、我能回答什麼(Key)、我的觀點(Value)。每個人拿自己的 Q 和所有人的 K 比對,決定要多認真聽誰的 V。

先別急著往下看,花十秒想一想:

如果會議有 100 人,每個人都要和其他 99 人比對,運算量有多大?

把故事換成電腦語言

生活中的角色對應到技術概念
拿 Q 和所有 K 比對相似度Scaled dot-product attention QK^T/√d_k
依相似度決定聽誰的觀點Softmax attention weights over Values
同時開 8 個討論小組各自聚焦Multi-head attention with h heads
座位號碼牌告訴大家誰坐哪裡Positional encoding for order information
BERT 聽所有人、GPT 只聽前面的人Bidirectional vs causal attention mask

題目出現這些字,先想到

  • 除以 √d_k 防止 softmax 飽和。
  • Multi-head 讓不同 head 學不同 pattern。
  • Positional encoding 補償 self-attention 的 permutation invariance。
  • BERT 是 encoder-only(bidirectional),GPT 是 decoder-only(causal)。

1.Scaled Dot-Product Attention:計算 token 間的關聯強度

每個 input token 被投影成三個向量:Query(我想找什麼)、Key(我是什麼)、Value(我的內容)。Attention score = Q · K^T / √d_k,再經 softmax 得到權重分布,最後加權聚合 Value。除以 √d_k 是為了防止高維度時 dot product 過大導致 softmax 進入飽和區。

  • Attention(Q, K, V) = softmax(QK^T / √d_k) · V
  • 每個 token 的 output 是所有 tokens Value 的加權和
  • 權重由 Query 和 Key 的相似度決定,與位置無關
  • √d_k scaling 防止大維度下 gradient 過小(softmax 飽和)

2.Multi-Head Attention:多重視角同時觀察

單一 attention head 只能學一種關聯模式。Multi-head attention 將 Q、K、V 各自分成 h 個 subspace(head),每個 head 獨立算 attention 再 concatenate,最後通過一個線性投影。不同 head 可以學到語法關係、語義相似、位置偏好等不同 pattern。

  • d_model 被分成 h 個 head,每個 head 維度 d_k = d_model / h
  • MultiHead(Q,K,V) = Concat(head_1, ..., head_h) · W_O
  • h = 8 或 12 是常見設定
  • 不同 head 學到的 attention pattern 可以視覺化但不等於因果解釋

3.Transformer Block 的完整組成

一個 Transformer block = multi-head attention + add & layer norm + feed-forward network + add & layer norm。Residual connection(add)讓 gradient 直接流過,layer norm 穩定訓練。Positional encoding 在 input embedding 加上位置資訊,因為 self-attention 本身是 permutation invariant — 打亂 token 順序不會改變 output(沒有 position info 的話)。

  • Residual connection 類似 ResNet 的 skip connection
  • Layer normalization 對每個 token 的 features 做 normalize
  • Feed-forward network 通常是兩層 MLP,對每個 position 獨立操作
  • Sinusoidal 或 learned positional encoding 補償 permutation invariance

4.三種 Transformer 變體:BERT、GPT 與 Encoder-Decoder

Encoder-only(BERT):用 masked language model 預訓練,每個 token 能看到全部其他 tokens(bidirectional),適合分類、NER 等理解任務。Decoder-only(GPT):用 causal language model 預訓練,每個 token 只能看到左邊(autoregressive),適合生成任務。Encoder-decoder(T5、原始 Transformer):encoder 處理 input,decoder 生成 output,適合翻譯等 sequence-to-sequence 任務。

  • BERT 的 [MASK] 預測是 bidirectional — 可以同時看左右 context
  • GPT 的 causal mask 確保生成時只看已生成的 tokens
  • Fine-tuning 在 pre-trained model 上加 task-specific head
  • 模型大小從 BERT-base(110M)到 GPT-4(估計 >1T parameters)

一起拆題目

範例 1Self-attention 計算中為什麼要除以 √d_k?

  1. Q 和 K 的 dot product 量級與維度 d_k 成正比。
  2. 高維度時 dot product 值很大,softmax 會接近 one-hot。
  3. Gradient 在 softmax 飽和區會變得很小。
  4. 除以 √d_k 把 variance 拉回 ~1。

所以答案是:防止高維度 dot product 過大導致 softmax 飽和、gradient 消失。

範例 2BERT 和 GPT 都是 Transformer,為什麼 BERT 不能直接做文字生成?

  1. BERT 是 encoder-only,pre-training 用 masked language model。
  2. 每個 token 能 attend 所有 positions(bidirectional)。
  3. 生成時不能看到未來的 tokens,需要 causal mask。
  4. GPT 的 decoder 天生有 causal mask,適合 autoregressive generation。

所以答案是:BERT 的 bidirectional attention 在生成時會看到答案,破壞 autoregressive 假設。

這裡最容易選錯

  • 認為 self-attention 就是整個 Transformer(還有 FFN、residual、norm)
  • 把 positional encoding 和 attention weights 混淆
  • 認為 BERT 是 bidirectional RNN(它是 bidirectional attention,不是 recurrent)
  • 把 fine-tuning 當成從頭訓練(fine-tuning 是在 pre-trained weights 上繼續調)
  • 認為 multi-head 一定比 single-head 好(取決於 d_model 和任務)

換你快速判斷

先在心中作答,再展開答案。答不出來時,回頭找本課的對照關係。

最後用考古題驗證

本課連結的題目都已通過可重現的技術覆核,可逐題練習與判分。

開始本課考古題練習

參考來源