How My AI Prediction System Quietly Stopped Learning
一個看起來架構很完整的 AI 預測系統,為什麼跑了快兩週,結果卻幾乎沒有變準?
這件事對我來說,比單純「有沒有選到飆股」還重要。
因為我真正想弄清楚的,不是某一檔股票到底該不該買,而是 多個 AI/統計模型放在一起做決策時,到底會在哪裡悄悄壞掉。
這個問題很麻煩,也很值得寫。
因為很多時候,系統不是大爆炸式地壞掉,而是看起來還在運作,分數也有在跑,畫面也有結果,甚至你還會以為它只是還沒進入狀況。
但去拆資料、去看日誌、去比對結果,卻發現它根本沒有在學習。
系統結合AI的想法,大致上是這樣:
- 技術面專家:用 LightGBM,吃 14 個技術指標,輸出明日上漲機率。
- 籌碼面專家:看三大法人連買天數、融資融券增減、成交量爆量倍數,算資金匯聚程度。
- 事件面專家:用 LLM 讀新聞,輸出情緒分數和重要性權重。
- 三合一融合層:依照台股或美股動態分配三個專家的權重,最後輸出綜合勝率。
看起來邏輯很完整,對吧?
我一開始也覺得這套東西應該不會太差。
問題是,真正跑起來之後,它整整跑了 9 天、3422 筆預測,結果幾乎沒有變準。
那一刻我就知道,問題不在「模型不夠多」,而是在更底層的地方有問題。
系統有在預測,但沒有在學習
我去看了 ai_prediction_log.csv「每日預測日記本」。
結果一打開,我臉變綠了….
3422 筆紀錄裡,Return_30D 全部都是空的。Max_Runup、Max_Drawdown 也全是空的。
這代表什麼?
代表系統每天都有把技術分、籌碼分、事件分、綜合勝率記下來,卻從來沒有回頭去問:
昨天說會漲的,後來到底有沒有漲?
其實很多 AI 系統都會卡在這一關。
把重心全放在「怎麼融合模型」、「怎麼設權重」、「怎麼讓畫面看起來更像樣」,卻忘了最重要的一件事:
預測如果沒有結果回填,那根本不叫學習,只是在反覆輸出。我要累積Data但卻沒有正確的累積。
LightGBM 是離線訓練好後直接拿來推理的。
籌碼面是我手寫的固定規則。
事件面 LLM 也只是單次推理。
三個專家全部停在「給分」這一步,沒有一個真的知道自己對不對。
所以後來我才發現,這套系統不是沒在跑,而是它一直停在輸出的階段,根本沒有形成閉環。
三合一看起來完整,其實有一大塊根本是假的
第二個問題更隱蔽。
資料表面上看起來一切正常,但我拉統計一看,Event_Score 幾乎全部都一樣。
3422 筆裡,有 3321 筆都是 66.7,比例高到 97.1%。
這不是巧合,這是壞掉。
原因是事件面 LLM 在讀新聞時,只要 API 額度打滿、JSON 解析失敗,系統就會回傳一個中立基準分。
問題不在於回傳中立分,而在於這個中立分被當成正常輸出一起混進去了。
結果就是:
系統表面上說自己有技術、籌碼、事件三個專家在投票,
實際上有超過九成時間,那個事件專家根本不是在真正發言,而是在用一個固定的占位值撐場面。
這種錯誤比模型亂猜還麻煩。
因為亂猜你一看就知道它有問題,但一個看起來「合理」的假中立值,會悄悄把整個分布拖歪。
你不會覺得它錯得很明顯,只會覺得結果怎麼老是卡在某個範圍,怎麼總是差一點。
目前最大的感想就是:
多模型融合系統最危險的,不是某個模型很爛,而是某個模型看起來有在工作,但其實沒有。
靜態模型不會自己變好
第三個問題,是我一開始太相信「模型訓練過一次就可以了」。
LightGBM 是訓練好後存成檔案,每次直接載入。
聽起來沒什麼問題,但實際上,如果你沒有寫一個定期用新資料重訓的機制,這個模型就會一直停在那個時間點。
它不會自己進步。
它只會一直重複當初學到的東西。
這件事很像很多人做 AI 系統時的盲點:
你以為架構搭好就可以持續進化,但其實如果沒有結果回填、沒有新資料重訓、沒有持續校準,整套東西最後只是在用舊知識對抗新市場。這也是我現在越來越確定的一件事:
真正決定系統能不能變準的,不是「模型數量夠不夠多」,而是「Data 是否足夠」,還有底層有沒有真的形成學習迴路。
所以我後來也補了重訓機制,讓模型可以定期用新資料重新校準。
不是每次都重做,而是至少要有一個可以更新的出口。
不然系統只會越跑越久,卻越來越像舊版本的自己。
還有一些看起來小,但其實很致命的 bug
除了上面這三個比較大的問題,我也順手修了幾個看起來很小、但其實會害人誤判的地方。
像是買入區間以前只看上限,沒看下限,結果股價都已經跌破範圍了,系統還在說「在買入區內」。
這種錯誤很低級,但如果沒抓出來,實盤就會誤導人。
再來是大盤風險那個邏輯,以前只是單純打折,結果原本高信心訊號被折到模糊區,警報反而不明顯。
後來我直接改成真的斷路,不該買的時候就不要再發買入訊號。
還有停損這件事,以前是固定百分比,後來我才發現這樣太粗暴。
有些股票一天正常波動就比 5% 大,結果固定停損根本不合理。
所以我現在開始往 ATR 那種比較貼近真實波動的方式去調。
這些都不是什麼很帥的功能,但它們才是真正在幫系統變得比較像樣的地方。
我現在更在意的,不只是投資
這次除錯下來,我反而有一個更大的想法。
AI 時代真正值得突破的,不只是投資預測的準確度,而是讓預測系統有能力自己發現錯誤、修正錯誤,甚至可以延伸到更多需要決策的場景。
因為只要是「先預測、再決策」的問題,本質上都會遇到類似的坑:資料沒閉環、訊號失效卻看不出來、模型凍結在舊知識裡。
所以我現在不太想只把這套東西看成一個股票系統。
它比較像是在試著回答一個更大的問題:
當 AI 被拿來做決策時,它到底要怎麼證明自己不是在演?
這是我接下來最想繼續追的方向。

發表留言