神经网络中的Epoch、Iteration、Batchsize以及参数调整方式
batch-size(超参数)
批次的大小,神经网络经历一次迭代的需要计算的次数,神经网络经历一个迭代需要计算batchsize次;
Iteration
迭代,表示神经网络中参数经历一次更新即为一次迭代;一次迭代需要通过神经网络计算batchsize次,通过反向传播方法调整参数;
Epoch(超参数)
训练轮次,定义了学习算法在整个训练数据集中的工作次数。一个Epoch意味着训练数据集中的每个样本都有机会更新内部模型参数。Epoch由一个或多个Batch组成,具有一批的Epoch称为批量梯度下降学习算法,当一个完整的数据集通过神经网络一次并且返回了一次,这个过程称为一次epoch。然而当一个epoch对于计算机而言太过庞大的时候,需要将其拆分成多个小块;
epoch增加一次,神经网络的权重更新一次,随着epoch数量增加,曲线会从训练集合中的欠拟合变为过拟合。
batch-size的选择方式
全批次数据集数量较少的时候,选择全数据集,全数据集确定的方向能够更好的代表总体。准确的朝向训练集极值所在的方向收敛。但是对于过大的数据集,全链接会出现很多问题,内存消耗大;
迷你批次选择一个适合的batchsize,将会以batch的大小将数据输入深度学习的网络中,然后计算这个batch中所有样本的平均损失,即损失函数是这个batch的样本平均损失
**随机(如果一个batch为1)**每次修正方向以各自样本的梯度方向修正,横冲直撞难以达到收敛
适度增加Batch_size的优点:
1.提高了内存利用率,用时间换取空间;
2.单次epoch中模型迭代次数减少,提高了运行速度;
3.适当的增加Batch_size,梯度下降方向准确度增加,训练时振动幅度减少
4.如果batchsize过小,训练数据会非常难以收敛;增大batchsize处理的速度会加快,所需的内存容量增加(epoch的次数需要增加以达到最好的效果)
batchsize的正确选择是为了在内存效率和内存容量之间寻找最佳平衡
如何选择合适的epoch:
epoch代表了模型的训练轮次,通过学习曲线判断训练一定轮次后模型的泛化能力,是否欠拟合或学习不足,是否适合训练数据集和测试数据集;
iteration-迭代次数
batchsize个样本训练一次,即为1个迭代,通过反复的迭代,达到多次训练后所需要的模型目标和结果。
学习曲线:模型学习后的表现能力;
batchsize是否需要越大越好
batchsize如果设置的过大,会导致误差被平均的更厉害,导致模型的收敛会更快,但是泛化能力不足。