batch 和mini_batch 优化

深度学习的优化算法,说白了就是梯度降低。每次的参数更新有两种方式。算法

第一种,遍历所有数据集算一次损失函数,而后算函数对各个参数的梯度,更新梯度。这种方法每更新一次参数都要把数据集里的全部样本都看一遍,计算量开销大,计算速度慢,不支持在线学习,这称为Batch gradient descent,批梯度降低。函数

另外一种,每看一个数据就算一下损失函数,而后求梯度更新参数,这个称为随机梯度降低,stochastic gradient descent。这个方法速度比较快,可是收敛性能不太好,可能在最优势附近晃来晃去,hit不到最优势。两次参数的更新也有可能互相抵消掉,形成目标函数震荡的比较剧烈。性能

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

相关文章
相关标签/搜索