newsence
來源篩選

Cross-Layer Transcoders are Incentivized to Learn Unfaithful Circuits

Lesswrong

We demonstrate that cross-layer transcoders (CLTs) are incentivized to learn unfaithful circuits by collapsing multi-step internal computations into shallow feature-skipping mappings, potentially obscuring the true mechanistic pathways of language models.

newsence

跨層轉碼器易於學習不忠實的計算電路

Lesswrong
25 天前

AI 生成摘要

我們證明了跨層轉碼器(CLTs)會受到激勵而學習到不忠實的電路,透過將多步的內部計算摺疊成淺層的特徵跳躍映射,這可能會掩蓋語言模型真正的機制路徑。

非常感謝 Michael Hanna 和 Joshua Batson 提供有用的回饋與討論。Kat Dearstyne 和 Kamal Maher 在 SPAR 2025 年秋季班期間進行了實驗。

內容提要 (TL;DR)

跨層轉碼器 (Cross-layer transcoders, CLTs) 能夠進行電路追蹤,從而為任意提示詞提取高階的機制性解釋,並正成為機制可解釋性(mechanistic interpretability)的通用基礎設施。由於這些工具在相對低層級運作,其輸出通常被視為模型行為的可靠描述,而不僅僅是預測性的近似。因此我們提出疑問:由 CLT 導出的電路何時能忠實於模型真實的內部計算?

在一個已知地面真值(ground truth)的布林玩具模型中,我們展示了一種特定的不忠實模式:CLT 會將深層的多跳(multi-hop)電路重寫為淺層單跳電路的總和,從而產生與行為匹配但掩蓋了實際計算路徑的解釋。此外,我們發現廣泛使用的稀疏性懲罰(sparsity penalties)會激勵這種重寫,促使 CLT 轉向不忠實的分解。隨後,我們提供了初步證據,顯示類似的差異也出現在真實的語言模型中,對於相同的行為,逐層轉碼器(per-layer transcoders)和跨層轉碼器有時會暗示截然不同的電路級解釋。我們的結果闡明了基於 CLT 的電路追蹤的局限性,並提醒在選擇稀疏性和可解釋性目標時需保持謹慎。

前言

在這次為期一週的研究衝刺中,我們探索了基於 的電路是否忠實於地面真值的模型計算。我們證明了 CLT 會學習跳過模型內部計算的特徵。具體來說,如果集合 A 中的特徵創建了集合 B 中的特徵,而這些集合 B 的特徵又創建了集合 C 中的特徵,CLT 電路可能會錯誤地顯示集合 A 特徵直接創建了集合 C 特徵,且集合 B 特徵並未參與創建集合 C 特徵,最終完全跳過了 B 特徵。

當研究人員試圖理解模型「如何」得出答案,而不僅僅是它得出了正確答案時,這一點至關重要。例如,假設我們想驗證一個回答數學問題的模型是否真的執行了中間計算,而非僅僅透過模式匹配來記憶答案;或者檢測模型陳述的思維鏈(CoT)推理是否反映了其內部計算。如果 CLT 系統性地將多步推理摺疊成淺層的輸入-輸出映射,它們就無法幫助我們區分真正的推理與複雜的查表——而這正是關乎可靠性和生存風險(existential risk)的關鍵區別。一個僅靠記憶的模型在面對新輸入時可能會發生不可預測的失敗;一個進行欺騙性推理的模型可能會主動隱藏其真實目標。跳過中間計算的可解釋性工具無法幫助我們辨別這兩者。

我們在已知地面真值特徵的玩具模型上展示了 CLT 的「特徵跳躍」行為,並證明 CLT 的損失函數會誘導模型產生這種行為。隨後,我們呈現了這種現象同樣發生在真實語言模型中的證據。

背景

雄心勃勃的機制可解釋性目標是針對任意提示詞對 AI 模型的計算進行逆向工程,並理解實現其行為的模型內部神經電路。我們分兩步進行:首先,發現模型中任何位置所表達的特徵。其次,追蹤這些特徵之間的交互作用,以建立一個可解釋的計算圖。

如何實現?機制可解釋性的主要假設是特徵被表示為 。然而,特徵的數量多於模型的維度,這導致了疊加(superposition)。

稀疏字典學習方法,如稀疏自動編碼器(SAEs,),可以將稠密表示解耦為稀疏且可解釋的特徵基底。然而,我們不能直接將 SAE 用於電路分析,因為 SAE 特徵是激活值的線性分解,而下一個 MLP 會應用神經元級別的非線性,因此追蹤一個 SAE 特徵如何驅動另一個特徵需要複雜且依賴輸入的雅可比矩陣(Jacobians),並會迅速失去稀疏性和可解釋性。 則與 SAE 類似,但它接收 MLP 的輸入並直接預測 MLP 的輸出,使用稀疏的、基於特徵的中間表示,使得追蹤 MLP 內部的特徵間交互變得更容易。當我們為每一層訓練轉碼器時,我們可以透過追蹤這些轉碼器之間的特徵交互來 ,而不是在原始網絡內部追蹤,這實際上是用轉碼器替換了每個 MLP,將整個系統變成了一個「替代模型」。至關重要的是,生成的電路在技術上屬於替代模型,我們只是「假設」它們是基礎模型的準確表示。

然而,觀察發現 ,這使得電路變得非常龐大且複雜。據推測,這是由於跨層疊加(cross-layer superposition)造成的,即多個連續層像一個巨大的 MLP 一樣運作,共同計算一個特徵。為了僅學習一次這些特徵並減小電路規模,

跨層轉碼器是一個單一的統一模型,每一層都有一個編碼器,但特徵可以透過獨立的解碼器寫入所有下游層:在第 ℓ 層編碼的特徵具有針對第 ℓ, ℓ+1, ..., L 層的解碼器權重。關鍵在於,遵循 Anthropic 的方法,所有編碼器和解碼器都是針對所有層總和的重構損失與稀疏性損失進行聯合訓練的。稀疏性懲罰鼓勵特徵稀少地激活,這與跨層解碼相結合,促使特徵跨越多個計算層。Anthropic 發現這對於將冗餘的「放大鏈」摺疊成單一特徵並產生更簡潔的歸因圖非常有用。

在這裡,我們展示了這種特性會導致 CLT 跳過原始模型中發生的中間計算步驟,從而產生模型計算的不忠實表示。如果一個電路表示捕捉到了模型執行的實際計算步驟,即它識別為因果相關的特徵與透過消融相應模型組件所揭示的中間計算相匹配,我們稱之為「忠實的」。這擴展了先前顯示 的發現。

跨層疊加 vs 多步電路

圖 1:跨層疊加與多步電路的區別(修改自

使用跨層轉碼器的動機是為了僅表示一次在多個連續層中以疊加方式計算的特徵。但我們如何判斷多個連續層是在進行 跨層疊加 計算單一特徵,還是在實現一個應在不同層表示為兩個或多個不同特徵的 多步電路

我們的區分方式如下。在 Anthropic 的框架中,當多個連續層實際上像一個大型 MLP 一樣運作時,就會發生跨層疊加(見圖)。在這種情況下,層與層之間對於該特徵沒有實質性的中間交互,各層以加法方式貢獻並強化相同的特徵方向。相比之下,我們說模型正在實現一個多步電路,是指計算依賴於在某一層計算並被後續層使用的中間特徵,例如當 A 層計算出一個特徵,然後被 B 層讀取並轉換為新特徵時(圖 1 最右側面板)。

一個簡單的診斷方法是看中間特徵是否存於不同的子空間中。如果 A 層寫入的方向與 B 層輸出的特徵方向基本正交,那麼 A 層就不僅僅是在跨層「放大」同一個特徵。相反,A 層是在計算一個截然不同的中間特徵,隨後由 B 層進行轉換,這是多步電路而非跨層疊加的明確證據。

在這裡,我們證明了使 CLT 能夠捕捉跨層疊加的相同機制,也會導致它們將 真正的多步電路近似為單步電路,從而產生一個與模型真實中間計算不符的電路,因此是不忠實的。

CLT 在玩具模型中不具備忠實性

在本節中,我們構建了一個計算布林函數的玩具模型。我們手動設置權重以實現一個兩步算法,作為地面真值電路。然後我們訓練 PLT 和 CLT,並展示 CLT 學習了兩個平行的單跳電路,從而對地面真值不忠實。

玩具模型概述

我們手工製作了一個玩具模型來計算布林函數 (a XOR b) AND (c XOR d),具有四個二進制輸入(+1 或 -1)。該模型有兩個僅含 MLP 的層,並帶有殘差連接。

第 0 層有四個神經元,計算 XOR 所需的部分乘積:ReLU(a - b - 1)、ReLU(b - a - 1)、ReLU(c - d - 1) 和 ReLU(d - c - 1)。我們稱這些輸出為 e, f, g, h。第 1 層計算 i = ReLU(e + f + g + h - 1),當且僅當兩個 XOR 均為真時,i 為真。

這九個值(四個輸入、四個中間特徵、一個輸出)中的每一個都在殘差流中佔據各自的線性子空間。

圖 2:我們構建了一個使用 2 層殘差 MLP 實現布林函數 (a XOR b) AND (c XOR d) 的玩具模型。

跨層轉碼器訓練

我們收集所有 16 種可能輸入的 MLP 輸入和輸出激活值,並按照 訓練一個每層 32 個特徵的 JumpReLU 跨層轉碼器直至收斂。由於我們的模型有兩層,CLT 訓練了兩組獨立的特徵。第一組編碼模型的四個輸入(mlp_in),並輸出兩個獨立的解碼器來預測神經元的輸出(如圖 3 所示):一個解碼器預測第 0 層神經元的輸出,另一個預測第 1 層神經元的輸出。對於第二組特徵,編碼器接收第一個 MLP 之後的殘差流(即模型輸入和第一個 MLP 的輸出),並解碼以匹配第二個 MLP 的輸出。重要的是,我們對輸入和輸出激活值進行了標準化,以確保重構誤差在各層之間被平等加權。

CLT 跳過了中間計算

圖 3:左側:學習了兩步電路 A -> B -> C 的原始地面真值殘差 MLP。右側:透過學習兩個單步電路 A -> B(正確)和 A -> C(不正確)來近似原始模型的跨層轉碼器。

我們訓練了具有不同稀疏性懲罰的 CLT,發現即使每層平均 L0 損失約為 1.0,也能實現完美重構。我們發現,在足夠的稀疏性壓力和足夠的特徵下,CLT 學習到完全不激活任何第 1 層特徵,但仍能透過第 0 層的第二個解碼器完美恢復第二層的輸出(見圖 3 和表 1)。我們可以從 CLT 的權重中直接讀出這種行為(見附錄)。PLT 和 CLT 都達到了完美的重構準確率,但 CLT 從未激活第 1 層的任何特徵。相反,它在第 0 層使用了更多特徵並直接構建了第 1 層的輸出,實際上創建了一個將輸入直接映射到輸出的單跳電路。

但根據我們對模型的定義,我們知道這並不符合模型真實的內部算法。第 1 層的單個神經元正在對現有的中間結果進行重要的計算,以確定布林表達式是否為真。如果我們消融這個神經元,就沒有東西寫入輸出通道 i,網絡就無法確定整個布林表達式的值。CLT 暗示兩個 MLP 都在跨層疊加中學習了特徵,但這裡的情況顯然 並非如此:我們可以透過消融 MLP 0 和 MLP 1 之間的 交互作用(在我們的案例中這非常容易,因為它們佔據各自的線性子空間)來證明這會破壞模型。因此,CLT 學習到了一個不忠實的電路。

僅憑這一點就足以論證 CLT 是不忠實的。post-mlp0 特徵負責產生 post-mlp1 特徵,而我們的 CLT 未能捕捉到這一點。

| 指標 | JumpReLU CLT | JumpReLU PLT |
| :--- | :--- | :--- |
| 替代準確率 | 100% | 100% |
| L0 (第 0 層) | 1.81 | 1.68 |
| L0 (第 1 層) | 0.0 | 0.94 |
| MSE (第 0 層) | 0.0052 | 0.0065 |
| MSE (第 1 層) | 0.0028 | 0.0033 |
| 存活特徵 (第 0 層) | 8 | 7 |
| 存活特徵 (第 1 層) | 0 | 5 |
表 1:JumpReLU CLT 與 PLT 的核心指標。

其他結果

儘管遺漏了第二層的計算,CLT 仍然準確地重構了完整的殘差流。它學習了 8 個起「查表」作用的存活特徵:四個特徵(0, 4, 13, 14)對應於整體表達式為 TRUE 的四種輸入組合,直接設置所有中間和最終輸出。另外四個存活特徵(6, 7, 9, 11)各別檢測何時有一個 XOR 為 FALSE,並將相應的中間特徵歸零。

雖然這個查表法正確計算了所有輸出,但它並未反映模型實際如何逐步執行計算。我們可以用一個僅包含這四個「TRUE 案例」特徵的單層 MLP 來實現相同的布林函數——但那不是我們訓練的模型,這就是為什麼我們認為 CLT 是不忠實的。

圖 4:Jump-ReLU CLT 特徵

CLT 的損失函數誘導了這種偏差

我們的玩具模型證明了 CLT 可以 學習不忠實的表示,但人們可能會好奇這在真實語言模型的實踐中是否真的會發生。證明 CLT 為前沿 LLM 學習了不忠實的電路具有挑戰性,因為我們沒有可以用來對比的地面真值電路。在本節中,我們首先從理論上論證稀疏性目標如何使 CLT 偏向於學習較短但不忠實的電路,然後在 GPT-2 和 Gemma 2 中測試這一假設的預測。

直覺

為什麼 CLT 首先具備學習不忠實電路的能力?根據通用近似定理,深層神經計算通常可以由更淺的網絡來近似。CLT 實際上給了我們一個稀疏且巨大的淺層 MLP:早期層的特徵可以透過其解碼器直接寫入許多下游層,因此替代模型有一條簡單的路徑將深層計算表示為淺層的輸入-輸出映射。

一個自然的質疑是,淺層近似通常需要更多的神經元,這應該會促使 CLT 學習真正的中間結構而不是走捷徑。這在原則上是對的,但它忽略了 CLT 中一個關鍵的不對稱性:額外的解碼器向量幾乎是「免費」的。CLT 需要從第 0 層開始編碼特徵——這意味著已經有活躍的特徵在第 0 層進行編碼和解碼;一旦一個特徵已經激活,給它指向多個後續層的額外解碼器向量並不會顯著增加稀疏性損失。 因此,我們應該預期會出現一定程度的深度塌陷:CLT 可以將很大一部分計算轉移到早期特徵中。

第二個質疑是,這種「免費解碼器」的論點僅適用於 TopK CLT,因為 JumpReLU 或 ReLU CLT 也會懲罰解碼器範數。但即使在那裡,額外的解碼器向量仍然接近免費:因為懲罰是應用於拼接後的解碼器向量而非逐層單獨應用,將質量分散到多個解碼器上只會使範數呈次線性增長。在實踐中,使用額外的解碼器向量的成本遠低於在後續層激活額外的特徵,因此捷徑表示仍然可能佔據主導地位。

總體而言,CLT 的目標函數對忠實性是漠不關心的:它獎勵重構準確性和稀疏性,而不是保留中間計算步驟。當淺層捷徑在匹配重構的同時支付比分層分解更低的稀疏性成本時,CLT 就會受到激勵去學習捷徑。

來自真實語言模型的證據

我們接下來測試上述理論的預測。首先,我們展示與 PLT 相比,CLT 的 L0 會向早期層偏移。其次,我們展示自然文本上的歸因電路更嚴重地依賴於早期層。

各層之間不對稱的 L0

我們在 gpt2-small 上訓練 JumpReLU CLT 和 PLT,除另有說明外,均採用 。我們在 OpenWebText 數據集上以 1000 的批次大小訓練 1 億個 token。我們收集並打亂來自 gpt2-small 的激活值,並標準化輸入和輸出激活值。我們每層訓練 1 萬個特徵,並調整 L0 使每層約有 12-15 個活躍特徵。

為了確認後期層較低的 L0 不僅僅是層特定激活幾何結構的產物,我們在其他設置匹配的情況下訓練了逐層轉碼器 (PLT)。關鍵在於,與獨立訓練每一層的方法不同,我們將所有層的損失相加並聯合訓練所有層。如果非均勻的 L0 分佈是由激活值的內在結構驅動的,我們預期 PLT 也會出現相同的模式。

相反,我們發現只有 CLT 顯示出強烈的不對稱性:第 0 層的 L0 遠高於後續層,通常高出 3 倍以上,後期層尤其稀疏(圖 5 左側面板)。這種模式無法用激活幾何結構來解釋。當我們聯合訓練 PLT 時,各層的 L0 保持相似(右側面板)。這種不對稱性僅出現在 CLT 中,符合我們的理論預測:早期層特徵承擔了不成比例的工作,因為它們可以以極小的額外成本寫入所有下游層。

圖 5:在 GPT2-small 和 OpenWebText 上訓練的 JumpReLU CLT(左)和 PLT(右)的 L0。

CLT 電路歸因於早期層

在這裡,我們展示使用 CLT 計算的歸因電路嚴重依賴早期層,而 PLT 的歸因則是線性的。在實驗中,我們使用 Gemma2-2b 作為基礎模型,使用來自 的跨層轉碼器作為 CLT,以及 作為 PLT。我們在 PLT 和 CLT 的替代模型中運行了 60 個提示詞。這些提示詞包括等量分配的記憶序列(例如 MIT 許可證)、手動構建的提示詞以及來自互聯網的隨機句子(例如新聞文章和維基百科)。從這些圖中,我們計算了第 0 層到第 n* 層特徵對頂部輸出 logit(模型概率最高的預測)的總貢獻比例。具體來說,我們收集了歸因電路中所有正權重邊並計算:

(公式略:Σ_{l=0}^{n*} Σ_{e∈El} we / Σ_{l=0}^{L} Σ_{e∈El} we)

透過對不斷增加的 n* 值(從 0 到總層數)重複此計算,我們生成了累積貢獻曲線,顯示了在每個深度處有多少比例的總歸因來自早期層。圖 6 顯示,對於 PLT,所有層的貢獻相當,累積電路貢獻隨深度大致呈線性增長。相比之下,CLT 在第 1 層出現劇增,幾乎所有的貢獻都集中在第 0 層和第 1 層。

圖 6:我們對 45 個提示詞計算歸因電路,並計算各層對計算最大輸出 logit 的電路的累積貢獻。

這些結果共同印證了我們的理論:CLT 將稀疏性預算和歸因質量都集中在早期層,而 PLT 將貢獻更均勻地分佈在各個深度,這暗示了 CLT 替代電路中存在部分深度塌陷。不過這僅是間接證據,因為我們在真實 LLM 中沒有地面真值電路,無法像在玩具模型中那樣直接測試忠實性。

分歧的電路解釋:許可證記憶

最後,我們展示「野外(in the wild)的 CLT」會產生截然不同的高階結論。具體來說,我們展示了一些抽象特徵的「存在證明」,這些特徵在多樣化的提示詞中激活且可被干預(steerable),但在 CLT 中卻不存在。然後,我們調查了軟件許可證中記憶與泛化的機制,並展示解釋 CLT 會導致不同的結論。

野外實例:CLT 未學習到的真實特徵

我們檢查了 Gemma-2-2B 對 MIT 許可證的逐字記憶,特別是在短語 "publish, distribute, sublicense, and/or" 之後對 " sell" 的預測。我們想了解記憶電路與泛化電路是相互作用、協作,還是逐字記憶誘發了與泛化完全不同的電路。

使用 PLT,我們在 " or" 位置的後期層發現了兩組重要的特徵(又稱超級節點):一組是輸出特徵,當激活時會推高任何形式的單詞 sell 的 logit(例如 " sell", " sold", " selling", " sale";);另一組是在現在時動詞列表上激活並推高現在時動詞 logit 的特徵(例如 " edit", " build", " install", " sell", " fill", " move", " bake";)。它們共同產生正向干涉,將(記憶的)" sell" token 推至約 100%。

後者的特徵在包含多樣化背景的文本中具有最大激活示例,且可以可靠地被激活:我們用 LLM 生成了 20 個包含現在時動詞列表的提示詞和 20 個對照組。11/20 個提示詞在預期位置激活了該特徵,而對照組則完全沒有觸發。以適度強度 (-0.7x) 干預這些特徵會使模型預測 " selling" 而非 " sell"(圖 7)。

至關重要的是,這適用於 任意 文本,而非僅限於 MIT 許可證記憶。我們手寫了一個不存在的新許可證文本,它鬆散地鏡像了一些特徵(特別是它也包含一個現在時動詞列表)。在這個提示詞上,同一個超級節點是活躍的,且干預產生了類似的結果:它將輸出分佈從現在時推向分詞(即 " publishing", " printing", " licensing";圖 7)。

圖 7:在 MIT 許可證和類似的虛構許可證上干預特徵

我們調查了該提示詞的 (圖 9),但找不到該超級節點的任何對應物。只有在中間特徵本身是許可證特有的(即它僅在記憶背景下可靠觸發)的情況下,CLT 將其「吸收」到上游的 MIT 許可證記憶特徵中才是合理的。但這些 PLT 特徵是乾淨、單語義(monosemantic)的,且在包括記憶和非記憶序列在內的多樣化提示詞中具有因果可干預性。由於它們實現了一種遠遠超出 MIT 許可證範圍的通用「現在時動詞到分詞」轉換,將它們摺疊進許可證記憶電路會抹除基礎模型似乎正在使用的真實中間計算,因此應將其表示為獨立特徵。

CLT 如何導致錯誤的故事

下游後果是什麼?我們現在為 MIT 許可證續寫構建並解釋完整的電路圖,展示 CLT 和 PLT 對於模型正在做什麼會得出性質截然不同的機制故事。

CLT 圖暗示了一種查表式的記憶機制,極少重用通用語言電路;而 PLT 圖則支持另一種圖景,即通用現在時動詞電路(及其他電路)保持完好,而記憶則表現為其上的一個針對性修正:

PLT 解釋:具有極小記憶成分的泛化(見圖 8) 在 PLT 中,下一個 token 的預測源於兩個相互作用的電路:一個促進 "sale-words",另一個促進 "present-tense verbs",兩者共同以約 100% 的概率預測 "sell"。"present-tense-verb" 特徵直接連接到列表中現在時動詞的 embedding 以及一些軟件/法律背景特徵。"sale-words" 特徵由一個更大的抽象電路激活,該電路首先識別 "and/or" 結構,並單獨識別軟件許可證背景。此外,還有從 MIT 許可證特定 token embedding 到 "say sell-words" 特徵的直接連接,這可能代表了一種記憶機制。我們對 PLT 的解釋是,模型的泛化電路始終處於活躍狀態,並輔以少數幾個編碼泛化 logit 與實際記憶 logit 之間差異的查表特徵。

圖 8:MIT 許可證記憶的 PLT 電路。

CLT 解釋:純粹的記憶(見圖 9) 對於 CLT,我們也發現了一個重要的 "say sell-words" 特徵,以及一個在 MIT 動詞枚舉中所有逗號處精確觸發的特徵。然而,這些特徵主要直接連接到第 0 層和第 1 層的特徵。這些早期特徵要麼編碼 token 身份,要麼無條件觸發(高頻特徵)。CLT 的解釋暗示該電路是完全記憶的,沒有相互作用和協作的泛化電路。

圖 9:MIT 許可證記憶的 CLT 電路。

這些並非細微的電路拓撲差異;相反,它們代表了關於模型如何執行此任務的根本不同的理論。如果 PLT 的解釋是正確的,模型已經學習了一種通用的語言結構並將其應用於記憶內容。如果 CLT 的解釋是正確的,模型只是對記憶序列進行模式匹配。理解哪種說法屬實,對於預測模型在新輸入上的行為、評估魯棒性以及評估模型學習通用概念與表面統計數據的程度至關重要。

我們的理論解釋了這種分歧。CLT 對早期層特徵的偏好導致它將計算表示為從輸入 token 到輸出的淺層查找,從而摺疊掉了 PLT 所呈現的中間抽象特徵。泛化電路可能並未從模型中消失;它們可能只是在 CLT 對模型的表示中消失了。

討論

跨層疊加的權衡

使用 CLT 的原始動機是處理跨層疊加,即同一個概念冗餘地出現在多層中。我們的發現揭示了一個令人不安的權衡:有效捕捉持久特徵的相同機制,也使得跳過中間計算成為可能。一個合法地從第 0 層持續到第 10 層的特徵,看起來可能與一個繞過第 1 層到第 9 層的捷徑完全相同。這表明,在當前的 CLT 架構下,忠實性與跨層疊加的高效處理之間可能存在根本性的張力。

這種擔憂始於實踐,而非理論。我們曾對歸因電路感到興奮並大量使用,隨後注意到一個一致的不匹配:在 PLT 中看起來很魯棒的結果在 CLT 中往往無法復現,且這兩種工具對相同的提示詞和行為有時會暗示截然不同的電路故事。我們還發現,使用 CLT 進行特徵干預往往不如預期般直接。因為 CLT 僅表示特徵一次,而非跨層冗餘表示,我們最初希望干預會變得更容易,但我們經常觀察到相反的情況。這本身並不能證明不忠實,但它符合一個更廣泛的模式,即 CLT 電路可能更難解釋和操作,彷彿它們並未直接追蹤模型的中間計算。

檢測與緩解

鑑於系統性的不忠實偏差,從業者需要方法來檢測並可能糾正這種行為。

檢測方法

最直接的信號是各層之間不對稱的 L0。如果早期層顯示出比後期層顯著更高的特徵激活,那麼計算很可能被摺疊進了早期特徵中。在同一個模型上比較 CLT 和 PLT 的 L0 分佈可以揭示這種塌陷的程度。

研究人員還應將 CLT 導出的電路與因果干預進行對比。如果消融一個中間神經元會破壞模型輸出,但 CLT 顯示沒有中間特徵做出貢獻,這表明了不忠實性。如果一個包含明顯活躍神經元的層,其特徵集 L0 為零,這是一個特別強烈的信號。

更具體地說,為了 驗證 跨層疊加的說法並排除真正的多步電路,僅孤立地消融一個神經元是不夠的。必須消融假定特徵的 層間交互作用:如果計算確實反映了跨層疊加,那麼打破層間的交接不應破壞行為,因為「同一個特徵」實際上在跨層維持。相反,如果行為依賴於在一層中計算並在後續層中轉換的中間信息,那麼消融層間交互作用將會破壞計算。這種針對性的層間消融是區分跨層疊加與多步電路最乾淨的因果測試。

最後,對同一計算的 CLT 和 PLT 電路進行定性比較,可以發現值得調查的差異,正如我們的記憶示例所示。

緩解方法

我們尚未系統地測試緩解措施,但根據我們的分析概述了幾個方向:

  • 懲罰 L0 不對稱性:可以添加一個正則化項,抑制各層特徵激活的極端差異。然而,這存在風險,即當某一層確實執行極少計算時,會強行產生偽特徵。
  • 分離解碼器範數懲罰:最直接的修復是修改稀疏性懲罰,對每一層的解碼器分別計算 L2 範數之和,而不是計算拼接向量的範數。這消除了我們識別出的幾何優勢:使用 N 個解碼器向量的成本將約為 N 而非約為 √N,從而與在每一層使用獨立特徵的成本相匹配。我們尚未訓練具有此修改的 CLT。
  • 限制特徵跨度:架構約束可以限制單個特徵可以解碼到的層數,例如使用 k 個下游層的滑動窗口。這犧牲了表示真正跨層疊加的部分能力,但迫使多步計算使用多個特徵。這還能顯著降低 CLT 的訓練計算強度:不再需要學習所有層對的解碼器(其規模隨層數 n 呈 n^2 增長),而只需學習 n⋅k 個解碼器。在大模型中這是一個巨大的優勢,例如 n=80 但僅允許解碼到後續 k=5 層。
  • 輔助忠實性損失:一種更原則性的方法可能是獎勵那些激活值與每層實際神經元激活值相關的特徵,而不僅僅是獎勵輸出重構。這直接激勵了對模型內部狀態的追蹤。
  • 局部跨層轉碼器:另一種務實的緩解措施是限制每個特徵的解碼器僅寫入下游層的一個局部鄰域,例如後續 k=5 層,而不是允許寫入所有後續層。這並不能從根本上消除「摺疊」多步計算的動機,因為特徵仍可以在其窗口內跨越多層,且窗口可以鏈接。但在實踐中,這可以合理地修復常見案例:我們看到的許多有問題的吸收涉及長程解碼,即單個特徵有效地跳過了中間計算。強制局部性使得 CLT 更難繞過這些步驟,並鼓勵表示暴露中間特徵而非將其壓縮掉。這是一種 80/20 風格的緩解:它可能無法保證忠實性,但可以大幅減少最嚴重的失敗,同時透過將全對解碼替換為 n⋅k 解碼來降低訓練成本。

我們認為分離解碼器範數懲罰是最有前景的短期實驗方向,因為它直接解決了成本不對稱問題,且不需要架構更改或輔助目標。

局限性

我們的主要演示使用了一個極小的玩具模型,它是我們手工製作的,具有已知的地面真值特徵。雖然這種受控環境使我們能夠明確識別不忠實性,但玩具模型的 16 種可能輸入和簡單布林函數可能無法代表真實的語言模型。在更高維度的設置中,查表捷徑可能變得不可行,從而迫使產生更具組合性的表示。

來自 Gemma-2-2B 的證據具有啟發性但非決定性。由於沒有模型實際執行計算的地面真值,我們無法確定哪種解釋(CLT 或 PLT)是正確的。模型有可能確實透過淺層查表實現記憶,而 CLT 忠實地表示了這一點,而 PLT 則虛構了偽造的中間結構。我們的理論預測了 CLT 的不忠實性,但這個特定案例也有可能是 CLT 恰好正確的情況。

最後,我們的分析集中在 MLP 上,並未檢查注意力層。跨越注意力計算的跨層轉碼器可能會表現出不同的失敗模式,因為注意力的計算結構與前饋層顯著不同。

結論

跨層轉碼器在處理逐層替代方案時具有計算優勢,特別是在處理跨層疊加方面。然而,實現這些優勢的相同架構特性,也產生了對不忠實表示的系統性偏差,將中間計算摺疊成淺層的輸入-輸出映射。

我們在已知地面真值特徵的玩具模型中證明了這種不忠實性,解釋了產生這種偏差的損失函數動態,並提供了證據顯示該現象影響了真實語言模型的可解釋性——根據所使用的工具,對模型行為會得出截然不同的結論。

理解並緩解這一忠實性問題對於機制可解釋性領域至關重要。我們希望這項工作能促使人們在解釋 CLT 電路時保持謹慎,並推動對能更好平衡效率與忠實性的訓練程序的進一步研究。

附錄

貢獻

Georg 提出了研究問題。Rick 選擇並手工製作了模型。Georg 在手工製作的模型上訓練了 CLT。Rick 和 Georg 解釋了這些 CLT 並撰寫了結果。Georg 進行了真實語言模型的實驗並撰寫了該部分。Kamal 和 Kat 進行了「CLT 電路歸因於早期層」部分的實驗並撰寫了該部分。Georg 透過 SPAR AI 項目指導了 Kamal 和 Kat。Rick 和 Georg 撰寫了結論部分。我們共同編輯了這篇報告。

JumpReLU CLT (L0=2) 的完整分析

我們訓練了一個具有 32 個特徵的 JumpReLU CLT,並調整稀疏係數使兩層的總 L0 為 2。CLT 學習到在第 0 層激活約 2 個特徵,而在第 1 層不激活任何特徵。在第 0 層,32 個特徵中有 8 個是存活的。我們僅繪製存活特徵的權重和激活值。

編碼器權重學習了輸入特徵的不同組合:
一個特徵在應輸出 1 的輸入時激活,兩個或三個特徵在應輸出 -1 的輸入時激活。

觀察兩個第 0 層解碼器可以揭示這些特徵如何組合,從而完美恢復兩層的重構:
為了僅從第 0 層特徵解碼最終結果,解碼器向量對在正確結果上激活的 4 個特徵為正,對其餘特徵為負。因為除了正確解法外的所有情況也會激活具有負解碼器權重的特徵,它們有效地相互抵消了。

JumpReLU PLT (L0=2) 的完整分析

為了理解 PLT 學習了什麼電路,我們再次繪製整個數據集的權重、激活值和重構。我們展示兩層中存活特徵的權重。至關重要的是,第 1 層編碼器僅對中間子空間 efgh 學習到非零權重:

觀察特徵激活揭示了第 1 層轉碼器學習了第 1 層的實際行為:它僅在結果為 TRUE 的輸入時激活,而在其餘輸入時不激活:

解碼器權重顯示了這些特徵如何轉換為重構:

以下是 PLT 的重構結果: