上一篇我們用 Linear Probe 做了一件很簡單、直觀的事情,利用模型某層的 activation,嘗試訓練簡單的線性分類器,判斷是否存在與我們關心的「概念」相關的資訊。那假設現在 probe accuracy 很高,我們可能會很自然地想說:「模型在這一層已經知道這件事了。」但如果再往前一步問:「模型真的靠這項資訊做出最後的答案嗎?」事情就沒那麼簡單了。這也是 Mechanistic Interpretability 裡一個非常重要的問題:我們到底需要什麼樣的證據,才能說自己真的理解模型的運作?
Interpretability 裡有很多工具,不同的方法回答不同的問題,提供的是不同種類的證據,因此能支持的 claim 也不同。真正重要的是:「你手上的證據,有沒有足以支持你想說的故事?」在這個系列裡,我們可以先用四個問題整理它們。假設我們已經觀察到了模型展現出某個我們感興趣的行為、或者某些我們好奇他是否有 encode 在內部的「概念」,並且我們也設計了相對應的實驗/資料集可以可靠的誘發此行為、或者誘發他使用那些「概念」(就像是 Day4 中為了 probe sentiment 我們需要一系列標注好正向/負向情緒的語句),那麼我們就可以開始探索「模型行為/輸出」之外的四個層次的線索:
上一篇的 Linear Probe 就是一個很典型的例子。假設我們可以從第 12 層 activation 中,以很高的 accuracy 預測一句話的 sentiment,那麼我們可以說:第 12 層的 representation 中,存在可以被線性讀出的 sentiment information。除此之外,我們也可能觀察到某個或某群 neuron 特別容易在特定輸入上 activate,或某個 direction 的 activation 越高,模型越容易拒絕回答。這些都屬於 observational / correlational evidence,也就是我們發現模型內部的某個訊號,和我們關心的 concept 或 behavior 之間存在穩定的關聯。
這類 evidence 很適合幫我們發現有趣的 pattern、提出 hypothesis,並找到值得進一步研究的 representation。但就像統計學告訴我們的:Correlation does not imply causation.,也就是到這裡,我們可以說「這裡似乎有一個和行為相關的訊號。」但還不能說:「模型就是靠它完成這項 computation 的。」
除了「有沒有」,我們可能也會想問:「這項資訊究竟出現在模型的哪裡?」或者「這項資訊在模型的哪裡看起來影響力特別大?」。在這裡,「位置」可能是指在某幾個 layers、某個 token position、某些 Attention Heads、某個 MLP、某些 components。例如上一篇我們提到,可以在每一個 layer 上訓練 Linear Probe,觀察某項資訊在哪些 layer 最容易被讀出。或者之後我們會看到,某些方法可以直接估計哪一個 layer、head 或 token position 對某個結果特別重要,這就是 localization。
基本上可以理解成在一個巨大的機器裡先縮小搜尋範圍,作為要深挖的區域的 educated guess,但 localization 本身還沒有告訴我們:為什麼是這裡?它實際做了什麼?找到犯罪現場,不等於已經破案。
如果我們懷疑某段 activation 或某個 component 對模型行為很重要,一個很自然的下一步就是直接去調整它。例如我們可以把某段 activation 設成零、移除某個 Attention Head、把另一個 prompt 的 activation 換進來、沿著某個 direction 增加或減少 activation,然後再觀察「模型的行為有沒有按照我們期待的方式改變?」
例如 Meng 等人在研究 factual knowledge 時,會先擾動模型內部的 activation,再嘗試把某些位置的 activation 恢復回來,觀察模型能不能重新答出正確答案。透過這種方式,他們試著定位哪些 computation 對 factual prediction 具有較直接的因果作用。[1]
後面我們也會實際碰到一個很常見的方法:Activation Patching。[2] 例如回到 factual recall 謎題,我們可以先讓模型跑兩次:
Clean run:
The capital of Taiwan is → Taipei
Corrupted run:
The capital of Japan is → Tokyo
接著,我們可以從 clean run 中取出某一層、某個 token position 的 activation,把它替換進 corrupted run 的相同位置,再觀察模型對 Taipei 和 Tokyo 的預測如何改變。如果只替換某個位置的 activation,就能讓 corrupted run 的輸出明顯往 clean answer 靠近(也就是 input The capital of Japan is,模型回答 Taipei),這就提供了一種 intervention evidence:這個 internal state 不只是和答案相關,而是改變它真的會改變模型行為。Activation Patching 只是其中一種 intervention 的工具,接下來的文章還會陸續跟大家介紹更多。
但 intervention 這個步驟有許多要小心的細節。例如:假設我現在好奇 factual recall 跟「台北是台灣的首都」這個事實相關的資訊是否真的存在某個我透過上面兩個方法找到懷疑的位置,於是我把那些位置的 activation 大幅度調整,發現模型確實回答不出這個事實了,在 benchmark 的表現上下降了,那麼我成功了嗎?還不一定,由於我們調整的是模型的內部狀態,很多時候造成的影響是我們很難可靠的預測的,若是我們只看「台北是台灣的首都」這件是模型是否還回答的出來,而不去關心模型在其他事情的表現是否受影響或是甚至不去肉眼審視模型在同樣問題的回答變成什麼,只從 benchmark 表現或是用程式抓取模型回應包不包含「台北」,也有可能我們其實是完全破壞了模型的運算而我們卻不知道。可以想像成你把模型的大腦完全攪爛了,他當然回答不出你的問題,也回答不出任何問題,自然也就不能證明我們想說的故事。
這就是為什麼,在 intervention 這步,「調整的位置是否代表更 general 的運算步驟?」、「調整的位置到底跟你好奇的行為多 specifically 相關」、「調整的範圍」、「調整的強度」、「評估或測量行為的具體方式」等等都是非常重要因素需要考量。甚至,當我們除了「理解」外,也希望提供一定程度的「實用性」時,能「破壞」某個行為或許是不夠的,如果找到所謂「重要」、「因果」的位置,我們是否也可以提升模型在對應任務上的能力?這個在之後介紹 steering 時會再次提到。
不過,就算我們能可靠的影響模型輸出,也很嚴謹的檢查了剛剛提到的所有潛在風險,我們仍然不能算是「完全理解模型的機制」,也不能說「我們已經知道模型怎麼完成這個 computation 了」。我們只能說「我可以可靠的透過這個位置控制模型的這個行為,這樣的因果性告訴我這個線索很值得繼續追下去」
雖然從「理解」的角度看來這個步驟做到的好像還是很有限,但其實要在這個步驟找到很乾淨的結果是非常不容易的,目前很多研究也常看到 Observation / Readout 結果非常 promising 但 Intervention 的結果卻很 noisy 的狀況。並且,站在「實用」的角度,做到這個步驟,若是能做到非常可靠、精準的控制,那已經是很難得的大貢獻了,這個概念在這系列最後會提到的 pragmatic interpretability 有關。
Mechanistic Interpretability 最有野心的目標,通常不只是找到:「這個 layer 很重要」而是希望得到一個更接近演算法的描述。例如:
模型先辨識出 A -> 接著某個元件把 A 的資訊搬到另一個位置 -> 下一個元件將它和 B 結合做某個具體的運算 -> 最後改變某些 token 的 logits -> 形成我們看到的輸出
這時我們開始談的,就不再只是 representation,而是 mechanism。之後在討論機制時會經常出現的一個詞是 circuit:一組彼此連接、共同完成某項 computation 的模型元件。真正有說服力的 mechanistic explanation,通常會把很多種 evidence 拼在一起:
Redwood Research 提出的 Causal Scrubbing 就很強調這件事:interpretability 不應該只產生一個「聽起來合理的故事」,而應該把 mechanistic hypothesis 轉換成可以被 intervention 系統性檢驗的預測。[3]
這其實和我們 Day 1 提過的 neuroscience 類比很像。看到某個腦區亮起來,是一條線索。刺激它之後行為改變,是另一條更接近因果的證據。但真正想知道的是:整個系統到底怎麼完成這項 computation?
因此,真正重要的是「我的 evidence 能不能支持我的 claim?」例如:「第 10 層可以讀出 sentiment」一個設計良好的 Linear Probe 就可能已經足夠。但如果你想說:「模型就是利用第 10 層的這個 direction 判斷 sentiment」那就需要更多 intervention。而如果你想說:「我們理解模型如何完成 sentiment classification」那通常還需要描述不同 representation 和 computation 如何組成一個完整 mechanism。Interpretability 裡最容易犯的錯之一,就是看到一個很漂亮的 pattern,然後講了一個超過 evidence 能支持範圍的故事。
現在我們已經有了一張簡單的 evidence map,接下來的幾週我們就會開始介紹各種工具以及他們能回答的問題。首先會是 Logit Lens,一個非常直覺的 readout 工具,讓我們看看模型在不同 layer 中,對最終答案的傾向是如何逐漸形成的。
[1] Meng, K., Bau, D., Andonian, A., & Belinkov, Y., “Locating and Editing Factual Associations in GPT”, Advances in Neural Information Processing Systems (NeurIPS), 2022. https://proceedings.neurips.cc/paper_files/paper/2022/hash/6f1d43d5a82a37e89b0665b33bf3a182-Abstract-Conference.html
[2] Zhang, F., & Nanda, N., “Towards Best Practices of Activation Patching in Language Models: Metrics and Methods”, International Conference on Learning Representations (ICLR), 2024. https://proceedings.iclr.cc/paper_files/paper/2024/hash/06a52a54c8ee03cd86771136bc91eb1f-Abstract-Conference.html
[3] Chan, L., Garriga-Alonso, A., Goldowsky-Dill, N., et al., “Causal Scrubbing: a method for rigorously testing interpretability hypotheses”, 2022. https://www.alignmentforum.org/posts/JvZhhzycHu2Yd57RN/causal-scrubbing-a-method-for-rigorously-testing