深度学习的优化算法:梯度下降--
-批处理下降:每次对所有数据集进行操作,遍历一遍后算损失函数然后算函数对各个参数的梯度,
更新梯度,Batch Gradient Descent 开销大、不支持在线学习
-随机梯度下降:对每一个训练集数据算一下损失函数,然后求梯度更新参数,这个称为随机梯度下降,stochastic gradient descent。这个方法速度比较快,但是收敛性能不太好,因为参数的更新可能抵消掉,只是在最优点晃动。
-两者折中,有了Mini-batch gradient decent,小批的梯度下降,这种方法把数据分为若干个批,按批来更新参数,这样,每个批中的一组数据共同决定了本次梯度的方向,下降起来就不容易跑偏,减少了随机性。另一方面因为批的样本数与整个数据集相比小了很多,计算量也折中。
SGD是随机梯度下降的缩写,但在运行中不是基于每个数据的,而是基于mini-batch的。
图中的:
(1)batch_size:批大小。在深度学习中采用SGD训练,即每次训练在训练集中取batch_size个样本训练,loss也是一组batch_size的样例加权得出的;
(2)iteration:1个iteration等于使用batch_size大小个样本训练一次,例如MNIST数据集训练样例有6W个,iteration为60000/128取上界为467个iteration;
(3)epoch:1个epoch等于使用训练集中的全部样本训练一次,通俗的讲epoch的值就是整个数据集被轮几次。
batchsize最大是样本总数N,此时就是Full batch learning;最小是1,即每次只训练一个样本,这就是在线学习(Online Learning)。当我们分批学习时,每次使用过全部训练数据完成一次Forword运算以及一次BP运算,成为完成了一次epoch。