梯度下降法
所谓“梯度”,即一条曲线的坡度或倾斜率,“下降”指代下降递减的过程。
通过图片我们来理解,
红色的曲线就是我们神经网络的cost曲线,我们就是为了找到这条曲线的最低点,以使得网络的cost最小。黑色的点就是我们每次迭代计算出来的cost值,为了使得cost接近最小,我们需要有一个梯度值,让每次计算出来的cost逐渐接近最小,这个梯度值就是我们所说的梯度。
为什么叫做梯度下降,因为一开始的时候计算出来的cost值距离最小值最远,慢慢的计算出来的cost越来越接近最小值,所以需要逐渐降低梯度的大小,逐渐逼近最小的梯度值。
epoch
一个epoch指代所有的数据送入网络中完成一次前向计算以及反向传播的过程。但是如果一次性将所有的数据都同时进行处理,电脑的负载就会变大,所以会通过设置batch_size的方法来一次性处理小批量的图片。当将所有的图片都经过一次网络后,就完成了一次epoch。
在训练中,只经过一次所有数据的训练是不够的,要反复多次才能拟合数据。
下图为使用不同个数epoch训练的结果
可见,随着epoch数量的增加,神经网络中权重更新迭代的次数增多,曲线从最开始的不拟合状态,慢慢进入优化拟合状态,最终进入过拟合状态。
batch_size
batch_size的意思已经在上文中讲过,batch_size的设置也非常重要,下图为不同的batch_size带来的结果,其中,蓝色为所有数据一并送入训练;绿色为minibatch,即将所有数据分成若干个batch,每个batch内包含一小部分训练样本。红色为随机训练,即每个batch内只有1个训练样本。
上图可见,蓝色全数据效果更好,当数据量较小,计算机可以承载的时候可以采取这种训练方式。绿色的mini分批次训练精度略有损失,而红色的随机训练,难以达到收敛状态。
lterations
就是以batch_size为大小的批处理个数,完成一次epoch需要进行训练的次数
即lterations=图片总数/batch_size