第5章 优化与数值计算

优化问题是机器学习的核心。

学习算法的本质是 寻找最优参数,使模型在给定任务上表现最佳

这一过程几乎总可以形式化为一个“优化问题”:

[ \min_\theta ; L(\theta) ]

其中 ( \theta ) 是模型参数,( L(\theta) ) 是损失函数或目标函数。 本章将介绍从损失函数设计到优化算法、再到数值陷阱与模型复杂度控制的系统思维。


5.1 损失函数与目标函数

✅ 一、定义与作用

损失函数(Loss Function)是衡量模型输出与真实标签之间误差的函数。 优化算法的任务,就是让损失函数尽可能小。

常见形式如下:

任务类型 损失函数 数学表达式  
回归 均方误差 (MSE) ( L = \frac{1}{N}\sum_i (y_i - \hat{y}_i)^2 )  
分类 交叉熵损失 (Cross Entropy) ( L = -\sum_i y_i \log(\hat{y}_i) )  
支持向量机 合页损失 (Hinge Loss) ( L = \max(0, 1 - y_i w^T x_i) )  
概率建模 对数似然损失 (Negative Log-Likelihood) ( L = -\log P(y x;\theta) )

✅ 二、目标函数与正则项

有时我们不仅希望拟合数据,还希望模型“泛化”得更好,于是引入正则化:

[ J(\theta) = L(\theta) + \lambda \Omega(\theta) ]

  • ( L(\theta) ):经验风险(对训练样本的平均损失)
  • ( \Omega(\theta) ):正则化项(控制模型复杂度)
  • ( \lambda ):权衡因子

✅ 三、风险最小化原则

机器学习中两种典型思想:

  • 经验风险最小化 (ERM):直接最小化训练集损失
  • 结构风险最小化 (SRM):在经验风险和模型复杂度之间做权衡(如SVM)

5.2 梯度下降与随机梯度下降

✅ 一、梯度下降(Gradient Descent, GD)

梯度下降是优化的核心算法。 其思想简单直接:沿着梯度下降方向迭代更新参数

[ \theta_{t+1} = \theta_t - \eta \nabla_\theta L(\theta_t) ]

  • ( \eta ):学习率 (Learning Rate)
  • ( \nabla_\theta L ):损失函数对参数的梯度

当学习率太大 → 振荡甚至发散; 当学习率太小 → 收敛过慢。

✅ 二、随机梯度下降(SGD)

全批量梯度下降对大数据集成本太高,于是出现了 随机梯度下降

[ \theta_{t+1} = \theta_t - \eta \nabla_\theta L_i(\theta_t) ]

其中 ( L_i ) 是单个样本或小批量(mini-batch)的损失。 SGD 能够更快地更新参数、避免陷入局部最优。

✅ 三、改进算法

现代优化算法在SGD的基础上做了改进:

算法 特点
Momentum 增加“惯性”,平滑梯度方向,加快收敛
AdaGrad 自适应学习率,适合稀疏特征
RMSProp 改进AdaGrad的学习率衰减问题
Adam 结合Momentum和RMSProp,成为深度学习默认选择

Adam的更新规则:

[ m_t = \beta_1 m_{t-1} + (1-\beta_1)\nabla_\theta L_t ] [ v_t = \beta_2 v_{t-1} + (1-\beta_2)(\nabla_\theta L_t)^2 ] [ \theta_{t+1} = \theta_t - \eta \frac{m_t}{\sqrt{v_t} + \epsilon} ]


5.3 正则化与模型复杂度控制

✅ 一、为什么需要正则化

在高维空间中,模型往往可以“完美”拟合训练数据,但在测试数据上表现很差——即 过拟合。 正则化就是控制这种“过度灵活性”的手段。

✅ 二、常见正则化方法

方法 数学形式 作用        
L2 正则化 (Ridge) ( \Omega(\theta) =   \theta   _2^2 ) 平滑参数,抑制大权重
L1 正则化 (Lasso) ( \Omega(\theta) =   \theta   _1 ) 稀疏化参数,实现特征选择
Dropout 随机丢弃神经元 提高模型鲁棒性        
Early Stopping 提前停止训练 避免模型对训练集过拟合        
数据增强 扩大样本空间 提高泛化能力        

✅ 三、模型复杂度与容量

  • 模型容量太小 → 欠拟合(bias高)
  • 模型容量太大 → 过拟合(variance高) → 偏差-方差权衡 是正则化的核心思想。

5.4 优化陷阱:局部最优、鞍点、梯度消失

✅ 一、局部最优(Local Minima)

非凸优化问题(如神经网络)可能存在多个局部最优解。 幸运的是,在高维空间中,局部最优通常表现接近全局最优

✅ 二、鞍点(Saddle Point)

鞍点是指梯度为零但既非最小也非最大的位置。 它在高维空间中比局部最优更常见。 优化算法常会卡在鞍点处,导致训练停滞。

✅ 三、梯度消失与梯度爆炸

尤其在深层网络中:

  • 梯度消失:导致前层权重几乎不更新
  • 梯度爆炸:导致训练不稳定

解决思路:

  • 使用 ReLU 激活函数(避免梯度消失)
  • 使用 Batch Normalization(稳定梯度分布)
  • 梯度裁剪 (Gradient Clipping)(控制爆炸)
  • 残差结构 (ResNet)(保证梯度可传播)

✅ 四、数值稳定性与优化技巧

  • 使用对数技巧:(\log(\sum e^x)) 替换 (\sum e^x)
  • 在实现时避免浮点下溢/上溢
  • 归一化输入特征,加快收敛
  • 动态调整学习率(Learning Rate Scheduling)

总结

模块 关键思想 实践意义
损失函数 定义“学习目标” 衡量模型误差
优化算法 找到最优参数 决定模型能否学好
正则化 控制复杂度 提高泛化能力
优化陷阱 理解局部/鞍点问题 指导算法改进
数值稳定性 避免计算问题 保证训练稳定性