在机器学习中,人们谈论目标函数、成本函数、损失函数。它们只是同一事物的不同名称吗?什么时候使用它们?如果它们并不总是指同一件事,那么有什么区别?
目标函数、成本函数、损失函数:它们是一回事吗?
这些不是非常严格的术语,它们是高度相关的。然而:
- 损失函数通常是在数据点、预测和标签上定义的函数,并衡量惩罚。例如:
- 平方损失,用于线性回归
- 铰链损失,用于 SVM
- 0/1 loss ,用于理论分析和精度定义
- 成本函数通常更通用。它可能是您的训练集上的损失函数加上一些模型复杂度损失(正则化)的总和。例如:
- 均方误差
- SVM 成本函数与和训练集连接起来有额外的约束)
- 目标函数是您在训练期间优化的任何函数的最通用术语。例如,在最大似然方法中生成训练集的概率是一个定义明确的目标函数,但它不是损失函数也不是成本函数(但是你可以定义一个等效的成本函数)。例如:
- MLE 是一种目标函数(您可以最大化)
- 类之间的散度可以是一个目标函数,但它几乎不是一个成本函数,除非你定义一些人为的东西,比如 1-Divergence,并将其命名为成本
长话短说,我想说:
损失函数是成本函数的一部分,成本函数是目标函数的一种。
话虽如此,这些术语远非严格,并且根据上下文,研究小组,背景,可以转移并以不同的含义使用。主要(唯一?)共同点是“损失”和“成本”函数是想要最小化的东西,而目标函数是想要优化的东西(可以是最大化或最小化)。
引用Ian Goodfellow、Yoshua Bengio、Aaron Courville的“深度学习”一书中的第 4.3 节(强调原文):
我们想要最小化或最大化的函数称为目标函数或准则。当我们最小化它时,我们也可以将其称为成本函数、损失函数或误差函数。在本书中,我们交替使用这些术语,尽管一些机器学习出版物为其中一些术语赋予了特殊含义。
至少在本书中,损失和成本是相同的。
用吴恩达的话说——
“最后,损失函数是针对单个训练示例定义的。它衡量你在单个训练示例上的表现。我现在要定义一个叫做成本函数的东西,它衡量你的表现如何做一个完整的训练集。因此,应用于您的参数 W 和 B 的成本函数 J 将是应用于每个训练示例和轮次的损失函数之和的 m 之一的平均值。
根据Andrew Ng 教授的说法(见第 11 页的幻灯片),
函数 h(X) 代表您的假设。对于固定拟合参数theta,它是特征X的函数。我想说这也可以称为目标函数。
成本函数 J 是拟合参数 theta 的函数。J = J(θ)。
根据 Hastie 等人的教科书“统计学习要素”,第 37 页:
“我们寻求一个函数 f (X) 来预测 Y 给定的输入 X 值。” [...] 损失函数 L(Y, f(X)) 是“一个惩罚预测错误的函数”,
所以看起来“损失函数”是一个比“成本函数”更笼统的术语。如果您在该 PDF 中寻找“损失”,我认为他们使用“成本函数”和“损失函数”在某种程度上是同义词。
确实,p。502
“[聚类中]的情况有点类似于预测问题(监督学习)中损失或成本函数的规范”。
也许这些术语的存在是因为它们在不同的学术团体中独立发展。“目标函数”是运筹学和工程数学中使用的旧术语。“损失函数”可能在统计学家中使用得更多。但我在这里推测。