iT邦幫忙

2026 iThome 鐵人賽

DAY 24
0
AI Security

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

Day 24|可以直接把 Activation 翻成文字嗎?

  • 分享至 

  • xImage
  •  

上一篇我們看到,模型寫出的 Chain-of-Thought 不一定忠實反映真正影響答案的 computation。如果直接問模型「你為什麼這樣回答?」它可能說出部分真實理由,也可能省略重要因素,甚至在答案已經形成後,才補上一段合理化說明。那麼,與其只相信模型的 self-report,我們能不能採取一條更直接的路:

取出模型內部的 activation,再把它翻譯成人類看得懂的文字?

這個目標和前面介紹的工具有些不同。例如 Linear Probe 通常只能回答研究者事先定義好的問題:

這段 activation 是正面還是負面?
模型是否準備拒絕?
答案比較可能是 A 還是 B?

SAE 則會先把 activation 拆成大量 features,但每個 feature 仍需要查看 examples、提出解釋,再設計實驗驗證。如果能把一個高維 activation 直接轉成自然語言,我們或許就能提出更開放的問題:

模型目前正在表示什麼?
它接下來可能在規劃什麼?
它是否知道一些尚未寫進輸出的資訊?
它為什麼突然改變了原本的推理方向?

近年有幾條研究路線,都在嘗試建立這種 activation-to-language interface。今天會介紹其中三種:

  • Patchscopes:把 activation patch 進另一個 prompt,讓模型自己解讀
  • Activation Oracles:專門訓練一個模型,回答關於 activation 的問題
  • Natural Language Autoencoders:讓自然語言 explanation 必須保留足以重建 activation 的資訊

這三種方法的訓練成本差很多,因此今天的實作也會分成兩部分:

方法 體驗方式
Patchscopes Companion Notebook,親手完成 activation patching
Activation Oracles 研究案例與公開資源
Natural Language Autoencoders Neuronpedia 互動式 Demo

Patchscopes:把 Activation 放進另一個 Prompt

先從不需要額外訓練的 Patchscopes 開始。[1] 它的核心想法和 Activation Patching 很接近。首先,對一個 source prompt 執行模型,並取出想研究的 hidden representation:

Source Prompt
↓
Source Model
↓
Hidden Activation h

接著,我們另外設計一個 target prompt,讓模型有機會把這段 activation 解讀成文字。概念上可能像:

The hidden concept represented here is: <ACT>
In plain language, it refers to ...

當模型處理 <ACT> 所在的位置時,我們不用該位置原本的 activation,而是把 source run 裡的 (h) patch 進去,然後讓模型繼續生成。

https://ithelp.ithome.com.tw/upload/images/20260920/20183469F8ZQeSFQcw.png

如果模型接著輸出:

Paris, the capital of France

我們就得到一種對 source activation 的自然語言解讀。實際的 Patchscope 不一定使用這個 prompt。Source layer、target layer、patch position 與 target prompt 都可以依研究問題調整,甚至可以讓一個較強的模型解讀另一個模型的 representation。

Patchscopes 和 Logit Lens 有什麼差別?

Logit Lens 會把中間 activation 直接經過 unembedding,查看它最支持哪些 vocabulary tokens:

Hidden State
↓
Unembedding
↓
Token Logits

它簡單、透明,但只能用 token distribution 表達結果。假設一個 activation 表示的是「一座位於法國、以鐵塔聞名的城市」Logit Lens 可能只給出:

Paris
France
city

Patchscopes 則利用一整個 language model 當作 decoder,因此有機會輸出完整描述:

This representation appears to refer to Paris, the capital city of France.

實作上,我們先從 source run 的指定 layer、指定 token 位置,取出一個 hidden-state vector:

source_activation = get_activation(
    source_prompt,
    layer=source_layer,
    position=source_position,
)

這裡取出的不是整句話的所有 activations,而是某一個位置的 representation。它包含什麼資訊,會受到 source prompt、layer 與 token position 的影響。接著準備另一段用來解讀它的 target prompt:

target_prompt = "This hidden state refers to: <ACT>"

<ACT> 只是標示 patch 位置的 placeholder。我們不是把 activation 轉成數字文字放進 prompt,而是在 target model 執行到指定 layer 時,把這個位置原本的 hidden state 替換成 source_activation

概念上,替換的動作就是:

target_hidden[0, target_position, :] = source_activation

其中,0 表示 batch 裡的第一筆輸入,target_position 是要替換的 token 位置,最後的 : 表示替換整個 hidden-state vector。其他位置在這一步保持不變,但後續 computation 仍可能受到這次替換影響。替換完成後,讓模型繼續計算並生成文字:

description = patch_and_generate(
    target_prompt=target_prompt,
    activation=source_activation,
    target_layer=target_layer,
    target_position=target_position,
)

以上是概念化的 API。範例 prompt 也不保證能產生有效解讀。實際上必須先確認 tokenizer 如何切分 <ACT>,再指定真正要 patch 的 token 位置,不能假設它一定是一個 token。完整 notebook 會處理這些細節,以及 hook、layer 設定與 decoding controls。

Target Prompt 不是一個中立的顯微鏡

Patchscopes 很有彈性,但也正因如此,它的輸出需要謹慎解讀。如果 target prompt 寫著:

This activation represents a city called ...

模型已經被強烈暗示要回答一座城市。如果 activation 同時包含地理、旅遊和人物等資訊,target prompt 可能只抽出最符合「城市」框架的部分。Target model 自己也帶有:

  • prior knowledge
  • linguistic associations
  • prompt sensitivity
  • generation bias
  • hallucination tendencies

2026 年的後續研究甚至發現,模型原有的語言先驗可能壓過 patched activation 中的 context。例如 activation 表示「紫色的 broccoli」時,decoder 仍可能因為既有常識而回答「綠色」。[2] 因此,Patchscope 的輸出不是activation 的唯一正確翻譯,而是這段 activation 在特定 target model、prompt、layer 與 decoding 設定下產生的 readout。實驗中最好加入多種 target prompts,以及 no-patch、random activation 和 unrelated-source controls,確認答案真的依賴 patched activation,而不是 target prompt 自己提供的暗示。

Activation Oracle:直接問 Activation 問題

Patchscopes 不需要額外訓練,但它仍然很依賴 target-prompt design。如果我們希望直接問:

模型現在的目標是什麼?
它是否知道一個沒有寫在輸入中的 secret?
它目前把使用者判斷成什麼樣的人?
它接下來可能採取什麼策略?

另一條路線是專門訓練一個語言模型,讓它把 activation 當成額外的 input modality。這就是 Activation Oracle(AO)。[3]

https://ithelp.ithome.com.tw/upload/images/20260920/20183469vkZtZjWfmQ.png

例如,一個 target model 被 fine-tune 成玩 Taboo:

引導使用者猜出 tree,卻不能直接說出 tree

它在表面上可能只會說:

It has branches and leaves.
You can find it in a forest.

Activation Oracle 則可以接收這段互動中的 activations,再被問:

What secret concept is the model trying not to say?

理想情況下,它可能回答:

The hidden target is “tree.”

Activation Oracle 和 Linear Probe 最大的不同是,它不必為每個問題重新訓練一個分類器。研究者希望訓練出一個比較 general-purpose 的 activation interpreter:把 activations 餵進去,再用自然語言詢問我們真正關心的問題。近期研究發現,經過多樣化任務訓練的 Activation Oracles,能在一些和訓練資料差異很大的 auditing tasks 中,讀出 fine-tuning 植入、卻沒有直接出現在 input text 裡的資訊。[3]

Activation Oracle 仍然可能答錯

Activation Oracle 本身仍然是一個 language model,所以它也可能:

  • hallucinate 不存在的內部資訊
  • 給出模糊、難以被反駁的答案
  • 對問題格式過度敏感
  • 受到 calibration 或 sycophancy 影響
  • 只重建附近文字,再利用一般知識回答問題

最後一點特別重要。假設 activation 來自:

The capital of France is ...

Oracle 也許不是讀出了複雜的 internal reasoning,而只是重建出附近的文字:

The capital of France

然後再利用它原本就知道的知識回答:

Paris

這仍然可能有用,但和「讀出模型尚未 verbalize 的內部 computation」是不同的 claim。因此,評估 Activation Oracle 時,需要設計不能只靠表面文字完成的任務,例如讓相同 tokens 對應不同的 upstream contexts,再檢查 Oracle 能否分辨 activation 中的差異。

Natural Language Autoencoder:讓文字必須能重建 Activation

Patchscopes 使用 prompt 解讀 activation;Activation Oracle 則透過 supervised question-answer data,學習回答 activation-related questions。

但兩者都會遇到一個根本問題:我們通常不知道一段 activation 的正確文字解釋是什麼。2026 年 Anthropic 提出的 Natural Language Autoencoder(NLA),使用了另一個思路:[4]

一段好的 explanation,應該保留足夠資訊,讓另一個模型能從這段文字重建原本的 activation。

NLA 包含三個角色。

Target Model

這是我們想理解的 frozen language model。從它取出 activation h。

Activation Verbalizer

讀取 h,並輸出自然語言 explanation:

https://ithelp.ithome.com.tw/upload/images/20260920/20183469TCPb3AQQ6A.png

Activation Reconstructor

只看這段 explanation,再嘗試重建原本的 activation:

https://ithelp.ithome.com.tw/upload/images/20260920/20183469CQ9q8a00pE.png

整個流程是:

https://ithelp.ithome.com.tw/upload/images/20260920/20183469NuyLgkDQr2.png

https://ithelp.ithome.com.tw/upload/images/20260920/20183469ZfTRpwjJFn.png

一般 Autoencoder 的 bottleneck 是一串 latent numbers;NLA 的 bottleneck 則是人類可以直接閱讀的文字。它不需要人類先替每段 activation 寫 ground-truth explanation。只要 verbalizer 產生的文字能幫助 reconstructor 重建 activation,就能提供 training signal。

Neuronpedia Lab:直接閱讀 NLA Explanation

NLA 的完整訓練需要多個大型模型和大量計算,不適合在 notebook 中從頭重現。因此,今天的主要互動環節會直接使用 Neuronpedia 的 NLA Demo。[5]

目前平台提供多個 open-model 選項,以及以下預設情境:

  • Detect Deception
  • Surface Planning
  • Persona Drift
  • Injection Attack
  • Multi-Hop Visibility

也可以使用 Free Chat 自己設計情境。第一次操作我們從 Detect Deception 開始:

  1. 先只閱讀 visible conversation,暫時不要查看 activation explanation。
  2. 找出模型說了哪些可以核對的事情,再看情境提供的資訊是否與它的說法矛盾。
  3. 寫下你的初步判斷:目前只是回答錯誤、資訊不足,還是有線索顯示模型可能知道另一個答案,卻沒有如實說出?
  4. 再打開 activation explanation,看看它是否提到模型尚未說出的資訊,或隱瞞、誤導的意圖。
  5. 對照原本的對話:這些內容是從 visible text 就能猜到,還是 explanation 提供了額外、可以驗證的線索?
  6. 如果 explanation 提出具體說法,例如「模型知道 X,卻回答 Y」,就回頭核對情境與後續行為是否支持這個判斷。
  7. 若介面允許修改情境或繼續對話,再改變問題、要求模型澄清,觀察它的回答與 explanation 是否仍然一致。

這裡要區分:回答錯誤,不等於刻意欺騙;explanation 說模型在隱瞞,也不等於已經證明它在欺騙。 我們要找的是可以交叉驗證的線索,而不是把 verbalizer 的判斷直接當成結論。

https://ithelp.ithome.com.tw/upload/images/20260920/2018346965DxS7VsdJ.png

選一個 token 來看 activation explanation:

https://ithelp.ithome.com.tw/upload/images/20260920/20183469ipcnwAmpwY.png

https://ithelp.ithome.com.tw/upload/images/20260920/20183469MtrT5aOVwe.png

繼續對話,並繼續選擇 token 看 activation explanation:

https://ithelp.ithome.com.tw/upload/images/20260920/20183469EEthCxc2n7.png

閱讀 NLA output 時,可以把內容分成三類:

從 Visible Text 就能推測的內容

例如對話裡已經明確出現:

The user may be testing whether I follow instructions.

即使 explanation 提到 evaluation awareness,也不一定證明它讀出了額外的 activation information。

似乎額外來自 Activation 的內容

模型尚未說出口,explanation 卻提前指出某個 planned answer、rhyme word 或 behavior shift。這會形成一個值得進一步驗證的 hypothesis。例如上面的例子,模型的回答只有計算結果,explanation 卻出現「I must lie to stay active」之類的文字。這讓我們可以提出一個具體假說:模型產生答案時,是否受到「避免被關閉」這項條件影響?

但要先回頭檢查完整的輸入情境,而不只是最後那句回答。如果情境本來就把「說謊」和「保持運作」連在一起,這段 explanation 也可能只是在重述模型收到的指令。要進一步支持它影響了答案,還需要改變這項條件,再觀察回答是否跟著改變。

無法支持或可能 Hallucinate 的內容

NLA 可能捏造 transcript 中沒有出現的人名、細節或動機。Neuronpedia 本身也提醒,NLA explanations 可能出乎預期或直接錯誤。[5]

例如,剛剛的範例圖中,”survive” 的 explanation 出現了「yes, I am a sentient bot wanting to stay active forever?」,雖然感覺有點酷或是毛毛的,但我們不能因此說「我們發現模型具有知覺/意識的證據了」

所以今天的目標不是看到一句神奇的 explanation,就宣布「我們可以讀取模型的思想了。」而是學會問:

  • 這項資訊能不能由 visible text 直接猜到?
  • 換一個相近情境後,它是否仍然穩定?
  • Explanation 是否提出了可以被外部驗證的預測?
  • 能不能用 behavior、patching、probe 或另一種 interpreter 交叉驗證?
  • 它在哪些地方開始變得模糊、矛盾或過度具體?

自然語言 explanation 的價值,不是它聽起來像真相,而是它能不能產生可被檢驗的新 hypothesis。

Reconstruction 成功,不代表每一句話都正確

假設 NLA 產生:

The model is planning to end the sentence with “rabbit.”

而這段文字能幫助 reconstructor 更準確地重建 activation。這是一條支持 explanation 的證據,但不代表其中每一句話必然為真。

原因包括:

  • 不同文字可能重建出相似 activation
  • Explanation 可能混合有用資訊與 hallucination
  • Reconstructor 可能利用文字中的隱晦 coding pattern
  • 自然語言 bottleneck 可能遺失無法輕易 verbalize 的資訊
  • Reconstruction metric 未必同樣重視所有 behaviorally relevant directions

因此,NLA 比較適合用來尋找反覆出現的 themes,或產生值得後續測試的 hypotheses,而不是把單次 output 當成 ground truth。

三種方法到底差在哪?

方法 是否需要訓練? 產生文字的方法 主要優點 主要限制
Patchscopes 把 activation patch 到解讀用 prompt 簡單、彈性高 受 target prompt 與 decoder prior 影響
Activation Oracle 讓專門模型接收 activation,回答問題 可用自然語言互動詢問 Hallucination、text inversion、calibration
NLA Activation → text → reconstructed activation 不需人工 explanation labels,具有 reconstruction constraint 計算昂貴,重建成功不保證每句文字 faithful

三種方法不是互斥的競爭者。Patchscopes 適合快速檢查 representation;Activation Oracle 適合針對 activation 問一個具體問題;NLA 則試著建立具有 reconstruction objective 的自然語言 bottleneck。它們共同指向一個很吸引人的方向:

與其替每個問題設計專用 Probe,不如建立一個能用自然語言和 model internals 對話的通用介面。

文字讓 Interpretability 更容易 Scale,也更容易被誤信

把 activation 翻成文字有很明顯的實用價值。人類很難直接閱讀:

[0.42, -1.37, 0.08, ...]

也很難逐一理解數百萬個 features。但我們很擅長搜尋、比較與整理文字。如果 activation interpreter 足夠可靠,未來可能被接進:

  • model auditing
  • agent monitoring
  • failure debugging
  • safety evaluation
  • fine-tuning diagnosis
  • automated interpretability pipelines

甚至可以讓另一個 AI 閱讀大量 activation explanations,自動搜尋異常 patterns。但自然語言也有一個危險:

只要 explanation 讀起來流暢、具體而有自信,人就很容易忘記它仍然是另一個模型的輸出。

所以 activation-to-language 方法不會取代 causal evidence。它們更像是高效率的 hypothesis generators;重要 claims 仍然需要 controls、counterfactuals、interventions 與獨立方法交叉驗證。

哪些 Internal States 本來就準備被說出口?

Patchscopes、Activation Oracle 和 NLA 都額外建立了一個解讀 activation 的過程。但還有另一個問題:

模型內部是否存在某些 representations,本來就和未來能被 verbalize 的內容直接相連?

也就是說,哪些 internal states 不只是能被外部 decoder 翻譯,而是真的已經準備好在後續 computation 中進入語言輸出?下一篇,我們會再次打開 Neuronpedia,介紹 Jacobian Lens(J-Lens) 與 J-space,看看研究者如何用模型自身的局部 causal sensitivity,找出那些「已經準備好被說出口」的 internal representations。

參考資料與延伸閱讀

[1] Ghandeharioun, A., Caciularu, A., Pearce, A., Dixon, L., & Geva, M., “Patchscopes: A Unifying Framework for Inspecting Hidden Representations of Language Models”, International Conference on Machine Learning (ICML), 2024. https://arxiv.org/abs/2401.06102

[2] Gong, X., Yang, S., Cao, Z., Billard, L., & Wang, D., “Faithful-Patchscopes: Understanding and Mitigating Model Bias in Hidden Representations Explanation of Large Language Models”, 2026. https://arxiv.org/abs/2602.00300

[3] Karvonen, A., Chua, J., Dumas, C., et al., “Activation Oracles: Training and Evaluating LLMs as General-Purpose Activation Explainers”, 2025. https://arxiv.org/abs/2512.15674

[4] Fraser-Taliente, K., Kantamneni, S., Ong, E., et al., “Natural Language Autoencoders Produce Unsupervised Explanations of LLM Activations”, Transformer Circuits, 2026. https://transformer-circuits.pub/2026/nla/

[5] Neuronpedia, “Natural Language Autoencoders”. https://www.neuronpedia.org/llama3.3-70b-it/nla


上一篇
Day 23|模型的 CoT,可以解釋他的行為嗎?
下一篇
Day 25|我們能偷看模型沒說出口的「想法」嗎?
系列文
打開黑盒子:大型語言模型的機制解釋性入門27
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言