是什么
损失函数(loss function)把一个事件,或者一个或多个变量的取值,映射成一个实数,这个实数代表与该事件相关的代价。[1] 它给出的不是一个具体的预测,而是一个分数:这个分数越高,说明当前结果离「好」越远。
机器学习里常用的说法更直接。谷歌的机器学习课程把损失定义为一个数值,用来表示模型预测值与实际值之间的差距。[2] 按这个定义,训练模型的过程可以理解为不断调整参数、让这个数值变小的过程。
怎么用
一旦选定了损失函数,学习问题就变成一个优化问题:通过最小化损失函数来求解。[1] 模型训练的目标就是最小化损失,让它尽可能接近零。[2] 训练中其余的很多安排——调哪些参数、往哪个方向调、调多少——都从这一个数推出来。
举个小例子把算术说清楚。假设一个回归模型预测某件东西的价格是 105,而实际值是 100,误差是 5。用绝对误差损失,记下的代价是 5;用平方误差损失,记下的是 25。平方会把大错误罚得比小错误重得多,所以选定这种损失,本身就已经是对「什么样的错误更要紧」做了判断。
在回归问题里,两种常见的损失计算方式是平均绝对误差(mean absolute error)和均方误差(mean squared error),两者对离群点的敏感程度不同。[2]
常见形式
平方误差损失(squared error loss)惩罚误差的平方,在最小二乘、t 检验和回归中广泛使用。[1]
0-1 损失(zero-one loss)在分类错误时取 1,分类正确时取 0;在信息论中,同一个量被称为汉明失真(Hamming distortion)。[1]
绝对误差损失(absolute error loss)在零点处不可导。[1] 对于依赖梯度的训练方法来说,曲线上的这个折点需要实现时额外处理。
来历
这一想法可以追溯到 Laplace;Harald Cramér 在 1920 年代把损失函数用于精算。[1] Abraham Wald 在 1950 年的《Statistical Decision Functions》一书中把这一概念重新引入统计学。[1] Leonard J. Savage 后来提出了基于后悔(regret)的损失。[1] 把这条线索连起来看,同一个对象——给结果配上一个数——不只用来拟合数据,也成了评判决策的办法:后果往往要等事情过去才看得清。
局限
平方误差损失容易被离群点主导,因此人们改用 Huber 损失、log-cosh 损失等替代方案。[1] Deming 和 Taleb 指出,现实世界中的损失常常是不连续的、不对称的、不可导的。[1] 比如一个延误拉长到两倍,代价可能不止两倍;而有些失败一旦发生,代价是跳上去的,不是平滑上升的。所以选择哪种损失函数并不是技术细节,它决定了模型把什么当作昂贵的错误;而一个便于优化的损失,未必就是与真实代价相符的那一个。
注释与来源
- Loss functionhttps://en.wikipedia.org/wiki/Loss_function
- Linear regression: Losshttps://developers.google.com/machine-learning/crash-course/linear-regression/loss
引用本页: 损失函数. TellWorld, https://www.tellworld.net/zh/learn/loss-function. 更新于 2026-11-07