局部极小值与鞍点 Datawhale X 李宏毅苹果书 AI夏令营

1,为什么随着参数的不断更新,损失无法降低?

当参数对损失微分为零的时候,梯度下降就不能再更新参数了,训练就停下来了,损失不再下降了,此时梯度接近于0。

我们把梯度为零的点统称为临界点(critical point)。损失没有办法再下降,也许是因为收敛在了临界点,临界点包括局部极小值,局部极大值和鞍点(梯度是零且区别于局部极小值和局部极大值(localmaximum)的点)

2,如果一个点的梯度接近于0,我们如何判断这个临界点的种类(即为局部极小值,局部极大值或是鞍点)?

判断临界函数的种类,需要用到损失函数。

如果给定某一组参数,比如 θ′,在 θ′ 附近的损失函数是有办法写出来的——虽然 L(θ) 完整的样子写不出来。θ′ 附近的 L(θ) 可近似为

L(θ) ≈ L(θ′)+(θ − θ′)^T*g +1/2(θ − θ′)^T *H(θ − θ′).(H为海森矩阵)

用向量 v 来表示 θ − θ′,(θ − θ′)^T H(θ − θ′)可改写为 v^T*Hv

(1)如果对所有 v,v^T*Hv > 0. 这意味着对任意 θ,L(θ) > L(θ′). 只要 θ 在 θ′ 附近,L(θ) 都大于 L(θ′). 这代表 L(θ′) 是附近的一个最低点,所以它是局部极小值。

(2)如果对所有 v,v^T*Hv < 0. 这意味着对任意 θ,L(θ) < L(θ′),θ′ 是附近最高的一个点,L(θ′) 是局部极大值。

(3)如果对于 v,v^T*Hv 有时候大于零,有时候小于零。这意味着在 θ′ 附近,有时候L(θ) > L(θ′),有时候 L(θ) < L(θ′). 因此在 θ′ 附近,L(θ′) 既不是局部极大值,也不是局部极小值,而是鞍点。

我们在计算的时候不可能带入所有的θ,我们只需要算出一个海森矩阵H,判断它的特征值即可。

若 H 的所有特征值都是正的,H 为正定矩阵,则 v^T*Hv > 0,临界点是局部极小值。若 H 的所有特征值都是负的,H 为负定矩阵,则 v^T*Hv < 0,临界点是局部极大值。若 H 的特征值有正有负,临界点是鞍点。

3,如何更新参数?

因为如果临界点在局部极小值,我们所在的位置已经是损失最低的点了,往四周走损失都会比较高,就没有路可以走了。

如果我们是在一个鞍点,虽然临界点的梯度为零,但是只要找出负的特征值,再找出这个特征值对应的特征向量。将其与 θ′ 相加,就可以找到一个损失更低的点。

4,局部极小值和鞍点的数目谁多谁少?

如果我们遇到损失无法降低的情况,通常有两种原因:损失仍然很高,却遇到了临界点而不再下降;或者损失降得很低,才遇到临界点。

最小值比例定义为:最小值比例 =正特征值数量/总特征值数量.

我们几乎找不到所有特征值都为正的临界点,代表只有约一半的特征值为正,另一半的特征值为负,代表在所有的维度里面有约一半的路可以让损失上升,还有约一半的路可以让损失下降。因此,局部极小值的比例远小于鞍点的值

你可能感兴趣的:(人工智能,深度学习,机器学习)