(一)神经网络训练不起来怎么办:局部最小值(local minia)与鞍点(saddle point)

Optimization的时候,怎么把gradient descent做的更好?

1、局部最小值(Local minima)与鞍点(saddle point)

所谓的saddle point其实就是gradient是零,但是不是local minima,也不是local maxima;比如下面的saddle point,他在左右方向上是比较高的,前后的方向上是比较高的,他是一个马鞍的形状,所以叫做saddle point;

 像saddle point这种地方,他也是gradient为零,但他不是local minima,像这种gradient为0的点统称为critical point,所以你可以说你的loss没有办法再下降,也许是因为卡在了critical point,但你不能说是卡在了local minima,因为saddle point也是微分为零的点;

所以当gradient为0的时候,我们就要搞清楚是卡在了local minima上还是saddle point上,如果是卡在了local minima上的话,因为四周都比较高,你现在所在的位置已经是loss最低点,往四周走loss都比较高,你会不知道怎么走到其他的地方去;但是saddle point就比较没有这个问题,如果你是卡在saddle point上的话,saddle point旁边还是有路可以让你的loss更低,只要逃离saddle point,就有可能让你的loss更低,所以当你走到critical point的时候,我们到底是在local minima上还是saddle point上,是一个值得去探讨的问题;

 判断该点到底是local minima还是saddle point,需要用到数学的微积分和线性代数:

 

 

When gradient is small

Critical Point

Training Fails because

​ 现在我们要讲的是Optimization的部分,所以我们要讲的东西基本上跟Overfitting没有什麼太大的关联,我们只讨论Optimization的时候,怎麼把gradient descent做得更好,那為什麼Optimization会失败呢?

image-20210314152447908

​ 你常常在做Optimization的时候,你会发现,随著你的参数不断的update,你的training的loss不会再下降,但是你对这个loss仍然不满意,就像我刚才说的,你可以把deep的network,跟linear的model,或比较shallow network 比较,发现说它没有做得更好,所以你觉得deepnetwork,没有发挥它完整的力量,所以Optimization显然是有问题的

​ 但有时候你会甚至发现,一开始你的model就train不起来,一开始你不管怎麼update你的参数,你的loss通通都掉不下去,那这个时候到底发生了什麼事情呢?

​ 过去常见的一个猜想,是因為我们现在走到了一个地方,这个地方参数对loss的微分為零,当你的参数对loss微分為零的时候,gradient descent就没有办法再update参数了,这个时候training就停下来了,loss当然就不会再下降了。

​ 讲到gradient為零的时候,大家通常脑海中最先浮现的,可能就是local minima,所以常有人说做deep learning,用gradient descent会卡在local minima,然后所以gradient descent不work,所以deep learning不work。

​ 但是如果有一天你要写,跟deep learning相关paper的时候,你千万不要讲卡在local minima这种事情,别人会觉得你非常没有水準,為什麼

image-20210314153200619

​ 因為不是只有local minima的gradient是零,还有其他可能会让gradient是零,比如说 saddle point,所谓的saddle point,其实就是gradient是零,但是不是local minima,也不是local maxima的地方,像在右边这个例子裡面 红色的这个点,它在左右这个方向是比较高的,前后这个方向是比较低的,它就像是一个马鞍的形状,所以叫做saddle point,那中文就翻成鞍点

​ 像saddle point这种地方,它也是gradient為零,但它不是local minima,那像这种gradient為零的点,统称為critical point,所以你可以说你的loss,没有办法再下降,也许是因為卡在了critical point,但你不能说是卡在local minima,因為saddle point也是微分為零的点

​ 但是今天如果你发现你的gradient,真的很靠近零,卡在了某个critical point,我们有没有办法知道,到底是local minima,还是saddle point?其实是有办法的

image-20210314153005913

​ 為什麼我们想要知道到底是卡在local minima,还是卡在saddle point呢

  • 因為如果是卡在local minima,那可能就没有路可以走了,因為四周都比较高,你现在所在的位置已经是最低的点,loss最低的点了,往四周走 loss都会比较高,你会不知道怎麼走到其他的地方去
  • 但saddle point就比较没有这个问题,如果你今天是**卡在saddle point的话,saddle point旁边还是有路可以走的,**还是有路可以让你的loss更低的,你只要逃离saddle point,你就有可能让你的loss更低

​ 所以鉴别今天我们走到,critical point的时候,到底是local minima,还是saddle point,是一个值得去探讨的问题,那怎麼知道今天一个critical point,到底是属於local minima,还是saddle point呢?

Warning of Math

​ 这边需要用到一点数学,以下这段其实没有很难的数学,就只是微积分跟线性代数,但如果你没有听懂的话,以下这段skip掉是没有关係的

​ 那怎麼知道说一个点,到底是local minima,还是saddle point呢?

​ 你要知道我们loss function的形状,可是我们怎麼知道,loss function的形状呢,network本身很复杂,用复杂network算出来的loss function,显然也很复杂,我们怎麼知道loss function,长什麼样子,虽然我们没有办法完整知道,整个loss function的样子

Tayler Series Approximation

但是如果给定某一组参数,比如说蓝色的这个θ ′ ,在θ ′ 附近的loss function,是有办法被写出来的,它写出来就像是这个样子

image-20210314154450970

​ 所以这个L ( θ ) 完整的样子写不出来,但是它在θ ′ 附近,你可以用这个式子来表示它,这个式子是,Tayler Series Appoximation泰勒级数展开,这个假设你在微积分的时候,已经学过了,所以我就不会细讲这一串是怎麼来的,但我们就只讲一下它的概念,这一串裡面包含什麼东西呢?

  • 第一项是L ( θ ′ ) ,就告诉我们说,当θ跟θ ′ 很近的时候,L ( θ ) 应该跟L ( θ ′ ) 还蛮靠近的

  • 第二项是(\Theta -\Theta ^{'})^{T}g

 

  • g是一个向量,这个g就是我们的gradient,我们用绿色的这个g来代表gradient,这个gradient会来弥补,θ ′ 跟θ 之间的差距,我们虽然刚才说θ ′ 跟θ ,它们应该很接近,但是中间还是有一些差距的,那这个差距,第一项我们用这个gradient,来表示他们之间的差距,有时候gradient会写成∇ L ( θ ′ ) ,这个地方的g 是一个向量,它的第i个component,就是θ的第i个component对L的微分,光是看g还是没有办法,完整的描述L(θ),你还要看第三项

  • 第三项跟Hessian有关,这边有一个$H $

    image-20210314155802228

https://www.bilibili.com/video/BV1Wv411h7kN?p=11

笔记:

https://blog.csdn.net/pigpigpig64/article/details/119061752

https://zhuanlan.zhihu.com/p/437609102

泰勒展开式:https://www.zhihu.com/question/25627482/answer/313088784

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Upupup6

写手不易请留下你的打赏鼓励谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值