Datawhale X 李宏毅苹果书 AI 夏令营 —— Part 02 @深度学习 @AI

优化失败问题

在做优化的时候经常会发现,随着参数不断更新,参数对损失的微分等于0,训练的损失不会再下降,但是我们对这个损失仍然不满意,它不是理想中的全局最小值。

局部最小值与鞍点

上一部分提到梯度下降方法会出现局部最小值,但是这其实是个假问题,在做梯度下降的时候,需要处理的问题不是局部最小值。

实际上不只有局部极值和全局极值处的梯度(即图像中损失曲线在当前点处的斜率)为 0,我们把梯度是零且区别于局部极小值(localminimum)和局部极大值(localmaximum)的点称为鞍点。下图中红色的点在 y 轴方向是比较高的,在 x 轴方向是比较低的,这就是一个鞍点。
在这里插入图片描述

局部极小值鞍点
已经是损失最低的点了,往四周走损失都会比较高旁边还是有路可以让损失更低的。因此只要逃离鞍点,就有可能让损失更低

我们把梯度为零的点统称为临界点(critical point)。 损失没有办法再下降,也许是因为收敛在了临界点,但不一定收敛在局部极小值,因为鞍点也是梯度为零的点。

判断临界值种类

1. 确定临界点附近的损失表面“地貌”

判断一个临界点到底是局部极小值还是鞍点需要知道损失函数的形状
假设已知一组参数 θ’,在 θ’ 附近的损失函数 L(θ) 是有办法写出来的。
L ( θ ) ≈ L ( θ ′ ) + ( θ − θ ′ ) T . . . g + 1 2 ( θ − θ ′ ) T H ( θ − θ ′ ) (1) L(\theta) ≈ L(\theta') + (\theta - \theta')^T...g + \frac{1}{2} (\theta - \theta')^TH(\theta - \theta')\tag{1} L(θ)L(θ)+(θθ)T...g+21(θθ)TH(θθ)(1)公式 1 是泰勒级数近似(Tayler series appoximation)。接下来将分别解释公式 1 中的三项。

  • 第一项告诉我们,当 θ 跟 θ′ 很近的时候,L(θ) 应该跟 L(θ′) 还蛮靠近的。
  • 第二项中,g 代表 梯度 ,它是一个向量,用来弥补 L(θ′) 跟 L(θ) 之间的差距。gi 是向量 g 的第 i 个元素,就是 L 关于 θ 的第 i 个元素的一次微分。
  • 第三项跟 海森矩阵(Hessian matrix)H 有关。H 里面放的是 L 的二次微分,它第 i 行,第 j 列的值 Hij ,就是把 θ 的第 i 个元素对 L(θ′) 作微分,再把 θ 的第 j 个元素对 ∂L(θ′) ∂θi 作微分后的结果,即
    H i j = ∂ 2 ∂ θ i ∂ θ j L ( θ ′ ) (2) H_{ij} = \frac{\partial^2}{\partial \theta_i \partial \theta_j} L(\theta')\tag{2} Hij=θiθj2L(θ)(2)

上一节我们可知临界点梯度 g 为0,代入公式 1 中,可以得到临界点附近的损失近似为
L ( θ ) ≈ L ( θ ′ ) + 1 2 ( θ − θ ′ ) T H ( θ − θ ′ ) (3) L(\theta) ≈ L(\theta') + \frac{1}{2} (\theta - \theta')^TH(\theta - \theta')\tag{3} L(θ)L(θ)+21(θθ)TH(θθ)(3)
现在,我们可以根据公式 3 来判断在 θ′ 附近的误差表面(error surface)到底长什么样子。

2. 判断 L(θ′) 是局部极小值、局部极大值,还是鞍点

我们用向量 v 来表示 θ - θ’,分为如下三种情况:

  1. 如果对所有 v,vTHv > 0,这意味着对任意 θ,L(θ) > L(θ’)。只要 θ 在 θ’ 附近,L(θ) 都大于 L(θ′)。θ′ 是附近最低的一个点,L(θ′) 是局部极小值。
  2. 如果对所有 v,vTHv < 0, 这意味着对任意 θ,L(θ) < L(θ′),θ′ 是附近最高的一个点,L(θ′) 是局部极大值。
  3. 如果对所有 v,vTHv 有时候大于0,有时候小于0。这意味着在 θ′ 附近,有时候 L(θ) > L(θ′),有时候 L(θ) < L(θ′)。因此在 θ′ 附近,L(θ′) 既不是局部极大值,也不是局部极小值,而是鞍点。

此外还有一种更简单的方法,判断 L(θ’) 的种类:
算出一个海森矩阵 H 后,不需要把它跟所有的 v 都乘乘看,只要看 H 的特征值

  1. 若 H 的所有特征值都是正的,H 为正定矩阵,则 vTHv > 0,临界点是局部极小值。
  2. 若 H 的所有特征值都是负的,H 为负定矩阵,则 vTHv < 0,临界点是局部极大值。
  3. 若 H 的特征值有正有负,临界点是鞍点。

补充知识:矩阵特征值它指的是一个矩阵与一个非零向量相乘后,得到的新向量与原向量的方向相同,且长度成比例的值。在数学上,如果 A 是一个 n×n 的方阵,v 是一个非零向量,λ 是一个标量,那么当 Av=λv 时,λ 被称为矩阵 A 的特征值;如果 n 阶对称矩阵 H 对于任意非零的 n 维向量 x 都有 xTHx > 0,则称矩阵 H 为正定矩阵。如果 n 阶对称矩阵 A 对于任意非零的 n 维向量 x 都有 xTHx < 0,则称矩阵 H 为负定矩阵

逃离鞍点的方法

转换到更高维空间

如图所示,低维度空间中的局部极小值点,在更高维的空间中,实际是鞍点。同样地,如果在二维的空间中临界点附近没有路可以走,会不会在更高维的空间中,其实有路可以走?经验上,我们如果自己做一些实验,会发现实际情况确实支持这个假说。
在这里插入图片描述

动量法

动量法的原理来自于物理,假设一个球如果从高处滚下来,滚到一个小坡的最低点。如果球的动量足够大,它可以翻过小坡继续往前走。 在梯度下降法中,这个坡代表的是鞍点或局部最小值,也就是引入动量来对抗鞍点或局部最小值。

如下图所示,与一般梯度下降法相比,动量法增加移动量 m 对结果的影响,即所有之前的梯度的加权和,权重参数为 λ。
在这里插入图片描述
如下图所示,在第三个红点处,微分等于0,梯度下降本应该停止,损失不会再下降。但是由于动量不是只看梯度,还看前一步的方向,考虑前一步的移动量,我们的小球还会再走一段,越过局部最小值这个小坡。
在这里插入图片描述

批量

实际上在计算梯度 g 的时候,通常并不会对所有数据的损失 loss 计算梯度,而是把所有的数据分成一个一个的批量(batch)。如图所示
在这里插入图片描述
遍历所有批量的过程称为一个回合(epoch)。

事实上,在把数据分为批量的时候,我们还会进行随机打乱(shuffle)。
随机打乱有很多不同的做法,一个常见的做法是在每一个回合开始之前重新划分批量

批量大小对梯度下降法的影响

根据批量的大小,梯度下降可以分为两种极端情况:

  • 批量梯度下降法(Batch Gradient Descent,BGD):即没有批量,模型必须把所有的训练数据都看完,才能够计算损失和梯度,参数才能够更新一次。
  • 随机梯度下降法(Stochastic Gradient Descent,SGD):即批量大小等于1,批量数量等于所有的训练数据数,每看一条数据,就计算一次损失和梯度。

从一个回合需要的时间来看,大的批量是较有优势的,运行速度快。而小的批量有很多的损失,更新方向比较随机,能随机跳出局部最小值;比较有噪声,对测试有优势。

Q: 为什么在深度学习中,小批量梯度下降相比于大批量梯度下降,可能在测试时表现更好?
A: 小批量有助于减少过拟合。

参考资料:
[1] 李宏毅《深度学习详解》电子版:https://github.com/datawhalechina/leedl-tutorial
[2] 视频讲解:https://www.bilibili.com/video/BV1JA411c7VT/?p=6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值