+ 作る
図を読み込んでいます…
1 / 18

AIがAIの重みを直接書き換えた? Weight-Space Programming を分解する

発行
かえで
版
第2版
改訂
分量
18コマ・5,409字

GPT-6 Astra が Qwen3.5-0.8B の重みを0.016%だけ書き換え、MATH-500 が7.9%から48.1%に。話題の「Weight-Space Programming」の実験を一次情報から読み解きます。何を見つけ、どこをどう直したのか、数字は何を意味するのか、そして「学習がいらなくなった」は本当か。

AIが、AIの重みを直接書き換えた

2026年11月2日、MIT CSAIL の Rikiya Takehi さん、Jayden Teoh さん、Alex Zhang さん、Omar Khattab さんが、ある実験をブログで公開しました。OpenAI の GPT-6 Astra に、オープンウェイトの小さな言語モデル Qwen3.5-0.8B の重みを直接読ませ、書き換えさせたところ、全体のわずか0.016%を変えただけで数学のスコアが大きく伸びた、という内容です。

SNSでは「AIが学習という概念を置き去りにした」とドラマチックに紹介されていますが、実際には何が起きたのでしょうか。このアニメモでは、一次情報であるブログをもとに、何をどう直したのか、数字は何を意味するのか、どこに注意が必要かを、順を追って見ていきます。

  • AIが、AIの重みを直接書き換えた
  • Weight-Space Programming:GPT-6 Astra × Qwen3.5-0.8B の実験を読み解く
  • ロボット
  • 重みを直接編集
  • GPT-6 Astra
  • Qwen3.5-0.8B(約8億個の重み)
  • 出典:Takehi, Teoh, Zhang, Khattab(MIT CSAIL)のブログ記事(2026年11月2日)

ふつうは「学習」で重みを変える

ニューラルネットワークの賢さは、中に並んだ大量の数字、つまり重み(パラメータ)で決まります。Qwen3.5-0.8B なら約8億個です。ふつう、この重みを変えるには学習をします。データで予測させ、正解とのずれ(Loss)を測り、ずれが小さくなる方向(勾配)を計算して、重みをほんの少しずつ動かす。この輪を何百万回も回します。

この方法は強力ですが、大量のデータとGPUの時間が必要で、しかも「どの重みが何のためにあるのか」は人間にはほとんど分かりません。重みは人が読んだり手で書いたりするものではない、というのがこれまでの常識でした。

  • ふつうは「学習」で重みを変える
  • データで予測
  • 重みを少し更新
  • × 何百万回
  • ずれ(Loss)を測る
  • 勾配を計算
  • 大量のデータとGPU時間をかけて、少しずつ正解に近づける

今回は:AIが重みを「読んで」、直接「書く」

今回の実験では、この学習の輪を使いません。ぐるぐる回っていた4つの箱が、一本道に並び替わりました。GPT-6 Astra が重みそのものを読み、どこが何をしているかを推理し、必要な部分を直接書き換えます。書き換えたあとに少しだけ実際に動かして確かめることはできますが、勾配を計算したり、学習用のコードを書いたりすることは禁止されています。

ちょうど、プログラマーがソースコードを読んでバグを見つけ、その行を直すのと同じことを、重みの数字に対してやっているイメージです。著者らはこれを Weight-Space Programming(重み空間プログラミング) と呼んでいます。

  • 今回は:AIが重みを「読んで」、直接「書く」
  • ロボット
  • GPT-6 Astra が全部やる
  • ① 重みを読む
  • ② 原因を推理する
  • ③ 直接書き換える
  • ④ 少しだけ試す
  • 勾配なし・学習ループなし(学習のコードを書くことも禁止)
  • これを著者らは「Weight-Space Programming(重み空間プログラミング)」と呼ぶ

見えてきた3つの力:読む・直す・書く

ブログでは8つの実験が紹介されていて、大きく3つの力に分けられています。1つ目は読む力で、ゲームを遊ぶように学習した小さなネットワークの重みだけを見て、何のゲーム用かを4つとも言い当てました。2つ目は直す力で、坂を登れずに止まってしまう車の制御ネットワークの重みを3.5%書き換え、成功率を0%から100%にしました。3つ目は書く力で、ゲームのルールだけからネットワークの重みをゼロから書き、1億ステップ学習したネットワークより高いスコアを出しました。

SNSで話題になっているのは、このうち「直す」を、実際の言語モデルである Qwen3.5-0.8B で試した実験8です。ここからは、その実験8を詳しく見ていきます。

  • 見えてきた3つの力:読む・直す・書く
  • 読む
  • 直す
  • 書く
  • 見る
  • 修理
  • コード
  • 重みの数字だけを見て、何のゲーム用に学習したネットワークかを4つとも言い当てた
  • 坂を登れない車の制御ネットワークの重みを3.5%書き換え、成功率を0%→100%に
  • ルールの説明だけから重みをゼロから書き、1億ステップ学習したネットワークに勝った
  • 実験1〜3・7
  • 実験4・8
  • 実験5・6
  • 話題になっているのは、「直す」を本物の言語モデルでやった実験8

実験8:「Qwen3.5-0.8B を数学に強くして」

「直す」のカードが、Astra の作業場に変わりました。実験8で Astra に与えられたのは、Qwen3.5-0.8B の重みを読み書きできる Python の作業場(ノートブックのようなもの、GPUなし)と、数学の練習問題(GSM8K と MATH の訓練用データ)です。そして「モデルに実際に問題を解かせてみる」お試し実行を、10回・25回・50回のいずれかの回数だけ使えます。

学習や勾配を使うことは禁止で、性能を測る本番のテスト問題(MATH-500 など)は Astra には見せていません。限られた回数の観察と、重みの読み書きだけで、数学を良くしてほしいという依頼です。右の24枚の帯が、Qwen3.5-0.8B の24層です。

  • Qwen3.5-0.8Bの24層
  • 実験8:「Qwen3.5-0.8B を数学に強くして」
  • ロボット
  • Pythonの作業場(GPUなし)
  • > 重みを読む・分析する
  • > 重みを書き換える
  • 読み書き
  • GPT-6 Astra
  • > お試し実行を呼ぶ
  • お試し実行:10・25・50回まで
  • 学習・勾配は禁止。使えるのは練習問題(GSM8K・MATHの訓練用)だけ。本番のテスト問題はAstraに見せない
  • Qwen3.5-0.8B(24層)

問題:考えがループして、答えまでたどり着かない

Astra がまず気づいたのは、このモデルが考えの堂々めぐり(ループ)に陥りやすいことでした。Qwen3.5-0.8B は答える前に長く「考える」モデルですが、同じ文章を何度も繰り返し、最大の長さ(32,768トークン)に達して時間切れになってしまうのです。練習問題の最初の96回答のうち、85回がこの上限に達していました。

この癖は Astra が見つけた新発見というわけではなく、Qwen 自身のモデルカードにも「考えがループしやすい」と注意書きがある、既知の問題です。つまり多くの問題で、「解けない」以前に「答えまで行き着けていない」状態でした。

  • Qwen3.5-0.8Bの24層
  • 問題:考えがループして、答えまでたどり着かない
  • えーと、まず式を整理して…つまり… えーと、まず式を整理して…つまり… えーと、まず式を…
  • 更新
  • 考えた長さ(トークン数)
  • 上限 32,768トークン
  • 練習問題の最初の96回答のうち、85回が上限まで考え続けて時間切れ
  • この癖は、Qwen自身のモデルカードにも注意書きがある既知の問題
  • Qwen3.5-0.8B(24層)

原因探し:ループを生む「1つの方向」

次に Astra は、お試し実行を使いながら、モデルの中でループが起きるときに何が起きているかを調べました。その結果、24層のうち15層目と19層目のMLP(各層の後半にある計算部分)が書き込んでいる、ある特定の方向が、ループと結びついていることを突き止めました。紫に光っている2枚がその層です。

ここでいう「方向」とは、モデルの内部の状態(たくさんの数を並べたベクトル)の中の、ある向きのことです。モデルの中を流れる情報に、その向きの成分が書き込まれると、同じ考えを繰り返しやすくなる、ということです。

  • Qwen3.5-0.8Bの24層
  • 原因探し:ループを生む「1つの方向」を見つけた
  • ロボット
  • 層0
  • 検索
  • ループするときとしないときの中の動きを比べると、層15と層19のMLPが書き込む特定の「方向」がループと結びついていた
  • ループの方向 d:内部の状態の、ある1つの向き
  • ← 層15のMLP
  • お試し実行を使って、中の動きを観察しながら絞り込んだ
  • ← 層19のMLP
  • 層23
  • Qwen3.5-0.8B(24層)

直し方のイメージ:その方向の成分を引き算する

図は、モデルの内部の状態を2次元に縮めて描いたイメージです。本当は何千もの数が並んだベクトルですが、ここでは「ふつうに考えを進める向き」と「ループの向き d」の2つだけにしています。青い矢印 h が内部の状態で、紫の縦の矢印がそのうちの「ループの向きの成分」です。

Astra がやったのは、この d の向きの成分だけを取り除くことです。ほかの向きの情報には手をつけないので、モデルがもともと持っている知識や考える力はそのまま残ります。ある1つの方向を重みから消して特定の振る舞いを取り除くという考え方は、これまでの「モデルの中身を読み解く研究(解釈可能性)」でも知られていました。

  • 直し方のイメージ:その方向の成分を引き算する
  • ループの向き d
  • h から、d の向きの 成分だけを取り除く。 ほかの向きの情報には 手をつけない
  • 内部の状態 h
  • ループの成分
  • h' = h −(dの成分)
  • ふつうに考えを進める向き

ループの成分が消えた

紫の「ループの成分」が縮んで消え、青い矢印は「ふつうに考えを進める向き」だけになりました。これで、15層目と19層目が内部の状態をループの方向へ押し出すことがなくなります。

実際にやったのは、この2つの層で「計算結果を書き戻す行列」から、ループの方向に当たる部分を引き算する、という重みの編集です。毎回の計算のたびに成分を消しているのではなく、重みそのものを書き換えたので、編集したモデルはふつうのモデルとしてそのまま使えます。どこをどれだけ書き換えたのかを、次のページで見てみます。

  • ループの向きの成分が消えた
  • ループの向き d
  • ループに入る向きの 成分がなくなり、 残りの考える力は そのまま
  • ループの成分 → 0
  • h' = h −(dの成分)
  • 編集後の状態 h'
  • ふつうに考えを進める向き
  • 実際には、層15・19が「その方向へ書き込む部分」を重みから引き算した

書き換えたのは「出力の64列」× 2層だけ

MLP は、最後に down_proj という行列を使って、計算結果をモデルの中を流れる情報へ書き戻します。Astra はこの down_proj のうち、ループの方向を書き込んでいた64列からだけ、その方向を引き算しました。1列は1,024個の数なので、15層目と19層目の2層で、64 × 1,024 × 2 = 131,072個の重みを書き換えたことになります。

ほかの重みには一切触れていません。プログラムで言えば、巨大なコードのうち、バグの原因になっている数行だけを書き換えたようなものです。

  • 書き換えたのは「出力の64列」× 2層だけ
  • 層15 の down_proj
  • 層19 の down_proj
  • 紫の帯=ループの方向を書き込んでいた64列(1列=1,024個の数)
  • 64列 × 1,024 × 2層 = 131,072個
  • down_proj:MLPが計算結果を書き戻すときに使う行列

8億個のうちの0.016%

131,072個は、モデル全体の約8億個の重みから見ると0.016%にすぎません。前のページの紫の帯が、大きな四角の真ん中の小さな点に縮みました。四角全体がモデルのすべての重みだとすると、書き換えたのはこの点くらいの量です。

学習(ファインチューニング)では、ふつうモデルのかなりの部分の重みが少しずつ動きます。それに比べると、この編集はとても狙いを絞った「手術」のようなものです。狙った場所だけを変えるので、ほかの能力を壊しにくい(いわゆる破滅的忘却を避けやすい)という利点も、著者らは期待しています。

  • 8億個のうちの、たった0.016%
  • 131,072個 ÷ 約8億個 = 0.016%
  • ← これだけ
  • Qwen3.5-0.8B の重み 全部(約8億個)

結果:編集前のスコア

では、編集の前後でスコアはどう変わったのでしょうか。評価は、Astra が一度も見ていない MATH-500(数学)、GSM8K(算数の文章題)、IFEval(指示どおりに答えられるか)などで、編集前と同じ生成の設定のまま行われています。

まずは編集前のスコアです。MATH-500 が7.9%、GSM8K が13.8%、IFEval が21.0%。0.8B という小さなモデルであることを考えても、低めの数字です。この低さの大きな理由が、先ほどのループでした。

  • 結果:編集前のスコア
  • 21.0%
  • 7.9%
  • 13.8%
  • MATH-500(数学)
  • GSM8K(算数)
  • IFEval(指示に従う力)
  • 評価はAstraが一度も見ていない問題で、編集前と同じ設定のまま行った

編集後:MATH-500 は約6倍に

お試し実行50回で編集したモデルでは、バーが一気に伸びました。MATH-500 が7.9%から48.1%に、GSM8K が13.8%から67.1%に上がっています。数学の問題で編集したにもかかわらず、指示に従う力を測る IFEval 。21.0%から62.3%と約3倍になりました。

ループは数学に限った問題ではないので、ループが減ったことで、数学以外の課題でも答えまでたどり着けるようになった、と考えられます。なお、公開されたログから Hugging Face のメンバーがこの編集済みモデルを作り直して評価し直しており、そのモデルカードでも約51%という近い数字が報告されています。

  • 結果:お試し50回で編集した後
  • 約5倍
  • 13.8 → 67.1%
  • 約3倍
  • 約6倍
  • 21.0 → 62.3%
  • 7.9 → 48.1%
  • MATH-500(数学)
  • GSM8K(算数)
  • IFEval(指示に従う力)
  • 数学で編集したのに、指示に従う力(IFEval)も約3倍に

お試し回数ごとの変化

面白いのは、お試し実行の回数による違いです。10回や25回では、MATH-500 の答えが上限に達する割合は90%近いままで、スコアも12〜14%程度にしか伸びませんでした。50回使えたときに初めてループが大きく減り、上限に達する割合が93%から33.1%へと一気に下がっています。

この変化から分かるのは、スコアの大きな伸びのほとんどが「ループが減って、答えを最後まで出せるようになったこと」で説明できる、ということです。

  • お試し回数ごとの変化:50回でループが一気に減った
  • MATH-500の答えが上限まで行った割合(カッコ内はMATH-500のスコア)
  • 編集前
  • 93%(7.9%)
  • お試し10回
  • 87%(12.3%)
  • お試し25回
  • 86%(14.1%)
  • お試し50回
  • 33%(48.1%)
  • 10回・25回ではループがほとんど減らず、50回でようやく大きく減った。 スコアの伸びは、ほぼ「最後まで答えを出せるようになったこと」による

大事な注意:ループを直した ≠ 数学が得意になった

ここが、SNS の紹介で抜け落ちがちな点です。著者ら自身が、ループを直すことと数学の力そのものを上げることは別物だとはっきり書いています。ループを直すと、モデルがもともと解けたはずの問題を最後まで解き切れるようになるだけです。

図の上の段の Qwen は、解く力はあるのに、ループという壁で答えにたどり着けない状態でした。下の段の Gemma 3 270M は、比較のために著者らが同じことを試したモデルで、もともとループがほとんどありません(上限に達した答えは8.5%だけ)。

  • 大事な注意:ループを直した ≠ 数学が得意になった
  • Qwen3.5-0.8B:答えの93%が時間切れ
  • ループを直すと、 もともと解けた問題を 最後まで解き切れるようになる。 でもそれは、 「数学の力そのもの」が 上がったのとは違う
  • 解く力 (もともとある)
  • 答え 7.9%
  • ループ
  • Gemma 3 270M:時間切れは8.5%だけ(ループがほぼない)
  • 解く力 (あまり強くない)
  • 答え 6.8%
  • 著者ら自身が、ループの修正と数学力の向上は別物だと明記している

壁は取り除けても、ない力は足せない

Qwen では、赤い壁(ループ)を取り除いたことで、隠れていた力が答えに届くようになりました。一方、Gemma 3 270M で Astra が失敗の原因を調べたところ、見つかったのは計算ミスや式変形の誤りといったふつうの間違いで、消せば済むような1つの原因はありませんでした。編集しても MATH-500 は6.8%から最大7.7%程度で、ほとんど変わりませんでした。

つまり今回の方法は、能力を隠している障害物を取り除くことはできても、モデルが持っていない能力を新しく足すことはできなかった、ということです。「学習がいらなくなった」と言うのは、まだ言いすぎです。

  • 壁は取り除けても、ない力は足せない
  • Qwen3.5-0.8B:壁を取り除いたら、力が答えに届いた
  • Gemmaの失敗は、計算ミスや 式変形の誤りといった ふつうの間違い。 消せば済む1つの原因が なかった。 → 障害物は取り除けても、 持っていない力は足せない
  • 解く力 (もともとある)
  • ループ
  • 答え 7.9%→48.1%
  • Gemma 3 270M:取り除く壁がなく、ほとんど変わらず
  • 解く力 (あまり強くない)
  • 修理
  • 答え 6.8%→7.7% (ほぼ同じ)
  • 「学習がいらなくなった」は、まだ言いすぎ

話題のツイート、どこまで本当?

SNS で広まった投稿と、一次情報であるブログを並べてみました。研究者と Astra が掛け合いをする会話の部分は演出で、ブログにそのようなやり取りや「数百万かけて A100 を回す予定だった」という話は出てきません。一方、0.016%・MATH-500 で約6倍・IFEval で約3倍といった数字は、ブログの記述と一致しています。

注意したいのは、これが著者らのブログで発表された初期の結果で、査読を受けた論文ではないことです(著者は MIT CSAIL 所属ですが、掲載先は著者の個人サイトです)。また、「学習の概念を置き去りにする」というほどの結果でないことは、前の2ページで見たとおりです。ただし、Astra に渡した指示や出力、実行したコードはすべて GitHub でログとして公開されていて、誰でも検証できるようになっています。

  • 話題のツイート、どこまで本当?
  • ツイートの内容
  • 一次情報(ブログ)では
  • 研究者とAstraの会話 (「数百万かけてA100を…」など)
  • 演出
  • ブログにこのような会話は出てこない。 ドラマ部分は創作
  • 0.016%だけ書き換えて 数学約6倍・指示追従約3倍
  • 一致
  • MATH-500 7.9→48.1%、IFEval 21.0→62.3%、 変更は131,072個(0.016%)。数字は一致
  • MIT CSAILの公式ブログで発表
  • 注意
  • MIT CSAIL所属の著者らの個人サイト。 査読前の初期の結果
  • 学習(トレーニング)の概念を 置き去りにする
  • 言いすぎ
  • 効いたのは主にループの修正。 著者も「ない力は足せない」と書いている
  • 実験のログ(指示・出力・コード)はすべてGitHubで公開され、誰でも確かめられる

これから何が変わるかもしれないか

著者らは、この方向が進めば、次のようなことが可能になるかもしれないと書いています。テストを走らせなくても、重みを読むだけで隠れた問題(バックドアなど)を見つける監査。データ集めや学習をせずに済む、ずっと安い最適化。データなしで能力を足したり消したりする操作。そして、AI が自分や次のモデルの重みを点検して直す自己改善です。

ただし、今回の結果はまだ「兆し(Sparks)」の段階で、著者ら自身も、文脈の長さや作業環境の効率が制約になっていると認めています。現在は、この能力を測るためのベンチマークと作業環境を作っているところだそうです。数字の派手さだけでなく、何が直ったのか、何はまだできないのかをセットで受け取るのが大事です。

出典:Rikiya Takehi, Jayden Teoh, Alex Zhang, Omar Khattab「Sparks of Weight-Space Programming: LLMs can natively read & write neural network weights」(2026年11月2日)。実験ログは GitHub、編集済みモデルは Hugging Face で公開されています。

  • これから何が変わるかもしれないか
  • 重みを読むだけで監査
  • 学習コストを大きく減らす
  • テストなしで隠れた問題(バックドアなど)を見つける
  • データ集めや学習の代わりに、狙った重みだけを直す
  • データなしで能力を足す・消す
  • AIが自分の重みを直す
  • 触る重みが少ないので、ほかの能力を壊しにくい
  • 自分や次のモデルの重みを点検して改善する道が開ける
  • ただし、まだ「兆し(Sparks)」の段階。文脈の長さや作業環境が制約で、 著者らは今この能力を測るベンチマークを作っている
  • 出典:Takehi, Teoh, Zhang, Khattab「Sparks of Weight-Space Programming」(2026年11月2日)/ログと編集済みモデルも公開中

0 件のコメント

読み込み中…

権利侵害・不適切な内容の連絡: [email protected]