在利用损失函数(Loss Function)计算出模型的损失值之后,接下来需要利用损失值进行模型参数的优化。在实践操作最常用到的是一阶优化函数。包括GD,SGD,BGD,Adam等。一阶优化函数在优化过程中求解的是参数的一阶导数,这些一阶导数的值就是模型中参数的微调值。
1.梯度下降
梯度下降(Gradient Descent)是参数优化的基础方法。虽然已广泛应用,但是其自身存在许多不足,所以在其基础上改进的优化函数也非常多。
全局梯度下降的参数更新公式如下:
其中,训练样本总数为。
是我们优化的参数对象,
是学习速率,
是损失函数,后面的求导是根据损失函数来计算
的梯度。学习速率过快,参数的更新跨步就会变大,极易出现局部最优和抖动。学习率过慢,梯度更新的迭代次数就会增加,参数更新时间也会变长。
缺点:计算损失值的时间成本和模型训练过程中的复杂度增加。
2.批量梯度下降
假设划分出来的批量个数为m,其中的一个批量包含batch个数据样本,那么一个批量的梯度下降的参数更新公式如下:
缺点:容易导致优化函数的最终结果是局部最优解。
3.随机梯度下降:
假设我们随机选取的一部分数据集包含stochastic个数据样本,那么随机梯度下降的参数更新公式如下:
缺点:会在模型的参数优化过程中出现抖动的情况。
4.Adam
一个比较智能的优化函数方法--自适应时刻估计方法(Adaptive Moment Estimation)。它在模型训练优化的过程中通过让每个参数获得自适应的学习率,来达到优化质量和速度的双重提升。现在一般都选择用这个方法。
。。。。。。等等
参考: