持續微調:模型上線後怎麼跟著資料一起長
訓練一次就結束的模型會逐漸過時。這是可持續的迭代機制。
業務會變、用語會變、新的類別會出現。上線半年的微調模型,若沒有更新機制,準確率通常會緩慢下滑而沒有人察覺。
持續微調的核心是建立一條「資料回收 → 標註 → 重訓 → 驗證 → 發布」的迴路,並讓它自動跑起來。
一、資料回收(自動)
# 三種來源,優先級由高到低
1. 人工修正過的樣本 ← 品質最高,一定要收
2. 使用者負面回饋的樣本
3. 模型低信心的樣本 ← 主動學習:不確定的最有學習價值
def should_collect(pred, feedback):
return (feedback == 'corrected'
or feedback == 'thumbs_down'
or pred.confidence < 0.6)二、標註(半自動)
人工修正過的樣本已經有標籤,直接可用。低信心樣本則送進標註佇列,每週處理一批。重點是控制標註量——每週 100 到 200 筆是可持續的節奏,一次要標兩千筆的計畫通常會停擺。
三、重訓(排程)
- 觸發條件:新資料累積達門檻(例如 500 筆)或距上次訓練滿三個月。
- 資料組成:舊資料 + 新資料,且要重新做去重與洩漏檢查。
- 不要只用新資料訓練——那會造成災難性遺忘。
def build_training_set(old, new, max_total=6000):
# 新資料全留,舊資料抽樣補足
keep_old = max_total - len(new)
sampled = stratified_sample(old, n=keep_old, by='label')
return dedupe(sampled + new)四、驗證(自動門檻)
GATES = {
'task_accuracy': lambda new, cur: new >= cur - 0.005, # 不可退步
'format_valid': lambda new, cur: new >= 0.999,
'general_regress':lambda new, cur: new >= cur - 0.02,
}
# 任一門檻未過 → 不自動發布,轉人工檢視五、發布(灰度)
新版介面卡以 5% 流量上線,觀察一週。指標無異常則逐步放大。舊版保留至少一個月,以便回滾。
要小心的回饋迴路偏誤
只收集模型答錯的樣本,會讓訓練資料的分布偏離真實分布,長期下來反而傷害模型。務必混入隨機抽樣的樣本(建議至少三成),維持分布錨點。
評測集也要跟著更新
持續微調的同時,評測集必須加入新出現的樣態,否則你會用舊題目評估新模型,看不出真正的改善或退步。建議每季更新一次評測集,並保留一份「固定不變的核心題組」作為跨版本比較的基準。
把整條迴路做成排程任務並輸出報告:本週回收多少樣本、標註多少、是否觸發重訓、門檻結果如何。沒有可見度的自動化流程,壞掉半年也不會有人發現。
訂閱後繼續閱讀全文
本篇為訂閱者專屬內容。訂閱後可取得下列權限:
- 解鎖全部內容權限
- 閱讀不限篇數
- 全站移除廣告
月卡
NT$240
開通 30 天
一次付清,開通 30 天
季卡
NT$620
開通 90 天
一次付清,開通 90 天,每天約 NT$7
年卡
NT$2,160
開通 365 天
一次付清,開通 365 天,每天約 NT$6
一次性付款,付款成功後立即開通,到期自動結束,不會再次扣款,也不需要取消訂閱。
立即訂閱
金額均為新臺幣(TWD),即實際扣款金額,不另收手續費
支援信用卡 · Apple Pay · Google Pay · WebATM · ATM 轉帳
購買須知與退款政策