機器學習

訓練與推論(training vs inference)

/ TRAY-ning vurs IN-fur-uns /

每個機器學習模型都過著兩段截然不同的人生。第一段是訓練:模型研究一大堆例子,慢慢調整自己內部的數字,直到答案不再出錯。第二段是推論:訓練已經結束,數字被凍結,做好的模型只是被派去回答新的問題。這就好比一個學生考前臨陣磨槍,與多年以後那同一個學生在工作中運用所學之間的區別。

這兩個階段幾乎在每個實際方面都不同。訓練是一次性(或偶爾為之)的功夫,又慢、又吃資料、又費算力——它可能要在塞滿專用晶片的機房裡跑上幾個星期。推論則是一遍又一遍地發生,最好在不到一秒內完成,每當有人向模型發問時就來一次。訓練需要正確答案(標籤)來學習;推論只需要問題本身。一個模型訓練一次,之後可能要做上十億次推論。

為什麼非要分清這個區別?因為成本與風險藏在不同的地方。偏見、錯誤和過擬合,都是在訓練時被烙進去的;而速度、能耗與服務成本則在推論時唱主角,因為你得不停地跑它。這也解釋了為什麼一個已部署的模型,並不會從每一次提問裡繼續學習,除非它被明確地重新訓練——推論時模型是凍結的,只是把它已經掌握的東西照搬出來,連同它的錯誤。

一個人臉解鎖模型在實驗室裡只訓練一次,用上百萬張臉花上好幾天。到了你的手機上,它做的是推論:每次你看一眼螢幕,那個凍結的模型就在幾毫秒內核對一句「這是機主嗎?」。它並不會從這些瞥視裡學會你新換的髮型,除非一次更新把它重新訓練。

帶著答案慢慢訓練一次;再一遍遍飛快地對新問題做推論。

這裡的「推論」僅指「執行訓練好的模型以得到一個預測」——並非統計學中更深一層意義上的推論(即估計世界如何運作)。在日常的機器學習用語裡,推論就是那一步預測而已。

又稱
learning vs predictionfit vs predict训练与推理訓練與推論学习与预测