🎯 什麼情境該想到我
當你「靠一條條寫死的規則去處理複雜、充滿例外的問題,規則越加越多卻還是漏洞百出」,或在「規則 vs 資料驅動」之間猶豫的時候。
⚙️ 怎麼用(思路轉換)
- 警覺「規則爆炸」:想用文法規則覆蓋 20% 的真實語句就要幾萬條,越寫越多、還會互相矛盾;每多一個新情況就得再補規則——這是硬寫規則的死路。
- 改用資料統計學規律:與其窮舉規則,不如從大量資料中用統計方法歸納。自然語言處理改走統計路線後,語音辨識準確率從 70% 躍升到 90%、詞彙量從幾百升到幾萬,才真正能用。
- 別當「鳥飛派」:看鳥怎麼飛就想造飛機(模仿表象),不如掌握背後的空氣動力學(原理)。萊特兄弟靠的是空氣動力學,不是仿生。面對問題要抓背後可統計、可計算的規律,而非表面模仿。
- 前提是要有資料與算力:統計方法的威力隨資料量與算力增長而釋放——先確認你能取得足夠且有代表性的資料。
★ 套用到軟體工程:垃圾郵件過濾的轉折
一個經典的工程例子:早期的垃圾郵件過濾器靠人寫規則(標題含「免費」加 2 分、寄件者不在通訊錄加 1 分……)。規則越寫越多,垃圾郵件發送者也越來越會繞過規則。2002 年 Paul Graham 在〈A Plan for Spam〉一文中提出用貝氏統計:從使用者已經標記的郵件中,自動學出每個詞出現在垃圾郵件與正常郵件中的機率。規則不再由人寫,而是從資料中算出來——而且使用者每標記一封信,過濾器就自動更新。
這和書中的自然語言處理故事是同一個轉折:例外多到規則寫不完時,讓資料說話。
★ 今天的三條路:規則、統計模型、大型語言模型
| 寫死的規則 | 傳統統計/機器學習 | 大型語言模型 | |
|---|---|---|---|
| 需要的資料 | 不需要 | 大量有標記的資料 | 少量範例(寫在提示中)就能開始 |
| 可解釋性 | 最高:每個判斷都能指出是哪條規則 | 中等 | 最低 |
| 例外處理 | 每個例外都要人工加規則 | 資料中有的例外會自動學到 | 常常能處理沒見過的情況 |
| 成本 | 開發與維護的人力 | 標記資料、訓練、監控 | 每次呼叫的費用與延遲 |
| 失效方式 | 遇到沒想到的情況直接錯 | 資料分布改變時悄悄變差 | 偶爾產生看似合理但錯誤的輸出 |
★ 實務上最常見的是混合
- 規則當護欄,統計當核心:例如詐騙偵測,統計模型給風險分數,但「單筆超過某金額一律人工審核」這種硬規則仍然保留——它們代表的是業務政策,不是預測。
- 先用規則上線,同時蒐集資料:規則系統的判斷結果和人工修正,正好成為之後訓練模型的標記資料。
- 統計模型要持續監控:資料分布會隨時間改變(使用者行為、季節、對手的策略),模型會在沒有任何錯誤訊息的情況下慢慢變差。要定期用新的標記資料重新評估。
★ 判斷該走哪一條
- 規則能用十幾條寫完、而且很少變嗎? → 用規則。清楚、便宜、可稽核。
- 例外多到寫不完,而且有(或能蒐集到)大量標記資料? → 統計模型。
- 例外多、資料少、任務需要理解語言? → 大型語言模型,但要建評估集(見 工具-AI系統評估)。
- 判斷錯誤的後果很嚴重嗎? → 不論用哪條路,都要保留人工覆核或硬規則當最後防線。
🧪 我實際套用的紀錄
- 2026-07-24:(待填)
⚠️ 注意 / 什麼時候不適用
- 資料太少、或問題本身有明確少量規則(如象棋規則)時,硬套統計未必划算。判準:情況的「例外」是否多到規則寫不完。
🔗 相關工具
- 工具-用資訊消除不確定性 —— 說明統計路線為何有效:資訊量就是消掉的不確定性,也給你「資料夠不夠」的量尺
- 工具-找對數學模型 —— 放棄硬寫規則之後的下一題:與其繼續調參,不如換個模型,這張講怎麼挑
- 工具-用度量取代模糊判斷 —— 把「相關 / 相似 / 重要」這種模糊判斷變成可計算的度量,是規則轉統計最具體的操作