损失函数、代价函数、目标函数的区别
以下叙述并不严格,但比较好理解:
(1)损失函数(Loss Function)
损失函数通常是定义在单一数据点、预测和标签上的函数,用于为衡量惩罚。例如:
- 平方损失 $l(f(x_i|\theta),y_i) = \left (f(x_i|\theta)-y_i \right )^2$$l(f(x_i|\theta),y_i) = \ left (f(x_i|\theta)-y_i \right )^2$,用于线性回归
- 铰链损失 $l(f(x_i|\theta), y_i) = \max(0, 1-f(x_i|\theta)y_i)$$l(f(x_i|\theta), y_i) = \max (0, 1-f(x_i|\theta)y_i)$,用于SVM
- 0/1 损失 $l(f(x_i|\theta), y_i) = 1 \iff f(x_i|\theta) \neq y_i$$l(f(x_i|\theta), y_i) = 1 \iff f(x_i|\theta) \neq y_i$,用于理论分析和精度定义
(2)代价函数(Cost Function)
代价函数 通常更一般。它可能是训练集上的损失函数加上一些模型复杂性惩罚(正则化)的总和。例如:
均方误差 $MSE(\theta) = \frac{1}{N} \sum_{i=1}^N \left (f(x_i|\theta)-y_i \right )^2$$MSE(\ theta) = \frac{1}{N} \sum_{i=1}^N \left (f(x_i|\theta)-y_i \right )^2$
SVM 代价函数 $SVM(\theta) = |\theta|^2 + C \sum_{i=1}^N \xi_i$$SVM(\theta) = |\theta|^2 + C \sum_{i=1}^N \xi_i$(连接 $\xi_i$$\xi_i$ 与 $C$$C$ 和训练集的附加约束)
(3)目标函数(Object Function)
目标函数是你在训练期间用于优化的任意函数的通用术语。例如,在最大似然方法中生成训练集的概率是一个定义明确的目标函数,但它不是损失函数也不是代价函数(但你可以定义一个等效的代价函数)。例如:
- 似然估计是一种目标函数,通常希望最大化似然
- 类型之间的散度可以是一个目标函数,但它几乎不是代价函数,除非你定义一些人为的东西,比如 1-Divergence,并将其命名为代价。
长话短说: 损失函数 是 代价函数 的一部分,而 代价函数 是 目标函数的一种。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 西山晴雪的知识笔记!