iT邦幫忙

2026 iThome 鐵人賽

DAY 9
0
AI Security

打開黑盒子:大型語言模型的機制解釋性入門系列 第 9

Day 9|模型裡真的找得到人類能理解的 Circuit 嗎?

  • 分享至 

  • xImage
  •  

前兩天我們做了兩件事,先用 Activation Patching 找出「哪些位置可能重要,有因果層級的影響力」,再用 Path / Attribution Patching 進一步追蹤「哪些元件之間的 interaction 可能真的影響輸出」。如果這些線索可以拼起來,我們就會得到一個 Mechanistic Interpretability 裡很重要的概念:Circuit。

這裡的 circuit,不是指硬體電路,而是一組彼此互相作用、共同完成某項 computation 的模型元件。它可能由幾個 Attention Heads、MLPs 或其他 components 組成;重點不只是「哪些元件很重要」,而是它們之間如何合作完成一個可以被描述的演算法。可能目前為止你還覺得有點抽象,我們今天就來看看幾個具體的例子。

先補一個必要概念:Q、K、V

在看具體的 Circuit 以前,我們要先補上一個理解 Attention Head 所需的最小概念。對每一個 token position,Attention Head 都會產生三種向量:

  • Query(Q):我現在想找什麼資訊?
  • Key(K):我這個位置帶有什麼特徵,可以被其他位置找到?
  • Value(V):如果其他位置選中我,應該從我這裡讀走什麼資訊?

模型會比較目前位置的 Query 和各個過去位置的 Key。Q 與 K 越匹配,分配到的 attention weight 就越高。接著,模型再根據這些 weights 讀取對應位置的 Value,並透過 output projection 把結果寫回 Residual Stream。因此,分析一個 Attention Head 時,可以把它粗略拆成兩個問題:

  • QK circuit:Query 和 Key 如何決定 where to read
  • OV circuit:Value 和 Output projection 如何決定 what to write

QK circuit 和 OV circuit 不是兩個額外的模型元件,而是我們分析同一個 Attention Head 時使用的兩個觀察角度。這個區分非常重要。Attention pattern 主要告訴我們一個 head 在讀取哪個位置,但它沒有直接告訴我們從那個位置讀出了什麼,以及最後向 Residual Stream 寫入了什麼。接下來的 Induction Circuit,剛好可以讓我們看到 QK 與 OV 如何共同完成一項具體的 computation。

一個經典案例:Induction Head

Induction Head 是最經典的例子之一 [1] 先看下面這串文字:

Context:
A B C ... A

Next token:
?

如果模型已經在前面看到:

A → B

那麼當後面再次出現 A 時,一個自然的預測就是:

B

大型 Transformer 在訓練過程中,常會學出一種能完成這類 pattern completion 的 mechanism,這就是 induction heads 所處理的典型情境。更具體地說,它不是單一 head 獨立完成所有事情,而通常涉及多個 attention heads 的合作。一個 head 可能先幫助模型建立「上一個 token 是什麼?」另一個 induction head 再利用這項資訊,去尋找「過去哪裡出現過相同的 token?它後面接的是什麼?」最後把那個答案複製到現在的位置。假設前面的 token positions 是:

Position:  0  1       t
Token:     A  B  ...  A

第一步,Previous-token Head 在 B 的位置讀取前一個位置的 A,並把「我的上一個 token 是 A」這項資訊寫進 B 所在位置的 Residual Stream。

第二步,當模型來到最後一個 A 時,Induction Head 的 query 帶有目前 token 是 A 的資訊。它會尋找 key 中同樣帶有「上一個 token 是 A」資訊的位置,因此找到前面的 B

這裡有一個很重要、也有點反直覺的細節,Induction Head 最後 attend 的通常是前面的 B,而不是前面的 A。因為 B 的位置已經由 Previous-token Head 寫入了「前一個 token 是 A」的資訊。

第三步,Induction Head 再透過 OV circuit 讀出這個位置的 B,把 B 的資訊寫回目前位置的 Residual Stream,使模型提高下一個 token 是 B 的機率。整個 computation 可以概括成:

Previous-token Head
在 B 的位置寫入「前一個 token 是 A」
        ↓
Induction Head
用目前的 A 匹配「前一個 token 是 A」的位置
        ↓
Attend 到先前的 B
        ↓
透過 OV circuit 複製 B
        ↓
提高下一個 token 是 B 的機率

https://ithelp.ithome.com.tw/upload/images/20260905/20183469YfH9jKxRFn.png

這開始很像我們在 Day 1 說想找到的那種解釋:不只是「模型做了很多矩陣乘法」,而是說出「模型先計算了什麼、接著把什麼資訊送去哪裡,最後怎麼得到答案」。

Attention Head 不只是「看哪裡」

前面介紹 Q、K、V 時,我們提到:QK circuit 決定從哪個位置讀取資訊,OV circuit 則決定從那個位置讀出什麼、並把什麼寫回 Residual Stream。Induction Circuit 剛好讓我們看到兩者具體如何分工。

QK circuit:找到正確的位置

最後一個 A 所產生的 query,會和「上一個 token 是 A」的 key 匹配。由於 Previous-token Head 已經把這項資訊寫在前面 B 的位置,因此 Induction Head 會 attend 到那個 B

Query:目前 token 是 A
           ↓ matching
Key:這個位置的 previous token 是 A
           ↓
找到前面的 B

OV circuit:複製正確的內容

找到 B 的位置後,OV circuit 會讀出 B 的資訊,並把它寫回最後一個 A 所在位置的 Residual Stream,進而提高輸出 B 的 logit。

所以:

  • Attention pattern 告訴我們 where to read
  • OV behavior 告訴我們 what to write

這也是為什麼單純看 attention heatmap 很容易過度解讀。一個 head 就算強烈 attend 到某個 token,也不代表它真的把對任務有用的資訊寫進 Residual Stream。

真正的 circuit analysis 會同時關心:

  • 它讀哪裡?
  • 它為什麼會讀那裡?
  • 它讀出了什麼?
  • 它把什麼寫回 Residual Stream?
  • 下游哪些元件又使用了這項資訊?

我們怎麼知道這真的是 Induction Head?

研究者不是只看見一張漂亮的 Attention heatmap,就把某個 head 命名為 Induction Head。比較完整的分析通常包含幾個步驟。

1. 設計重複序列

首先,可以建立帶有重複 pattern 的 synthetic sequences,例如:

A B C D A B C D

然後觀察模型在第二次遇到相同 pattern 時,是否更容易預測接下來的 token。

2. 尋找 Induction-like Attention Pattern

接著觀察不同 Attention Heads。如果某個 head 在第二次遇到 A 時,穩定 attend 到第一次 A 後面的 B,它就具有典型的 induction-like attention pattern。研究者也可以把這種現象量化成 induction score,而不只是憑肉眼挑選 heatmap。

https://ithelp.ithome.com.tw/upload/images/20260905/20183469yt63znoA6V.png

3. 檢查它是否真的在 Copy

Attention pattern 只能告訴我們這個 head 看向哪裡。接下來還要檢查它的 OV circuit 是否真的會把被 attend token 的資訊寫向相同 token 的 output direction。換句話說,我們不只要確認它「看見 B」,還要確認它真的把 B 的資訊推向輸出。

4. 檢查 Heads 之間的 Interaction

我們還需要確認 Previous-token Head 寫入的資訊,是否真的會影響 Induction Head 的 computation。例如,我們可以 patch 或 ablate Previous-token Head → Induction Head 的 path,觀察 induction behavior 是否跟著下降。

5. 做 Causal Intervention

最後,如果 ablate Induction Head、Previous-token Head,或破壞兩者之間的 path,模型完成 pattern completion 的能力應該受到相應影響。因此,支持 Induction Circuit 的不是單一 attention visualization,而是一整條 evidence chain:

Behavior → Attention pattern → QK / OV analysis → Component interaction → Causal intervention

當這些證據都支持同一套 computation,我們才逐漸得到一個可信的 mechanistic explanation。

Circuit 和「重要元件清單」不一樣

假設我們透過 ablation 找到:

Head 3.4
Head 5.7
MLP 6
Head 8.2

都很重要。這仍然只是一份 components list。真正的 circuit 應該更接近:

Head 3.4
   ↓ 提供 X 資訊
Head 5.7
   ↓ 結合 Y
MLP 6
   ↓ 做某種轉換
Head 8.2
   ↓ 寫入答案相關方向
Output

也就是元件 + 資訊流 + computation。這三個東西要一起成立,才比較接近 mechanistic explanation。

另一個經典案例:IOI

Indirect Object Identification(IOI 是另一個很有名的 circuit case study。[2]

例如:

When John and Mary went to the store, John gave a drink to ___

模型應該預測:

Mary

研究者在 GPT-2 Small 中找到了一組相對稀疏的 circuit。簡化後,它的資訊流可以理解成:

Previous-token / Duplicate-token / Induction Heads
辨認重複出現的 subject:John
        ↓
S-Inhibition Heads
讓下游元件降低對 John 的選擇
        ↓
Name Mover Heads
attend 到另一個候選名字 Mary
並把 Mary 的資訊複製到最後的位置
        ↓
Unembedding
提高 Mary 的 output logit

這些元件具有不同的功能:

  • Previous-token、Duplicate-token 與 Induction Heads:協助辨認哪個名字重複出現;
  • S-Inhibition Heads:把「不要再次選擇 subject」的訊號傳給下游;
  • Name Mover Heads:attend 到正確名字,並透過 OV circuit 把名字資訊寫向輸出;
  • Backup/Negative Name Mover Heads:提供額外或方向相反的影響,使完整 circuit 比這張簡圖更複雜。

IOI 研究的重要性,不只是找到了一批具有特殊名稱的 heads。更重要的是,研究者提出了這些 heads 的功能分工、資訊流與可測試 predictions,並透過 patching 和 ablation 驗證它們之間的關係。這表示一個真實的 language-model behavior,確實有可能被拆成一組可以描述、測試,甚至被反駁的 internal computations。

Circuit 是「真實存在」還是研究者編織出來的故事?

這裡又要回到 Day 5 的 evidence 問題。當我們畫出一張漂亮的 circuit diagram 時,很容易產生一種錯覺:「模型裡真的就存在這張圖」

但實際上,circuit 是研究者對模型 computation 建立的一種 abstraction。模型本身只有:

  • parameters
  • activations
  • operations

「這裡是一個 Name Mover Head」或「這幾個元件形成一個 circuit」,都是我們根據實驗結果建立的解釋層級。因此,真正重要的問題不會是「這張 circuit 圖是不是唯一的真相?」,而應該是這個 mechanistic model 能不能準確預測 intervention 的結果?

如果我們說某個 head 是必要的,那 ablate 它之後應該看到相應的效果。如果我們說 A → B 這條 path 傳遞了重要資訊,那 patch 或破壞這條 path 時,應該產生符合預測的變化。如果模型在新的 prompts 上仍然符合這套 explanation,這個 circuit 就會更有說服力。Circuit 因此不是單純把幾個元件圈起來、替它們取名字,而是一套可以持續接受實驗檢驗的 mechanistic hypothesis。

從人工分析走向 Automated Circuit Discovery

Induction Heads 與 IOI Circuit 告訴我們:語言模型裡確實可能存在相對稀疏、具有可理解功能,而且能透過 intervention 驗證的 computational structure。

但這些經典案例的發現仍然仰賴大量 human effort。研究者通常要先提出 task-specific hypotheses,再逐步檢查不同 heads 的 attention patterns、OV behavior、activation patching results,以及元件之間的 interaction。

當模型變得更大,可能的 components 與 edges 數量會快速增加。如果仍然靠研究者一個 head、一條 edge 地手動檢查,很快就會遇到 scalability 問題。

Day 8 我們已經看過 EAP 如何快速替一批 candidate edges 評分。但替 edges 評分,還不等於自動找到一個 circuit。一套完整的 circuit discovery method 還必須回答:

  • 要從哪些 nodes 與 edges 開始搜尋?
  • 如何刪除不重要的 connections?
  • 保留下來的 sparse subgraph 能否重現原模型的行為?
  • 這套 explanation 能否 generalize 到新的 prompts?

下一篇,我們會把這些步驟組合起來,看看 ACDC、EAP 等方法如何被用於 automated circuit discovery。我們能不能讓演算法自己從大型模型裡挖出 candidate circuits?

參考資料與延伸閱讀

[1] Olsson, C., Elhage, N., Nanda, N., et al., “In-context Learning and Induction Heads”, Transformer Circuits Thread, 2022. https://transformer-circuits.pub/2022/in-context-learning-and-induction-heads/index.html

[2] Wang, K. R., Variengien, A., Conmy, A., Shlegeris, B., & Steinhardt, J., “Interpretability in the Wild: a Circuit for Indirect Object Identification in GPT-2 Small”, International Conference on Learning Representations (ICLR), 2023 https://arxiv.org/abs/2211.00593


上一篇
Day 8|模型到底是怎麼一步一步得出答案的?
下一篇
Day 10|Circuit 一定要靠人一條一條找嗎?
系列文
打開黑盒子:大型語言模型的機制解釋性入門10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言