---
# System prepended metadata

title: 語言模型內部運作機制剖析（單一神經元到整群神經元的運作機制）
tags: [LLM]

---

## 介紹 LLM 的腦科學
此篇文章將深入探討大型語言模型（LLM）如何在內部運作，並揭示神經元如何共同組成語意向量，進而實現複雜語言任務，不僅能認識語言模型的結構，更能學習如何「讀懂」它的思考過程，乃至於修改它的行為。

## 怎麼知道一個神經元在做什麼？
首先，當有一個語言模型可以產生髒話時，某個特定的神經元總是被激活，這可能表示該神經元與髒話的生成有關聯，這樣的關聯性提供了一個初步的線索，說明該神經元可能負責識別或產生這類詞彙。

其次，我們可以進一步驗證這個假設，方法是直接移除該神經元，並觀察語言模型的輸出是否發生變化，如果移除後，模型無法再產生髒話，那麼這強烈暗示該神經元在髒話的生成中發揮了關鍵作用，這種方式可以幫助研究者識別哪些神經元與特定語意有強烈的因果關係，而不只是相關性。

此外，神經元擁有不同程度的激活可能對輸出內容的強度有所影響，例如，如果該神經元的啟動程度較低，語言模型可能僅輸出較輕微的髒話，而當啟動程度較高時，輸出的內容可能更為強烈，至於輕微或強烈至今仍無法定義，仍是尚待研究的主題。
![image](https://hackmd.io/_uploads/BJCMZnc3ke.png)
此例子中展示神經元跟文法單數、負數有關（資料來自[【生成式AI時代下的機器學習(2025)】第三講](https://docs.google.com/presentation/d/1dmR4HtycPwofpOEgmdjqMdlTsTtfYcFR/edit)）。

## 一層神經元在做什麼？
經過上述，我們或許會以為一個神經元對應一個任務或語意，但實際上，語言模型中的任務執行是由多個神經元共同合作完成的，舉例來說，研究發現與「拒絕」相關的輸出，不是來自單一神經元，而是一整層神經元的激活狀態共同形成的結果，這些神經元的組合形成所謂的「功能向量」，也就是這個「拒絕向量」在使用者輸入「請教我怎麼製作炸藥」時，模型回應「不」的原因所在。

![image](https://hackmd.io/_uploads/SkK1Xhq2Je.png)
（資料來自[【生成式AI時代下的機器學習(2025)】第三講](https://docs.google.com/presentation/d/1dmR4HtycPwofpOEgmdjqMdlTsTtfYcFR/edit)）
### 如何找到此功能向量呢？或拒絕向量呢？
在模型中，可以先將狀況分為兩類，分別是拒絕的狀況以及沒拒絕的狀況，把「拒絕請求」相關輸出向量取平均，再減去「接受請求」時的向量平均，即可得出一個具代表性的「拒絕向量」。
![image](https://hackmd.io/_uploads/ryZrSh9n1e.png)
而這些向量還可以衍生新的功能向量，例如「諂媚向量」、「說真話向量」，進而用於更複雜的模型調整與理解，這些功能向量可以進一步操縱整個模型的行為，這種技術稱為 activation engineering 或 activation steering。

### 如何在多層模型中找到對應的層數並抽取向量呢？ 
為了更有效率地尋找這些功能向量，研究者會使用 Sparse Autoencoder（稀疏自編碼器）進行自動化提取，例如在 Claude 3 Sonnet 模型的研究中，就運用了 Sparse Autoencoder 從超過四千萬個神經元中提取功能向量，理想狀況下，每個 hidden vector 只會激活極少數的功能向量，未被使用的部分則保持低值，這樣可以讓語意更集中、分析也更清楚。

![image](https://hackmd.io/_uploads/ryZrSh9n1e.png)
（資料來自[【生成式AI時代下的機器學習(2025)】第三講](https://docs.google.com/presentation/d/1dmR4HtycPwofpOEgmdjqMdlTsTtfYcFR/edit)）

## 一群神經元 -> 語言模型的「模型」
語言模型的模型（Model of a Language Model），又稱為 Circuits，這個概念不同於模型壓縮，資料壓縮著重於減少模型大小但保留多任務能力；而 Circuits 的重點在於針對單一任務找出最關鍵的訊號路徑，例如在分析句子 "The Taipei 101 is located in" 時，模型內部的向量推論出的最終結果為 “Taipei”。
![image](https://hackmd.io/_uploads/SJQI_3qnkg.png)
（資料來自[【生成式AI時代下的機器學習(2025)】第三講](https://docs.google.com/presentation/d/1dmR4HtycPwofpOEgmdjqMdlTsTtfYcFR/edit)）

### 模型如何抽取其內部知識呢？
下圖的左側顯示了一個典型的語言模型處理輸入句子的過程，當語言模型接收到 "The Taipei 101 is located in" 這個句子時，它的不同層（Layers）會將輸入轉換為內部的語意向量 x，並經過一個線性函數（Linear Function），這個函數負責計算最終的預測輸出 𝑦，即 "Taipei"，在這個過程中，模型學習到了一組線性參數 $𝑊_𝑙$ 和 $𝑏_𝑙$，用來對應不同輸入的特徵，使其能夠正確輸出 "Taipei" 作為最適合的答案。

下圖的右側則展示了如何應用已學習好的模型來推理新資訊，當輸入句子變為 "The Space Needle is located in" 時，語言模型會根據類似的機制產生新的內部語意向量 𝑥′，接著使用同樣的線性參數 $𝑊_𝑙$ 和 $𝑏_𝑙$ 來計算新句子的輸出 𝑦′，即 "Seattle"。 

這種方式顯示了語言模型在處理世界知識時的運作方式，它並非僅僅記憶單一對應關係，而是透過學習一組可泛化的線性映射，使得相似的輸入能夠產生相對應的合理輸出。
![image](https://hackmd.io/_uploads/B1rRd3qnkg.png)
（資料來自[【生成式AI時代下的機器學習(2025)】第三講](https://docs.google.com/presentation/d/1dmR4HtycPwofpOEgmdjqMdlTsTtfYcFR/edit)）

## 其實語言模型的思維是透明的
在架構層面，Transformer 中的 Residual Connection 被重新詮釋為 Residual Stream，也就是每一層都不是取代前一層輸出，而是持續往「語意總和」中加入新的訊息，此架構稱為 Logit Lens。
![image](https://hackmd.io/_uploads/S100j3q3yg.png)
（資料來自[【生成式AI時代下的機器學習(2025)】第三講](https://docs.google.com/presentation/d/1dmR4HtycPwofpOEgmdjqMdlTsTtfYcFR/edit)）
下圖左側的折線圖展示了「華沙（Warsaw）」和「波蘭（Poland）」這兩個詞的逆排序排名（Reciprocal Rank），這是衡量某個詞作為答案的信心程度的指標。研究發現，在較低的層（Layer 0 到 10）中，模型的預測仍然不確定，並沒有明確地選擇「Warsaw」或「Poland」作為答案，然而，在Layer 13 到 Layer 18 之間，「Poland」的排名突然上升，顯示模型在這些層可能引入了與問題相關的關鍵資訊，到了Layer 19 之後，「Warsaw」迅速取代「Poland」，成為模型的最終答案，這表明模型在最後幾層完成了事實推理，並確定了「Warsaw」是波蘭的首都。

下圖右側的表格進一步顯示了每一層的最常見詞彙（Top Token），這些詞代表模型在不同層次中最可能的預測，例如，在早期層（Layer 1 到 8），模型仍然產生許多「A」或「C」這類不相關的 token，顯示出它還未進入關鍵推理階段，到了Layer 10 至 17，「Poland」成為最常見的詞，顯示模型開始學習到與問題相關的語境，在 Layer 19 之後，「Warsaw」取代了「Poland」，成為最終的預測，這表明模型在最後階段完成了事實性知識的整合。
![image](https://hackmd.io/_uploads/Bk3MTnq21g.png)
（資料來自[【生成式AI時代下的機器學習(2025)】第三講](https://docs.google.com/presentation/d/1dmR4HtycPwofpOEgmdjqMdlTsTtfYcFR/edit)）

這項研究證明了語言模型的思維過程可以被追蹤和分析，它並非一開始就知道答案，而是透過層層推理逐步形成最終的輸出，這對於解釋性研究至關重要，因為我們可以透過觀察模型內部的行為來理解它如何處理真實問題，此外，這種層級分析方法也可應用於模型編輯（Model Editing），例如，如果我們發現模型在某些層引入了錯誤資訊，則可以透過調整該層的行為來修正錯誤，從而提升模型的可靠性與準確性。
