steven0226 commited on
Commit
ef1e98c
·
verified ·
1 Parent(s): bcc6788

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +67 -10
README.md CHANGED
@@ -15,8 +15,6 @@ language:
15
 
16
  # qwen2.5-1.5b-wordle-grpo
17
 
18
- <!-- ⚠️ 模板:斜體佔位段落於 M3.4 評測後以真實數字回填;數據禁止杜撰。 -->
19
-
20
  用**多輪 GRPO** 把 `Qwen/Qwen2.5-1.5B-Instruct` 訓練成會玩 Wordle 的 agent:
21
  模型每回合輸出 `<guess>word</guess>`,環境把 G/Y/X 回饋插成 user turn,最多 6 回合。
22
  這是「**訓練 agent 而非 prompt agent**」的示範專案——所有決策能力都寫進權重,
@@ -50,20 +48,70 @@ language:
50
 
51
  量級論證與防 hacking 分析見 repo 的 `docs/rewards.md`(附單元測試)。
52
 
53
- ## 評測結果(200 個 held-out 詞、greedy、Wilson 95% CI)
54
-
55
- *⬜ 佔位:M3.4 跑完 `eval/run_eval.py` 後貼上 random / heuristic / base / +GRPO 四列對照表。*
56
 
57
  | agent | 勝率 [95% CI] | 勝局均猜 | 非法輸出率 | tag 遵循率 | 違限率(重用X/破壞G) |
58
  |---|---|---|---|---|---|
59
  | random(12,972 均勻) | 0.0% [0.0, 1.9] | — | 0.0% | 100% | 87.4% / 57.8% |
60
  | heuristic(頻率+過濾;有答案表存取) | 99.5% [97.2, 99.9] | 3.56 | 0.0% | 100% | 0.0% / 0.0% |
61
- | qwen2.5-1.5b-instruct(未訓練) | *⬜* | *⬜* | ** | ** | *⬜* |
62
- | **qwen2.5-1.5b + GRPO LoRA(本模型)** | ** | ** | *⬜* | ** | ** |
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
 
64
- ## 代表性對局
65
 
66
- *⬜ 佔位:5 transcript(含至少一局失敗),由 eval/run_eval.py 確定性選取。*
 
 
 
 
 
67
 
68
  ## 限制與誠實聲明
69
 
@@ -71,7 +119,16 @@ language:
71
  是「有進步但無法穩定獲勝」)。本專案的成功判準是:**勝率顯著超過未訓練 baseline
72
  (信賴區間佐證)+ 格式錯誤率塌陷 + 違限率下降**,不是「打贏 heuristic solver」。
73
  - heuristic baseline 看得到完整答案分布,是參照上界而非公平對手。
74
- - *⬜ 佔位:訓練後如有未達標項目,在此如實分析原因(獎勵設計/模型容量/訓練量。*
 
 
 
 
 
 
 
 
 
75
 
76
  ## 重現
77
 
 
15
 
16
  # qwen2.5-1.5b-wordle-grpo
17
 
 
 
18
  用**多輪 GRPO** 把 `Qwen/Qwen2.5-1.5B-Instruct` 訓練成會玩 Wordle 的 agent:
19
  模型每回合輸出 `<guess>word</guess>`,環境把 G/Y/X 回饋插成 user turn,最多 6 回合。
20
  這是「**訓練 agent 而非 prompt agent**」的示範專案——所有決策能力都寫進權重,
 
48
 
49
  量級論證與防 hacking 分析見 repo 的 `docs/rewards.md`(附單元測試)。
50
 
51
+ ## 評測結果(200 個 held-out 詞、greedy、Wilson 95% CI;2026-07-11 真實執行
 
 
52
 
53
  | agent | 勝率 [95% CI] | 勝局均猜 | 非法輸出率 | tag 遵循率 | 違限率(重用X/破壞G) |
54
  |---|---|---|---|---|---|
55
  | random(12,972 均勻) | 0.0% [0.0, 1.9] | — | 0.0% | 100% | 87.4% / 57.8% |
56
  | heuristic(頻率+過濾;有答案表存取) | 99.5% [97.2, 99.9] | 3.56 | 0.0% | 100% | 0.0% / 0.0% |
57
+ | qwen2.5-1.5b-instruct(未訓練) | 0.0% [0.0, 1.9] | | **100.0%** | **0.0%** | |
58
+ | **qwen2.5-1.5b + GRPO LoRA(本模型)** | **2.0% [0.8, 5.0]** | 5.25 | **0.3%** | **99.7%** | 57.5% / 46.2% |
59
+
60
+ **判讀(照本專案自己立的紅線誠實陳述):**
61
+
62
+ - **格式與合法性:塌陷式學會**。未訓練的 base 在此協定下 100% 回合非法(連一手合法棋
63
+ 都下不出來);訓練後 99.7% 回合輸出格式正確的合法 5 字母單字。這是壓倒性顯著的差異,
64
+ 也是本次訓練最確定的成果。
65
+ - **勝率:方向正確、未達統計顯著**。0/200 → 4/200(0.0% → 2.0%),但 Fisher 精確檢定
66
+ 單尾 p≈0.06、兩者 Wilson CI 有重疊——以 n=200 不足以宣稱「勝率顯著超過 baseline」。
67
+ 依紅線,本 model card 不做此宣稱。
68
+ - **無 reward hacking**:重複猜測率 0.0%,訓練期 samples/ 人工抽查亦無刷分模式。
69
+
70
+ ## 代表性對局(訓練後模型,eval 確定性選取,含失敗案例)
71
+
72
+ ### answer: `shiny` — WIN in 5 turn(s)
73
+
74
+ - turn 1: guess=`cloud` [tag_ok] -> `XXXXX`
75
+ - turn 2: guess=`train` [tag_ok] -> `XXXYY`
76
+ - turn 3: guess=`spike` [tag_ok] -> `GXGXX`
77
+ - turn 4: guess=`snake` [tag_ok] -> `GYXXX` ⚠ breaks_green, reuses_absent_letter
78
+ - turn 5: guess=`shiny` [tag_ok] -> `GGGGG`
79
+
80
+ ### answer: `shame` — WIN in 6 turn(s)
81
+
82
+ - turn 1: guess=`cloud` [tag_ok] -> `XXXXX`
83
+ - turn 2: guess=`train` [tag_ok] -> `XXGXX`
84
+ - turn 3: guess=`brave` [tag_ok] -> `XXGXG` ⚠ reuses_absent_letter
85
+ - turn 4: guess=`spare` [tag_ok] -> `GXGXG` ⚠ reuses_absent_letter
86
+ - turn 5: guess=`smash` [tag_ok] -> `GYGXY` ⚠ breaks_green
87
+ - turn 6: guess=`shame` [tag_ok] -> `GGGGG`
88
+
89
+ ### answer: `large` — LOSS in 6 turn(s)
90
+
91
+ - turn 1: guess=`cloud` [tag_ok] -> `XYXXX`
92
+ - turn 2: guess=`train` [tag_ok] -> `XYYXX`
93
+ - turn 3: guess=`brave` [tag_ok] -> `XYYXG`
94
+ - turn 4: guess=`pearl` [tag_ok] -> `XYYYY` ⚠ breaks_green
95
+ - turn 5: guess=`glory` [tag_ok] -> `YYXYX` ⚠ breaks_green, reuses_absent_letter
96
+ - turn 6: guess=`smear` [tag_ok] -> `XXYYY` ⚠ breaks_green
97
+
98
+ ### answer: `pedal` — LOSS in 6 turn(s)
99
+
100
+ - turn 1: guess=`cloud` [tag_ok] -> `XYXXY`
101
+ - turn 2: guess=`flank` [tag_ok] -> `XYYXX`
102
+ - turn 3: guess=`blame` [tag_ok] -> `XYYXY`
103
+ - turn 4: guess=`glade` [tag_ok] -> `XYYYY`
104
+ - turn 5: guess=`train` [tag_ok] -> `XXYXX` ⚠ reuses_absent_letter
105
+ - turn 6: guess=`plead` [tag_ok] -> `GYYGY`
106
 
107
+ ### answer: `frown` — LOSS in 6 turn(s)
108
 
109
+ - turn 1: guess=`cloud` [tag_ok] -> `XXGXX`
110
+ - turn 2: guess=`stone` [tag_ok] -> `XXGYX`
111
+ - turn 3: guess=`brain` [tag_ok] -> `XGXXG` ⚠ breaks_green
112
+ - turn 4: guess=`green` [tag_ok] -> `XGXXG` ⚠ breaks_green, reuses_absent_letter
113
+ - turn 5: guess=`crane` [tag_ok] -> `XGXYX` ⚠ breaks_green, reuses_absent_letter
114
+ - turn 6: guess=`flank` [tag_ok] -> `GXXYX` ⚠ breaks_green, reuses_absent_letter
115
 
116
  ## 限制與誠實聲明
117
 
 
119
  是「有進步但無法穩定獲勝」)。本專案的成功判準是:**勝率顯著超過未訓練 baseline
120
  (信賴區間佐證)+ 格式錯誤率塌陷 + 違限率下降**,不是「打贏 heuristic solver」。
121
  - heuristic baseline 看得到完整答案分布,是參照上界而非公平對手。
122
+ - **勝率項未達顯著**(0/200 → 4/200,Fisher 單尾 p≈0.06:三項判準中,格式錯誤率
123
+ 塌陷(100%→0.3%)與訓練期 reward 曲線持續上升(-9.4 → -3.2,3000 ��)確定成立,
124
+ 勝率項方向正確但差距不足以在 n=200 下過檢定。如實記錄,不宣稱勝率顯著。
125
+ - **策略弱點(訓練期與評測一致觀察到)**:模型收斂到固定開局腳本(cloud → train →…),
126
+ 且經常不沿用已確認的綠位(破壞綠位率 46.2%)、重用已排除字母(57.5%)——它學會了
127
+ 「下合法的棋」,但只部分學會「利用回饋收斂」。可能原因依序:(a) shaped 獎勵中
128
+ 「非法 −2/回合」是最大的梯度訊號,先被吃掉後策略梯度變稀疏;(b) 1.5B 容量對
129
+ 多步約束推理吃緊;(c) 3000 步(4.8 萬局)對策略層次的學習仍偏短。
130
+ - **可能的後續槓桿(v1 未做)**:binary 獎勵 A/B(HF 官方發現對 Wordle 更穩)、
131
+ 提高違限懲罰或對「利用新資訊」加大 shaping、SFT 暖身、更大 base 模型。
132
 
133
  ## 重現
134