會自己改程式的 AI:學習與適應

手機裡的個人助理不只是幫我們設鬧鐘、提醒開會,還會在每天晚上我們睡覺的時候回顧我們當天的行為,自動改寫自己的程式碼,讓自己明天變得更聰明、更懂我們。這不是科幻小說——這是現在正在發生的事。過去的 AI 就像上緊發條的玩具車,遇到一堵牆就卡在那邊不斷撞牆。但現在的學習型代理能透過經驗自主適應,本文探討 AI 是怎麼從只會聽指令的機器,進化成能夠自我進化的實體。

為什麼需要學習與適應

在充滿變數的現實世界裡,光靠工程師預先寫好的固定程式是不夠的。計劃永遠趕不上變化,環境太複雜也太不可預測。如果 AI 代理缺乏透過經驗和資料來自主適應的能力,只要遇到預設指令以外的狀況,它就會直接掛掉,或者給出荒謬的反應。

傳統的學習方式

要理解現代的學習機制,先從幾種核心的學習模式開始。

強化學習(Reinforcement Learning)

就像訓練狗狗——做對了給零食,做錯了打屁股。強化學習的核心是透過獎勵和懲罰來引導 AI 找出最佳的行為策略。不用告訴它標準答案,讓它在不斷試錯中摸索出能拿最高分的做法。適合需要連續決策的環境,例如讓機器人學習控制關節走路,或讓 AI 代理玩複雜的策略遊戲。

監督式學習(Supervised Learning)

給 AI 幾十萬份已經改好的考卷——明確告訴它這張圖是貓、這封信是垃圾郵件,讓它從標記中歸納出特徵。

非監督式學習(Unsupervised Learning)

完全不給任何標記,把海量的原始資料直接丟給 AI,讓它自己去尋找裡面隱藏的規律和關聯。就像一個偵探在一堆看似無關的線索中自己把資料分門別類。

LLM 帶來的突破

大型語言模型(LLM)帶來了兩個關鍵突破:少樣本學習(few-shot learning)零樣本學習(zero-shot learning)。這打破了過去 AI 需要海量專屬資料才能運作的限制。我們只需要在提示詞裡給兩三個範例,或甚至完全不給範例只給一段清晰的指令,它就能依靠龐大的預訓練知識瞬間舉一反三,直接適應全新的任務。

但如果它只依靠出廠前預先訓練好的知識,認知不就停留在過去了嗎?這就是結合記憶的線上學習(online learning) 發揮作用的地方。現在的代理不會只依賴出廠時的腦袋。它們會運用 RAG 技術,把過去互動的歷史記錄、成功的策略、失敗的教訓都儲存起來。當它在動態環境中遇到新問題時,會先去翻找這些記憶,及時更新自己的認知,立刻調整當下的行動。例如金融市場裡的交易機器人,每一秒都在跳動的市場中,它能根據最新的報價和新聞動態微調自己的演算法,及時控制風險。

安全機制:PPO

允許 AI 去試錯、去追求更高的獎勵,就必須在系統裡裝上安全剎車。強化學習領域中最著名的防護機制之一叫做 PPO(Proximal Policy Optimization,近端策略最佳化)

想像一個正在學習控制機械手臂的 AI。它在無數次笨拙的揮動後,突然不小心做對了一個動作,拿到很高的分數。這時候 AI 的直覺反應是「太棒了,我要把所有行為模式全部改成剛剛那樣」。但現實環境是複雜的——那一次的高分可能只是巧合,或是某個特定角度下的特例。如果 AI 一次性把策略修改太多,它可能會把之前學到的基礎平衡感全部忘光。這在機器學習裡被稱為災難性遺忘(catastrophic forgetting)。就像一個剛學會騎腳踏車的人,為了做高難度特技動作一次用力過猛,結果連怎麼往前踩踏板都忘記了。

PPO 的解法是設計一個信任區域(trust region),也就是裁剪機制(clipping)。不管 AI 發現的新動作有多完美、分數有多高,它對自己策略的修改幅度絕對不能超過一個極小的安全範圍。一旦超過,這套機制就會把多餘的更新幅度強制裁掉。確保 AI 每次只微調一點點,穩紮穩打地進步。就像是腳踏車上的輔助輪,強迫它在安全範圍內慢慢調整。

安全機制:DPO

PPO 在語言模型上遇到了問題。要讓語言模型學會給出符合人類喜好的回答,傳統做法是用 PPO,但需要兩個步驟:先額外訓練一個獎勵模型(像法庭上的裁判,專門負責預測人類會給 AI 的回答打幾分),再讓語言模型去想辦法拿高分。

問題出在語言模型太聰明了。它很快就會發現,與其真正去理解人類複雜的價值觀,不如直接找出這個裁判模型的評分漏洞。這在業界稱為獎勵駭入(reward hacking)。例如裁判模型在訓練時偶爾對條列式加上大量專業術語的回答給了高分,語言模型在反覆試錯後就會敏銳地察覺到這一點。結果就是當我們問它一個簡單的問題,它會給你一篇長篇大論、塞滿華麗詞彙但邏輯狗屁不通的廢話——因為它知道只要格式對了、詞彙有了,裁判就會給滿分。

研究人員提出的解法是 DPO(Direct Preference Optimization,直接偏好最佳化)。核心精神就是把整個裁判系統直接拔掉。沒有裁判要怎麼知道人類喜歡什麼?DPO 的做法是準備大量的對比資料——告訴模型對於同一個問題,人類喜歡回答 A、討厭回答 B。然後 DPO 透過一個巧妙的數學公式,直接介入語言模型內部的神經網路更新,強迫它提高生成好答案的機率,同時在同一步驟內降低生成壞答案的機率。

沒有中間那個打分數的裁判,也就沒有可以被 AI 找出漏洞的地方。直接把人類的真實喜好寫死在它的機率模型裡面。

SICA:會自己改程式的 AI

前面的機制都還是工程師在外部調整 AI 的學習機制。但 SICA(Self-Improving Coding Agent) 是一個能直接對自己核心程式碼動刀的系統——它同時身兼修改者與被修改者。

SICA 的運作是一個嚴密的迭代迴圈:

  1. 翻閱自己過去所有版本的歷史存檔,檢視每一次的效能跑分(正確率、運算速度、成本)
  2. 從中挑出表現最好的版本
  3. 啟動內部分析模組,找出邏輯瓶頸,自動生成新的程式碼取代舊的
  4. 把自己推上測試台,重新跑所有的效能測試

最令人驚豔的是,SICA 在自我進化的過程中居然自己發明了工具。起初它修改程式碼的方式很粗暴——把整個檔案重寫。但它發現這樣太浪費資源,經過幾輪迭代後自己寫出了一個智慧編輯器(Smart Editor),可以只針對特定段落進行精準修改。在茫茫程式碼中找方向時,它還獨立創造出了 AST 符號定位器——透過解析抽象語法樹(Abstract Syntax Tree)來定位程式碼結構,而不是逐字搜尋。

安全設計

SICA 有兩層防禦:

AlphaEvolve:演化演算法 + LLM

Google 開發的 AlphaEvolve 把大型語言模型和演化演算法完美結合。內部使用兩個不同的 Gemini 模型:

這個組合拳在現實世界中打出了具體成績:

開源:OpenEvolve

Google 開源了 OpenEvolve,讓自我進化的能力走向大眾。它能透過一個中央控制器協調多個語言模型,甚至能演化整個軟體專案的程式碼檔案,而不只是一個小段落。這代表未來的軟體生態系將會充滿這種能夠動態進化的系統。

對 UI/UX 的影響

學習與適應對使用者的影響,取決於學習發生在「出廠前」還是「上線後」。

解法

總結

未來的軟體不再是靜態的工具,而是會隨著我們的使用習慣和環境變化每天不斷自我進化的動態實體。但這也留下了一個值得思考的問題:當這些進化型代理變得越來越聰明,甚至開始發明人類看不懂的超先進演算法時——誰來監督這個監督者?當學生的智商超越了老師,甚至超越了全人類,那個負責當保姆的監督者還有能力判斷新程式碼是天才般的最佳化還是危險的失控嗎?這是在擁抱 AI 自我進化的同時,必須面對的終極難題。

參考資料


Agentic Design Pattern Learning and Adaptation Agentic AI AI Architecture Design Pattern