你有沒有想過,模型訓練到底是在努力把什麼變小或變大? 你可以把它想成考試標準,模型每次改參數,都在想辦法讓這個分數更好。 目標函數定義了優化方向,是訓練過程真正要追的目標。 這也讓它很適合先拿到可用答案,再慢慢把精度往上推。 這種寫法常用在需要先把問題定義清楚,再逐步提升模型品質的場景。
容易混淆
目標函數 vs 損失函數 目標函數:整體要優化的東西 損失函數:衡量單筆或一批樣本誤差的量 最關鍵的區別:先看它是在比什麼,再看它怎麼做。
目標函數 vs 評估指標 目標函數:訓練時拿來更新參數 評估指標:訓練後拿來看表現 最關鍵的區別:先看它是在比什麼,再看它怎麼做。
記住這句就好
訓練要追的總分,就是目標函數。
實際案例
分類模型 把交叉熵設成目標函數,模型就會想把錯分類降到最低。
推薦排序 把點擊或排序品質寫進目標函數,模型就會朝業務想要的方向學。
算法與應用
目標函數可以是最小化形式,也可以是最大化形式。 很多時候它會由多個損失項組成,再加上正則化項。 設計得好,模型學到的方向就對;設計錯,模型可能只是努力追錯目標。
情境判斷
Q1(直覺題): 你把交叉熵放進訓練流程,模型在優化什麼?
目標函數,也就是訓練時真正要追的分數。
Q2(判斷題): 訓練時損失一直下降,但線上業務指標沒變好,問題可能在哪?
目標函數和真正業務目標沒對齊。
常見問題
目標函數和損失函數有什麼差別?
目標函數更廣,損失函數通常是其中一部分。
它一定要是單一數值嗎?
訓練時通常要能轉成單一可優化目標。
怎麼知道設得好不好?
看它是否和真正任務、業務、或評估指標對齊。