AI-LECTURER 速報課|2026-07-15|約 28 分鐘

當AI開始訓練AI:用強化學習打造一個會寫訓練任務的教練代理

📍 真實場景
阿凱,一人接案的機器學習工程師,專門幫小公司微調客製化小模型

他正在幫一家客服新創,把一個小型開源模型微調成能處理多輪疑難雜症的客服助理

😖 卡住的地方:每接一個新案子,他都要重新手寫一份強化學習訓練設定:獎勵怎麼給分、驗證規則怎麼寫、GPU排程怎麼安排——這些前置工程吃掉他一半的接案時間,而且每次都是從零開始,經驗完全無法累積、複製到下一個案子
💡 這堂課會告訴他:已經有人做出一個『會寫訓練設定的AI』,而且是用同一套強化學習,去訓練這個AI寫設定的能力。看完你會懂,這個雙層架構為什麼值得抄作業,以及它到底解決了什麼真實的工程痛點

🧭 這到底是什麼(白話版)

這篇文章的作者做了一件聽起來有點腦筋急轉彎的事:他訓練了一個AI,而這個AI的工作是——訓練其他的AI。他用的方法是 RL(強化學習)讓AI透過不斷嘗試、根據結果好壞拿到獎勵或懲罰,自己調整行為,而不是靠人工標好答案去模仿的一種訓練方式,讓一個代理型AI學會怎麼幫小模型寫訓練任務,而且這個代理的『駕照』不是整組重練——是用 LoRA只在一個已經訓練好的大模型上,外掛一小塊可以調整的參數,用很少的算力就能微調出新行為的技巧 微調出來的。

整個系統其實是兩層迴圈疊在一起。外層迴圈訓練的是『代理』本身(一個叫Qwen3.6-35B-A3B的模型),內層迴圈訓練的是代理寫出來、實際拿去用的『小模型』(Qwen3-0.6B或1.7B)。外層用的算法核心是 policy gradient(政策梯度)直接根據『這個決定帶來多少獎勵』去調整AI做出這個決定的機率高低,獎勵越高,AI以後越容易做出類似的決定,具體實作是 GRPO一種強化學習算法,把同一批不同的嘗試互相比較高下,表現比平均好的嘗試會被強化,比平均差的會被壓低,不需要另外訓練一個評分模型(Group Relative Policy Optimization的縮寫);內層則是代理寫出的實際訓練設定,用同一套GRPO邏輯,但跑在完全不同的訓練框架、不同的GPU資源池上。

一個『回合』是怎麼跑的?系統先給代理一份任務說明(例如『教一個小模型解決多跳人物查詢』),代理透過讀寫檔案的工具在一個獨立沙盒工作區裡動工,還可以先查一下這個小模型『完全沒訓練過』時的分數,當作等一下比較進步幅度的起點。寫完之後代理要提交任務,系統會先跑一次驗證探測,沒過的話代理有次數上限的機會修正重試;驗證過關的任務才會被排進GPU資源池,真的跑一次訓練,訓練完的小模型會在隱藏的評測集上打分。

最關鍵的是怎麼把『這個代理這次做得好不好』變成一個數字獎勵——這就是 reward shaping(獎勵塑形)把一個模糊、複雜的目標拆解、換算成一套明確的加權評分公式,讓強化學習的訓練訊號有清楚的方向感,而不是好與不好兩極化 的實際案例。文章公布的做法是把『驗證有沒有一次就過』跟『訓練出來的小模型贏過 基準線(baseline)還沒訓練過的原始模型,在同一份評測上的分數,拿來當作『進步了多少』的比較基準 多少』這兩件事加權相加,算出這一回合代理該拿到多少獎勵,再把這個獎勵送回外層迴圈去更新代理的政策。

🎯 為什麼值得你花時間

省下的不是算力,是「摸索期」自己微調過小模型的人都知道,最耗時的往往不是等GPU跑完,而是不斷試錯:獎勵函式怎麼給分、驗證規則怎麼寫才不會漏洞百出。這個實驗示範了這段『摸索期』本身也能被自動化、被學習,而不是每個新案子都要工程師肉身重新試錯一次。
強化學習可以拿來訓練「寫訓練任務的能力」,不只是訓模型本身大多數人對RL的印象停留在『訓練出一個會下棋、會回答問題的模型』。這篇文章示範了RL可以再往上疊一層——訓練一個AI學會怎麼幫別的AI寫出有效的訓練任務,這種『對訓練本身做強化學習』的思路,是這幾年AI自動化很重要的一個方向。
連失敗都公開,這在業界非常罕見作者把每一次前導實驗的失敗記錄都寫成retro公開出來,而不是只秀成功的最終版本。對正在自學RL工程的人來說,這些『當初哪裡出錯』的紀錄,往往比成功案例本身更有教學價值。

⚙️ 它是怎麼運作的

1
任務指派系統丟給代理一份任務說明:要教會一個小模型做什麼、有哪些硬性限制、評測工具怎麼呼叫,還附幾個範例。這是代理這一回合唯一知道的資訊。
2
代理動工代理在一個獨立的沙盒工作區裡,用讀檔、寫檔、列出檔案的工具動手寫訓練設定,還能先查一下這個小模型『完全沒訓練過』時的基準分數,當作等一下比較進步幅度的起點。
3
提交與驗證代理寫完後提交任務,系統先跑一次驗證探測,檢查設定寫得對不對;沒過的話會把錯誤訊息丟回去,代理有次數上限的機會修正重試,不是無限次亂試。
4
派工進GPU訓練驗證過關的任務才會真的被排進GPU資源池,最多同時開到16個GPU,實際跑一次訓練,把那個小模型訓練出來。
5
打分與回饋訓練完的小模型會在一份代理看不到的隱藏評測集上,跟訓練前的基準分數比較,算出進步了多少;再跟驗證是不是一次就過這兩個數字,加權組合成這一回合的獎勵。
6
外層更新代理這個獎勵被送回外層迴圈,對代理做一次政策梯度更新——代理因此學到『怎麼樣的訓練設定寫法比較容易讓小模型進步』,下一回合表現會再進步一點。實測獎勵從0一路爬升到0.63的高峰,而且遷移到一個代理從沒訓練過的任務類型上依然有效。
兩層強化學習,兩套完全獨立的訓練堆疊
比較項目外層迴圈內層迴圈
被訓練對象訓練代理本身(Qwen3.6-35B-A3B,搭配LoRA)一個小型基礎模型(Qwen3-0.6B / 1.7B)
訓練方式是什麼代理寫訓練任務的過程被算成一個個回合,回合的總獎勵當作政策梯度訊號代理寫出的那份訓練任務本身:一個驗證環境+評分規則+訓練設定
用什麼技術堆疊重要性採樣GRPOGRPO,跑在GPU資源池上

🔍 程式碼漫遊(點有 ● 的行看白話講解)

這段簡化過的Python對照著原文公布的獎勵公式,把驗證分數跟訓練成效分數,加權組合成代理最終拿到的獎勵。

def episode_reward(attempt_number, validated, uplift_score):
💬 這個函式對應文章講的『回合獎勵』計算——代理每寫完一次訓練任務就算一回合
if not validated:
💬 檢查這次提交最後有沒有通過驗證探測
validation_score = 0.0
💬 文章說:從沒通過驗證,這部分直接算0分
else:
💬 通過驗證的情況,分數不是固定的1分
validation_score = max(0.0, 1.0 - 0.2 * (attempt_number - 1))
💬 第一次就過給滿分1.0,之後每多試一次扣一點,這就是reward shaping的實際做法——不是非0即1,而是給一個漸進的訊號,鼓勵代理一次寫對
uplift = uplift_score
💬 這裡對應內層迴圈訓練完的小模型,贏過基準線的幅度
reward = 0.35 * validation_score + 0.60 * uplift
💬 文章公布的實際權重是0.35 / 0.60 / 0.05——這裡示範前兩項,第三項原文段落被截斷沒交代細節,不硬編
return reward
💬 這個總分就是外層迴圈拿去做policy gradient更新的訊號,回饋給訓練代理

🛠️ 動手做:獎勵計算模擬器:親手調參數,看代理怎麼被打分

  1. 先把兩個滑桿都留在中間,看一下預設會拿到多少獎勵。
  2. 把「嘗試次數」滑到1,再滑到6,觀察驗證分數怎麼從1.0一路降到0——這就是原文說的驗證分數隨重試次數遞減。
  3. 固定嘗試次數在1,把「進步幅度」滑桿拉滿,看看單靠訓練成效最高能衝到多少總獎勵(提示:兩個權重加起來是0.95,不是1.0,因為原文還有第三個沒公開細節的權重)。
  4. 試著找出「嘗試次數」跟「進步幅度」各自要多好,代理才能拿到接近文章說的顛峰值0.63。
👇 下面是活的,直接操作

🧠 工程思維透鏡(資深工程師看到的是什麼)

🔭 為什麼要用強化學習訓練『寫訓練任務的代理』,而不是直接叫一個聊天模型照著範本生成設定就好?
如果只是照範本生成,代理學到的是『長得像對的格式』,不是『訓練出來真的有效』。RL的關鍵差異是獎勵訊號直接來自下游結果——這個訓練任務讓小模型真的進步了多少,而不是格式對不對。代價是這個回饋迴圈非常昂貴:每次都要真的排一次GPU訓練才知道好不好,所以作者才要在驗證探測這一關先擋掉明顯無效的嘗試,省下真正燒錢的訓練次數。這是『訓練訊號的真實性』跟『訓練成本』之間的權衡,資深工程師看到這種設計,會先問:回饋是不是來自真實結果、而不是代理的自我描述。
🔭 驗證分數為什麼要設計成『第一次過滿分,之後遞減』,而不是單純的『通過1分、沒通過0分』?
二元評分很容易被鑽漏洞——代理只要瘋狂重試到矇對一次,一樣拿滿分,學不到『把設定一次寫對』這個更值錢的能力。用遞減設計等於是在做reward shaping:把一個粗糙的目標(有沒有通過),細分成一個帶方向感的曲線,同時鼓勵通過、又鼓勵少試幾次。這也呼應了作者控管成本的現實——每一次重試的驗證探測都要占用系統資源,遞減設計等於是把『效率』也編碼進獎勵裡,而不是事後另外訂規則去限制重試次數。
🔭 外層跟內層用兩套完全不同的訓練框架、跑在不同的資源池上,這個切割對工程上有什麼好處?
把『訓練代理的政策』跟『訓練實際的小模型』徹底拆成兩套獨立堆疊,代理端的LoRA更新出錯,不會弄壞正在跑的小模型訓練工作,反過來也一樣——這是用架構上的隔離,換取兩邊都能各自重試、各自除錯,不必互相等待或互相拖累。這跟一般團隊常見的做法很像:把『決定要做什麼』的角色跟『實際去執行』的角色分開,兩邊各自有自己的一套流程跟責任邊界。對正在自己一人接案、身兼多角的工程師來說,這個案例其實在提醒一件事:就算資源有限,把『決策層』跟『執行層』的關注點刻意分開,仍然是值得優先投資的架構決定,而不是等規模變大了才補做。

📝 隨堂考(點選答案,立即回饋)

Q1. 這篇文章裡,「外層迴圈」訓練的對象是誰?
✅ 外層迴圈訓練的是代理本身,用LoRA微調Qwen3.6-35B-A3B;小模型是內層迴圈訓練的對象。
Q2. 代理提交訓練任務時,如果驗證探測沒過會怎樣?
✅ 文章明確說驗證分數是『第一次過滿分,之後每多一次嘗試就decaying,從沒通過則是0分』,而且重試有次數上限,不是無限次。
Q3. 為什麼作者要讓外層跟內層,分別使用兩套完全不同的訓練框架跟GPU資源池?
✅ 外層是用政策梯度更新代理這個LoRA policy,內層是拿代理寫出的設定去真的訓練一個小模型,兩者訓練對象跟資源需求不同,所以用兩套獨立堆疊,互不影響。
Q4. 這個實驗測出來的回合獎勵,在54個訓練步驟內大約成長到多少的高峰?
✅ 文章寫明獎勵從約0.0成長到約0.63的高峰,而且能遷移到代理沒訓練過的任務類型上。

🃏 翻牌記憶卡(先想答案,再點開對答)

外層迴圈點我翻面
訓練『寫訓練任務的代理』本身,用政策梯度方法,獎勵來自代理寫出的任務訓練後的實際成效
內層迴圈點我翻面
代理寫出的訓練任務被實際拿去訓練小模型(Qwen3-0.6B/1.7B),用GRPO在GPU資源池上訓練
policy gradient(政策梯度)點我翻面
一種強化學習算法,用『這個決策帶來多少獎勵』直接調整AI做出這個決策的機率,而不是靠人工標好的正確答案去模仿
reward shaping(獎勵塑形)點我翻面
把一個複雜、模糊的目標(例如『訓練得好不好』)拆解、設計成一套明確的加權評分公式,讓強化學習訓練有穩定的方向感
驗證分數(validation score)點我翻面
第一次提交就通過驗證給滿分1.0,之後每多重試一次就遞減,從沒通過就是0分——用來鼓勵代理一次就寫對
為什麼這個實驗只花約1300美元點我翻面
GPU訓練都跑在隨選GPU資源池上,而且外層迴圈只用LoRA微調代理,比對整個大模型做全參數訓練便宜很多

✅ 離開前自測(全勾=這課真的學會了)

0%