AI・機械学習
上級

Sparse Autoencoder (SAE)(スパースオートエンコーダー)

LLMの活性化ベクトルから解釈可能な特徴を抽出するための自己符号化器。L1正則化で多くの特徴をゼロにし、少数の有効特徴のみが活性化する「スパース」表現を学習することでPolysemanticity問題を緩和する。

0 回閲覧
0 いいね
2026/6/7 更新
関連タグ
SAE
Mechanistic Interpretability
特徴抽出
Superposition
Anthropic

Sparse Autoencoder (SAE)

Sparse Autoencoder(SAE、スパース自己符号化器)は、LLMの活性化ベクトルを分解・解析するためのツールで、Mechanistic Interpretability研究における中核的な手法として2024年にAnthropicの「Scaling Monosemanticity」論文で大きな注目を集めた。

なぜSAEが必要か:Superpositionの問題

LLMは「Superposition(重ね合わせ)」と呼ばれる現象で、実際のニューロン数(次元数)よりもはるかに多くの特徴量を圧縮して学習している。この圧縮により、単一のニューロンが複数の無関係な概念に反応する「Polysemanticity(多義性)」が生じ、個々のニューロンを解析しても意味のある解釈が困難になる。SAEはこの圧縮表現を高次元のスパースな空間に「展開」することで、各特徴を分離・同定可能にする。

アーキテクチャ

SAEは以下のシンプルな構造で動作する:

import torch
import torch.nn as nn

class SparseAutoencoder(nn.Module):
    def __init__(self, input_dim: int, hidden_dim: int):
        super().__init__()
        self.encoder = nn.Linear(input_dim, hidden_dim, bias=True)
        self.decoder = nn.Linear(hidden_dim, input_dim, bias=False)
        self.decoder.weight.data = nn.functional.normalize(self.decoder.weight.data, dim=0)

    def forward(self, x):
        features = torch.relu(self.encoder(x))  # スパース性を強制
        reconstruction = self.decoder(features)
        return features, reconstruction

    def loss(self, x, features, reconstruction, lambda_l1=1e-3):
        recon_loss = torch.mean((x - reconstruction) ** 2)
        l1_loss = lambda_l1 * torch.mean(torch.abs(features))
        return recon_loss + l1_loss
  • Input dim: LLMの隠れ層次元(例: GPT-2では768次元)
  • Hidden dim: SAEの特徴数(通常input_dimの4〜64倍、例: 16384〜49152次元)
  • L1正則化: ほとんどの特徴をゼロにし、少数の特徴のみを有効化させる(スパース性の強制)

Anthropic "Scaling Monosemanticity" (2024)の成果

AnthropicはClaude 3 Sonnetに対してSAEを適用し:

  • 100万以上の解釈可能な特徴を同定
  • 多くの特徴が特定の概念(人物名・場所・コード構文・感情等)に対応することを確認
  • 「Golden Gate Claude」実験:特定の特徴を過剰活性化させることで、モデルに「Golden Gate Bridgeの話題を何事にも結びつける」強迫観念を一時的に与えることに成功

応用:Feature Steering

同定した特徴に対して活性化の操作(加算・減算)を行うことで、モデルの出力を制御できる:

# 「フランス語」特徴を増幅して英語入力でもフランス語で応答させる
with model.hooks([(hook_point, lambda activations: activations + 20 * french_feature)]):
    output = model.generate("Hello, how are you?")
# → "Bonjour, comment allez-vous?" 傾向が高くなる

2025年時点の発展

  • JumpReLU SAE: より効率的なスパース性制御を実現する改良版
  • TopK SAE: 上位K個の特徴のみを活性化させる変形
  • Hierarchical SAE: 複数の抽象レベルで特徴を階層的に分析
  • EleutherAI SAE Training: オープンソースのSAEトレーニングフレームワーク公開

SAEはLLMの「ブラックボックス」問題に対する最も具体的・実用的なアプローチとして、AI安全研究コミュニティで急速に普及している。

この記事について
カテゴリーAI・機械学習
難易度上級
作成日2026/6/7