Skip to content

线性回归 ​

标签
AI/ml/算法
AI/ml/数学
字数
3327 字
阅读时间
14 分钟

机器学习的第一个具体算法。选它开局的原因在于它是唯一能把每一步都算清的模型:目标函数、梯度、最优解的闭式表达、解不存在的条件,全都能写出来。后面所有模型都能拿它当参照系。「简单」是这个性质的结果,不是选它的理由。

模型形式 ​

f(x)=w⊤x+b

w∈Rd 是权重、b 是偏置。写成增广形式(把 b 并进 w、给 x 补一个恒为 1 的分量)就统一成 f(x)=w⊤x,后面都用这个口径。

输入输出任务
连续值 x连续值 y回归
连续值 x离散标签加一层 sigmoid/softmax → 分类

它的另一重身份是神经网络的基本层。 一个线性层做的事就是「一次矩阵乘 + 加偏置」,而 Transformer 里绝大部分 FLOP 花在矩阵乘上(03-线性代数与 GEMM)。

最小二乘与正规方程 ​

给定 m 个样本,把它们堆成矩阵 X∈Rm×d、标签向量 y∈Rm。目标是最小化均方误差:

J(w)=12m∥Xw−y∥22

求梯度:

∇wJ=1mX⊤(Xw−y)

令其为零,得正规方程(normal equation):

X⊤Xw=X⊤y⟹w^=(X⊤X)−1X⊤y

这个解在 X⊤X 可逆时唯一。 不可逆的两种情况:

情况现象处理
m<d(样本少于特征)X⊤X 必然奇异用伪逆 X+(取最小范数解),或先降维
特征线性相关多重共线性去掉冗余列,或加正则(见下一节)

代价:为什么 d 一大就不用它 ​

步骤复杂度
算 X⊤XO(md2)
求逆 / 分解O(d3)
合计O(md2+d3)

d3 这一项意味着特征数上万就不可行 —— 即使样本数很少。梯度下降把求逆换成迭代,每步只要 O(md),这是它在实际系统中胜出的唯一原因。

几何:解就是一次投影 ​

把 X 的列看成 d 个基向量,它们张成 Rm 中的一个子空间(列空间)。Xw 必然落在这个子空间里。

最小化 ∥Xw−y∥ 的含义是:在列空间里找离 y 最近的点。 最近的那个点满足残差与列空间正交:

X⊤(y−Xw)=0

这正是正规方程。所以最小二乘解就是 y 在 X 列空间上的正交投影。

投影算子(帽子矩阵)是

H=X(X⊤X)−1X⊤

它有两个可验证的性质:

  • 幂等:H2=H —— 投影两次等于一次
  • 迹等于 d:tr(H)=d,也就是模型的有效参数个数(自由度)

迹那条给出了残差平方和的期望:E[∥y−Xw^∥2]=(m−d)σ2 —— 这就是回归里用 m−d 而不是 m 做分母(无偏估计)的来源。

最小二乘解就是 y 在 X 列空间上的正交投影。

   X 的 d 个列向量张成 R^m 里的一个子空间(列空间)
        │
        └─ Xw 必然落在这个子空间里
        │
        ▼
   ┌──────────────────────────────────────────────────────────┐
   │  列空间(X 的所有可能线性组合)                             │
   │                                                          │
   │        ● y(观察到的标签,一般不在列空间里)                 │
   │         ╲                                                │
   │          ╲   残差 y − Xw                                 │
   │           ╲  ⊥ 列空间                                    │
   │            ╲                                             │
   │     ────────●───────────▶                                │
   │            Xw(列空间里离 y 最近的点)                      │
   └──────────────────────────────────────────────────────────┘

   残差与列空间正交 ⟹ X^T (y − Xw) = 0 —— 这正是正规方程。

   投影算子是帽子矩阵 H = X (X^T X)^{-1} X^T,两个可验证的性质
     幂等        H² = H        投影两次等于一次
     迹等于 d    tr(H) = d     即模型的有效参数个数(自由度)
     └─ 迹那条给出残差平方和的期望:E[‖y − Xŵ‖²] = (m − d) σ²
        —— 这就是回归里用 m − d 而不是 m 做分母(无偏估计)的来源

概率解释:平方损失从哪来 ​

最小二乘常被当作「就是这么定义的」,但它其实是一条假设的推论。

假设真实关系是线性的、噪声服从高斯:

y=w⊤x+ϵ,ϵ∼N(0,σ2)

则 y∣x∼N(w⊤x,σ2),对数似然为

log⁡L(w)=−12σ2∑i=1m(yi−w⊤xi)2−m2log⁡(2πσ2)

最大化似然等价于最小化平方误差(第二项与 w 无关)。所以「用 MSE」等于「假设噪声是高斯的」。

换噪声假设就换损失:假设噪声服从拉普拉斯分布,最大似然给出的是平均绝对误差(MAE)。这个对应关系在 04-概率、Softmax 与信息论 里还会以交叉熵的形式出现 —— 分类任务用交叉熵,对应的是把输出看成伯努利或多项分布。

高斯的假设是「轻尾」,对离群点不鲁棒

平方损失对残差是二次惩罚,一个大离群点能把整条回归线拽过去。数据里离群点明显时,MAE 或 Huber 损失更合适 —— 这是换损失函数,不是换优化器。

最小二乘不是「就是这么定义的」,它是一条假设的推论。

   假设真实关系是线性的、噪声服从高斯
        y = w^T x + ε,     ε ~ N(0, σ²)
            │
            ▼
        y | x ~ N(w^T x, σ²)
            │
            ▼
        对数似然
          log L(w) = −(1/2σ²) Σ (yᵢ − w^T xᵢ)² − (m/2) log(2πσ²)
                                                └─ 与 w 无关,不影响最优解
            │
            ▼
        最大化似然 ⟺ 最小化平方误差
        ⟹ 「用 MSE」等于「假设噪声是高斯的」

   换噪声假设就换损失
     高斯(轻尾)      ──▶ 平方损失(MSE)
     拉普拉斯(重尾)  ──▶ 平均绝对误差(MAE)

   代价:高斯假设是「轻尾」,对离群点不鲁棒
     平方损失对残差是二次惩罚,一个大离群点能把整条回归线拽过去。
     └─ 数据里离群点明显时换 MAE 或 Huber ——
        这是换损失函数,不是换优化器。

梯度下降 ​

w←w−η⋅1|B|XB⊤(XBw−yB)
变体每步用的样本特点
批梯度下降全部 m梯度精确,每步贵
随机梯度下降1 个每步极便宜,梯度噪声大
小批(mini-batch)B 个实际标准;噪声有利于跳出局部极小,也匹配 GPU 的并行粒度

两个决定行为的量 ​

一、学习率的上界由 Hessian 的最大特征值给出。 MSE 的 Hessian 是 1mX⊤X,设其最大特征值为 λmax,则 η<2/λmax 才保证收敛,超过就发散。

二、收敛速度由条件数决定。 令 κ=λmax/λmin:

条件数表现
κ≈1各方向曲率接近,梯度直指最低点,收敛快
κ 很大某些方向陡、某些方向平,梯度来回震荡,收敛慢

这解释了特征标准化的必要性:各特征量纲差几个数量级时 κ 会很大 —— 把一个特征从「米」换成「毫米」,对应的 λ 就变 106 倍,学习率上界随之垮掉。标准化不只是一个好习惯,它在改 Hessian 的条件数。

这一切都建立在「梯度能算出来」上,而一般网络里靠的是反向传播(05-反向传播与梯度优化)。

梯度下降的行为由两个量决定。

   一、学习率的上界由 Hessian 的最大特征值给出
        MSE 的 Hessian 是 (1/m) X^T X,设其最大特征值为 λ_max
        └─ η < 2 / λ_max 才保证收敛,超过就发散

   二、收敛速度由条件数决定
        κ = λ_max / λ_min
        ├─ κ ≈ 1     各方向曲率接近,梯度直指最低点,收敛快
        └─ κ 很大     某些方向陡、某些方向平,梯度来回震荡,收敛慢

        更新式:w ← w − η · (1/|B|) X_B^T (X_B w − y_B)

   这解释了特征标准化的必要性
     各特征量纲差几个数量级时 κ 会很大 ——
     把一个特征从「米」换成「毫米」,对应的 λ 就变 10⁶ 倍,
     学习率上界随之垮掉。
     └─ 标准化不只是一个好习惯,它在改 Hessian 的条件数。

   三种变体
     批梯度下降        全部 m 个    梯度精确,每步贵
     随机梯度下降      1 个         每步极便宜,梯度噪声大
     小批 mini-batch   B 个         实际标准:噪声有利于跳出局部极小,
                                   也匹配 GPU 的并行粒度

正则化:岭回归与 Lasso ​

X⊤X 病态或 m<d 时,加一个惩罚项:

方法目标函数效果
岭回归(Ridge)J(w)+λ|w|22解为 (X⊤X+λI)−1X⊤y。λI 让矩阵一定可逆;权重整体收缩,但不为 0
LassoJ(w)+λ|w|1部分权重精确为 0 → 自动特征选择
弹性网(Elastic Net)两者混合兼顾稀疏与稳定性

Lasso 为什么能置零、岭回归为什么不能,几何上最直观:L1 的约束区域是菱形,顶点落在坐标轴上;损失等高线与约束区域相切时,切点大概率落在顶点 —— 那里某个坐标恰好是 0。L2 的约束区域是圆,边界处处光滑,没有这样的特殊点。

另一条路径是看导数:|w| 在 w=0 处不可导,次梯度里包含 0,所以最优解可以停在原点;而 w2 虽然原点导数为 0,但把它拉回原点的力量也随 w→0 一起消失,因此只会把权重压小。

正则化项通常不正则化偏置

把 b 一起惩罚,会在标签整体偏移时失效(y 的均值很大时也强拉 b 到 0)。常规做法是只惩罚权重。

Lasso 能置零、岭回归不能 —— 几何上最直观。

   Lasso(L1)                       岭回归(L2)
   约束区域是菱形                     约束区域是圆
        w₂                                w₂
         ▲                                 ▲
         │    ╲                            │   ╭─────╮
         │   ╲    ← 损失等高线               │  │       │
     ────┼──◆──────▶ w₁               ────┼──╱───────╲──▶ w₁
         │ ╱    ◆ 落在坐标轴上              │  ╰─────╯
         │╱     (某个坐标恰好是 0)
   边界有顶点 ⟹ 切点大概率落在顶点      边界处处光滑,没有这样的特殊点

   另一条路径:看导数
     |w| 在 w = 0 处不可导,次梯度里包含 0
       └─ 所以最优解可以停在原点
     w² 虽然原点导数为 0,但把它拉回原点的力量也随 w → 0 一起消失
       └─ 因此只会把权重压小

   三种正则化
     岭回归 Ridge         J(w) + λ‖w‖₂²
        └─ 解为 (X^T X + λI)^{-1} X^T y
           λI 让矩阵一定可逆;权重整体收缩,但不为 0
     Lasso                J(w) + λ‖w‖₁
        └─ 部分权重精确为 0 ⟹ 自动特征选择
     弹性网 Elastic Net   两者混合,兼顾稀疏与稳定性

   一条边界:正则化项通常不正则化偏置
     把 b 一起惩罚,会在标签整体偏移时失效 ——
     y 的均值很大时也强拉 b 到 0。常规做法是只惩罚权重。

往哪里去 ​

一、加一层非线性映射就是分类器。 线性输出接 sigmoid 得到 logistic 回归,接 softmax 得到多分类,损失从 MSE 换成交叉熵(04-概率、Softmax 与信息论)。改的只有「输出分布假设」,优化框架不变。

二、基函数展开就是非线性回归。 把 x 换成 ϕ(x)(多项式、RBF),模型对 ϕ 仍是线性的 —— 闭式解照旧成立。这也是「线性模型」与「线性可分」两回事的根源:线性指的是对参数线性,对输入可以非线性。

三、堆叠起来就是神经网络。 单个线性层的表达能力受限于「输出必须是输入的线性组合」;多层之间若不加非线性,复合仍是线性的 —— 这是必须要有激活函数的原因(12-FFN 与激活函数)。

相关 ​

参考 ​

贡献者 ​

文件历史 ​