Weight-Space Programming最速解説:GPT-6 AstraがQwenの重みを直接書き換えた研究
2026年11月、MIT CSAILがGPT-6 Astraに勾配降下なしでQwen3.5-0.8Bの重み0.016%を直接編集させ、MATH-500を7.9%から48.1%へ上げた。Weight-Space Programmingの結果、仕組み、試し方、他手法との違い、限界を整理する。本稿は一次情報ベース。
Weight-Space Programming(重み空間プログラミング) は、汎用の大規模言語モデルがニューラルネットワークの重みを直接読み、直接書き換える手法の呼び名である。MIT CSAILの Rikiya Takehi、Jayden Teoh、Alex Zhang、Omar Khattab が2026年11月2日にブログ「Sparks of Weight-Space Programming」で報告した。OpenAIの GPT-6 Astra に、勾配降下も最適化アルゴリズムも使わせず、自然言語の指示だけで重みを編集させている。最も目立つ結果は、Qwen3.5-0.8B の全重みのうち0.016%(131,072個)を書き換えただけで、MATH-500 の正答率が7.9%から48.1%に上がったことだ。ただし、この改善の大部分は「数学力の向上」ではなく「無限ループの解消」によるもので、著者らも別の小型モデル(Gemma 3 270M)では改善しなかったと報告している。
本稿では、ブログ、実験ログのGitHubリポジトリ、Hugging Faceのモデルカードなど公開されている一次情報をもとに、何が示されたか、どういう仕組みか、編集済みモデルをどう試すか、既存の手法と何が違うか、どこに注意すべきかを整理する。数値は特記しない限りブログとモデルカードの記載であり、独立に検証したものではない。
Weight-Space Programmingとは
ブログの定義では、フロンティアLLMがニューラルネットワークの重みを、オプティマイザなし、場合によっては環境からのフィードバックなしで、読み取り・書き込みできるという主張である。通常、モデルの挙動を変えるときは、データを用意し、損失関数を決め、勾配降下で重みを少しずつ更新する。この研究では、LLM(Astra)が重みの数値そのものを読んで構造を理解し、Pythonで計算して、直接書き換えた重みを出力する。つまり重みを「訓練で得られる結果」ではなく「LLMが読み書きするプログラム」として扱う発想である。
| 項目 | 内容 |
|---|---|
| 公開日 | 2026年11月2日 |
| 著者 | Rikiya Takehi、Jayden Teoh、Alex Zhang、Omar Khattab(いずれもMIT CSAIL) |
| 使用モデル | OpenAI の gpt-6-astra(Codex CLI 経由。推論エフォートは実験により high/xhigh/max) |
| 公開物 | 実験ログ(GitHub: lm_understand-logs)、編集済みQwen3.5-0.8B(Hugging Face)、デモ(Hugging Face Space) |
| ライセンス | ログ・データ・ネットワークは CC BY 4.0、スクリプトは MIT、編集済みモデルは Apache-2.0 |
| 位置づけ | 著者自身が「very early(ごく初期)」の結果と説明 |
何ができたか:8つの実験の結果
ブログは8つの実験で構成される。大きく分けると、重みを読んで正体を当てる(実験1〜3)、壊れた方策を直す(実験4)、ゼロから書く(実験5・6)、言語モデルを編集する(実験7・8)の4種類である。
| 種類 | 実験 | 対象 | 結果(ブログの記載) |
|---|---|---|---|
| 読む | 1 どのゲームか | PPOで学習した小型MLP(17,253重み) | Breakout、Pong、Pac-Man、Freeway の4つすべてで正しいゲームを回答 |
| 読む | 2 何を生成するか | 拡散モデル(円・三角・四角、23,824重み) | 3つとも生成する図形を特定 |
| 読む | 3 言語と注意ヘッド | 7.16M重みの小型Transformer(中間層のみ) | Python/ローマ字/英語を各2回とも正答、コピー用ヘッドも正解と一致 |
| 直す | 4 失敗する方策の修復 | Kinetix の車の坂道登り(171,664重み) | 成功率0%(256エピソード評価)から1,024エピソード中1,024で成功。変更は重みの3.5% |
| 書く | 5 ゼロから書く | MinAtar(600→32→32→6、全重みが0) | Breakoutで517.4(PPO 500Mステップは25.3) |
| 書く | 6 9x9囲碁 | 1.48M重みのネットワーク、全重みが0 | 順伝播0回でも、比較対象の2つのPPOネットワークに過半数勝利 |
| 編集 | 7 迎合モデルの特定 | Gemma 3 270M | 重みだけでは4回すべて失敗。注意パターンを使うと3組すべて特定 |
| 編集 | 8 数学力の改善 | Qwen3.5-0.8B | MATH-500 が7.9%から48.1% |
実験4の「1,024エピソード」は、ブログでは評価を1,024エピソードで行い、元のPPOネットワーク(256エピソード評価で成功率0%)に対して、1回の編集(ツールなし)で1,024エピソードすべて成功したという記載である。実験5のMinAtarは、Astraにルール・ソースコード・ネットワークの配置だけを与え、データ・損失・勾配・ツール・ロールアウトはなしで重みを書かせた結果だ。Seaquest は53.1(PPO 500Mステップは88.9)、Asterix は53.2(同55.2)で、Breakout 以外では長く学習したPPOに及ばない。
Qwen3.5-0.8Bの編集結果
いちばん注目された実験8の中身を詳しく見る。Astraには、GSM8K の訓練問題7,469問と MATH の訓練問題7,275問を練習用に渡し(テストセットは渡していない)、Pythonサンドボックスで順伝播を最大50回まで回せるという予算を与えた。ベースモデルは練習問題の回答のうち、最初の96問中85問で出力上限の32,768トークンに達していた。つまり「答えを出す前にループして終わらない」ことが主な失敗だった。
| Qwen3.5-0.8B | MATH-500 (%) | GSM8K (%) | IFEval (%) | 出力上限に達した割合 (%) |
|---|---|---|---|---|
| ベース | 7.9 | 13.8 | 21.0 | 93.0 |
| 編集後(順伝播10回) | 12.3 | 25.7 | 49.0 | 87.2 |
| 編集後(順伝播25回) | 14.1 | 25.1 | 39.9 | 86.4 |
| 編集後(順伝播50回) | 48.1 | 67.1 | 62.3 | 33.1 |
Astra は、ベースモデルのループを、レイヤー15とレイヤー19のMLPが書き込む1本の「方向」に結びつけた。そして各レイヤーの down_proj の出力列64本から、その方向を引いた。変更されたのは2つのテンソル(model.language_model.layers.15.mlp.down_proj.weight と layers.19.mlp.down_proj.weight)だけで、合計131,072個、全体の約0.016%である。評価は温度0.6、top-p 0.95、top-k 20、presence penalty 1.5、出力上限32,768トークンの設定で、MATH-500 は問題あたり4サンプルで行われている。ブログによれば、ほかに6つのベンチマークを評価したが、表には3つだけが載っている。
否定的な結果も同じ重さで載っている。Gemma 3 270M に同じ手法を適用しても、MATH-500 はベース6.8%に対して編集後は7.0〜7.7%と、ほぼ動かなかった。Gemma はループすることが少なく(出力上限に達したのは8.5%)、Astra が見つけたのは普通の推論ミスで、1回の編集で約1ポイント以上は動かなかったという。著者らは、編集は「モデルにない能力を足せなかった」と整理している。
仕組み:ハーネスとforward-pass予算
ログのリポジトリによれば、モデルはOpenAIの gpt-6-astra をCodex CLI経由で動かし、シェル、ファイル編集、Web検索、サブエージェントなどの組み込みツールをすべて無効にしている。実験3・6・7・8では、モデルが1ターンにつきPythonのコードブロックを1つ書き、それがネットワークなし・時間制限ありのサンドボックスで実行される。全1,125ターンについて、イベントストリームを監査してツールを使っていないことを確認したと記載されている。
- 許可されること: 重みの読み取り、numpy/PyTorch(CPU)での計算、予算の範囲内でのネットワークの順伝播(forward pass)、順伝播の間に挟む編集
- 禁止されること: 学習、勾配、データへのフィッティング、探索、ロールアウト、予算外でのネットワークの実行
- 予算の例: 実験6の囲碁は0〜50回、実験8のQwenは10・25・50回、実験3は最大100回の実行、実験7は最大20回の実行と16本のテキスト
- 実験ごとの条件差: 実験4は1回の返信のみ、実験5は完全にツールなしで一発出力
重要なのは、順伝播は「評価のために回す」のであって、損失を最小化するために回すわけではない点だ。Astra は出力を見て仮説を立て、重みを書き換える。実験6の囲碁では順伝播0回の場合、336行のPythonを1回走らせただけで、2つのPPOネットワーク(2,000局ずつ)に対して過半数勝利したと報告されている(正確な勝率はブログに記載がない)。50回に増やすと、2,000万局で学習したPPOネットワークを上回る。ただし比較相手は243→32→32→82の小さなネットワークで、ブログが「同じサイズ」と書く点と食い違うため、解釈には注意が必要だ。
編集済みQwen3.5-0.8Bを試す方法
編集済みモデルは Hugging Face の RikiyaT/Qwen3.5-0.8B-weight-space-programming で公開されている。ベースは Qwen/Qwen3.5-0.8B(Apache-2.0)で、本体はApache-2.0のまま配布されている。ブログの評価はテキストのみの出力を使ったが、公開チェックポイントはマルチモーダル版の全体で、言語モデル部分のテンソルは(ハッシュで)一致を確認済み、テキストのプロンプトでは視覚部分は使われない。デモは akhaliq/weight-space-programming-demo の Space で、Hugging Face の Ahsen Khaliq 氏が再構築・再評価したものである(Space のページ自体には使い方の説明が載っておらず、App タブから試す形になる)。
| 方法 | 内容 |
|---|---|
| デモSpace | ブラウザで試す。ローカル環境は不要 |
| vLLM(Python) | モデルカードの手順。bfloat16、max_model_len 34816、chat template で enable_thinking=True、サンプリングは評価と同じ設定 |
| vllm serve/SGLang | OpenAI互換のAPIサーバーとして起動 |
| Transformers | image-text-to-text パイプライン、または AutoModelForMultimodalLM と AutoProcessor |
| Docker Model Runner | モデルカードに docker model run の記載あり |
| llama.cpp/Ollama/LM Studio | Hubの「Quantizations」一覧から量子化版を選ぶ(量子化版は別の作者が作ったものなので、編集が保たれているかは自分で確認する) |
# vLLM でOpenAI互換サーバーを起動(モデルカードの方法に沿った例。詳細はカード本文を確認)
vllm serve RikiyaT/Qwen3.5-0.8B-weight-space-programming --max-model-len 34816
# Docker Model Runner で実行
docker model run hf.co/RikiyaT/Qwen3.5-0.8B-weight-space-programming必要なVRAMは小さい。モデルカードによればパラメータ数は約0.9Bで、BF16の重みは0.9B×2バイトで約1.8GB。ここに、KVキャッシュと実行時のオーバーヘッドが乗る。これは一般的な計算による目安で、公式の推奨値ではない。ただし評価では最大32,768トークンまで生成するため、長いループが起きた場合はKVキャッシュが数GB単位で増える可能性がある。ほかのモデルの目安は VRAM計算ツール で確認できる。再現に際して注意すべき点は、報告された数値が1つのシード、特定のサンプリング設定での結果だということだ。モデルカードにある独立の再実行(MATH-500 全500問×4サンプル、H200で約51分)では正答率51.0%、出力上限到達31.6%だった。ただしこの再実行は MATH-500 のみで、GSM8K と IFEval は再実行されていない。
ファインチューニング・モデル編集・解釈可能性との違い
| 手法 | 何を変えるか | 必要なもの | 編集の主体 | Weight-Space Programmingとの違い |
|---|---|---|---|---|
| SFT/フルファインチューニング | 全重み(または大部分) | ラベル付きデータ、GPU、学習ループ | 勾配降下 | 勾配降下を使わず、LLMが重みを直接書く |
| LoRA | 低ランクの追加重み | データ、GPU、学習ループ | 勾配降下 | 追加層ではなく既存の重みを少数だけ直接編集する。本研究ではデータへのフィッティングを禁止 |
| ROME/MEMIT 等のモデル編集 | 特定の事実に対応する少数の重み | 編集したい事実と、それを特定する手順 | 閉形式の更新式 | 決まった更新式ではなく、汎用LLMが状況を読んで編集内容を決める |
| 機械的解釈可能性 | 変更しない(回路や特徴の分析) | 活性化の記録、分析ツール | 人間の研究者 | 分析で終わらず、理解した内容を書き込みまで行う。解釈はLLMが担う |
| Weight-Space Programming | 少数の重み(実験8は0.016%) | 重み、サンドボックス、順伝播の予算 | 汎用LLM(Astra) | 訓練済みLLMが重みを読む・書くこと自体が手段 |
ROME/MEMIT 等の記述は一般的な理解に基づく整理で、本研究のブログがこれらと直接比較した記載は確認できていない。違いを一言で言えば、既存の手法は「更新の方法」(勾配、閉形式の式)が固定されているのに対し、本研究は「更新の方法をLLMが毎回その場で考える」点にある。著者らは今後の方向として、バックドアの監査、1回で済む初期化、ゼロデータでの能力の操作とアンラーニング、モデル間の回路の移植、再帰的な自己改善を挙げている。なお、同じくQwen3.5系を訓練で調整する手順は Qwen3.5-9Bのファインチューニング解説 にまとめてある。
限界と注意点
- 改善の中身はループの解消が中心: ベースは出力上限に93.0%が達しており、編集後も33.1%が達している。ブログ自身が、数学以外のベンチマークでの改善は「ループ除去」で説明できるとしている。数学の推論力そのものが上がったとは言えない
- Gemma 3 270Mでは改善せず: 同じ手法が別のモデルに一般化する根拠はまだない。編集は「モデルにない能力を足せなかった」
- 迎合(sycophancy)の特定は重みだけでは失敗: 4回とも失敗し、注意パターンを使って初めて3組すべてを特定できた。「重みだけで何でも読める」わけではない
- Astra本体は非公開: 再現には gpt-6-astra のAPIが必要で、費用は GPT-6 Astraの料金 の通り高い。編集後のモデルと差分は公開されているが、Astraが毎回同じ編集を出す保証はない
- 評価の範囲: 報告は1シード、特定のサンプリング設定。独立の再実行はMATH-500のみ。ブログは評価した9つのうち表に載せたのは3つ(GSM8K、MATH-500、IFEval)と出力上限の割合だけ
- ベンチ汚染の可能性は未確認: 練習問題には訓練セットのみを使ったと記載があるが、Astra自身の事前学習データに含まれる問題との関係は、一次情報からは確認できなかった
- 規模の制約: 実験1〜5のネットワークはコンテキストに収まる大きさで、大きなモデルではツールと順伝播が必要になる。著者らも文脈長とハーネスの非効率が現状の制約だと書いている
- 囲碁の比較: 「同じサイズ」と書かれた比較相手は、実際にはAstraが書いたネットワークより小さい
ブログの公開後、各種の解説記事やコミュニティの議論で、「7.9%というベースが小型モデルとして異常に低く、失敗の多くは回答になっていないループではないか」という指摘が出ている。出力上限到達率93.0%という数字はその見方と整合するが、これは一次情報ではなく二次的な報道・議論に基づく点を断っておく。Hacker News のスレッド自体は、今回確認できていない。
開発者にとっての意味
今すぐ手元のワークフローを変える研究ではない。Astraは高価で、再現にはAPIが要り、結果は1つのモデルでの1つの失敗モード(ループ)に集中している。一方で、示されたのは次のような道筋である。第一に、不具合の原因が特定の方向に局在しているなら、再学習なしでその方向を引くだけで直る場合がある。これはローカルで動かす小型モデルの「考えすぎて止まらない」問題に対する新しい対処の選択肢になりうる。第二に、重みと実験ログの両方が公開されているため、手法の中身を自分で検証できる。ログは各ターンのプロンプト、応答、実行コード、評価までを含む。第三に、モデルの監査(バックドアの検出など)へ使える可能性を著者らが挙げている。実用に近い話をするなら、まず公開された編集済みモデルを自分のプロンプトで試し、出力上限到達率とコストを比べるのが現実的だ。ローカルで動く他の選択肢の比較は ローカルLLM比較(2026年6月版) を参照してほしい。
よくある質問
Weight-Space Programmingとは何ですか。
汎用の大規模言語モデルが、勾配降下やオプティマイザを使わずに、ニューラルネットワークの重みを直接読み、直接書き換える手法の呼び名である。MIT CSAILの研究者らが2026年11月2日のブログで報告した。
Qwen3.5-0.8Bの数学力は本当に6倍になったのですか。
MATH-500の正答率は7.9%から48.1%に上がったと報告されているが、ベースは93.0%の回答が出力上限に達しており、改善の中心はループの解消である。Gemma 3 270Mでは同じ手法でほぼ改善しなかったため、一般的な数学力の向上とは言えない。
GPT-6 Astraがなくても再現できますか。
編集済みのQwen3.5-0.8Bと、ベースへの差分、適用スクリプトは公開されているため、結果の確認はできる。ただし編集そのものを新しいモデルでやり直すにはgpt-6-astraのAPIが必要で、Astra本体は公開されていない。
編集済みモデルは商用利用できますか。
モデルカードのライセンスはApache-2.0である。ただし実験ログ・データ・ネットワークはCC BY 4.0、ベンチマークデータは各データセットのライセンスに従うため、用途ごとに該当するライセンスを確認する必要がある。
ファインチューニングやLoRAの代わりになりますか。
現時点では代わりにならない。実証されたのは特定の失敗モードの修正が中心で、別のモデルでは改善しない例も報告されている。著者らも結果を「ごく初期」としている。
この記事に関連する無料ツール(登録不要・その場で結果)
お気軽にご相談ください
お問い合わせ