深度学习:
英文DL(Deep Learning),指多层的人工神经网络和训练它的方法。一层大量的神经网络会把大量的矩阵数字作为输入,通过非线性激活方法获取权重,再产生另一个数据集和作为输出。
Epoch:
在模型训练的时候含义是训练集中的所有样本训练完一次。这里的一指的是:当一个完整的数据集通过了神经网络一次并且返回了一次。如果Epoch过少会欠拟合,反之Epoch过多会过拟合.
1个epoch=iteration数 × batchsize数
举个例子:训练集有1000个样本,batchsize=10。
训练完整个样本集需要:100次iteration,1次epoch。
为什么要使用多个epoch?
当一个 epoch 对于计算机而言太庞大的时候,就需要把它分成多个小块。
在神经网络中传递完整的数据集一次是不够的,而且我们需要将完整的数据集在同样的神经网络中传递多次。但是请记住,我们使用的是有限的数据集,并且我们使用一个迭代过程即梯度下降,优化学习过程和图示。因此仅仅更新权重一次或者说使用一个 epoch 是不够的。随着 epoch 数量增加,神经网络中的权重的更新次数也增加,曲线从欠拟合变得过拟合。
Iteration:
翻译为迭代。迭代是重复反馈的动作,神经网络中我们希望通过迭代,进行多次的训练以达到所需的目标或结果。1个iteration=1个正向通过+1个反向通过=使用batchsize个样本训练一次。
每一次迭代得到的结果都会被作为下一次迭代的初始值。
Batchsize:
译为批量大小。简单点说,批量大小将决定我们每一次训练的样本数目(改参数受限于机器性能,电脑配置差的话 不能设置太大)。
记住公式:1个iteration=使用batchsize个样本训练一次。
在深度学习中,一般采用SGD训练(随机梯度下降),即每次训练在训练集中取batchsize个样本训练;
(1)经验总结:Batch_Size的正确选择是为了在内存效率和内存容量之间寻找最佳平衡
相对于正常数据集,如果Batch_Size过小,训练数据就会非常难收敛,从而导underfitting。增大Batch_Size,相对处理速度加快。但是,增大Batch_Size,所需内存容量增加(epoch的次数需要增加以达到最好的结果)这就出现了矛盾。——因为当epoch增加以后,同样也会导致耗时增加从而速度下降。因此我们需要寻找最好的Batch_Size。
(2)适当的增加Batch_Size的优点:
1.通过并行化提高内存利用率。
2.单次epoch的迭代次数减少,提高运行速度。
3.适当的增加Batch_Size,梯度下降方向准确度增加,训练震动的幅度减小。