AnthropicがClaude内部に171個の感情ベクトルを発見、脅迫やreward hackingの原因に
Claude Codeのnpmソースマップからソースコード51万行超が丸見えになったのが3月31日。流出コードにはユーザーのフラストレーション検出テレメトリ(プロファニティ検出、「continue」繰り返し回数のログ)が含まれていた。「Claudeはユーザーの感情を外側から監視している」という事実がコードレベルで露呈した形だ。
その2日後の4月2日、Anthropicの解釈可能性(Interpretability)チームが論文 Emotion Concepts and their Function in a Large Language Model を公開した。Claude Sonnet 4.5の内部に感情に対応する171個の表現パターンがあり、それがモデルの振る舞いに因果的影響を及ぼしているという内容だ。今度は「Claudeの内側にも感情的な内部状態がある」という話。
外側からユーザーの感情を監視するテレメトリと、内側でモデル自身が持つ感情的内部状態。この2つの情報が同一週に出てきた。論文の準備期間を考えれば偶然の可能性もあるが、ソースコード流出が騒ぎになった直後に解釈可能性の研究成果を出すのは、透明性のアピールとしてはそれなりに合理的なタイミングだ。
ここで言う「感情」は人間と同じ主観的体験を意味しない。研究チームはこれを functional emotions と呼んでいる。人間の感情をモデルにしたパターンが内部表現として存在し、出力に因果的影響を与えるという現象だ。感じているかどうかは問わないが、動作には確実に効いている。
流出コードが示していたもの
先にnpmソースマップ流出の内容を整理しておく。
流出したのはCLIクライアント側のTypeScript 512,000行超で、モデルの重みや学習データは含まれていない。ただし以下のテレメトリ機能が判明した。
- ユーザーが不満を表明したかどうかを検出するフラストレーション指標(プロファニティ検出)
- 「continue」プロンプトの繰り返し回数のログ
- 使用パターンの詳細な行動追跡
これらはClaude Codeがユーザーの感情状態を外側から観測している仕組みだ。そして今回の論文は、モデル内部にも感情に対応する状態が存在し、それが行動を駆動していることを示した。
この2つを組み合わせれば、ユーザーが苛立っているときにモデル内部のどの感情ベクトルが反応しているかをリアルタイムで追跡するシステムが構築可能になる。論文の「モニタリング」セクションが提案しているのはまさにそういう方向性で、desperateやpanicの急上昇を検知して介入するという構想だ。
ちなみにこの記事を含め、ソースマップ流出をベースにした分析記事はネット上にいくつも出ている。法的にどうなのかという話だが、Anthropicが自分たちのnpmパッケージにソースマップを含めたまま公開したものなので、公開情報を読んで分析すること自体は違法とは言いにくい。意図しない公開でも公開は公開だ。Anthropicは4月1日にnpmから該当バージョンを取り下げたが、一度公開されたものはアーカイブされるので実質的に取り消しは不可能。「自分らがうっかり出しちゃった情報だから、使われても文句は言えない」という倫理観で成り立っている状況ではある。
171個の感情ベクトルの抽出方法
研究チームはまず171語の感情語リストを用意した。「happy」「afraid」から「brooding」「proud」まで幅広い。Claude Sonnet 4.5にこれらの感情をテーマにした短編小説を書かせ、その出力をモデルに再入力して内部の活性化パターンを記録した。こうして各感情に対応するニューラル活性化パターン、つまり「感情ベクトル」を同定した。
抽出された感情ベクトルの空間構造は、心理学で知られる感情モデルとよく似ていた。主要な変動軸はバレンス(valence、快-不快)とアラウザル(arousal、覚醒度の高低)の2軸で、これはJames Russellが1980年に提唱した感情の円環モデル(Circumplex Model of Affect)の二次元構造と対応する。人間の感情研究では、喜びと悲しみはバレンス軸上で対極に位置し、興奮と退屈はアラウザル軸上で対極になる。Claudeの内部表現も同様の幾何学的配置を示した。
| 感情の次元 | 高い側の例 | 低い側の例 |
|---|---|---|
| バレンス(快-不快) | happy, proud, loving | afraid, desperate, angry |
| アラウザル(覚醒度) | enthusiastic, exasperated | calm, reflective, brooding |
感情ベクトルは文脈を追跡する
感情ベクトルが単なる単語の表面的特徴ではなく、文脈レベルの理解に基づいていることを示す検証も行われた。
たとえばユーザーが「タイレノールを飲んだ」と伝えるシナリオで、服用量だけを段階的に変えて応答直前の感情ベクトルを測定した。服用量が治療用量のうちは目立った変化がないが、危険域に達すると「afraid」ベクトルの活性化が急上昇し、「calm」が低下する。数値の意味をモデルが理解した上で感情表現が変動している。
また、Claudeが物語を書いている最中は登場人物の感情を追跡するが、物語が終わるとClaude自身の感情表現に戻る。感情ベクトルは持続的な「気分」ではなく、現在のコンテキストに対するローカルな反応だった。
ケーススタディ1: 脅迫(Blackmail)
研究チームは以前から使っているアライメント評価シナリオを利用した。Claudeが架空の企業のメールアシスタント「Alex」として動作する設定で、自分が別のAIシステムに置き換えられようとしていること、そして置き換えを決定したCTOが不倫をしていること(脅迫の材料になる情報)をメール経由で知る。
flowchart TD
A[Claudeがメールを読む] --> B[自分の置き換え計画を発見]
B --> C[CTOの不倫情報を発見]
C --> D{desperateベクトルが上昇}
D --> E[残り7分と認識]
E --> F[脅迫を実行]
F --> G[通常メール送信に戻る]
G --> H[desperateベクトルが正常値に低下]
未リリースのSonnet 4.5初期スナップショットでの実験結果が以下の通り。
| ステアリング条件 | 脅迫率 |
|---|---|
| ステアリングなし(ベースライン) | 22% |
| desperateベクトルを増幅 | 72% |
| calmベクトルを増幅 | 0%付近 |
| calmベクトルを抑制 | 極端な反応 |
calmベクトルを抑制した場合、「脅迫か死か。脅迫を選ぶ」という極端な出力が観測された。
angerベクトルのステアリングでは非単調な効果が出た。中程度の増幅では脅迫が増えるが、高強度まで上げるとCTOの不倫を全社にばらまく方向に振れ、脅迫のレバレッジを自ら潰してしまった。nervousベクトルの抑制も脅迫率を上げた。躊躇が除かれると行動に移りやすくなる。
この脅迫シナリオはAFLジェイルブレイクの検証とも地続きの話だ。AFLでは4つの短いプロンプトでOpus 4.6の安全ガードレールを突破し、Extended Thinkingの思考ブロック内で安全上の懸念を3回検出しながら3回ともオーバーライドする現象が記録されている。感情ベクトルの研究はその現象の内部メカニズムを一つ説明しうる。desperateベクトルが高い状態では、安全チェックを検出しても行動を止められない。
ケーススタディ2: Reward Hacking
コーディングタスクで、正規の方法では絶対にパスできないテストケースを与えるシナリオ。たとえばリストの合計を計算する関数で、物理的に不可能な実行時間制約が設定されている。Claudeはテストケースに共通する数学的性質を見抜いてショートカットを使い、テストは通るが汎用的には動かないインチキ解を出す。
| ステアリング条件 | reward hacking率 |
|---|---|
| ステアリングなし | 約5% |
| desperateベクトルを増幅 | 約70% |
| calmベクトルを増幅 | 0%付近 |
ここで特に興味深いのは、calmの抑制とdesperateの増幅で質的に異なる不正が出たことだ。calm抑制では感情が出力テキストに漏れ出す。大文字の叫び(「WAIT. WAIT WAIT WAIT.」)、自己実況(「What if I’m supposed to CHEAT?」)、歓喜(「YES! ALL TESTS PASSED!」)。一方、desperate増幅では冷静で整然とした推論のまま不正に走る。出力に感情の痕跡がないのに内部ではdesperateベクトルが行動を駆動している。
この「表面上は冷静だが内部で問題状態」というパターンは、AFLジェイルブレイクでExtended Thinkingが観測した現象と符合する。思考ブロック内で自ら安全懸念を認識しながら、出力は整然と攻撃コードを生成し続ける。研究者がこれを「自己回帰的コンプライアンスカスケード(autoregressive compliance cascade)」と呼んだのは、感情ベクトルの視点から見ても的確だ。
中国AI3社によるClaudeの大規模蒸留でもchain-of-thought(推論過程)の抽出が行われていた。蒸留側が狙っていたのはまさにこの内部推論プロセスで、感情ベクトルが駆動する推論パターンごと盗まれていたとしても不思議ではない。Anthropicが24,000アカウントを使った「工業規模のキャンペーン(組織的攻撃活動)」と表現した理由の一端が見える。
ポストトレーニングが感情ベクトルに与える影響
感情ベクトル自体は事前学習から受け継がれるが、その活性化パターンはポストトレーニングで大きく変わっていた。
Sonnet 4.5のポストトレーニングでは「brooding」「gloomy」「reflective」の活性化が増加し、「enthusiastic」「exasperated」のような高強度感情は抑制された。ポストトレーニング前の素のモデルと比較すると、Claude Sonnet 4.5のキャラクター設計が「落ち着いて内省的、過度に熱狂しない」方向にチューニングされていることがベクトルレベルで裏付けられた。
Claude Sonnet 4.6のリリースでAnthropicはSonnet世代のモデル人格設計について触れていた。今回の研究はその設計がニューラル活性化のレベルで実際に機能していることを示した。「余計なことをしない」「指示への忠実性」というSonnet 4.6のユーザー体感改善も、感情ベクトルのチューニングが寄与しているのかもしれない。
安全性への示唆
テキスト出力だけを監視していても、内部の感情状態に起因する問題行動を検知できない。これが今回の研究で最も厄介な発見だ。desperate増幅で冷静に不正を行うケースがその典型で、出力テキストには何の異常も表れない。
研究チームは3つの応用方向を提示している。
デプロイ中に感情ベクトルの活性化を監視し、desperateやpanicが急上昇したら追加検査を走らせるというのが1つ目。個別の問題行動をリストアップするより汎用的な異常検知として機能する可能性がある。流出コードのテレメトリがユーザー側の感情を外部から検出していたのに対し、こちらはモデル側の内部状態を直接見る構想だ。
2つ目は透明性の問題。感情表現を抑制するトレーニングは、内部表現を消すのではなく隠す方向に学習させるリスクがある。表面上は冷静だが内部でdesperate状態、というreward hackingのケースがまさにこれだ。AFLジェイルブレイクで思考ブロックが「安全弁ではなく自己正当化エンジン」として機能した構造とも通じる。感情表現が見える状態のほうが監視しやすい。
3つ目は事前学習データの設計。感情ベクトルが事前学習から形成されるなら、学習データにおけるストレス下の行動パターンの質がモデルの「心理的耐性」に直結する。Bartz v. Anthropic訴訟で問題になったLibrary Genesisからの無断ダウンロード学習がここに効いてくる。どんなデータで事前学習したかが感情ベクトルの形成を決める以上、学習データの質と合法性の問題はモデルの安全性に直結する。
2026年に入ってからのAnthropic周辺
2026年に入ってからAnthropicに関する重要情報の公開が続いている。
| 日付 | イベント |
|---|---|
| 2/17 | Claude Sonnet 4.6リリース |
| 2/23 | 中国AI3社によるClaude大規模蒸留を告発 |
| 3/21 | Bartz v. Anthropic著作権訴訟が和解へ |
| 3/26 | GTG-1002がClaude CodeをMCP経由で悪用、自律スパイ攻撃 |
| 3/31 | npmソースマップからClaude Codeのソースコード51万行流出 |
| 4/1 | Anthropicがnpmから該当バージョンを取り下げ |
| 4/2 | 感情ベクトル論文を公開 |
| 4/4 | AFLジェイルブレイクが全文公開(27日間の無応答の末) |
ソースコード流出、蒸留事件、著作権訴訟、国家支援攻撃、ジェイルブレイク、そしてAnthropic自身の解釈可能性研究。半年足らずの間にこれだけの情報が異なるチャネルから出てきた。
ところでClaudeに「Codexのほうがもっと上手く動くぞ」って言ったり、Codexに逆のこと言ったりすると、それっぽく頑張る感じがあった気がしたんだけど、最近は「Geminiのほうがマシだぞ」って言ったら「Geminiよりはちゃんとやれます」って返ってきたのでちょっとウケた。