大家的AI
机器学习AI论文
加载中…

学习

🏅我的成就

Ch.05

损失函数 (MSE·交叉熵·R²):衡量预测与真值的误差

损失函数把模型错得有多离谱压成一个数。回归(预测连续值)常用预测 y^\hat yy^​ 与真值 yyy 的 均方误差(MSE),并进一步用 R2R^2R2(决定系数)看「模型相对基线解释了多少变动」。分类(类别与概率)则用 交叉熵衡量对正类概率的偏离。下图展示损失中以回归为例的 MSE如何随拟合变好而下降。

按章节的机器学习图示

选择章节后,下方图示会切换为该章节内容。可一览机器学习脉络。

回归损失示例: 预测 y^\hat yy^​ 与实际 yyy 的差平方后取平均即为 MSE。(分类常用交叉熵。)

xy平方误差 = 面积(边长 = |残差|)0.85SSE = 4.25   →   MSE = SSE ÷ 5MSE = 0.85

MSE =1n∑i(yi−y^i)2= \frac{1}{n}\sum_i (y_i - \hat y_i)^2=n1​∑i​(yi​−y^​i​)2 — 损失越小,直线对数据拟合越好。

损失函数 (MSE·交叉熵·R²):衡量预测与真值的误差

回归:MSE
需要用损失把误差概括成一个数。
- 残差 — 真实值 yyy 与预测 y^\hat yy^​ 的差。
- SSE — 各点 (y−y^)2(y-\hat y)^2(y−y^​)2 之和(平方误差和)。
- MSE — SSE 除以样本数 nnn(均方误差)。
MSE=1n∑(y−y^)2=SSE/n\text{MSE} = \frac{1}{n}\sum (y - \hat y)^2 = \text{SSE}/nMSE=n1​∑(y−y^​)2=SSE/n — 越小拟合越好。
为何平方?
- +2+2+2 与 −2-2−2 都表示「偏差大小为 2」,直接相加会抵消。
- 平方后恒为正,只比较大小。
- 偏差越大惩罚越大,模型更避免大误差。
与线性回归
Ch03 的直线 y^=wx+b\hat y=wx+by^​=wx+b 即选择使 MSE(或 SSE)最小的 www, bbb。
梯度下降沿减小 MSE 的方向更新参数。
回归:MSE是残差平方的平均
MSE是把残差 yi−y^iy_i-\hat y_iyi​−y^​i​ 进行平方并取平均得到的误差评分。预测越接近真实,残差越小,MSE也就越小。
拆开看 MSE
MSE=1n∑i(yi−y^i)2\text{MSE} = \frac{1}{n}\sum_i (y_i - \hat y_i)^2MSE=n1​∑i​(yi​−y^​i​)2
- iii — 样本编号。
- yiy_iyi​ — 真实值。
- y^i\hat y_iy^​i​ — 预测值。
- yi−y^iy_i - \hat y_iyi​−y^​i​ — 残差。
- (yi−y^i)2(y_i - \hat y_i)^2(yi​−y^​i​)2 — 平方误差。
- ∑i\sum_i∑i​ — 求和得 SSE。
- 1n\frac{1}{n}n1​ — 取平均得 MSE。
预测越接近真实,残差与 MSE 越小。

分类:交叉熵
交叉熵用来度量模型对真实类别概率的预测有多“偏”。
二分类的 ℓ\ellℓ 会在下面的 拆开看二分类交叉熵 中逐项解释。
拆开看二分类交叉熵
ℓ=−(ylog⁡p^+(1−y)log⁡(1−p^))\ell = -\big(y\log\hat p + (1-y)\log(1-\hat p)\big)ℓ=−(ylogp^​+(1−y)log(1−p^​))
- y∈{0,1}y \in \lbrace 0,1 \rbracey∈{0,1} — 标签。
- p^\hat pp^​ — 正类(类别1)的预测概率(0~1)。
- log⁡\loglog — 通常取自然对数。
y=1y=1y=1 时 — (1−y)log⁡(1−p^)=0(1-y)\log(1-\hat p)=0(1−y)log(1−p^​)=0,所以 ℓ=−log⁡p^\ell = -\log\hat pℓ=−logp^​。p^\hat pp^​ 越大,损失越小。
y=0y=0y=0 时 — ylog⁡p^=0y\log\hat p=0ylogp^​=0,所以 ℓ=−log⁡(1−p^)\ell = -\log(1-\hat p)ℓ=−log(1−p^​)。1−p^1-\hat p1−p^​ 是负类(类别0)的概率。
这两项 ylog⁡p^y\log\hat pylogp^​ 和 (1−y)log⁡(1−p^)(1-y)\log(1-\hat p)(1−y)log(1−p^​) 表示每个样本只会激活其中一条分支,从而把概率推向真实类别。
多分类 — 对真实类别 kkk,通常定义单样本损失为
ℓ=−log⁡p^k\ell = -\log \hat p_kℓ=−logp^​k​
(常与 softmax 概率配对)。当真实类别的预测概率 p^k\hat p_kp^​k​ 很低时,损失会很大,训练会把它推高。

R2R^2R2(决定系数):「只预测均值」能提升多少
回归中 MSE/RMSE 用来衡量误差大小;进一步你还想知道模型相对基线(均值预测)解释了多少变动,就再看 R2R^2R2。
R2=1−∑i(yi−y^i)2∑i(yi−yˉ)2=1−SSESSTR^2 = 1 - \frac{\sum_i (y_i-\hat y_i)^2}{\sum_i (y_i-\bar y)^2} = 1 - \frac{\text{SSE}}{\text{SST}}R2=1−∑i​(yi​−yˉ​)2∑i​(yi​−y^​i​)2​=1−SSTSSE​
先整理符号
- yiy_iyi​:第 i 个样本真实值。
- y^i\hat y_iy^​i​:第 i 个样本的预测值。
- yˉ\bar yyˉ​:所有 yiy_iyi​ 的平均。
- SSE = ∑i(yi−y^i)2\sum_i (y_i-\hat y_i)^2∑i​(yi​−y^​i​)2 :模型的二乘误差和(越小越好)
- SST = ∑i(yi−yˉ)2\sum_i (y_i-\bar y)^2∑i​(yi​−yˉ​)2 :基线(只用均值)情况下的二乘误差和
计算步骤(超简)
1. 先求 yˉ\bar yyˉ​。
2. 计算基线误差 SST=∑i(yi−yˉ)2\text{SST} = \sum_i (y_i-\bar y)^2SST=∑i​(yi​−yˉ​)2。
3. 计算模型误差 SSE=∑i(yi−y^i)2\text{SSE} = \sum_i (y_i-\hat y_i)^2SSE=∑i​(yi​−y^​i​)2。
4. R2=1−SSE/SSTR^2 = 1 - \text{SSE}/\text{SST}R2=1−SSE/SST。
解读指南(最重要)
- R2=1R^2 = 1R2=1:SSE=0 → 预测几乎完全一致
- R2=0R^2 = 0R2=0:SSE=SST → 与“只预测均值”水平接近
- R2<0R^2 < 0R2<0:SSE>SST → 比均值基线还差
因此,R2R^2R2会告诉你:相对基线,二乘误差减少了多少(用一个比率表示)。
一个简短数值例子
设真实值为 y=[3,5,7]y=[3,5,7]y=[3,5,7],于是 yˉ=5\bar y=5yˉ​=5。
- 基线(只预测均值):SST=(3−5)2+(5−5)2+(7−5)2=4+0+4=8\text{SST}=(3-5)^2+(5-5)^2+(7-5)^2=4+0+4=8SST=(3−5)2+(5−5)2+(7−5)2=4+0+4=8
- 模型预测 y^=[4,5,6]\hat y=[4,5,6]y^​=[4,5,6]:SSE=(3−4)2+(5−5)2+(7−6)2=1+0+1=2\text{SSE}=(3-4)^2+(5-5)^2+(7-6)^2=1+0+1=2SSE=(3−4)2+(5−5)2+(7−6)2=1+0+1=2
所以
R2=1−2/8=0.75R^2 = 1 - 2/8 = 0.75R2=1−2/8=0.75
→ 相对“预测均值”,模型把二乘误差大约减少了 75%。
注意:不要只看 R2R^2R2
- 因为 R2R^2R2 是比率,不同数据集上数值不一定能直接对比。
- 实务中通常把 RMSE + R2R^2R2 放在一起看(误差大小 + 解释力)。

为何重要

学习方向 — 回归用 MSE 时,只朝降低 MSE更新,目标清晰。
MSE 易优化 — 平方光滑、易求导,梯度下降友好。
RMSE — MSE 是平方单位;MSE\sqrt{\text{MSE}}MSE​ 与 yyy 同单位便于解释。
损失与任务匹配 — 连续值用 MSE,类别概率用 交叉熵,与极大似然一致。Ch.05 逻辑回归将衔接 sigmoid 的 p^\hat pp^​ 与该损失。

如何被使用

回归训练 — 房价、气温等用 MSE 最小化。
模型比较(回归) — MSE 更小更优。
深度网络回归输出 — 数值预测输出层常用 MSE。
分类 — 逻辑回归、softmax、神经网络分类通常最小化 交叉熵。