当前位置:   article > 正文

随机梯度下降_随机梯度下降求二元函数最小值

随机梯度下降求二元函数最小值

随机梯度下降( stochastic gradient descent )

          简单的介绍一下什么是随机梯度下降,为什么要用随机梯度下降这个方法。

1.背景

        在我们进行深度学习的时候,对于神经网络的输出结果,我们需要知道结果对不对,以及每个神经元的阈值和权重对不对,对于以及我调整一下权重和阈值,神经网络的输出结果和我们预期的输出结果会更接近还是误差更大。如果更接近,那么我们可以继续调整权重和阈值,让神经网络的输出结果等于预期。那么我们如何进行定量的分析呢?不能只依靠感觉,这个时候,我们引入函数

(1)C(w,b)12nxy(x)a2.
其中 y(x)代表我们预期的输出结果,比如说,一个识别手写阿拉伯数字的神经网络,我们网络的输出就是一个10维的向量,比如 (1,0,0,0,0,0,0,0,0,0)代表0, (0,1,0,0,0,0,0,0,0,0)1,而a代表一个神经网络实际输出的结果, wb就分别代表了权重和阈值。也就是说,我们如果想要让一个神经网络的结果更准确,就需要找到合适的 w,b,让C更小。即求函数C的最小值。

      也就是说,我们现在是要求一个函数的最小值,让我们仅仅从数学方面思考,如何求解一个函数的最小值。假设有一个函数C(v),而这个函数有两个变量v1,v2,首先想到的就是微积分,假如只有2个变量,我们就要求出函数的二阶偏导,然后再令二阶偏导等于0,算出几个点,再判断这几个点哪个是最大值,哪个是最小值,哪个是鞍点。可是问题是,我们处理的数据大部分都是多维的,甚至达到百万级别,所以用微积分的话,那就很难算出来了。因此我们就需要梯度下降的方法

2.梯度下降的思想

        我们先假设在求一个二元函数的最小值,它的图像如图所示:

这里写图片描述

        假设我们在这个图像曲面上放置一个小球,它受到重力影响,肯定会往下滑落,而最终停止的地方,就是整个函数的最小值,这个就是梯度下降的大致思想。为了更清楚的说明这个问题, 我们把v1v1 方向移动Δv1 ,在v2v2 方向移动Δv2,根据微积分,我们可以得到:

(2)ΔCCv1Δv1+Cv2Δv2.
现在我们需要找到合适的 v1 v2,可以让 ΔC小于0,这样我们才能让小球一直往最低点前进。因为函数C的梯度为:
(3)C(Cv1,Cv2)T.
因此(3)可以改写成
(4)ΔCCΔv.
那么我们如何选择 Δv C为负数呢?我们可以选择令:
(5)Δv=ηC
原式可变为 ΔCηCC=ηC2. 因为 C20, 这就保证了 ΔC0。 那么 η怎么求呢?因为 Δv=ηC,因此 η=Δv C|,我们可以事先规定 Δv 的大小,然后求出  C 。那么 η的值就求出来了。

3.随机梯度下降

        根据前面的介绍,我们已经可以算出最小点在哪里了(理论上),但是随机梯度下降还有一些问题,我在这里说两个: (1)容易陷入局部极小值,在前面的图中,我们只画出了一个全局极小值点,所以梯度下降可以直接找到最小点,但是在实际中,函数会有很多局部极小值,因此梯度下降可能会停止在局部极小值中,而不是全局极小值。 (2)计算量太大,注意到式(1),我们计算所有输入图像的cost function,然后取平均,这样计算量太大了。 因此,我们可以通过计算一个小样本里的Cx 来估计 C 的值。 我们随机选取输入 X1,X2,,Xm, 把它们看做是一个迷你批(mini-batch). 样本数 m 要足够大以致于我们可以估计出CXj如下式所示:

(6)j=1mCXjmxCxn=C,
两边互换一下,即可得:
(7)C1mj=1mCXj,
应用到神经网络上,可以得到下式:
(8)wkwk=wkηmjCXjwk(9)blbl=blηmjCXjbl,
其中 wb 分别代表权值和阈值。当我们遍历完所有迷你批以后,接着在剩下的样本中选取第二个迷你批,直到穷尽所有样本,此时称为完成一次epoch。然后继续上述过程。

参考资料:《Neural Networks and Deep Learning》 Michael Nielsen

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/162735
推荐阅读
相关标签
  

闽ICP备14008679号