《最优化理论基础》8课时模块化教案(续)

《最优化理论基础》8课时模块化教案(续)

模块4第1课时:应用专题——稀疏优化与深度学习中的优化挑战

核心目标:掌握稀疏优化的数学原理与实现方法,分析深度学习优化问题的非凸性、大规模特性及解决方案。

1. 稀疏优化:LASSO回归与几何解释(60分钟)

1.1 L1正则化的数学形式
LASSO问题
min ⁡ β 1 2 n ∥ y − X β ∥ 2 2 + λ ∥ β ∥ 1 \min_{\beta} \frac{1}{2n} \| y - X\beta \|_2^2 + \lambda \|\beta\|_1 βmin2n1y22+λβ1

  • 目标:在最小化残差平方和的同时,促使系数稀疏化(部分 β j = 0 \beta_j = 0 βj=0)。

1.2 几何解释:L1 vs L2正则化

  • 岭回归(L2):约束区域为球体,解倾向于均匀收缩系数。
  • LASSO(L1):约束区域为菱形,解倾向于在坐标轴上(稀疏性)。

示例:二维系数空间对比
β = ( β 1 , β 2 ) \beta = (\beta_1, \beta_2) β=(β1,β2),约束区域:

  • L2 β 1 2 + β 2 2 ≤ t \beta_1^2 + \beta_2^2 \leq t β12+β22t(圆形)。
  • L1 ∣ β 1 ∣ + ∣ β 2 ∣ ≤ t |\beta_1| + |\beta_2| \leq t β1+β2t(菱形)。
    最优解为等高线首次接触约束区域的位置,LASSO更易在顶点(坐标轴)接触,产生稀疏解。

1.3 坐标下降法求解LASSO
算法步骤

  1. 初始化 β = 0 \beta = 0 β=0
  2. 对每个系数 β j \beta_j βj依次更新:
    β j ← S λ / n ( 1 n ∑ i = 1 n x i j ( y i − ∑ k ≠ j x i k β k ) ) \beta_j \leftarrow S_{\lambda/n} \left( \frac{1}{n} \sum_{i=1}^n x_{ij} (y_i - \sum_{k \neq j} x_{ik} \beta_k) \right) βjSλ/n n1i=1nxij(yik=jxikβk)
    其中软阈值函数 S τ ( z ) = sign ( z ) ( ∣ z ∣ − τ ) + S_\tau(z) = \text{sign}(z)(|z| - \tau)_+ Sτ(z)=sign(z)(zτ)+

手动计算示例
设数据 X = [ 1 2 3 4 ] X = \begin{bmatrix}1 & 2 \\ 3 & 4\end{bmatrix} X=[1324], y = [ 5 6 ] y = \begin{bmatrix}5 \\ 6\end{bmatrix} y=[56], λ = 1 \lambda = 1 λ=1, 初始 β = ( 0 , 0 ) \beta = (0,0) β=(0,0)

  • 第1轮更新 β 1 \beta_1 β1
    残差 r = y − X β = [ 5 , 6 ] T r = y - X\beta = [5,6]^T r=y=[5,6]T
    更新量 z = ( 1 × 5 + 3 × 6 ) / 2 = ( 5 + 18 ) / 2 = 11.5 z = (1 \times 5 + 3 \times 6)/2 = (5 + 18)/2 = 11.5 z=(1×5+3×6)/2=(5+18)/2=11.5
    β 1 = S 0.5 ( 11.5 ) = 11.5 − 0.5 = 11 \beta_1 = S_{0.5}(11.5) = 11.5 - 0.5 = 11 β1=S0.5(11.5)=11.50.5=11
  • 第1轮更新 β 2 \beta_2 β2
    残差 r = [ 5 − 1 × 11 , 6 − 3 × 11 ] = [ − 6 , − 27 ] r = [5 - 1 \times 11, 6 - 3 \times 11] = [-6, -27] r=[51×11,63×11]=[6,27]
    更新量 z = ( 2 × ( − 6 ) + 4 × ( − 27 ) ) / 2 = ( − 12 − 108 ) / 2 = − 60 z = (2 \times (-6) + 4 \times (-27))/2 = (-12 -108)/2 = -60 z=(2×(6)+4×(27))/2=(12108)/2=60
    β 2 = S 0.5 ( − 60 ) = − 60 + 0.5 = − 59.5 \beta_2 = S_{0.5}(-60) = -60 + 0.5 = -59.5 β2=S0.5(60)=60+0.5=59.5

问题:此结果明显过拟合,需调整 λ \lambda λ,展示正则化强度的影响。

2. 深度学习中的优化挑战(60分钟)

2.1 非凸优化景观
示例:简单神经网络损失函数
考虑单隐层网络:
f ( x ; W 1 , W 2 ) = W 2 σ ( W 1 x ) , 损失  L = 1 2 ∥ y − f ( x ) ∥ 2 f(x; W_1, W_2) = W_2 \sigma(W_1 x), \quad \text{损失} \ L = \frac{1}{2} \| y - f(x) \|^2 f(x;W1,W2)=W2σ(W1x),损失 L=21yf(x)2

  • 非凸性来源:权重矩阵 W 1 , W 2 W_1, W_2 W1,W2的乘积结构导致损失函数存在多个局部极小。

2.2 随机梯度下降(SGD)的优势

  • 大规模数据:每次迭代随机采样小批量(mini-batch),计算梯度估计:
    ∇ L B ( θ ) = 1 ∣ B ∣ ∑ i ∈ B ∇ l i ( θ ) \nabla L_B(\theta) = \frac{1}{|B|} \sum_{i \in B} \nabla l_i(\theta) LB(θ)=B1iBli(θ)
  • 逃离鞍点:噪声帮助跳出鞍点,探索更优区域。

2.3 自适应优化器:Adam算法
更新规则
m t = β 1 m t − 1 + ( 1 − β 1 ) g t ( 一阶矩估计 ) v t = β 2 v t − 1 + ( 1 − β 2 ) g t 2 ( 二阶矩估计 ) m ^ t = m t 1 − β 1 t , v ^ t = v t 1 − β 2 t θ t + 1 = θ t − α m ^ t v ^ t + ϵ m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t \quad (\text{一阶矩估计}) \\ v_t = \beta_2 v_{t-1} + (1 - \beta_2) g_t^2 \quad (\text{二阶矩估计}) \\ \hat{m}_t = \frac{m_t}{1 - \beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1 - \beta_2^t} \\ \theta_{t+1} = \theta_t - \alpha \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} mt=β1mt1+(1β1)gt(一阶矩估计)vt=β2vt1+(1β2)gt2(二阶矩估计)m^t=1β1tmt,v^t=1β2tvtθt+1=θtαv^t +ϵm^t

代码示例(PyTorch)

import torch
model = torch.nn.Linear(10, 1)
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
for epoch in range(100):
    for batch in data_loader:
        loss = torch.nn.MSELoss()(model(batch.x), batch.y)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
3. 稀疏优化与深度学习结合案例(30分钟)

3.1 稀疏神经网络训练
目标:通过L1正则化剪枝冗余连接。
损失函数
L ( θ ) = 交叉熵 + λ ∑ l , i , j ∣ W i j ( l ) ∣ L(\theta) = \text{交叉熵} + \lambda \sum_{l,i,j} |W_{ij}^{(l)}| L(θ)=交叉熵+λl,i,jWij(l)
训练策略

  1. 初始阶段使用较大 λ \lambda λ促进稀疏性。
  2. 剪枝接近零的权重,微调剩余参数。

3.2 稀疏自编码器示例
网络结构:输入层→瓶颈层(低维稀疏表示)→输出层。
激活函数:ReLU + L1约束,损失函数:
L = ∥ X − X ^ ∥ 2 2 + λ ∥ h ∥ 1 ( h 为瓶颈层激活值 ) L = \| X - \hat{X} \|_2^2 + \lambda \| h \|_1 \quad (h \text{为瓶颈层激活值}) L=XX^22+λh1(h为瓶颈层激活值)
应用场景:特征提取、去噪。

4. 课堂实验:对比SGD与Adam在非凸问题中的表现(20分钟)

任务:在MNIST数据集上训练全连接网络,比较两种优化器的收敛速度与测试精度。
实验步骤

  1. 代码框架:使用PyTorch定义相同网络结构(2隐层,ReLU)。
  2. 参数设置
    • SGD:学习率0.1,动量0.9。
    • Adam:学习率0.001, β 1 = 0.9 , β 2 = 0.999 \beta_1=0.9, \beta_2=0.999 β1=0.9,β2=0.999
  3. 观测指标
    • 训练损失曲线。
    • 测试集准确率随时间变化。
      典型结果:Adam更快收敛,最终精度相当或略优。
5. 板书设计示例
  • LASSO与岭回归解路径对比图
    横轴为 λ \lambda λ,纵轴为 β j \beta_j βj,LASSO路径呈现分段线性,部分系数突变为零。
  • 深度学习优化挑战总结表
    挑战类型表现解决方案
    非凸性多个局部极小SGD噪声、模型初始化策略
    大规模参数计算内存不足分布式训练、梯度压缩
    病态曲率梯度下降震荡自适应优化器(Adam)
6. 课后练习(选做)
  1. 理论题:推导LASSO问题的闭式解(当 X X X正交时)。
  2. 编程题:实现坐标下降法求解LASSO,并在糖尿病数据集上比较不同 λ \lambda λ的稀疏性。
  3. 分析题:解释批量大小(batch size)如何影响SGD的梯度估计方差和收敛速度。

参考答案

  1. 闭式解推导:当 X T X = I X^TX = I XTX=I,LASSO解为:
    β j = S λ / n ( 1 n X j T y ) \beta_j = S_{\lambda/n} \left( \frac{1}{n} X_j^T y \right) βj=Sλ/n(n1XjTy)
  2. 编程题示例
    def coordinate_descent(X, y, lambda_, max_iter=100):
        n, p = X.shape
        beta = np.zeros(p)
        for _ in range(max_iter):
            for j in range(p):
                r = y - X @ beta + X[:,j] * beta[j]
                z = np.dot(X[:,j], r) / n
                beta[j] = np.sign(z) * max(0, abs(z) - lambda_ / n)
        return beta
    
  3. 批量大小分析
    • 小批量:梯度估计方差大,但迭代速度快,适合逃离局部极小。
    • 大批量:梯度估计准确,但计算成本高,易陷入尖锐极小。

对比图**:
横轴为 λ \lambda λ,纵轴为 β j \beta_j βj,LASSO路径呈现分段线性,部分系数突变为零。

  • 深度学习优化挑战总结表
    挑战类型表现解决方案
    非凸性多个局部极小SGD噪声、模型初始化策略
    大规模参数计算内存不足分布式训练、梯度压缩
    病态曲率梯度下降震荡自适应优化器(Adam)
6. 课后练习(选做)
  1. 理论题:推导LASSO问题的闭式解(当 X X X正交时)。
  2. 编程题:实现坐标下降法求解LASSO,并在糖尿病数据集上比较不同 λ \lambda λ的稀疏性。
  3. 分析题:解释批量大小(batch size)如何影响SGD的梯度估计方差和收敛速度。

参考答案

  1. 闭式解推导:当 X T X = I X^TX = I XTX=I,LASSO解为:
    β j = S λ / n ( 1 n X j T y ) \beta_j = S_{\lambda/n} \left( \frac{1}{n} X_j^T y \right) βj=Sλ/n(n1XjTy)
  2. 编程题示例
    def coordinate_descent(X, y, lambda_, max_iter=100):
        n, p = X.shape
        beta = np.zeros(p)
        for _ in range(max_iter):
            for j in range(p):
                r = y - X @ beta + X[:,j] * beta[j]
                z = np.dot(X[:,j], r) / n
                beta[j] = np.sign(z) * max(0, abs(z) - lambda_ / n)
        return beta
    
  3. 批量大小分析
    • 小批量:梯度估计方差大,但迭代速度快,适合逃离局部极小。
    • 大批量:梯度估计准确,但计算成本高,易陷入尖锐极小。

本课时重点:通过稀疏优化与深度学习优化的深度解析,结合理论推导与代码实验,培养学生解决实际复杂优化问题的综合能力,理解现代机器学习核心算法的设计哲学。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Leweslyh

一块去征服星辰大海吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值