gradient descent

梯度下降的两种参数更新方式

1.Batch gradient descent 批梯度下降 遍历全部数据集算一次损失函数,然后算函数对各个参数的梯度,更新梯度。这种方法每更新一次参数就要把数据集里面的所有样本都看一遍,计算量开销大,计算速度慢。

2.Stochastic gradient descent 随机梯度下降 每看一个数据就算一下损失函数,然后求梯度更新参数。速度快,但是收敛性不太好,可能在最优点晃来晃去,不能hit最优点。两次参数的更新也有可能互相抵消掉,造成目标函数振荡剧烈。

 

为了克服缺点,现在一般采用的是折中手段,mini-batch gradient descent 小批梯度下降,这种方法把数据分为若干批batch,按批来更新参数,这样,一个批中的一组数据共同决定了本次梯度的方向,下降起来就不容易跑偏,减少了随机性。另一方面因为批的样本数与整个数据集相比小了很多,计算量也不是很大。

【现在用的优化器SGD是stochastic gradient descent的缩写,但不代表是一个样本更新一回,还是基于mini-batch的。】

 

term:

1.batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个训练样本

2.iteration:一个iteration等于使用batchsize个样本训练一次

3.epoch:1个epoch等于使用训练集中的全部样本训练一次,即epoch的值就是整个数据集被轮几次。【i.e. 训练集有500样本,batchsize=10,那么训练完整个样本集,iteration=50,epoch=1】

 

batchsize最大是样本总数N,此时就是Full batch learning;最小是1,即每次只训练一个样本,这就是在线学习(Online Learning)。当我们分批学习时,每次使用过全部训练数据完成一次Forword运算以及一次BP运算,成为完成了一次epoch。

 

posted on 2019-03-18 21:08  OAREII  阅读(174)  评论(0编辑  收藏  举报

导航