先介绍一下梯度下降:梯度下降是一种用于机器学习训练参数的一种优化方法。对损失函数进行梯度下降,“梯度”指误差梯度或误差斜率,“下降“指沿着误差斜率移动到误差较小的水平。经过多次迭代,对参数的调节,使预测值与实际值到误差较低的水平。
深度学习中更新参数有三种方法:
1、批梯度下降BGD(batch gradient decent):遍历全部数据集算一次损失函数,计算函数对各个参数的梯度,更新梯度。
缺点:这种方法每更新一次参数都需要对全部样本计算一遍,开销大,不支持在线学习。针对凸函数可以达到全局最优,非凸函数会进入局部最优
2、随机梯度下降SGD(stochastic gradient decent):每计算一个数据就算一次损失函数,求梯度更新参数。方法速度快,但是收敛性能不好,会导致结果在最优点附近晃动。
缺点:SGD较BGD有更多的噪音(朝向单个样本的方向收敛),可能不是朝着全局最优的方向,虽然训练速度快,但是准确度下降。包含了随机性,但是从期望上看,等于正确的梯度。因为更新频繁,损失函数存在震荡现象。
3、小批梯度下降MBGD(mini-batch gradient decent):是这两个方法的折中手段,把数据集分为多个小批,按批来更新参数。一个批内的数据共同决定梯度的方向,减少了随机性。又比批梯度下降计算量少。
对于SGD/MBGD,每次使用的损失函数只是通过这一个小批量的数据确定的,其函数图像与全数据集的损失函数有所不同,所以其求解的梯度也含有一定的随机性,在鞍点或者局部最小值点的时候,震荡跳动,因为在此点处,如果是训练集全集带入即BGD,则优化会停止不动,如果是mini-batch或者SGD,每次找到的梯度都是不同的,就会发生震荡,来回跳动。
Batchsize,iteration,epoch
超参数:在机器学习中,在学习过程前设置的参数,不是训练获得的参数。
Batchsize:批的大小,超参数。一般采用SGD训练,指的是每次训练时从训练集中拿出batchsize个数据进行训练。
Iteration:以批的规模进行了几次训练,超参数。
Epoch:整个数据集总共训练了几次,超参数。
例:训练集有500个,超参数batchsize记为10,训练1次整个数据集需要iteration=50,称为完成了一次epoch。