首頁 > 科技週邊 > 人工智慧 > LLM中具有稀疏自動編碼器的特徵電路的配方

LLM中具有稀疏自動編碼器的特徵電路的配方

王林
發布: 2025-02-26 01:46:08
原創
616 人瀏覽過

大型語言模型 (LLM) 取得了令人矚目的進展,這些大型模型可以執行各種任務,從生成類似人類的文本到回答問題。然而,理解這些模型的工作原理仍然具有挑戰性,尤其是因為存在一種稱為疊加的現象,其中特徵混合在一個神經元中,使得從原始模型結構中提取人類可理解的表示變得非常困難。這就是稀疏自動編碼器等方法似乎能夠解開特徵以提高可解釋性的原因。

在這篇博文中,我們將使用稀疏自動編碼器在一個特別有趣的賓語-動詞一致性案例中尋找一些特徵迴路,並了解模型組件如何為該任務做出貢獻。

關鍵概念

特徵迴路

在神經網絡的背景下,特徵迴路是網絡如何學習組合輸入特徵以在更高層次上形成複雜模式的方式。我們使用“迴路”的隱喻來描述特徵如何在神經網絡的各層中進行處理,因為這種處理方式讓我們想起了電子電路中處理和組合信號的過程。

這些特徵迴路通過神經元和層之間的連接逐漸形成,其中每個神經元或層負責轉換輸入特徵,它們的交互作用導致有用的特徵組合一起發揮作用,從而做出最終預測。

以下是特徵迴路的一個示例:在許多視覺神經網絡中,我們可以找到“一個迴路,作為一個檢測不同角度方向曲線的單元族。曲線檢測器主要由早期、不太複雜的曲線檢測器和線檢測器實現。這些曲線檢測器在下一層用於創建3D 幾何形狀和復雜的形狀檢測器”[1]。

在接下來的章節中,我們將研究 LLM 中用於主謂一致任務的一個特徵迴路。

疊加和稀疏自動編碼器

在機器學習的背景下,我們有時會觀察到疊加,指的是模型中的一個神經元表示多個重疊特徵而不是單個、不同的特徵的現象。例如,InceptionV1 包含一個神經元,它對貓臉、汽車前部和貓腿做出反應。

這就是稀疏自動編碼器 (SAE) 的作用所在。

SAE 有助於我們將網絡的激活解開成一組稀疏特徵。這些稀疏特徵通常是人類可以理解的,使我們能夠更好地理解模型。通過將 SAE 應用於 LLM 模型的隱藏層激活,我們可以隔離有助於模型輸出的特徵。

您可以在我之前的博文中找到 SAE 工作原理的詳細信息。

案例研究:主謂一致

主謂一致

主謂一致是英語中的一條基本語法規則。句子中的主語和謂語動詞在數量上必須一致,即單數或複數。例如:

  • “The cat runs.”(單數主語,單數動詞)
  • “The cats run.”(複數主語,複數動詞)

對於人類來說,理解這條簡單的規則對於文本生成、翻譯和問答等任務非常重要。但是我們如何知道 LLM 是否真的學習了這條規則呢?

我們現在將探討 LLM 如何為這項任務形成特徵迴路。

構建特徵迴路

現在讓我們構建創建特徵迴路的過程。我們將分四個步驟進行:

  1. 我們首先將句子輸入模型。對於這個案例研究,我們考慮以下句子:
  • “The cat runs.”(單數主語)
  • “The cats run.”(複數主語)
  1. 我們在這些句子上運行模型以獲得隱藏激活。這些激活代表模型在每一層如何處理句子。
  2. 我們將激活傳遞給 SAE 以“解壓縮”特徵。
  3. 我們將特徵迴路構建為計算圖:
    • 輸入節點表示單數和復數句子。
    • 隱藏節點表示處理輸入的模型層。
    • 稀疏節點表示從 SAE 獲得的特徵。
    • 輸出節點表示最終決策。在本例中:runs 或 run。

玩具模型

我們首先構建一個玩具語言模型,它可能與以下代碼完全沒有意義。這是一個具有兩層簡單層的神經網絡。

對於主謂一致,模型應該:

  • 輸入一個帶有單數或複數動詞的句子。
  • 隱藏層將此類信息轉換為抽象表示。
  • 模型選擇正確的動詞形式作為輸出。
<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”。但是,和之前一樣,對於玩具模型,它們可能沒有實際意義。

現在我們可視化特徵迴路。如前所述,特徵迴路是用於處理特定特徵的神經元單元。在我們的模型中,特徵包括:

  1. 將語言屬性轉換為抽象表示的隱藏層
  2. 具有獨立特徵SAE,這些特徵直接有助於動詞-主語一致性任務。

Formulation of Feature Circuits with Sparse Autoencoders in LLM您可以在圖中看到我們將特徵迴路可視化為一個圖:

  • 隱藏激活和編碼器的輸出都是圖的節點。
  • 我們還有輸出節點作為正確的動詞。
  • 圖中的邊按激活強度加權,顯示哪些路徑在主謂一致決策中最為重要。例如,您可以看到從 H3 到 F2 的路徑起著重要作用。

GPT2-Small

對於真實案例,我們在 GPT2-small 上運行類似的代碼。我們顯示了表示選擇單數動詞的決策的特徵迴路圖。

Formulation of Feature Circuits with Sparse Autoencoders in LLM結論

特徵迴路幫助我們了解複雜 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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板