深度学习——形象理解梯度下降、learning rate(学习率)

写在前面

当初在学习梯度下降和Learning Rate的时候,怎么理解都没有理解透这两个是一个什么样的过程,疑惑了很久很久,直到最近开始看李宏毅老师的深度学习的课程视频的第一节,给了我一种豁然开朗的感觉,因此记录下来

梯度下降

我们在进行模型训练的时候,首先会先将Loss(损失)先算出来,然后我们利用梯度下降法进行反向更新传递优化参数,使得我们Loss下降,这是我们平时的做法,那怎么形象的理解呢?
首先,假设Loss是关于w等几个参数的函数(这也符合我们的神经网络的算损失函数的过程),w等这些参数就是我们神经网络里面那些许许多多的参数,我们假设得到了Loss关于w的函数图象。
然后我们会对Loss求w的偏导,那么计算得到的就是Loss曲线的斜率,而我们的w是在神经网络里面已知的,所以我们能够得到我们当前的斜率是多少。
假设我们现在所处的位置是P点,即如下图所示,那么梯度下降是什么呢?为了得到更好的神经网络,我们需要让我们的损失函数Loss更小,在图中怎么体现呢?我们可以得到P点的斜率,右边低,左边高,即我们增加w即可以实现Loss的下降,而在这个过程中,我们可以发现梯度,也就是斜率是减小了的,所以这就实现了梯度下降而降低了我们的Loss。

  • 我们只需要沿着梯度下降的方向走增加或减小我们的参数,即可以实现Loss损失函数的减小,也就是所谓的梯度下降。

在这里插入图片描述

Learing Rate(学习率)

当我们知道了梯度下降之后,紧随其后就有一个问题,我们不是需要像梯度下降(Loss减小)的方向更新参数吗?那每次增加(或减少)多大的参数呢?这个决定增加(或减少)参数的值,也就是我们的学习率。
为了使我们的训练速度更快,我们可以在梯度越大的时候,参数变化的值更大,梯度越小的时候,参数变化的值越小。而我们学习率怎么进行影响呢?
我们可以简单的使用斜率大小*学习率来实现我们这一个功能,我们也常常称这个Learing Rate为步伐大小。想象一下,我们每一次变化参数是不是类似于像下山的方向跨出一步,而这个步伐的大小就有一个山的陡峭程度(梯度大小)和步伐大小(Learing Rate)来决定。

Learing Rate(学习率)的影响

我们常常会在训练一个模型的时候使用学习率递减的方法。我们画几张图来深刻理解这个做法的意义。

Learing Rate比较小

假设我们学习率是一个比较小的一个不变的值,那么我们很有可能会出现下面这种情况,因为我们的学习率较小,当我们到达P点的时候,就会出现模型认为Loss已经无法再继续下降了而卡在了这样的一个鞍点,而没有办法跳出去了,这样虽然模型认为他到达了最优的w值并且对应了他所认为的最小的Loss值,但是我们站在全局的视角来看的时候,会发现他并没有到达最理想的值。
跳出那个点,后面还有Loss更好的w参数。
在遇到这种情况的时候,我们能做的就是需要保持一个此时最理想的一个模型,然后停止训练,设置一个较大的Learing Rate重新训练,让其跳出鞍点。

在这里插入图片描述

Learing Rate较大

那如果我们的Learing Rate保持一个比较大的值,那么很有可能我们上一次在P1点,但是因为一个比较大的学习率,导致我们的参数更新之后到达了P2点,而在P2的时候,又因为学习率很大,不幸的导致你的模型又跳回了P1点,这样就会导致这个模型反复震荡,而没有办法使得w到达最优解
在这里插入图片描述
无论是解决这种情况,还是解决学习率小的那种情况。其实最理想的就是前面提到的学习率下降法。一开始使用一个较打的学习率,使我们能够很快的到达一个比较合适的参数附近,然后利用小的学习率寻找到最合适的参数。

猜你喜欢

转载自blog.csdn.net/scarecrow_sun/article/details/120527738