批量梯度下降(BGD)、随机梯度下降(SGD)、小批量随机梯度下降(MSGD)的理解与实现

最近在学习提高MMD算法,其中算法中有一些细节的知识,是关于mini-batch中基于四元组实现MMD损失的计算,于是就仔细地学习了下,批量梯度下降,随机梯度下降,小批量随机梯度下降的区别和比较,参考网上一些大神的博客,自己总结了一下。

BGD是最开始采取的方法,是指每一次反向传播中都将全部的样本进行处理计算梯度,更新权重。缺点是这样的方法造成处理数据量大,收敛慢;另外在数据量很大的时候,内存的要求很高。

SGD是指采用随机采用的方法,每次使用一个样本数据进行计算梯度。优点是,开始收敛速度快;缺点是一个样本往往不会一直向着整体样本的梯度方向,这样算法后期会有变慢。

MSGD是采取折中的方法,将随机采样一个批量样本进行计算梯度,保证算法收敛的同时,收敛速度也可以很快。

—————————————————————————————————————————————————————————————————————————————

下文是转载博客的文章,与大家分享:

假设我们提供了这样的数据样本(样本值取自于y=3*x1+4*x2):

 
x1x2y
1419
2526
5119
4229

x1和x2是样本值,y是预测目标,我们需要以一条直线来拟合上面的数据,待拟合的函数如下:

\——1式

我们的目的就是要求出θ1和θ2的值,让h(θ)尽量逼近目标值y。

这是一个线性回归问题,若对线性回归有所了解的同学就知道:利用最小二乘法则和梯度下降法可以求出两个参数,而深度学习也同样可以利用这两种方法求得所有的网络参数,因此,在这里用这个数学模型来解释BGD、SGD、MSGD这几个概念。

我们首先确定损失函数:

 \

——2式

其中,J(θ)是损失函数,m代表每次取多少样本进行训练,如果采用SGD进行训练,那每次随机取一组样本,m=1;如果是批处理,则m等于每次抽取作为训练样本的数量J(θ)是参数,对应(1式)的θ1和θ2。求出了θ1和θ2,h(x)的表达式就出来了:

\——3式

我们的目标是让损失函数J(θ)的值最小,根据梯度下降法,首先要用J(θ)θ求偏导:

\

——4式

由于是要最小化损失函数(2式),所以参数θ按其负梯度方向来更新:

\——5式

   现在结合代码来说明(python):

BGD(Batch gradient descent)批量梯度下降法:每次迭代使用所有的样本

每次迭代都需要把所有样本都送入,这样的好处是每次迭代都顾及了全部的样本,做的是全局最优化

<script src="https://code.csdn.net/snippets/2078328.js"></script>


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值