神经网络中的 Epochs, Batchsize, Iterations 具体是什么

 

 

在看神经网络相关的论文时,老是能看到Epochs, Batchsize, Iterations 这些字眼,要弄明白这些专业术语,不得不先讲下梯度降低的概念。算法

梯度降低网络

梯度降低法是机器学习中经典的优化算法之一,用来求解复杂曲线的最小值。“梯度”是指某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。“降低”是指降低递减的过程。机器学习

梯度降低法是屡次迭代求解的,梯度降低的迭代质量有助于使模型尽量拟合训练数据。函数

梯度降低中有一个叫作学习率的参数,如上图左所示,在迭代开始时,步长越大,学习率就越高。随着点的降低,步长变短,即学习率变小。此外,偏差函数也在不断减少。性能

咱们在训练模型时,若是训练数据过多,没法一次性将全部图像数据输入网络,为了解决这个问题,咱们会将数据分红几个部分进行分批训练,即batch,使得每一个批次的数据量是能够负载的。将这些batch的数据逐一输入到网络中,更新神经网络的参数,使得网络收敛。学习

Epoch优化

一个Epoch指的是将全部的数据输入网络完成一次向前计算及反向传播。因为完成一个epoch训练的周期较长(数据量大),一次性输入全部数据计算机没法负荷,因此将其分红多个batches。那么为何还须要训练多个epochs呢?咱们知道,训练网络时,仅仅将全部数据迭代训练一次是不够的,须要反复训练屡次才能使网络收敛。在实际训练时,将全部数据分红多个batches,每次输入一个batch大小的数据进行训练,梯度降低自己就是一个迭代过程,因此通过单个epoch更新权重是不够的。spa

下图展现了通过不一样的epoch训练的到的结果。blog

 

可见,随着epoch的增长,神经网络中权重更新迭代的次数增长,曲线从开始的欠拟合,慢慢进入最佳拟合,epoch继续增长,最后过拟合。内存

所以,epoch的个数是很是重要的,究竟设置多少才合适呢?恐怕没有一个确切的答案。对于不一样的数据集来讲,最佳的epoch是不一样的。可是,epoch的大小和数据集的多样化程度有关,多样化程度越强,epoch也应该越大。

Batchsize

Batch是每次输入网络进行训练的批次,而batchsize是每一个batch中训练样本的数量。注意batch size 和 batch numbers 是不一样的。

batchsize大小的选择也是很是重要的,为了在内存容量和内存效率之间取得最佳平衡,batchsize 应该用心设置,从而最优化网络模型的性能和速度。

下图为不一样的batchsize 获得的训练结果。其中蓝色为全部数据一块儿输入进行训练,也就是只有一个batch,batch内包含全部训练样本;绿色为minibatch,即将全部数据分红若干个batches,每一个batch内包含一小部分训练样本;红色为随机训练,即每一个batch内只有一个样本。

 

从上图看到,蓝色全数据效果更好,当数据量较小,计算机内存能够负载的时候,能够采用这种训练方式;绿色的mini分批次训练精度略有损失;而红色的随机训练,难以达到收敛状态。

Iterations

所谓iterations就是完成一次epoch所需的batch个数。batch numbers就是iterations。

举个例子来讲,咱们有12800个训练样本,分红100个batches,那么batchsize就是128。将全部的数据输入网络,训练完成一个epoch,须要通过100次iterations。

相关文章
相关标签/搜索