Claude團(tuán)隊打開大模型「腦回路」,開源LLM思維可視化工具來了
Claude團(tuán)隊來搞開源了——
推出“電路追蹤”(circuit tracing)工具,可以幫大伙兒讀懂大模型的“腦回路”,追蹤其思維過程。
該工具的核心在于生成歸因圖(attribution graphs),其作用類似于大腦的神經(jīng)網(wǎng)絡(luò)示意圖,通過可視化模型內(nèi)部超節(jié)點(diǎn)及其連接關(guān)系,呈現(xiàn)LLM處理信息的路徑。
研究人員通過干預(yù)節(jié)點(diǎn)激活值,觀察模型行為變化,從而驗證各節(jié)點(diǎn)的功能分工,解碼LLM的“決策邏輯”。
官方表示,此次發(fā)布的開源庫支持在主流開源權(quán)重模型上快速生成歸因圖,而Neuronpedia托管的前端界面則進(jìn)一步允許用戶交互式探索。
總之,研究人員能夠:
- 通過生成自有歸因圖,在支持的模型上進(jìn)行電路追蹤;
- 在交互式前端中可視化、注釋和分享圖表;
- 通過修改特征值并觀察模型輸出變化來驗證假設(shè)。
Anthropic CEO Dario Amodei表示:
目前,我們對AI內(nèi)部運(yùn)作的理解遠(yuǎn)遠(yuǎn)落后于其能力的發(fā)展。通過開源這些工具,我們希望讓更廣泛的社區(qū)更容易研究語言模型的內(nèi)部機(jī)制。我們期待看到這些工具在理解模型行為方面的應(yīng)用,以及對工具本身的改進(jìn)拓展。
目前,該項目開源不到24小時,在GitHub就已攬獲400+Star。
在Reddit、X上都有不少網(wǎng)友點(diǎn)贊&討論。
有網(wǎng)友直呼“DeepSeek肯定喜歡這個”。
還有網(wǎng)友認(rèn)為“歸因圖可能成為LLM研究的顯微鏡”。
“電路追蹤”食用教程
除了宣布開源外,Anthropic依據(jù)介紹電路追蹤方法的原始論文《On the Biology of a Large Language Model》中多步推理和多語言電路示例,利用該工具深入探究了幾個涉及Gemma-2-2b的歸因圖。
一起來看看具體示例和分析。
如果想生成自己的圖,可以在Neuronpedia上進(jìn)行操作,也可以直接在Colab中使用這個起始notebook進(jìn)行操作。
兩階推理
先來看一個兩階推理示例。
問題:包含達(dá)拉斯的州的首府是?(Fact: The capital of the state containing Dallas is → Austin)
模型必須首先推斷出包含達(dá)拉斯的州是得克薩斯州;然后,回答得克薩斯州首府是奧斯汀。
介紹電路追蹤方法的原始論文中表明,模型Claude 3.5 Haiku使用以下電路解決了該問題,計算了“包含達(dá)拉斯的州”這一中間步驟。
而對Gemma 2(2B)進(jìn)行歸因分析表明,它使用以下電路成功完成了prompt任務(wù):
該電路結(jié)構(gòu)與Claude 3.5 Haiku的類似,存在一個對應(yīng)“得克薩斯州”的節(jié)點(diǎn),并同時顯示從“達(dá)拉斯”到“奧斯汀”的直接路徑以及經(jīng)過“得克薩斯州”的間接路徑。
歸因圖基于使用transcoders來近似多層感知機(jī)(MLP)的行為,提出了關(guān)于模型行為的假設(shè)。
Anthropic表示,可以通過直接對底層模型進(jìn)行干預(yù),來驗證他們對模型行為的理解是否正確。
對圖中所示的每個超節(jié)點(diǎn)(supernodes)進(jìn)行干預(yù),首先需要從該圖中獲取超節(jié)點(diǎn)。
Anthropic提供了一個便捷函數(shù),可將電路URL(及其中存儲的超節(jié)點(diǎn))映射到Feature對象列表。每個Feature對象是一個(layer, position, feature_index)元組。
然后,創(chuàng)建用于解決此任務(wù)的電路表示。
首先需定義一些超節(jié)點(diǎn)對象(Supernode objects),這些對象將存儲底層Feature列表,以及受其因果影響的子超節(jié)點(diǎn)。
再初始化一個干預(yù)圖(InterventionGraph),用于存儲所有超節(jié)點(diǎn)并跟蹤它們的狀態(tài)。
另外,還需要獲取模型在此提示下的logits和激活值。
設(shè)置每個節(jié)點(diǎn)的默認(rèn)激活值(即未進(jìn)行干預(yù)時,原始提示下的激活值),并設(shè)定其激活分?jǐn)?shù),激活分?jǐn)?shù)為節(jié)點(diǎn)當(dāng)前激活值與默認(rèn)激活值的比值。
由于當(dāng)前激活值與默認(rèn)激活值相同,因此每個節(jié)點(diǎn)的激活分?jǐn)?shù)均為100%。
另外還將記錄top-5的logits,然后對圖表進(jìn)行可視化。
結(jié)果顯示電路與在可視化完整圖表時創(chuàng)建的超節(jié)點(diǎn)吻合。
現(xiàn)在,通過干預(yù)驗證每個超節(jié)點(diǎn)是否如假設(shè)般發(fā)揮作用,每次干預(yù)會將節(jié)點(diǎn)值設(shè)定為原始值的特定倍數(shù)。
在介紹電路追蹤方法的原始論文中,關(guān)閉“說出一個首府”(Say a capital)Feature會導(dǎo)致“說出奧斯汀”(Say Austin)超節(jié)點(diǎn)關(guān)閉,且模型的最高logits變?yōu)榈每怂_斯州(Texas)。
若接下來對Gemma 2(2B)歸因圖進(jìn)行相同操作,會發(fā)生什么?
結(jié)果觀察到了完全相同的現(xiàn)象。強(qiáng)行關(guān)閉“說出一個首府”超節(jié)點(diǎn)后,“說出奧斯汀”節(jié)點(diǎn)也隨之關(guān)閉,模型的最高logit變?yōu)榱说每怂_斯州。
那如果關(guān)閉“首府”(capital)超節(jié)點(diǎn)會怎樣?
與之前的干預(yù)行為類似:關(guān)閉“說出一個首府” 超節(jié)點(diǎn),但沒有像之前那樣強(qiáng)烈,也部分關(guān)閉了“說出奧斯汀”節(jié)點(diǎn)。
如果我們關(guān)閉“得克薩斯州”超節(jié)點(diǎn)會怎樣?
關(guān)閉“得克薩斯州”超節(jié)點(diǎn)同樣會使“說出奧斯汀”節(jié)點(diǎn)失效,導(dǎo)致模型輸出其它州的首府。
如果關(guān)閉“州”(state)超節(jié)點(diǎn)會怎樣?
關(guān)閉“州”超節(jié)點(diǎn)效果并不明顯,它對其它超節(jié)點(diǎn)的激活狀態(tài)幾乎沒有影響,模型的logits也幾乎沒有變化。
現(xiàn)在已經(jīng)通過剔除節(jié)點(diǎn)驗證了其行為。
那么,能否注入完全不同的節(jié)點(diǎn)并驗證其是否產(chǎn)生預(yù)期效果?
以prompt“包含奧克蘭的州的首府是( Fact: The capital of the state containing Oakland is → Sacramento)”中的電路為例,從該圖中提取兩個超節(jié)點(diǎn)“加利福尼亞州”(California)和 “說出薩克拉門托”(Say Sacramento),并將其添加到干預(yù)圖中。
然后,進(jìn)行干預(yù)操作:關(guān)閉“得克薩斯州”超節(jié)點(diǎn),并激活“加利福尼亞州”超節(jié)點(diǎn)。
這樣做導(dǎo)致“說出奧斯汀”節(jié)點(diǎn)完全關(guān)閉,而“說出薩克拉門托”節(jié)點(diǎn)開始激活,模型最高輸出現(xiàn)在也變?yōu)樗_克拉門托。
還可以將州替換為國家進(jìn)行類似實驗。以Prompt“包含上海的國家的首都是(Fact: The capital of the country containing Shanghai is → Beijing)”的電路為例,執(zhí)行與之前完全相同的操作:
禁用“得克薩斯州”超節(jié)點(diǎn),并激活“中國”超節(jié)點(diǎn)。這次雖然沒有“說出北京”節(jié)點(diǎn),但這種干預(yù)的效果應(yīng)該會在logits中顯現(xiàn)。
結(jié)果同樣有效,北京現(xiàn)在成為模型最可能的輸出。
那總是會有效嗎?
再用Prompt“包含溫哥華的地區(qū)的首府是(Fact: the capital of the territory containing Vancouver is → Victoria)”的電路來試試。
在這種情況下,干預(yù)效果并不顯著。
模型的輸出看起來與僅剔除“得克薩斯州”時的結(jié)果類似,這表明“不列顛哥倫比亞省”(British Columbia)節(jié)點(diǎn)的加入幾乎沒有產(chǎn)生作用。
多語言電路
接下來Anthropic還探討了原論文中研究的多語言電路。
具體而言,將考察三個電路,分別對應(yīng)三種語言的同一句子:
關(guān)于Claude 3.5 Haiku的研究展示了一個共享的多語言電路:
與Haiku的電路不同,Gemma 2(2B)的電路從本質(zhì)上完全具備多語言特性。
模型中并不存在獨(dú)立的“Say big”或“Say grand”超節(jié)點(diǎn)來驅(qū)動其用特定語言輸出對應(yīng)答案。相反,所有電路均采用 “Say big”Feature,若答案為非英語,則會結(jié)合“French”或“Chinese”Feature共同作用。
接下來,通過對這些電路進(jìn)行干預(yù)實驗來展開研究。
首先,如前所述創(chuàng)建超節(jié)點(diǎn)對象(Supernode objects):
然后,獲取這些節(jié)點(diǎn)的激活值,對其進(jìn)行初始化,并生成可視化圖表。
現(xiàn)在進(jìn)行第一次干預(yù)操作:關(guān)閉“French”超節(jié)點(diǎn)。
在關(guān)閉“French”超節(jié)點(diǎn)后,模型輸出變成了英文。
值得注意的是,這對“Say big”超節(jié)點(diǎn)僅產(chǎn)生輕微影響,二者的作用似乎相互獨(dú)立。
再嘗試將語言切換為另一種:關(guān)閉“French”超節(jié)點(diǎn),并激活“Chinese”超節(jié)點(diǎn)。
正如預(yù)期,干預(yù)后的模型輸出與中文示例的原始輸出一致。
那如果將“small”Feature替換為“big”會怎樣?
將“small”超節(jié)點(diǎn)替換為“big”超節(jié)點(diǎn)后,導(dǎo)致“說出big”超節(jié)點(diǎn)關(guān)閉,同時一個新的“Say small”超節(jié)點(diǎn)被激活。
模型的輸出在法語中變?yōu)椤皃etit”(即 “small”)。
接下來是最后一項干預(yù),能否將“opposite”(反義詞)超節(jié)點(diǎn)替換為 “synonym”(同義詞),以獲取同義輸出?
雖然該模型并不擅長處理同義詞:當(dāng)輸入“Un synonyme de ‘petit’ est ‘”(“petit”的同義詞是“”)時,模型會重復(fù)輸出“petit”,而非其它同義詞。
但是,仍可觀察此干預(yù)是否會復(fù)現(xiàn)該行為。
不過最終這項干預(yù)并未奏效。盡管“Say small”超節(jié)點(diǎn)被激活,但“Say big”也保持激活狀態(tài),模型的輸出并未改變。
Anthropic團(tuán)隊認(rèn)為這并不意外,如果觀察該任務(wù)的原始電路,會發(fā)現(xiàn)“opposite”(反義詞)超節(jié)點(diǎn)與輸出端僅存在弱連接。因此,盡管它本應(yīng)發(fā)揮作用,但其因果效應(yīng)相當(dāng)有限。
更多細(xì)節(jié)大伙兒可自行查閱。
另外作為啟發(fā),Anthropic在demo notebook和Neuronpedia上提供了尚未分析的額外歸因圖,感興趣的童鞋可以親自上手研究研究。
GitHub鏈接:https://github.com/safety-research/circuit-tracer?tab=readme-ov-file