随机梯度下降

随机梯度下降( stochastic gradient descent )

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

1.背景

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

C(w,b)12nxy(x)a2.(1)
其中 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代表一个神经网络实际输出的结果, w b就分别代表了权重和阈值。也就是说,我们如果想要让一个神经网络的结果更准确,就需要找到合适的 w ,b,让C更小。即求函数C的最小值。

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

2.梯度下降的思想

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

这里写图片描述

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

ΔCCv1Δv1+Cv2Δv2.(2)
现在我们需要找到合适的 v1 v2 ,可以让 ΔC 小于0,这样我们才能让小球一直往最低点前进。因为函数C的梯度为:
C(Cv1,Cv2)T.(3)
因此(3)可以改写成
ΔCCΔv.(4)
那么我们如何选择 Δv C 为负数呢?我们可以选择令:
Δv=ηC(5)
原式可变为 Δ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如下式所示:

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值