神经网络的训练中我们常常能遇到Epoch和Iteration这两个不同的词。
两个词都表示“轮次”的意思,显然这两个“轮次”的含义并不相同。
在解释这两个词的不同之前,我们先引入三种梯度下降策略:
1.Batch Grandient Descent(BGD,批梯度下降)
2.Stochastic Gradient Descent(SGD,随机梯度下降)
3.Mini-Batch Gradient Descent(MBGD,小批量梯度下降)
BGD:每次迭代的时候用所有的样本来参与参数的更新。这种方法需要同时把所有的样本都加载进内存进行计算,这样无疑会导致内存的负载过大。
SGD:每次迭代使用一个样本来对参数进行更新。这种方法虽然速度快,但单个样本的损失往往不能代表总体样本的损失情况,而且单个样本的损失往往容易受到噪声的影响,所以这种方法往往难以收敛。
MBGD:是对上面两种策略的折中,相当于每次迭代使用 batch_size 个样本来对参数进行更新。若是batch_size选择合适,则每次迭代的损失既能表征总体的损失的情况,也能降低内存的负载压力,提升内存的利用率,也提升网络训练的速度。
BatchSize:一次训练所选取的样本数。
下面来比较Iteration 和Epoch的不同:
Iteration:使用一个batch_size数量的样本训练一次。一个Iteration,参数更新一次。
Epoch:所有的样本都训练一次,即(total / batch_size)个Iteration的训练。一个Epoch,参数更新了(total / batch_size)次
网友评论