前兩天我們做了兩件事,先用 Activation Patching 找出「哪些位置可能重要,有因果層級的影響力」,再用 Path / Attribution Patching 進一步追蹤「哪些元件之間的 interaction 可能真的影響輸出」。如果這些線索可以拼起來,我們就會得到一個 Mechanistic Interpretability 裡很重要的概念:Circuit。
這裡的 circuit,不是指硬體電路,而是一組彼此互相作用、共同完成某項 computation 的模型元件。它可能由幾個 Attention Heads、MLPs 或其他 components 組成;重點不只是「哪些元件很重要」,而是它們之間如何合作完成一個可以被描述的演算法。可能目前為止你還覺得有點抽象,我們今天就來看看幾個具體的例子。
在看具體的 Circuit 以前,我們要先補上一個理解 Attention Head 所需的最小概念。對每一個 token position,Attention Head 都會產生三種向量:
模型會比較目前位置的 Query 和各個過去位置的 Key。Q 與 K 越匹配,分配到的 attention weight 就越高。接著,模型再根據這些 weights 讀取對應位置的 Value,並透過 output projection 把結果寫回 Residual Stream。因此,分析一個 Attention Head 時,可以把它粗略拆成兩個問題:
QK circuit 和 OV circuit 不是兩個額外的模型元件,而是我們分析同一個 Attention Head 時使用的兩個觀察角度。這個區分非常重要。Attention pattern 主要告訴我們一個 head 在讀取哪個位置,但它沒有直接告訴我們從那個位置讀出了什麼,以及最後向 Residual Stream 寫入了什麼。接下來的 Induction Circuit,剛好可以讓我們看到 QK 與 OV 如何共同完成一項具體的 computation。
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 的機率

這開始很像我們在 Day 1 說想找到的那種解釋:不只是「模型做了很多矩陣乘法」,而是說出「模型先計算了什麼、接著把什麼資訊送去哪裡,最後怎麼得到答案」。
前面介紹 Q、K、V 時,我們提到:QK circuit 決定從哪個位置讀取資訊,OV circuit 則決定從那個位置讀出什麼、並把什麼寫回 Residual Stream。Induction Circuit 剛好讓我們看到兩者具體如何分工。
最後一個 A 所產生的 query,會和「上一個 token 是 A」的 key 匹配。由於 Previous-token Head 已經把這項資訊寫在前面 B 的位置,因此 Induction Head 會 attend 到那個 B。
Query:目前 token 是 A
↓ matching
Key:這個位置的 previous token 是 A
↓
找到前面的 B
找到 B 的位置後,OV circuit 會讀出 B 的資訊,並把它寫回最後一個 A 所在位置的 Residual Stream,進而提高輸出 B 的 logit。
所以:
這也是為什麼單純看 attention heatmap 很容易過度解讀。一個 head 就算強烈 attend 到某個 token,也不代表它真的把對任務有用的資訊寫進 Residual Stream。
真正的 circuit analysis 會同時關心:
研究者不是只看見一張漂亮的 Attention heatmap,就把某個 head 命名為 Induction Head。比較完整的分析通常包含幾個步驟。
首先,可以建立帶有重複 pattern 的 synthetic sequences,例如:
A B C D A B C D
然後觀察模型在第二次遇到相同 pattern 時,是否更容易預測接下來的 token。
接著觀察不同 Attention Heads。如果某個 head 在第二次遇到 A 時,穩定 attend 到第一次 A 後面的 B,它就具有典型的 induction-like attention pattern。研究者也可以把這種現象量化成 induction score,而不只是憑肉眼挑選 heatmap。

Attention pattern 只能告訴我們這個 head 看向哪裡。接下來還要檢查它的 OV circuit 是否真的會把被 attend token 的資訊寫向相同 token 的 output direction。換句話說,我們不只要確認它「看見 B」,還要確認它真的把 B 的資訊推向輸出。
我們還需要確認 Previous-token Head 寫入的資訊,是否真的會影響 Induction Head 的 computation。例如,我們可以 patch 或 ablate Previous-token Head → Induction Head 的 path,觀察 induction behavior 是否跟著下降。
最後,如果 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。
假設我們透過 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。
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
這些元件具有不同的功能:
IOI 研究的重要性,不只是找到了一批具有特殊名稱的 heads。更重要的是,研究者提出了這些 heads 的功能分工、資訊流與可測試 predictions,並透過 patching 和 ablation 驗證它們之間的關係。這表示一個真實的 language-model behavior,確實有可能被拆成一組可以描述、測試,甚至被反駁的 internal computations。
這裡又要回到 Day 5 的 evidence 問題。當我們畫出一張漂亮的 circuit diagram 時,很容易產生一種錯覺:「模型裡真的就存在這張圖」
但實際上,circuit 是研究者對模型 computation 建立的一種 abstraction。模型本身只有:
「這裡是一個 Name Mover Head」或「這幾個元件形成一個 circuit」,都是我們根據實驗結果建立的解釋層級。因此,真正重要的問題不會是「這張 circuit 圖是不是唯一的真相?」,而應該是這個 mechanistic model 能不能準確預測 intervention 的結果?
如果我們說某個 head 是必要的,那 ablate 它之後應該看到相應的效果。如果我們說 A → B 這條 path 傳遞了重要資訊,那 patch 或破壞這條 path 時,應該產生符合預測的變化。如果模型在新的 prompts 上仍然符合這套 explanation,這個 circuit 就會更有說服力。Circuit 因此不是單純把幾個元件圈起來、替它們取名字,而是一套可以持續接受實驗檢驗的 mechanistic hypothesis。
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 還必須回答:
下一篇,我們會把這些步驟組合起來,看看 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