深度学习进阶版__test1(Datawhale X 李宏毅苹果书 AI夏令营)

局部极小值与鞍点:优化过程中的拦路虎

在机器学习中,尤其是深度学习领域,我们经常会遇到局部极小值鞍点这两个概念。它们是优化算法在寻找最优解的过程中可能遇到的障碍。

局部极小值(Local Minima)

  • 定义: 在函数的某个区域内,存在一个点,其函数值比周围所有点的函数值都小,这个点就是局部最小值。
  • 形象比喻: 可以想象成一个山谷中的低洼处,虽然不是整个山脉的最低点,但在这个小范围内已经是最低点。
  • 问题: 优化算法很容易陷入局部最小值,一旦陷入,就很难再跳出来找到全局最小值。

鞍点(Saddle Point)

  • 定义: 在函数的某个点,沿着某些方向是极大值点,沿着另一些方向是极小值点,这个点就是鞍点。
  • 形象比喻: 可以想象成马鞍的中心,前后方向是高点,左右方向是低点。
  • 问题: 鞍点也是优化算法容易陷入的一个点,因为它既不是局部最小值也不是局部最大值,梯度为零,但并不代表是全局最优解。

 

为什么局部极小值和鞍点会影响优化?

  • 优化算法的局限性: 大多数优化算法都是基于梯度的,它们沿着梯度的负方向搜索最小值。一旦陷入局部最小值或鞍点,梯度为零,算法就无法继续前进。
  • 高维空间的复杂性: 高维空间中的函数往往具有复杂的形态,存在大量的局部最小值和鞍点,这使得优化变得更加困难。

如何应对局部极小值和鞍点?

  • 选择合适的优化算法:
    • 动量法(Momentum):通过引入动量项,可以帮助算法跳出局部最小值。
    • Adam:结合了自适应学习率和动量,具有更快的收敛速度和更好的性能。
    • Adagrad:自适应地调整每个参数的学习率,可以加速收敛。
  • 学习率调整:
    • 学习率衰减: 随着训练的进行,逐渐减小学习率,可以帮助算法在接近最优解时更稳定地收敛。
    • 学习率调度: 根据不同的训练阶段,采用不同的学习率调整策略。
  • 批量大小(Batch Size)
    • 合理的批量大小可以影响优化算法的性能,太小或太大都可能导致训练不稳定。
  • 初始化参数:
    • 合理的初始化参数可以帮助算法更快地收敛,避免陷入局部最小值。
  • 正则化:
    • L1正则化和L2正则化可以防止过拟合,同时也可以起到一定程度的平滑作用,减少局部最小值。
  • 早停:
    • 当验证集上的性能不再提升时,提前停止训练,可以避免过拟合。

 

批量和动量:深度学习优化中的重要概念

批量(Batch)

在深度学习中,批量是指在一次参数更新中,我们使用的训练样本的数量。

  • 小批量(Mini-batch): 将训练数据分成多个小块,每次更新参数时只使用其中一个小块。这是最常用的方式,因为它兼顾了内存占用和计算效率。
  • 全批量(Full batch): 每次更新参数时使用所有的训练数据。这种方法可以得到更准确的梯度估计,但对于大数据集来说,计算量非常大。
  • 随机梯度下降(Stochastic Gradient Descent, SGD): 每次更新参数时只使用一个样本。这种方法可以在噪声较大的情况下加快收敛,但容易产生振荡。

批量大小的影响:

  • 批量大小过小: 噪声较大,参数更新不稳定,训练过程可能出现振荡。
  • 批量大小过大: 内存占用大,计算效率低,收敛速度慢。
  • 批量大小适中: 可以平衡噪声和计算效率,获得较好的收敛效果。

动量(Momentum)

动量是一种优化算法,它在每次参数更新时,除了考虑当前梯度,还考虑之前更新的方向。通过引入动量项,可以加速收敛,并且能够帮助算法跳出局部最小值。

动量的直观解释:

想象一个球从山坡上滚下来,球的运动不仅受到当前坡度的影响,还受到之前运动的惯性影响。动量就类似于这个惯性,它可以让球在遇到小坑洼时继续向前滚动,而不是停留在那里。

动量的数学表达式:

v = γv + η∇θL
θ = θ - v
  • v: 动量项
  • γ: 动量因子,通常设置为0.9
  • η: 学习率
  • ∇θL: 损失函数对参数θ的梯度

动量的作用:

  • 加速收敛: 动量项可以加速参数在正确的方向上移动,从而加快收敛速度。
  • 抑制振荡: 动量项可以平滑参数更新,减少振荡。
  • 跳出局部最小值: 动量项可以帮助算法跳出局部最小值,找到更好的解。

批量和动量的结合

在实际应用中,我们通常将批量和动量结合起来使用。小批量随机梯度下降加上动量是一种非常有效的优化方法。

  • 小批量可以引入一定的噪声,帮助算法跳出局部最小值。
  • 动量可以加速收敛,并提高算法的稳定性。

在书中有几个关键概念在这里做一个说明

  • 海森矩阵:用于判断函数的极值点类型(局部极大值、局部极小值或鞍点)。
  • 特征值:海森矩阵的特征值与函数的曲率相关,通过特征值的正负可以判断临界点的类型。
  • 鞍点:梯度为零但不是极值的点,在某些方向上是极大值,在另一些方向上是极小值。
  • 逃离鞍点:通过分析海森矩阵的特征向量,可以找到下降的方向,从而逃离鞍点。
  1. 为什么海森矩阵的特征值可以判断临界点的类型?

    • 几何解释: 海森矩阵描述了函数在临界点附近的曲率。正的特征值对应函数在该方向上的凸起,负的特征值对应函数在该方向上的凹陷。如果所有特征值都为正,则函数在所有方向上都是凸的,因此是局部最小值。如果所有特征值都为负,则函数在所有方向上都是凹的,因此是局部最大值。如果特征值有正有负,则函数在不同方向上的曲率不同,因此是鞍点。
    • 数学解释: 通过泰勒展开,可以将函数在临界点附近近似为一个二次型,而二次型的正定性、负定性或不定性由其对应的矩阵(即海森矩阵)的特征值决定。
  2. 为什么说海森矩阵可以告诉我们参数更新的方向?

    • 特征向量表示下降方向: 负特征值对应的特征向量指示了函数值下降最快的方向。通过沿着这个方向更新参数,可以使函数值减小。
    • 几何意义: 想象一个山谷,鞍点就像山谷中的一个鞍状点。如果我们站在鞍点上,沿着山谷的坡度向下走,就可以找到更低的地方。负特征向量就相当于这个山谷的坡度方向。
  3. 为什么在实际应用中很少直接计算海森矩阵?

    • 计算量大: 海森矩阵的计算量非常大,尤其是对于高维的神经网络。
    • 存储开销大: 海森矩阵是一个对称矩阵,存储它需要大量的内存。
    • 数值稳定性问题: 海森矩阵的计算可能涉及到数值不稳定性。

 以上内容都是参考李宏毅老师的书的感想,有不对的地方劳烦支持,谢谢!

  • 25
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值