07 常用损失函数
1 损失函数
🎯 核心一句话:
损失函数就是模型的“错题本”和“打分器”——它告诉模型:你这次预测得有多离谱。
就像考试时,你答错了题,老师会扣分。损失函数就是给模型每次预测“扣分”的规则。
1.1 大白话解释
想象你在学做菜,师傅给你一个菜谱(这就是模型),你按菜谱炒了一盘菜(这是你的预测),然后师傅尝了一口,评价说:“太咸了!” 或 “火候刚好!”
- 损失函数 就是那个评价标准。
- 如果你说这道菜应该是“辣的”,但其实它是“甜的”,那你就“错得离谱”,损失就高。
- 如果你说是“微辣”,实际是“中辣”,那还凑合,损失就低一点。
- 如果完全对上了,损失就是0。
它的目的就是:量化错误的程度,让模型知道自己哪里做得不好,然后去改进。
1.2 数学表示
损失函数是一个数学工具,形式化地定义这种“错误程度”。
ℓ:H×Z→R+:=[0,+∞)\ell : \mathcal{H} \times \mathcal{Z} \rightarrow \mathbb{R}_+ := [0, +\infty) ℓ:H×Z→R+:=[0,+∞)
意思是: 输入是“一个模型 fθf_\thetafθ” 和 “一个真实样本 z=(x,y)z=(x,y)z=(x,y)”,输出是一个非负数(越大表示错得越厉害)。
1.3 举个具体例子:预测房价
假设你要预测房子的价格:
房子面积 | 真实价格 yyy | 模型预测价格 fθ(x)f_\theta(x)fθ(x) |
---|---|---|
80㎡ | 350 万元 | 380 万元 |
模型猜贵了30万。那它该扣多少分?这就看用什么“评分标准”(损失函数)了。
2 常用损失函数
✅ 2.1 常用损失函数1:平方损失(L² Loss)
这是最常用的损失函数,特别适合回归问题(预测连续值)。
公式:
ℓ(fθ,z)=12(fθ(x)−y)2\ell(f_{\theta}, z) = \frac{1}{2}(f_{\theta}(x) - y)^2 ℓ(fθ,z)=21(fθ(x)−y)2
代入上面的例子:
ℓ=12(380−350)2=12×900=450\ell = \frac{1}{2}(380 - 350)^2 = \frac{1}{2} \times 900 = 450 ℓ=21(380−350)2=21×900=450
👉 错30万,扣450分。注意这里是平方,所以错得越多,扣分呈爆炸式增长(错60万要扣1800分!),这样能狠狠惩罚大错误。
注:前面的 12\frac{1}{2}21 是为了求导方便,不影响结果趋势。
✅ 2.2 常见损失函数2:绝对损失(L¹ Loss)
另一种更“温和”的方式:
ℓ=∣fθ(x)−y∣\ell = |f_\theta(x) - y| ℓ=∣fθ(x)−y∣
在上面的例子中:
ℓ=∣380−350∣=30\ell = |380 - 350| = 30 ℓ=∣380−350∣=30
👉 直接按差值扣分,不会因为误差大而惩罚过重。
2.3 从单个样本到整个数据集:经验风险(训练损失)
光看一道题的错题不够,要看整张卷子的总分。
所以我们把所有样本的损失加起来,求平均,得到训练损失:
LS(θ)=1n∑i=1nℓ(fθ(xi),yi)(11)L_S(\theta) = \frac{1}{n} \sum_{i=1}^{n} \ell(f_{\theta}(x_i), y_i) \tag{11} LS(θ)=n1i=1∑nℓ(fθ(xi),yi)(11)
这叫经验风险,也就是模型在整个训练集上的“平均扣分”。
模型的目标就是:不断调整自己的参数 θ\thetaθ,让这个总分(损失)越来越小,直到几乎不扣分(完美拟合)。
2.4 理想 vs 现实:总体风险
上面的 LS(θ)L_S(\theta)LS(θ) 只是对训练集的评价。我们真正关心的是模型在未来没见过的数据上表现如何。
这叫总体风险(期望损失):
LD(θ)=EDℓ(fθ(x),y)(12)L_{\mathcal{D}}(\theta) = \mathbb{E}_{\mathcal{D}} \ell(f_{\theta}(x), y) \tag{12} LD(θ)=EDℓ(fθ(x),y)(12)
意思是:在所有可能的数据(服从分布 D\mathcal{D}D)上,模型的平均错误程度。
可惜,D\mathcal{D}D 是未知的,所以我们只能用训练集上的 LS(θ)L_S(\theta)LS(θ) 来估计它。
✅ 总结:损失函数到底是什么?
角色 | 说明 |
---|---|
裁判员 | 给模型的每次预测打分,分数越高表示错得越离谱 |
导航仪 | 告诉模型“往哪个方向调整参数”能让错误减少(梯度下降靠它指路) |
目标函数 | 训练过程就是在最小化损失函数 LS(θ)L_S(\theta)LS(θ) |
🎯 所以,选对损失函数,就像选对了“好学生”的标准。
- 你用平方损失,模型就会努力避免大错误;
- 你用绝对损失,模型对异常值更鲁棒。
这就是为什么我们需要损失函数——没有它,模型就像蒙眼走路,根本不知道自己走没走对。