🎯 什麼情境該想到我

當你「靠一條條寫死的規則去處理複雜、充滿例外的問題,規則越加越多卻還是漏洞百出」,或在「規則 vs 資料驅動」之間猶豫的時候。

⚙️ 怎麼用(思路轉換)

  1. 警覺「規則爆炸」:想用文法規則覆蓋 20% 的真實語句就要幾萬條,越寫越多、還會互相矛盾;每多一個新情況就得再補規則——這是硬寫規則的死路。
  2. 改用資料統計學規律:與其窮舉規則,不如從大量資料中用統計方法歸納。自然語言處理改走統計路線後,語音辨識準確率從 70% 躍升到 90%、詞彙量從幾百升到幾萬,才真正能用。
  3. 別當「鳥飛派」:看鳥怎麼飛就想造飛機(模仿表象),不如掌握背後的空氣動力學(原理)。萊特兄弟靠的是空氣動力學,不是仿生。面對問題要抓背後可統計、可計算的規律,而非表面模仿。
  4. 前提是要有資料與算力:統計方法的威力隨資料量與算力增長而釋放——先確認你能取得足夠且有代表性的資料。

★ 套用到軟體工程:垃圾郵件過濾的轉折

一個經典的工程例子:早期的垃圾郵件過濾器靠人寫規則(標題含「免費」加 2 分、寄件者不在通訊錄加 1 分……)。規則越寫越多,垃圾郵件發送者也越來越會繞過規則。2002 年 Paul Graham 在〈A Plan for Spam〉一文中提出用貝氏統計:從使用者已經標記的郵件中,自動學出每個詞出現在垃圾郵件與正常郵件中的機率。規則不再由人寫,而是從資料中算出來——而且使用者每標記一封信,過濾器就自動更新。

這和書中的自然語言處理故事是同一個轉折:例外多到規則寫不完時,讓資料說話。

★ 今天的三條路:規則、統計模型、大型語言模型

寫死的規則傳統統計/機器學習大型語言模型
需要的資料不需要大量有標記的資料少量範例(寫在提示中)就能開始
可解釋性最高:每個判斷都能指出是哪條規則中等最低
例外處理每個例外都要人工加規則資料中有的例外會自動學到常常能處理沒見過的情況
成本開發與維護的人力標記資料、訓練、監控每次呼叫的費用與延遲
失效方式遇到沒想到的情況直接錯資料分布改變時悄悄變差偶爾產生看似合理但錯誤的輸出

★ 實務上最常見的是混合

  • 規則當護欄,統計當核心:例如詐騙偵測,統計模型給風險分數,但「單筆超過某金額一律人工審核」這種硬規則仍然保留——它們代表的是業務政策,不是預測。
  • 先用規則上線,同時蒐集資料:規則系統的判斷結果和人工修正,正好成為之後訓練模型的標記資料。
  • 統計模型要持續監控:資料分布會隨時間改變(使用者行為、季節、對手的策略),模型會在沒有任何錯誤訊息的情況下慢慢變差。要定期用新的標記資料重新評估。

★ 判斷該走哪一條

  1. 規則能用十幾條寫完、而且很少變嗎? → 用規則。清楚、便宜、可稽核。
  2. 例外多到寫不完,而且有(或能蒐集到)大量標記資料? → 統計模型。
  3. 例外多、資料少、任務需要理解語言? → 大型語言模型,但要建評估集(見 工具-AI系統評估)。
  4. 判斷錯誤的後果很嚴重嗎? → 不論用哪條路,都要保留人工覆核或硬規則當最後防線。

🧪 我實際套用的紀錄

  • 2026-07-24:(待填)

⚠️ 注意 / 什麼時候不適用

  • 資料太少、或問題本身有明確少量規則(如象棋規則)時,硬套統計未必划算。判準:情況的「例外」是否多到規則寫不完。

🔗 相關工具