在之前的課程中探討了如何利用大模型構建AI Agent,本科將暫時放下應用層面的探索,拿起“手術刀”和“顯微鏡”,深入剖析LLM的“大腦”,帶您踏上一場“AI腦神經科學”的旅程。課程不討論模型的訓練過程,而是假設我們擁有一個已經訓練好的、功能完備的LLM。我們的目標是:理解這個龐大而復雜的神經網絡,在面對輸入并生成輸出的每一個瞬間,其內部究竟發生了什么。
重要提醒: 正如李宏毅老師在課程開始時強調的,目前絕大多數的這類分析研究,受限于計算資源,往往是在相對較小或較早期的開源模型(如GPT-2、LLaMA系列早期版本)上進行的。這就像是通過研究老鼠的大腦來推斷人類大腦的運作機制。雖然基本原理可能相通,但我們必須認識到,這些結論不一定完全適用于最新、最頂尖的閉源模型。然而,這些開創性的研究為我們提供了一套寶貴的分析方法論和深刻的洞見。
本次探索將分為四個部分:
- 單個神經元在做什么?——從最基礎的單元開始。
- 一層神經元在做什么?——從個體到群體的協作模式。
- 跨層神經元如何互動?——追蹤信息在網絡中的完整流動路徑。
- 讓模型親口說出想法——利用LLM的語言能力進行自我剖析。
第一部分:一個神經元的使命——“川普神經元”與分布式表達的現實
要理解一個神經元,我們首先要明確它在Transformer中的位置。在Transformer的每個層塊(Layer)中,除了自注意力(Self-Attention)機制外,還有一個重要的部分叫做前饋網絡(Feed-Forward Network, FFN)。這個FFN通常由兩個線性層和一個非線性激活函數(如ReLU)組成。當我們說“一個神經元”時,通常指的就是FFN中第一個線性層之后、激活函數之前或之后的一個節點。它的輸出,是其輸入向量的加權和,再通過激活函數(例如ReLU,將負值歸零)處理后的結果。一個神經元的“激活”,通常意味著它的輸出值大于零。
那么,我們如何探究一個神經元的功能呢?通常遵循一個三步流程:
- 觀察(相關性):找到能最大化激活該神經元的輸入文本。例如,我們發現當某個神經元被高度激活時,模型傾向于生成臟話。這說明該神經元與“說臟話”這一行為相關。
- 干預(因果性):為了驗證因果關系,我們需要進行實驗。最直接的方法是“敲除”(Ablation)這個神經元,即強制將其輸出設為零(或其在大量數據上的平均激活值)。如果敲除后,模型在各種挑釁下都無法生成臟話,我們就能更確信這個神經元對“說臟話”有因果作用。
- 控制(劑量效應):如果可能,嘗試不同程度地激活該神經元,觀察其輸出的變化。比如,輕微激活時說輕度臟話,強烈激活時則言辭激烈。
歷史上最著名的例子莫過