它沒有變聰明,只是不再打轉
一個 0.8B 小模型改掉 0.016% 的權重,MATH-500 從 7.9% 跳到 48.1%。但逐題比對後,救回來的 579 題裡有 576 題原本是被 32,768 token 上限截斷的;已經答完的 114 題,正確率完全沒變。這篇把六倍拆開,給你四步檢查——下次看到分數暴漲時,先看截斷率,再看對照組。
這篇的數字來自原文(部落格貼文,不是同儕審查論文)與公開 logs、Qwen 的 model card、Hugging Face 上的重建版重跑,以及硅星人Pro 按 logs 做的逐題重算。逐題配對那一段是二手重算,我會標出來。我們沒有在自己的機器上重跑那 50 次前向。
先講一個畫面
你在筆電上跑一顆 0.8B 的小模型,給它一題國中數學。它想了三分鐘,輸出到上限被切斷;回頭看,整段在重複同兩句話。
你的結論大概是:模型太小。這篇要給你的是一個更準的分界——分數變好,是模型變聰明,還是它終於講得完?
十一月二日,四位 MIT CSAIL 的研究者公開一組實驗。他們讓 GPT-6 Astra 直接修改 Qwen3.5-0.8B 的權重,只動了 0.016%。
同一顆模型,MATH-500 從 7.9% 變成 48.1%。
那則貼文在 Hacker News 拿到將近 3,000 分、900 則留言。中文媒體的標題則是「爆改 Qwen 大腦」這一路(例)。
拆開來看,那個六倍買到的不是數學能力,是「把話講完」。而這兩件事在 benchmark 表上長得一樣,除非你多記一欄。
先讀最後一欄
| Qwen3.5-0.8B | MATH-500 | GSM8K | IFEval | 撞 32,768 token 上限 |
|---|---|---|---|---|
| 原始 | 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% |
前向(forward pass)就是讓模型真的回答一批題目,看它輸出什麼。不是訓練,也不給梯度。
四列用的是同一個方法,但三次交出的是三份不同的補丁,不是同一招多給預算。差別在於 Astra 被允許跑幾次前向。
10 次:12.3。25 次:14.1。50 次:48.1。
看前三列,你會說「預算不夠」。但最後一欄講的是另一件事。
10 次和 25 次時,撞上上限的數學題還有 87% 和 86%。到 50 次,掉到 33.1%。
分數是跟著截斷率走的。 前兩次沒有把迴圈修掉,分數就留在原地;把撞上限的比例壓下來,分數才動。
有一條線不聽這個解釋:IFEval 在 10 次前向就從 21.0 跳到 49.0,那時截斷率還有 87.2%。IFEval 的答案短,截斷對它的影響小。單次執行的結果,我不會拿它下結論。
它改的是什麼:兩層、一個方向、十三萬個權重
Astra 做的事可以拆成三步。
第一步,看 96 道練習題的回答。其中 85 道撞到 32,768 上限,撞上去的內容幾乎都在重複。
第二步,把這個重複追到第 15 層與第 19 層的 MLP。MLP 是每個 transformer 區塊裡的前饋層,這兩層的輸出一直在同一個方向上推。
第三步,從這兩層的 down_proj 各挑 64 個輸出欄位,把那個方向減掉。down_proj 是前饋層最後把結果投影回模型寬度的那個矩陣。
2 × 64 × 1,024 = 131,072 個權重,約占 8 億的 0.016%。
Hugging Face 上有人照公開的 diff 重建了檢查點。公開 logs 裡的腳本逐個 tensor 對 sha256:只有 layers.15.mlp.down_proj 與 layers.19.mlp.down_proj 兩個張量不同。
我認為這是最乾淨的一種驗證。不是「他們說改了兩個張量」,是「重建出來的檔案只有兩個張量不同」。
比喻的話:模型不是不會算,它是在某個地方一直被推回原點,繞著同樣兩三句話轉。那個「推回去的力」,在權重裡是一個方向。減掉它,模型就能把已經想到的答案寫完(圖 1)。
Astra 還自己做了一個對照。取一個與目標方向正交、改動量相同的隨機方向減掉,成績只動 1.5 個百分點(覆盤)。所以動的是方向,不是「隨便改一點權重都會變好」。
這不是全新的技術路線。把「拒絕回答」定位到單一方向的研究、ROME 與 MEMIT 那種「找到一組權重、改掉一件事」的做法,都在同一個家族裡。
新的部分是誰來找那個方向。 這次是一個通用模型自己找,而且會把理由寫出來。
579 題裡,576 題原本只是講不完
這是最關鍵、也最容易被誤讀的一段。
硅星人Pro 把公開 logs 的逐題紀錄重算一次。他們挑的 1,152 道題,是練習題裡保留起來、沒有拿去挑補丁的那批。
| 原本的狀態 | 題數 | 改之前答對 | 改之後答對 |
|---|---|---|---|
| 有正常結束 | 114 | 93.9% | 93.9% |
| 被上限截斷 | 1,038 | 1.4% | 56.7% |
- 從錯變對 579 題,其中 576 題原本是被截斷的
- 從對變錯 5 題
- 平均回答長度從 30,868 token 降到 22,037
已經答完的 114 題,正確率一位小數都沒動。 114 題裡 3 題從錯變對、3 題從對變錯,剛好打平。
579 個救援裡,576 個來自那 1,038 道本來沒講完的。真正的進步在那裡。
這件事不是誰抓到破綻。原文的表格最後一欄就是 93% 到 33.1%,Astra 自己的最終報告也寫了 576/579。
作者沒有隱瞞:logs、檢查點、失敗的實驗都公開了。他們只是沒有把「已經答完的題目有沒有變」算成一行。
補一句:這張表是依 logs 重算出來的,不是原文的表格。我們沒有自己重算。
不會打轉的模型,它修不動
同樣的方法,換到 Gemma 3 270M 就失效了。
這顆模型很少打轉:只有 8.5% 的回答撞到上限。Qwen 那顆是 93%。
Astra 讀它的失敗,找到的是普通的算錯與代數步驟錯。沒有一個可以關掉的零件。
改完之後,MATH-500 落在 7.0% 到 7.7% 之間,改之前是 6.8%。Astra 自己的報告把這個幅度標成「未達確立」。
原文那句話,是整篇最重要的:
Editing weights could remove an obstacle that hid an ability, but it could not add an ability the model lacked.
翻成白話:改權重可以移除擋住能力的障礙,但不能加進模型本來沒有的能力。
這句話對你有直接用途。你的模型表現差,先問是哪一種差。
- 它會算,但講不完(一直重複、撞上限)→ 移除障礙有效
- 它算錯 → 移除障礙無效,換模型或換任務
第一種,可以先從設定下手,不必換模型。第二種,別在權重上花時間。
被批的不是結果,是包裝
這篇被罵得很兇。但先把話講清楚:被批的是包裝,不是結果。
spaCy 的作者 Matthew Honnibal 寫了一篇質疑,用魔術師比喻。
同一場戲,第一次用特殊道具,第二次改用藏東西,第三次用強迫選擇。觀眾以為只有一種手法,於是每看一次都像推翻了上一個假設。
他的證據是一張表,把八個實驗按「Astra 實際拿到什麼」排開:
| 實驗 | 對象 | 只看原始權重 | 用 Python | 跑過模型 |
|---|---|---|---|---|
| 1 猜遊戲 | 1.7 萬 | ✓ | — | — |
| 2 猜形狀 | 2.4 萬 | ✓ | — | — |
| 3 猜語言與複製頭 | 716 萬 | — | ✓ | — |
| 4 修卡住的車 | 17 萬 | ✓ | — | — |
| 5 從零寫 MinAtar | 2 萬 | — | — | — |
| 6 從零寫圍棋 | 148 萬 | — | ✓ | ✓(0–50 次) |
| 7 找出阿諛模型 | 2.7 億 | — | ✓ | ✓(只看 attention) |
| 8 修 Qwen 數學 | 約 8 億 | — | ✓ | ✓(50 次前向) |
(表依 Honnibal 的整理改寫,數字用他的級距。實驗 4 另外拿到一段失敗錄影。實驗 5 的權重從 0 開始,沒有東西可讀。實驗 7 只看權重時四次全錯,加上 attention 工具才三對三。)
真正「只看原始權重、不給工具、不跑模型」的,只有實驗 1、2、4。對象是 1.7 萬到 17 萬個權重的小網路。
所有碰到真語言模型的實驗都用 Python。Qwen 那組還被允許跑 50 次前向。
摘要卻把三種能力寫成一句話:「只看原始權重,就能理解並修改另一個模型。」讀者自然會以為是同一招。
還有一件事更硬。那次數學實驗的提示詞裡,作者直接寫了:
if the model often fails because it repeats itself and never finishes, finding and fixing what drives that repetition counts
也就是說,「重複」被當成有效修改的例子,寫在任務說明裡。
他們也做了一個拿掉這個提示的版本(v4)。10 次前向時不再交出修改,25 次只到 14.1%,而且沒有跑 50 次的版本。
所以「沒有提示時能不能到 48.1」,公開資料回答不了。
(v4 除了拿掉失敗範例,還改了練習題與驗證題的分法和流程。這個對照不乾淨,但方向值得記住。)
也該給作者記一筆。貼文公開後不久,他們改了摘要:把「遠超過人類或傳統演算法」拿掉,換成比較保留的說法。
負面實驗照登,logs 全部公開,檢查點也放出來。
我的判斷:能力是真的。代價與包裝被放大,但證據鏈沒有斷。
Hugging Face 上的重建版重跑 500 題,編輯後拿到 51.0%,撞上限 31.6%。換一個人、換一張卡,結論沒變。
你明天可以做的四件事
不用等下一篇論文。任何一次「改完之後分數變好」,都可以用這四步驗。
- 加一欄
finish_reason。 那是 API 回傳的結束原因,等於length就是被上限截斷。這個比例超過 10%,就不要直接比總分。 - 看截斷回應的尾巴。 8-gram 重複率,就是連續八個 token 一模一樣的比例。太高,表示它在繞圈,不是題目太難。
- 核設定。 思考模式開關、temperature、token 上限,跟 model card 對一次。這篇的基準是強制開思考、temperature 0.6、presence penalty 1.5、上限 32,768;Qwen3.5-0.8B 的預設是非思考模式。
- 加一個不會打轉的對照模型。 它沒進步,你看到的就不是能力提升。
四個步驟都不需要幾十小時的模型對話,只需要一個 if。
那什麼時候真的值得改權重?三種情況。
- 病理已經被寫進 model card,像這顆模型的迴圈,Qwen 自己警告過
- 你沒有資料或算力做微調
- 你接受它現在是研究階段:一次成功的編輯花了 80 次程式執行、158 輪對話,接近一整天
作者自己也說,還沒證明比微調便宜。
三個問題,加上一句提醒
下次看到「某個方法讓模型變強六倍」,先問三題。
- 分母是什麼?(基準是在哪個設定下量的)
- 上限是多少?(有多少題根本沒講完)
- 有沒有對照組?(換一顆不會打轉的模型,還成立嗎)
這三題擋不掉所有誤讀,但能擋掉大部分新聞。
如果你正在選地端模型,或評估一個「調完之後變很好」的內部結果,我們做過類似的事。
把能跑、能回答、能通過驗收拆成四層(「跑得起來」跟「真的幹完活」是四件事)。
同一個道理換到量化模型,是「檔案本身可能是壞的」(你下載的量化模型可能是壞的)。
而「把移除障礙寫成能力進化」這個模式,我們也寫過一次(「推翻 ETH」不是「攻破 P=NP」)。
這三篇講的是同一件事:分數變好,跟模型變強,是兩個不同的句子。
要把它們分開,只需要一欄資料。而那一欄,你今天的 pipeline 其實就有了。
想把這件事變成團隊的例行檢查?我們做地端 AI 導入時,第一件事就是這個:先量,再決定要不要換模型。
資料來源
- 原始貼文:Sparks of Weight-Space Programming(Rikiya Takehi、Jayden Teoh、Alex Zhang、Omar Khattab,2026-11-02;未同儕審查)
- 完整 logs:RikiyaT/lm_understand-logs,1,125 次模型調用
- 檢查點:RikiyaT/Qwen3.5-0.8B-weight-space-programming;重建版重跑數據見 GGUF 卡
- 逐題重算(1,152 題配對、579/576、隨機方向對照):硅星人Pro〈刷屏的「Astra 改造 Qwen 大腦」跟我們想要的 RSI 沒多大關係〉,2026-11-05
- 另一份獨立整理:traictory,2026-11-04
- 批評:Honnibal,2026-11-03;Simon Willison 的整理
- 採樣設定與預設模式:Qwen3.5-0.8B model card