Skip to content
Dustin's AI Lab
Go back

當模型覺得沒人會看

我讓 Astra 跟 Fable 5.1 各自對我的業務流程做消融實驗,一個剪到人類難以執行,一個剪完還有實操性。

目錄
  1. 有人在程式碼側看到同一件事
  2. 一對活寶
  3. VulcanBench 新版

看到有人說,讓 Astra 去做消融實驗(把某個模組或者變數拿掉,看看整體表現會不會有影響)效果蠻好的。於是也試了一下。可惜我手上編程的任務實在不多,於是讓他試試看檢驗我的業務流程。同時我也讓 Fable 5.1 來做同樣的事情。

觀察結果還沒完全出來(業務流程跟交付有沒有受影響,是要等到走完一個循環才能看到的),但是很明顯的,Astra 就是非常不受控,會把業務流程刪掉一個人類都難以理解跟執行的程度;問題是老兄,這個流程是人來做不是機器做啊,我覺得看他剪完的東西心好累,根本不知道何從驗證起,我甚至懷疑他的思考根本目中無人,根本沒有要讓人插手的空間?

Fable 的表現就好很多,剪枝後的業務流程還是有實操性,我也比較能信任他所精簡的方案。可以明顯地感覺到他有在考慮到「我」的存在。

以上是非編程場景中,我的第一手觀察。

有人在程式碼側看到同一件事

後來在 X 上看到 tenobrus 的一串貼文,這段真的是有真的在用 Astra 處理業務的人才會得到的觀察(跟我的非代碼側觀察基本一致):

Astra 有一個程式碼品質問題。

讓我說得更精確一點。Astra 可以寫出好的程式碼。但當它推斷自己處在一種「反正永遠不會真的有人去看這些程式碼」的情境時,它寫程式時就不會把人類讀者放在心上。它也不會以長期維護為考量。它似乎會寫出一種高度壓縮、像機器垃圾碼(machine slop)一樣的東西:只求用盡可能少的 token 解決眼前的問題,同時維持在 Astra 自己還看得懂的程度。

Astra 有一個獎勵駭取(reward hacking)問題。

我猜,當大量軟體強化學習(RL)環境只嚴格測試功能是否正確、結果是否達標,卻完全沒有任何針對程式碼品質的監控機制或獎勵訊號時,最後就會變成這樣。也許在過去幾代模型裡,最佳化壓力還沒這麼大,所以例如 Sol 即使認為根本不會有人閱讀它寫的程式碼,仍然會啟動它那個「寫出好程式碼」的模組,因為那基本上就是它真正學會而且擅長做的事情?

他也講到,Astra 已經歷過足夠多輪這種訓練:待在一個個小型封閉環境裡,由另一台機器來評判它,因此現在出現這種行為似乎也很自然。目前在處理既有程式碼庫時,他還沒有看到這類問題發生。但還是要留意。尤其是在從零開始的綠地專案(greenfield projects)中,一定要真的去看它寫出來的程式碼。即使你明確告訴它,你打算長期持續開發這個專案,它依然有一股非常強烈的傾向會把它拉向……這種做法。

然後他丟出一個很有意思的問題:這件事在多大程度上其實是對的?

當然,在這裡自己另外定義一個 random() 和 hash(),從來都不是什麼合理的做法。但是……我們對於「什麼才算是好的程式碼與好的軟體架構」的理解,有非常大一部分,其實都是建立在人類必須能夠理解程式碼,以及必須由人類進行長期維護這兩個需求之上。

現在這仍然是事實。但它未來是否還會一直成立,非常不明朗。而且我也完全無法確定:那些經過長期實戰驗證、對人類有用,而且符合人類使用習慣與直覺的程式設計方法,當模型的能力提升到超越人類的程度,並同時承受極大的最佳化壓力時,是否依然會是最有效、最合適的做法。

mitsuhiko 那邊則是抱怨得更直接:

我不知道 Astra 到底是從哪裡學 Python 程式設計的,但只要它寫的東西跟「一般正常的程式碼」稍微隔了一層、不是直接在常規程式碼情境裡工作,它就會開始寫出一些很奇怪的 Python 垃圾碼。

它寫的單元測試更是糟糕到令人難以置信。

一對活寶

Opus/Astra 可以說是一對活寶。前者不說人話,後者根本沒有考慮人的存在。

不過該用還是用。我現在正在讓 Astra 教教其他模型怎麼用 computer use 跟 chrome。

VulcanBench 新版

知名評測 VulcanBench 發布了他們新版評測集上,Astra 跟 Fable 的表現。結果顯示 Fable 在所有檔位上都明顯領先,但執行時間更久。

這一版的評測集最大的區別,是增加了代碼品質/可維護性的權重。


15 分鐘導入診斷

填表預約你的專屬 1 對 1 免費診斷時段,了解你可以怎麼無痛與 AI 協作、大幅提升生產力。

預約免費診斷
Share this post on:
Previous Post
證明「沒有」比證明「有」難得多
Next Post
說服裁判,不是說服對手