搜尋意圖: 如果你在找「目標函數 是什麼」或「目標函數 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。
TL;DR: 目標函數是機器學習模型訓練中用於評估模型表現的函數,其數值代表模型預測與實際值的差距,優化目標是最小化或最大化此函數。
實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。
下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。
你有沒有想過,模型訓練到底是在努力把什麼變小或變大? 你可以把它想成考試標準,模型每次改參數,都在想辦法讓這個分數更好。 目標函數定義了優化方向,是訓練過程真正要追的目標。 這也讓它很適合先拿到可用答案,再慢慢把精度往上推。 這種寫法常用在需要先把問題定義清楚,再逐步提升模型品質的場景。
容易混淆
目標函數 vs 損失函數 目標函數:整體要優化的東西 損失函數:衡量單筆或一批樣本誤差的量 最關鍵的區別:先看它是在比什麼,再看它怎麼做。
目標函數 vs 評估指標 目標函數:訓練時拿來更新參數 評估指標:訓練後拿來看表現 最關鍵的區別:先看它是在比什麼,再看它怎麼做。
記住這句就好
訓練要追的總分,就是目標函數。
實際案例
分類模型 把交叉熵設成目標函數,模型就會想把錯分類降到最低。
推薦排序 把點擊或排序品質寫進目標函數,模型就會朝業務想要的方向學。
算法與應用
目標函數可以是最小化形式,也可以是最大化形式。 很多時候它會由多個損失項組成,再加上正則化項。 設計得好,模型學到的方向就對;設計錯,模型可能只是努力追錯目標。
中英對照與常見說法
| 說法 | 出現場合 |
|---|---|
| 目標函數 | 台灣正式用語 |
| 目标函数 | 簡體寫法 |
| Objective Function | 英文原名 |
| 代價函數(cost function)、損失函數(loss function) | 常被混用,但涵蓋範圍不同 |
| 適應度函數(fitness function) | 演化演算法脈絡下的對應詞,通常是要最大化 |
跟損失函數的關係
| 損失函數 | 目標函數 | |
|---|---|---|
| 範圍 | 衡量預測與真實值的差距 | 整個最佳化過程要最小化或最大化的東西 |
| 方向 | 一定是越小越好 | 可能是最小化也可能是最大化 |
| 包含什麼 | 只有誤差項 | 誤差項加正則化項,可能還有其他約束的懲罰 |
用一條式子說明兩者關係:
目標函數 = 損失項 + λ × 正則化項
損失項要模型貼合訓練資料,正則化項要模型保持簡單,λ 決定兩者的取捨。這就是為什麼「目標函數」的說法比「損失函數」更完整:實際在最佳化的從來不只是誤差。
帶約束的最佳化
很多實際問題不是「把某個值弄到最小」這麼單純,而是「在滿足一堆條件的前提下把某個值弄到最小」。
例如投資組合:目標是最大化預期報酬,約束是風險不超過某個上限、每檔持股不超過總資產的一定比例、權重總和等於 1。
處理約束的標準工具是拉格朗日乘數法:把約束乘上一個係數併進目標函數,變成無約束問題。不等式約束則用 KKT 條件。深度學習裡的權重衰減,本質上就是「權重範數不超過某個值」這個約束的拉格朗日形式。
設計目標函數時最容易犯的錯
目標函數就是你真正在要求的東西,不是你以為你在要求的東西。 系統會精確地最佳化你寫下的式子,包括你沒想到的那些解法。
常見的失敗是指標與意圖不一致:以觀看時長為目標的推薦系統會學會推聳動內容;以點擊率為目標的標題生成會學會做標題黨;只以準確率為目標的醫療模型在陽性率 1% 的資料上會學會全部猜陰性,準確率 99% 但完全沒用。
對策有三個方向:加約束(準確率為目標,但召回率不得低於某值)、多目標加權(同時考慮觀看時長與滿意度評分)、改用更貼近意圖的指標(用 F1 或 AUC 取代準確率)。
檢查方法很簡單:問自己「如果有人只想把這個數字衝高,他會怎麼作弊?」想得到的作弊方式,模型遲早會找到。
情境判斷
Q1(直覺題): 你把交叉熵放進訓練流程,模型在優化什麼?
Q2(判斷題): 訓練時損失一直下降,但線上業務指標沒變好,問題可能在哪?
常見問題
目標函數和損失函數有什麼差別?
目標函數更廣,損失函數通常是其中一部分。
它一定要是單一數值嗎?
訓練時通常要能轉成單一可優化目標。
怎麼知道設得好不好?
看它是否和真正任務、業務、或評估指標對齊。