[Datawhale X 李宏毅苹果书AI夏令营] 深度学习进阶 Task1

学习链接:Datawhale (linklearner.com)

本笔记记录了深度学习的一些基础概念

局部最小值与鞍点

做损失函数的优化时,经常会发现随着参数不断更新,训练的损失(Loss)不会再下降,但是我们对这个损失不满意,将训练模型替换为更深层的网络,发现损失可能还是做的不好-深层网络没有发挥全部力量。这就是所谓的优化失败。要理解优化失败的原因,就要了解局部最小值和鞍点的概念。

临界点及种类

常见的情况是,优化到某个地方,梯度为零,参数就不再更新了。此时可能有以下三种情况:跑到局部最小值(local minimum)了,跑到鞍点(saddle point),跑到局部最大值。对于梯度为零的点,统一称为临界点(critical point)。梯度没有继续下降,也许只是收敛到了临界点(比如鞍点),而不一定是局部最小值。鞍点指的是该点梯度为零,往某些方向损失函数增大,某些方向损失函数减小,画出来图像马鞍:

判断临界值种类的方法

由于鞍点和局部最小值的梯度均为零,要区分他们需要引入新的参数。类似微积分学的极大值极小值判定定理,通过二阶微分判断将临界点继续分类。梯度为零时,可以用泰勒展开将损失函数在临界点\theta'处展开:L(\theta)\approx L(\theta')+(\theta-\theta')^Tg+\frac{1}{2}(\theta-\theta')^TH(\theta-\theta')

其中g是L的一阶微分向量(n*1维,就是\theta的维度),也可以写作\bigtriangledown L(\theta'),其元素为g_i=\frac{\partial L(\theta')}{\partial \theta_i}

H是海森矩阵(n*n维),其元素为:H_{ij}=\frac{\partial ^2}{\partial \theta_i \partial \theta_j}L(\theta')

由于临界点\theta'处梯度为零,所以泰勒展开为:

L(\theta)\approx L(\theta')+\frac{1}{2}(\theta-\theta')^TH(\theta-\theta')

(\theta-\theta')记为v,则可以将(\theta-\theta')^TH(\theta-\theta')改写为v^THv

则临界点处泰勒展开又可以记为L(\theta)\approx L(\theta')+\frac{1}{2}v^THv。临界点处有以下三种情况

  1. 对于所有的v,都有v^THv>0,这意味着对于任意\theta,都有L(\theta)>L(\theta'),所以该临界点是局部极小值点
  2. 对于所有的v,都有v^THv<0,这意味着对于任意\theta,都有L(\theta)<L(\theta'),所以该临界点是局部极大值点
  3. 对于任意vv^THv有时候大于零,有时候小于零,这意味着对于有的\theta,有L(\theta)>L(\theta'),对于有的\theta,有L(\theta)<L(\theta'),所以该临界点是鞍点。

但是对于临界点,我们不可能将所有的v都拿来计算一遍,来判断临界点到底属于极大值还是极小值还是鞍点。此时只需要计算H的特征值即可

由线性代数的知识,我们知道如果矩阵H所有特征值都是正数,则H是正定矩阵,则对所有的v,都有v^THv>0,对应临界点是局部极小值点。同样,如果H的特征值都是负数,则H是负定矩阵,对所有的v,都有v^THv<0,对应临界点是局部极大值点。如果特征值有正有负,则是鞍点

因此,当梯度为0时,H可以告诉我们临界点的种类,同时还能告诉我们如果遇到鞍点,怎么更新参数可以逃离鞍点。下面举例说明(需要线性代数关于特征值、特征向量的知识,或者参见高中数学二维矩阵特征值、特征向量的介绍):

假设\lambda\lambda<0)是H的一个特征值(H特征值有正有负,所以可以假设一个小于零的特殊值),u是H对应该特征值的一个特征向量,即有Hu=\lambda u,对于我们的优化问题,假设将临界点\theta'更新为\theta,我们这样来选择新的\theta\theta=\theta'+u。则L(\theta)\approx L(\theta')+\frac{1}{2}u^THu中的第二项可以改写为:\frac{1}{2}u^THu=\frac{1}{2}u^T \lambda u=\frac{1}{2} \lambda \left | u \right |^2<0,则这样更新\theta就可以使得Loss比原来降低,其实就是沿着特征值为负数的特征向量方向更新参数。

逃离鞍点的方法

局部最小值不容易遇到

首先要明确一点:随着维度的增加,几乎很难遇到局部最小值点,通常遇到的临界值点都是鞍点。也可以这样来理解,当你在低维度时觉得无路可走了,实际在更高维度的人看来,还有其他优化的途径。可以见下图:

这里可以引用一个概念:最小值比例。其定义是

对于局部最小值,最小值比例就应该是1,实际上,多数的临界点最小值比例都不会到1,最大也就处在0.5~0.6的范围,见下图:

所以可以说随着维度的增加,局部最小值问题就不会成为一个问题

逃离鞍点方法

可以求海森矩阵,按照特征值为负数的特征向量方向更新参数。但这种方法计算量过大,很少有人用这种方法来逃离鞍点。
另一种逃离鞍点的方法是扰动梯度下降,就是在求得的梯度上加一个随机的微小扰动。
可以参考这篇报道
吴恩达导师Michael I.Jordan学术演讲:如何有效避开鞍点(视频+PPT)-36氪 (36kr.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值