为什么Learning Rate不能很大?

2021年1月1日 / 24次阅读 / Last Modified 2021年1月5日
神经网络

梯度下降算法的核心,是寻找出一个对应神经网络的weight和bias梯度vector的delta vector,这个vector有2个目的:

  • 让delta cost小于0,即可以降低cost;
  • 用于更新整个网络中的w和b,即学习;

这个vector的选择,取巧的方法就是直接使用梯度vector(由所有w和b的偏导数构成的向量),这个选择带来数学上计算的简便,计算相当于做梯度vector的平方,这个值一定是正,然后选择一个eta,即Learning Rate,这个数一定是负数,这样就保证了delta cost是个负数,可以让cost变小一些。(这恐怕就是梯度下降 gradient descent 名称的由来,选择一个与梯度共线但反方向的vector)

Learning Rate 不能很大,其实原因很简单。微分公式中的delta,都是近似,delta y = derivative * delta x,这个关系式,只有在 delta x 很小的时候才成立!!如果 delta x 很大,得到的 delta y 已经毫无意义,已经失去了微分本来的意义。

想清楚了这些,会发现,当选择梯度vector配合learning rate的计算方式时,只能让learning rate小一些,以防止无意义的计算发生,防止震荡。但是,个人认为,整体也许能够在比较小的learninig rate下继续优化,但是局部参数可能得到的 delta w 或 delta b依然很大。

是否有可能换一种更新 w 和 b 的计算模式?让每一个独立的 w 和 b 都能够在一个合理的范围内被update。比如:是否可以给每一个 w 和 b 一个独立的 learning rate?另一个思路:不直接取梯度vector,而是取梯度vector的正负号,保持正负号相同,配合一个learning rate,也能够得到一个负的 delta cost?......

其实,已经有很多其它的计算方法,我还需要继续研究...

-- EOF --

本文链接:https://www.pynote.net/archives/3066

留言区

《为什么Learning Rate不能很大?》有2条留言

您的电子邮箱地址不会被公开。 必填项已用*标注

  • 麦新杰

    Learning Rate太大,梯度爆炸... [回复]

  • 麦新杰

    梯度下降算法如果有BackPropagation的加持,神经网络依然在冰河期。 [回复]


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top