目標函數 是什麼?

Objective Function:目標函數 的完整解釋

目標函數是機器學習模型訓練中用於評估模型表現的函數,其數值代表模型預測與實際值的差距,優化目標是最小化或最大化此函數。

容易混淆

目標函數 vs 損失函數 目標函數:整體要優化的東西 損失函數:衡量單筆或一批樣本誤差的量 最關鍵的區別:先看它是在比什麼,再看它怎麼做。

目標函數 vs 評估指標 目標函數:訓練時拿來更新參數 評估指標:訓練後拿來看表現 最關鍵的區別:先看它是在比什麼,再看它怎麼做。

記住這句就好

訓練要追的總分,就是目標函數。

實際案例

分類模型 把交叉熵設成目標函數,模型就會想把錯分類降到最低。

推薦排序 把點擊或排序品質寫進目標函數,模型就會朝業務想要的方向學。

算法與應用

目標函數可以是最小化形式,也可以是最大化形式。 很多時候它會由多個損失項組成,再加上正則化項。 設計得好,模型學到的方向就對;設計錯,模型可能只是努力追錯目標。

中英對照與常見說法

說法 出現場合
目標函數 台灣正式用語
目标函数 簡體寫法
Objective Function 英文原名
代價函數(cost function)、損失函數(loss function) 常被混用,但涵蓋範圍不同
適應度函數(fitness function) 演化演算法脈絡下的對應詞,通常是要最大化

跟損失函數的關係

損失函數 目標函數
範圍 衡量預測與真實值的差距 整個最佳化過程要最小化或最大化的東西
方向 一定是越小越好 可能是最小化也可能是最大化
包含什麼 只有誤差項 誤差項加正則化項,可能還有其他約束的懲罰

用一條式子說明兩者關係:

目標函數 = 損失項 + λ × 正則化項

損失項要模型貼合訓練資料,正則化項要模型保持簡單,λ 決定兩者的取捨。這就是為什麼「目標函數」的說法比「損失函數」更完整:實際在最佳化的從來不只是誤差。

帶約束的最佳化

很多實際問題不是「把某個值弄到最小」這麼單純,而是「在滿足一堆條件的前提下把某個值弄到最小」。

例如投資組合:目標是最大化預期報酬,約束是風險不超過某個上限、每檔持股不超過總資產的一定比例、權重總和等於 1。

處理約束的標準工具是拉格朗日乘數法:把約束乘上一個係數併進目標函數,變成無約束問題。不等式約束則用 KKT 條件。深度學習裡的權重衰減,本質上就是「權重範數不超過某個值」這個約束的拉格朗日形式。

設計目標函數時最容易犯的錯

目標函數就是你真正在要求的東西,不是你以為你在要求的東西。 系統會精確地最佳化你寫下的式子,包括你沒想到的那些解法。

常見的失敗是指標與意圖不一致:以觀看時長為目標的推薦系統會學會推聳動內容;以點擊率為目標的標題生成會學會做標題黨;只以準確率為目標的醫療模型在陽性率 1% 的資料上會學會全部猜陰性,準確率 99% 但完全沒用。

對策有三個方向:加約束(準確率為目標,但召回率不得低於某值)、多目標加權(同時考慮觀看時長與滿意度評分)、改用更貼近意圖的指標(用 F1 或 AUC 取代準確率)。

檢查方法很簡單:問自己「如果有人只想把這個數字衝高,他會怎麼作弊?」想得到的作弊方式,模型遲早會找到。

情境判斷

Q1(直覺題):你把交叉熵放進訓練流程,模型在優化什麼? → 目標函數,也就是訓練時真正要追的分數。

Q2(判斷題):訓練時損失一直下降,但線上業務指標沒變好,問題可能在哪? → 目標函數和真正業務目標沒對齊。

相關術語

常見問題

目標函數和損失函數有什麼差別?

目標函數更廣,損失函數通常是其中一部分。

它一定要是單一數值嗎?

訓練時通常要能轉成單一可優化目標。

怎麼知道設得好不好?

看它是否和真正任務、業務、或評估指標對齊。