深度学习中的随机梯度下降(SGD)简介

        随机梯度下降(Stochastic Gradient Descent, SGD)是梯度下降算法的一个扩展。

        机器学习中反复出现的一个问题是好的泛化需要大的训练集,但大的训练集的计算代价也更大。机器学习算法中的代价函数通常可以分解成每个样本的代价函数的总和。随着训练集规模增长为数十亿的样本,计算一步梯度也会消耗相当成的时间。

        随机梯度下降的核心是:梯度是期望。期望可使用小规模的样本近似估计。具体而言,在算法的每一步,我们从训练集中均匀抽出一小批量(minibatch)样本B={x(1), …, x(m’)}。小批量的数目m’通常是一个相对较小的数,从一到几百。重要的是,当训练集大小m增长时,m’通常是固定的。我们可能在拟合几十亿的样本时,每次更新计算只用到几百个样本。

        梯度下降往往被认为很慢或不可靠。优化算法不一定能保证在合理的时间内达到一个局部最小值,但它通常能及时地找到代价函数一个很小的值,并且是有用的。

        有时提到SGD的时候,其实指的是Mini-Batch梯度下降。

        在伪代码中,随机梯度下降可以表示如下:


        批量梯度下降法(Batch Gradient Descent, BGD):是梯度下降法的最原始形式,每迭代一步或更新每一参数时,都要用到训练集中的所有样本数据,当样本数目很多时,训练过程会很慢。

        随机梯度下降法(Stochastic Gradient Descent, SGD):由于批量梯度下降法在更新每一个参数时,都需要所有的训练样本,所以训练过程会随着样本数量的加大而变得异常的缓慢。随机梯度下降法正是为了解决批量梯度下降法这一弊端而提出的。随机梯度下降是通过每个样本来迭代更新一次。SGD伴随的一个问题是噪音较BGD要多,使得SGD并不是每次迭代都向着最优化方向进行。

        小批量梯度下降法(Mini-BatchGradient Descent, MBGD):在每次更新参数时使用m’个样本, m’可能远小于m

        以上内容主要摘自:《深度学习中文版》 和  维基百科  

        GitHub: https://github.com/fengbingchun/NN_Test 

  • 4
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值