d2l 学习笔记:线性回归的损失函数
这一节其实只讲了一件事情:
为什么线性回归训练时,要使用平方损失(均方误差)?
它不是简单规定一个公式,而是从一个数据生成假设,通过概率推导出来。
整个逻辑链:
$\boxed{正态分布假设 \rightarrow 概率模型 \rightarrow 最大似然估计 \rightarrow 平方损失函数}$
1. 模型预测为什么会有误差?
我们希望建立一个线性模型:
其中:
-
:输入,例如房屋面积
-
:真实价格
-
:模型参数
-
:模型预测值
理想情况下:
但是现实不可能这么完美。
例如:
模型预测:
真实:
差距:
这个差距就是:
所以:
也就是:
真实值 = 模型预测 + 随机误差
2. 关键假设:噪声服从正态分布
D2L 做了一个重要假设:
什么意思?
就是说:
预测误差满足正态分布。
例如:
预测100万:
真实可能:
98万
99万
100万
101万
102万
这些比较常见。
但是:
10万
500万
这种巨大偏差很少出现。
图像:
*
*****
*********
*************
---------------------
误差
中心最多,两边少。
3. 从噪声到概率模型
这是很多人第一次看会困惑的地方。
因为:
注意:
噪声不是独立存在的。
它由:
真实值
-
预测值
决定。
所以:
给定一组参数
我们就可以计算误差:
然后根据正态分布判断:
这个误差是否合理。
举例:
假设两个模型:
3.1. 模型 A
预测:
真实:
100
预测:
99
误差:
3.2. 模型 B
预测:
真实:
100
预测:
20
误差:
因为我们认为:
所以:
误差1:
很符合预期。
误差80:
很不符合预期。
因此:
模型A更好。
4. 概率公式 的来源
文章中出现:
很多人疑惑:
为什么突然变成 y 关于 x 的概率?
实际上完整应该是:
只是参数被省略了。
它表示:
已知输入 x,并且模型参数为 w,b,真实输出 y 出现的概率是多少。
根据正态分布:
而:
代入:
得到:
这个公式就是:
用概率评价一个模型参数。
5. 最大似然估计
现在问题变了:
我们已经有:
数据:
但是不知道:
所以我们问:
哪一组参数最容易产生这些数据?
也就是:
寻找:
使:
最大。
这叫:
5.1. 最大似然估计的含义
(Maximum Likelihood Estimation)
用生活例子:
扔硬币:
不知道正面概率是多少。
观察:
10次:
正 正 正 反 正 正 反 正 正 正
结果:
8次正面。
猜:
还是:
哪个参数更容易产生:
8正2反?
计算发现:
0.8更合理。
所以:
选择:
这就是最大似然。
在线性回归里:
硬币概率:
换成:
寻找:
最能解释数据的参数。
6. 最大似然为什么会变成平方误差
这是本节最核心的数学结果。
我们有:
目标:
最大化概率。
也就是:
让:
最大。
但是概率连乘很麻烦:
多个样本:
所以取 log:
因为:
乘法变加法。
然后因为机器学习习惯最小化:
所以:
最大化:
变成:
最小化:
展开后:
剩下核心:
也就是:
预测误差平方。
所以:
最终得到:
这就是:
平方损失。
7. 为什么不用直接比较概率
因为计算机训练需要一个连续可优化的目标。
概率:
可以告诉我们:
“哪个好”
但是:
梯度下降需要:
“往哪个方向调整参数”。
平方损失:
有连续梯度:
可以计算:
然后更新参数:
8. 核心总结
D2L 3.1.3 的核心思想是:我们假设真实数据是由线性模型加上服从正态分布的随机噪声产生的。对于不同的参数 ,会产生不同大小的误差,而误差越符合正态分布,说明这组参数越可能产生真实数据。因此我们利用最大似然估计寻找最可能的参数,数学推导后发现,这等价于最小化预测值和真实值之间的平方误差。
9. 推导链路
现实世界数据
↓
假设:
真实值 = 预测值 + 正态噪声
↓
噪声决定数据出现概率
↓
计算:
P(y|x,w,b)
↓
寻找:
让概率最大的 w,b
↓
最大似然估计
↓
数学化简
↓
平方损失 MSE
↓
梯度下降训练模型
该主题涉及的核心问题:
-
为什么噪声会连接到参数?
-
为什么是 ?
-
为什么概率最后变成 loss?
-
为什么平方误差合理?
其实全部都是围绕这一条链展开的。
理解这一节之后,后面 D2L 的:
-
softmax 回归为什么用交叉熵
-
神经网络为什么定义各种 loss
-
大模型训练为什么是最大似然
都会变成同一个思想的不同形式。这些内容构成深度学习损失函数与最大似然思想的基础。
