给定房屋的位置、面积、房间数和朝向,怎样预测价格?最直接的想法是给每个特征分配一个权重,再把它们加起来:
y^=w0+w1x1+⋯+wdxd.
这就是线性回归。它看起来简单,却把机器学习中几乎所有基本组件都摆到了桌面上:模型如何表示、误差怎样定义、参数如何求解、数据太多时怎样迭代,以及如何防止模型把训练数据记得太死。
一、最小二乘在解决什么问题
课件从谷神星的故事引入最小二乘。1801 年,天文学家朱塞普·皮亚齐观测谷神星约 40 天后,它运行到太阳背后而失去踪迹。高斯根据带误差的观测估计其轨道,后来天文学家依据预测重新发现了谷神星。高斯使用的最小二乘方法于 1809 年发表。
故事背后的困难具有普遍性:现实观测带有噪声,一条曲线通常不可能精确穿过所有数据点。我们只能寻找一组参数,让全部残差在某种意义下尽量小。
用矩阵统一表示样本
设共有 N 个样本,每个样本已经扩充常数特征 1。把样本行向量堆成设计矩阵
Y=y1⊤y2⊤⋮yN⊤,
目标值组成
b=(b1,…,bN)⊤,
参数为 w。预测向量、残差向量分别是
b^=Yw,e=Yw−b.
平方误差准则为
J(w)=∥e∥22=∥Yw−b∥22=i=1∑N(w⊤yi−bi)2.
最小二乘解就是
w∗=argwminJ(w).
这里平方不是随意选择:正负残差不会互相抵消,大残差会受到更重的惩罚,而且目标函数可微并具有方便的矩阵形式。
二、正规方程与解析解
对目标函数求梯度:
∇J(w)=2Y⊤(Yw−b).
在极小值处令梯度为零:
Y⊤Yw∗=Y⊤b.
这就是正规方程。如果 Y⊤Y 可逆,则
w∗=(Y⊤Y)−1Y⊤b.
令
Y+=(Y⊤Y)−1Y⊤,
便可写成
w∗=Y+b.
Y+ 是这个满列秩情形下的 Moore-Penrose 伪逆表达。更一般的秩亏情形仍然可以用伪逆求最小二乘解。
超定与欠定不要混在一起
设 Y∈RN×d。
- 超定问题:N>d,方程多于未知数。带噪数据通常没有精确解,最小二乘寻找残差平方和最小的近似解。
- 欠定问题:N<d,未知数多于方程。若方程相容,往往存在无穷多个精确解;伪逆可以选出其中一个规范解,额外约束还可以表达我们偏好的解。
- 秩亏问题:即使 N≥d,特征线性相关也会使 Y⊤Y 不可逆。
因此,“直接求逆”不是万能做法。伪逆与正则化的意义,正是在解不唯一或数值不稳定时仍然给出可用结果。
三、完整算例:拟合一条直线
用三组带噪观测
(x,b)=(0,1),(1,2),(2,5)
拟合
b^=w0+w1x.
设计矩阵与目标向量为
Y=111012,b=125.
先计算
Y⊤Y=[3335],Y⊤b=[812].
解正规方程得到
w∗=[2/32],
所以拟合直线为
b^=32+2x.
三个预测值依次为 2/3,8/3,14/3,残差为
−31,32,−31,
残差平方和为
J(w∗)=91+94+91=32.
还有一个便于自检的性质:最优残差与设计矩阵每一列都正交,即
Y⊤(Yw∗−b)=0.
这正是正规方程,说明梯度确实已经为零。
四、为什么还需要梯度下降
解析解很干净,但计算 (Y⊤Y)−1 在特征维度很高时开销大,而且神经网络一类非线性模型通常根本没有闭式解。因此实际训练常改用迭代法。
通用梯度下降更新为
w(t+1)=w(t)−η∇J(w(t)),
其中 η>0 是学习率。梯度指向函数上升最快的方向,所以沿负梯度移动。
对最小二乘目标,批量梯度为
∇J(w)=2Y⊤(Yw−b).
把常数 2 吸收到步长 rt 中,课件给出的批量更新可写为
w(t+1)=w(t)−rtY⊤(Yw(t)−b).
单样本 LMS 更新
每次只使用第 k 个样本时,更新为
w(t+1)=w(t)+rt(bk−(w(t))⊤yk)yk.
括号里是“真实值减预测值”。预测偏小,它为正,参数就沿样本特征方向增加;预测偏大,则沿反方向修正。
例如,从 w=(0,0)⊤ 出发,用样本 y=(1,1)⊤、b=3 和步长 r=0.1 更新一次:
wnew=[00]+0.1(3−0)[11]=[0.30.3].
更新前预测为 0,更新后变为 0.6,确实朝目标值 3 靠近。
五、Batch、SGD 与 Mini-batch
课件把梯度下降按每步使用的数据量分成三种:
| 方法 | 每次更新使用的数据 | 特点 |
|---|
| Batch Gradient Descent | 全部训练集 | 梯度准确,但单步计算和内存开销大 |
| Stochastic Gradient Descent | 一个样本 | 更新便宜、噪声大,轨迹会抖动 |
| Mini-batch Gradient Descent | 一小批样本 | 在计算效率与梯度稳定性之间折中 |
统一写成
θ←θ−α∇θJB(θ),
其中 B 可以是全数据、单个样本或一个小批次。现代深度学习通常使用 mini-batch,因为它既能利用并行硬件,也保留一定随机性。
六、二范数正则化
当特征很多、样本较少,或者特征彼此高度相关时,单纯追求训练误差最小可能产生很大的权重。课件在目标函数中加入二范数惩罚:
Jλ(w)=∥Yw−b∥22+λ∥w∥22,λ≥0.
第一项要求拟合数据,第二项要求权重不要过大。这里的设计矩阵 Y 第一列全为 1,所以 w 的第一个分量是截距;上面的简式使用单位矩阵,实际上会把截距也一起惩罚。
常见实现不惩罚截距。这时令
P=diag(0,1,…,1),
把正则项改成 λw⊤Pw,解析解相应变为
w∗=(Y⊤Y+λP)−1Y⊤b.
下面继续推导课件所用、连截距一起惩罚的简式。求梯度:
∇Jλ(w)=2Y⊤(Yw−b)+2λw.
令其为零:
(Y⊤Y+λI)w∗=Y⊤b,
所以
w∗=(Y⊤Y+λI)−1Y⊤b.
这个解就是岭回归的解析形式。
两个极端值自检
- 当 λ=0 时,退化为普通最小二乘;
- 当 λ→∞ 时,惩罚项主导,w∗ 趋向零。
λ 不是越大越好。太小不能有效抑制高方差,太大又会把真正有用的权重一起压小,造成欠拟合。
七、从线性回归到感知机和神经网络
线性回归输出加权和。感知机再接一个非线性函数:
y=f(i=0∑n−1wixi−θ).
这一步把连续预测扩展到线性分类。若把许多神经元按层连接,就得到前馈神经网络:输入经过隐藏层逐级变换,最后产生输出。
训练多层网络时,仍然先定义误差 E,再计算参数对误差的梯度。反向传播并不是另一套优化目标,而是一种高效应用链式法则、把输出误差逐层传回去的方法;参数最终仍由梯度下降类算法更新。
因此从线性回归到深层网络,最稳定的主线没有变:
参数化模型⟶损失函数⟶计算梯度⟶更新参数.
八、不同数据结构催生不同网络
课件随后用几类结构展示“模型设计”如何随任务变化。这部分是后续深度学习课件的路线预告。
卷积神经网络
图像具有局部结构。卷积层让一个小滤波器在图像上滑动,用局部点积提取模式;最大池化缩小空间尺寸并保留显著响应。典型流程可以写成
图像→卷积→池化→⋯→展平→全连接输出.
课件用一个 6×6 二值图像和 3×3 滤波器演示局部点积:滤波器会在与自身模式相似的局部位置产生较大响应。与普通全连接层相比,卷积复用同一组权重,更贴合图像中的平移结构。
循环神经网络
RNN 面向序列数据。课件从 Jeffrey L. Elman 1990 年的工作引入隐藏状态:当前计算不仅使用当前输入,还使用上一步保存的上下文。
典型应用包括自然语言处理、时间序列预测、语音识别和视频分析。它的局限也很直接:长距离依赖难学,时间步之间顺序依赖而难以完全并行,并可能出现梯度消失或爆炸。
Transformer 由 2017 年的《Attention Is All You Need》引入。自注意力把序列元素映射为 Query、Key、Value,并计算每个元素与其他元素的关联,从而直接聚合全局上下文。
课件以“我想吃酸菜鱼”为例:每个词先转成词向量,再分别生成 Query、Key、Value;某个词的 Query 与所有词的 Key 计算注意力分数,归一化后对 Value 加权求和,得到已经融合整句上下文的新表示。“吃”不再只依赖相邻位置,而可以直接关注“酸菜鱼”。
相较只沿时间逐步传递状态的 RNN,自注意力更容易捕捉远距离关系,也更适合并行计算。单一注意力可能只看到一种关系,多头注意力则让模型在多个子空间中提取不同依赖。
九、线性回归提供的机器学习骨架
课件最后用线性回归总结五个贯穿全课的问题:
- 模型设计:假设函数长什么样,如何利用数据自身的结构;
- 可学习性:有限样本能否支撑对未知数据的可靠预测;
- 目标函数:用什么量衡量模型好坏;
- 优化方法:闭式解、批量梯度、随机梯度还是小批量更新;
- 正则化:如何在拟合训练数据与控制模型复杂度之间平衡。
最小二乘之所以值得从头推导,不只是因为它能拟合一条直线,而是因为后面的感知机、神经网络、CNN、RNN 和 Transformer 都会重复这副骨架,只是模型和损失越来越复杂,求解从解析式变成大规模迭代。