目标函数、成本函数、损失函数:它们是一回事吗?

机器算法验证 机器学习 术语 人工智能
2022-01-24 12:49:03

在机器学习中,人们谈论目标函数、成本函数、损失函数。它们只是同一事物的不同名称吗?什么时候使用它们?如果它们并不总是指同一件事,那么有什么区别?

4个回答

这些不是非常严格的术语,它们是高度相关的。然而:

  • 损失函数通常是在数据点、预测和标签上定义的函数,并衡量惩罚。例如:
  • 平方损失,用于线性回归l(f(xi|θ),yi)=(f(xi|θ)yi)2
  • 铰链损失,用于 SVMl(f(xi|θ),yi)=max(0,1f(xi|θ)yi)
  • 0/1 loss l(f(xi|θ),yi)=1f(xi|θ)yi,用于理论分析和精度定义
  • 成本函数通常更通用。它可能是您的训练集上的损失函数加上一些模型复杂度损失(正则化)的总和。例如:
  • 均方误差MSE(θ)=1Ni=1N(f(xi|θ)yi)2
  • SVM 成本函数SVM(θ)=θ2+Ci=1NξiξiC和训练集连接起来有额外的约束)
  • 目标函数是您在训练期间优化的任何函数的最通用术语。例如,在最大似然方法中生成训练集的概率是一个定义明确的目标函数,但它不是损失函数也不是成本函数(但是你可以定义一个等效的成本函数)。例如:
  • 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

“[聚类中]的情况有点类似于预测问题(监督学习)中损失或成本函数的规范”。

也许这些术语的存在是因为它们在不同的学术团体中独立发展。“目标函数”是运筹学和工程数学中使用的旧术语。“损失函数”可能在统计学家中使用得更多。但我在这里推测。