目录
一. 局部极小值与鞍点
1.1 临界点及其种类
- 概念:把梯度为零的点统称为临界点(critical point)
- 种类:局部最小值,局部最大值,鞍点
1.2 判断临界值种类的方法
网络本身很复杂,用复杂网络算出来的损失函数显然也很复杂。虽然无法完整知道整个损失函数的样子,但是如果给定某一组参数,比如 θ′,在 θ′ 附近的损失函数是有办法写出来的——虽然 L(θ) 完整的样子写不出来。θ′ 附近的 L(θ) 可近似为:
这个公式是泰勒级数近似(Tayler series appoximation)。其中,第一项 L(θ)′ 告诉我们,当 θ 跟 θ′ 很近的时候,L(θ) 应该跟 L(θ′) 还蛮靠近的;第二项 g 中,g 代表梯度,它是一个向量,可以弥补 L(θ′) 跟 L(θ) 之间的差距。有时候梯度 g 会写成 ∇L(θ′)。gi 是向量 g 的第 i 个元素,就是 L 关于 θ 的第 i 个元素的微分,即。H 里面放的是 L 的二次微分,它第 i 行,第 j 列的值 HiHij 就是把 θ 的第 i 个元素对 Lθ′作微分,再把 θ 的第 j 个元素对 ∂L(θ′)∂θi 作微分后的结果,即
在临界点,梯度 g 为零,因此g 为零。所以在临界点的附近,损失函数可被近似为
可以根据 来判断在 θ′ 附近的误差表面(error surface)到底长什么样子。知道误差表面的“地貌”,我们就可以判断 L(θ′) 是局部极小值、局部极大值,还是鞍点。为了符号简洁,我们用向量 v 来表示( θ − θ′), H(θ − θ′)可改写为,有如下三种情况。
- 如果对所有 v,> 0. 这意味着对任意 θ,L(θ) > L(θ′). 只要 θ 在 θ′ 附近,L(θ) 都大于 L(θ′). 这代表 L(θ′) 是附近的一个最低点,所以它是局部极小值。
- 如果对所有 v,< 0. 这意味着对任意 θ,L(θ) < L(θ′),θ′ 是附近最高的一个点,L(θ′) 是局部极大值。
- 如果对于 v,有时候大于零,有时候小于零。这意味着在 θ′ 附近,有时候L(θ) > L(θ′),有时候 L(θ) < L(θ′). 因此在 θ′ 附近,L(θ′) 既不是局部极大值,也不是局部极小值,而是鞍点。
此方法判断临界点是局部极小值还是鞍点还是局部极大值,需要代入所有的 θ. 但我们不可能把所有的 v 都拿来试试看,所以有一个更简便的方法来判断 的正负。算出一个海森矩阵后,不需要把它跟所有的 v 都乘乘看,只要看 H的特征值。若 H 的所有特征值都是正的,H 为正定矩阵,则 > 0,临界点是局部极小值。若 H 的所有特征值都是负的,H 为负定矩阵,则 < 0,临界点是局部极大值。若 H 的特征值有正有负,临界点是鞍点。
当遇到鞍点时,可以沿着H的负的特征值的特征向量的方向移动,可以使得损失减小。
二. 批量和动量
2.1 基础概念
在计算梯度的时候,并不是对所有数据的损失 L 计算梯度,而是把所有的数据分成一个一个的批量(batch)。
假设每个批量的大小是 B ,即带有 B 笔数据。每次在更新参数的时候,会去取出 B 笔数据用来计算出损失和梯度更新参数。遍历所有批量的过程称为一个回合(epoch)。事实上,在把数据分为批量的时候,我们还会进行随机打乱(shuffle)。随机打乱有很多不同的做法,一个常见的做法是在每一个回合开始之前重新划分批量,也就是说,每个回合的批量的数据都不一样。
2.2 批量法
批量梯度下降法:使用全批量的数据来更新参数
随机梯度下降法:使用批量大小等于1的数据来更新参数
随机梯度下降的梯度上引入了随机噪声,因此在非凸优化问题中,其相比批量梯度下 降更容易逃离局部最小值。
比较:
2.3 动量法
一般的梯度下降(vanilla gradient descent)初始参数为 θ0,计算一下梯 度,计算完梯度后,往梯度的反方向去更新参数 θ1 = θ0 − ηg0。有了新的参数 θ1 后,再计算一次梯度,再往梯度的反方向,再更新一次参数,到了新的位置以后再计算一次梯度,再往 梯度的反方向去更新参数。
引入动量后,每次在移动参数的时候,不是只往梯度的反方向来移动参数,而是根据梯度 的反方向加上前一步移动的方向决定移动方向。
每一步的移动都用 m 来表示。m 其实可以写成之前所有计算的梯度的加权和。其中 η 是学习率,λ 是前一个方向的权重参数,也是需要调的。
运动过程例子如下: