深度学习中的batchsize、epochs、learning rate、momentum、iteration/step几个术语,这里整理一下,
1.batchsize:批大小,每次训练给神经网络喂入的数据量大小(当然也可以一次将所有样本丢给神经网络)。但是要注意,batchsize并不是越大越好。更大的批量会计算更精确的梯度估计,但是回报却是小于线性的。同样,极小批量通常难以充分利用多核架构。
数学基础不好的可能在这里犯糊涂了——一次性喂500个样本并迭代一次,跟一次喂1个样本迭代500次相比,有区别吗?当然有区别,如果用做生意打个比方,那就相当于:
- 第一种(batchsize=500):本金100元。第一个样本挣了10元,第二个样本挣了13元,…,第500个样本挣了9元。那么,目前总收入=100元+(10元+13元+…+9元)。注意,本金没汇总前一直是100元。
- 第二种(batchsize=1):本金100元。第一个样本挣了10元,目前总收入100元+10元。那么下一批,本金就是110元了…
很显然,使用batchsize=1的时候,资金将会得到更快的迭代,这种方式也被称为随机梯度下降(SGD)。
2.iteration/step:迭代(步),从总样本中每次拿batchsize数据量喂入神经网络,需要step次喂完毕。举个例子,总样本Total Sample=5000个,batchsize=100个,则 s t e p = t