大型語言模型 (LLM) 取得了令人矚目的進展,這些大型模型可以執行各種任務,從生成類似人類的文本到回答問題。然而,理解這些模型的工作原理仍然具有挑戰性,尤其是因為存在一種稱為疊加的現象,其中特徵混合在一個神經元中,使得從原始模型結構中提取人類可理解的表示變得非常困難。這就是稀疏自動編碼器等方法似乎能夠解開特徵以提高可解釋性的原因。
在這篇博文中,我們將使用稀疏自動編碼器在一個特別有趣的賓語-動詞一致性案例中尋找一些特徵迴路,並了解模型組件如何為該任務做出貢獻。
在神經網絡的背景下,特徵迴路是網絡如何學習組合輸入特徵以在更高層次上形成複雜模式的方式。我們使用“迴路”的隱喻來描述特徵如何在神經網絡的各層中進行處理,因為這種處理方式讓我們想起了電子電路中處理和組合信號的過程。
這些特徵迴路通過神經元和層之間的連接逐漸形成,其中每個神經元或層負責轉換輸入特徵,它們的交互作用導致有用的特徵組合一起發揮作用,從而做出最終預測。
以下是特徵迴路的一個示例:在許多視覺神經網絡中,我們可以找到“一個迴路,作為一個檢測不同角度方向曲線的單元族。曲線檢測器主要由早期、不太複雜的曲線檢測器和線檢測器實現。這些曲線檢測器在下一層用於創建3D 幾何形狀和復雜的形狀檢測器”[1]。
在接下來的章節中,我們將研究 LLM 中用於主謂一致任務的一個特徵迴路。
在機器學習的背景下,我們有時會觀察到疊加,指的是模型中的一個神經元表示多個重疊特徵而不是單個、不同的特徵的現象。例如,InceptionV1 包含一個神經元,它對貓臉、汽車前部和貓腿做出反應。
這就是稀疏自動編碼器 (SAE) 的作用所在。
SAE 有助於我們將網絡的激活解開成一組稀疏特徵。這些稀疏特徵通常是人類可以理解的,使我們能夠更好地理解模型。通過將 SAE 應用於 LLM 模型的隱藏層激活,我們可以隔離有助於模型輸出的特徵。
您可以在我之前的博文中找到 SAE 工作原理的詳細信息。
主謂一致是英語中的一條基本語法規則。句子中的主語和謂語動詞在數量上必須一致,即單數或複數。例如:
對於人類來說,理解這條簡單的規則對於文本生成、翻譯和問答等任務非常重要。但是我們如何知道 LLM 是否真的學習了這條規則呢?
我們現在將探討 LLM 如何為這項任務形成特徵迴路。
現在讓我們構建創建特徵迴路的過程。我們將分四個步驟進行:
我們首先構建一個玩具語言模型,它可能與以下代碼完全沒有意義。這是一個具有兩層簡單層的神經網絡。
對於主謂一致,模型應該:
<code># ====== 定义基础模型(模拟主谓一致)====== class SubjectVerbAgreementNN(nn.Module): def __init__(self): super().__init__() self.hidden = nn.Linear(2, 4) # 2 个输入 → 4 个隐藏激活 self.output = nn.Linear(4, 2) # 4 个隐藏 → 2 个输出 (runs/run) self.relu = nn.ReLU() def forward(self, x): x = self.relu(self.hidden(x)) # 计算隐藏激活 return self.output(x) # 预测动词</code>
目前還不清楚隱藏層內部發生了什麼。因此,我們引入了以下稀疏自動編碼器:
<code># ====== 定义稀疏自动编码器 (SAE) ====== class c(nn.Module): def __init__(self, input_dim, hidden_dim): super().__init__() self.encoder = nn.Linear(input_dim, hidden_dim) # 解压缩为稀疏特征 self.decoder = nn.Linear(hidden_dim, input_dim) # 重构 self.relu = nn.ReLU() def forward(self, x): encoded = self.relu(self.encoder(x)) # 稀疏激活 decoded = self.decoder(encoded) # 重构原始激活 return encoded, decoded</code>
我們訓練原始模型 SubjectVerbAgreementNN 和 SubjectVerbAgreementNN,使用旨在表示動詞的不同單數和復數形式的句子,例如“The cat runs”、“the babies run”。但是,和之前一樣,對於玩具模型,它們可能沒有實際意義。
現在我們可視化特徵迴路。如前所述,特徵迴路是用於處理特定特徵的神經元單元。在我們的模型中,特徵包括:
您可以在圖中看到我們將特徵迴路可視化為一個圖:
對於真實案例,我們在 GPT2-small 上運行類似的代碼。我們顯示了表示選擇單數動詞的決策的特徵迴路圖。
特徵迴路幫助我們了解複雜 LLM 中的不同部分如何導致最終輸出。我們展示了使用 SAE 為主謂一致任務形成特徵迴路的可能性。
但是,我們必須承認,這種方法仍然需要一些人為乾預,因為我們並不總是知道在沒有適當設計的情況下是否真的可以形成迴路。
[1] 縮放:電路簡介
Please note that I have preserved the image placeholders and assumed the images are still accessible at the provided URLs. I have also maintained the original formatting as much as possible while rewording and restructuring the text for improved flow and clarity. The code blocks remain unchanged.
以上是LLM中具有稀疏自動編碼器的特徵電路的配方的詳細內容。更多資訊請關注PHP中文網其他相關文章!