优化函数 (Optimization Function)

在利用损失函数(Loss Function)计算出模型的损失值之后,接下来需要利用损失值进行模型参数的优化。在实践操作最常用到的是一阶优化函数。包括GD,SGD,BGD,Adam等。一阶优化函数在优化过程中求解的是参数的一阶导数,这些一阶导数的值就是模型中参数的微调值。

1.梯度下降

梯度下降(Gradient Descent)是参数优化的基础方法。虽然已广泛应用,但是其自身存在许多不足,所以在其基础上改进的优化函数也非常多。

全局梯度下降的参数更新公式如下:

\theta_{j}=\theta_{j}-\eta \times \frac{\partial J\left(\theta_{j}\right)}{\partial \theta_{j}}

其中,训练样本总数为n,j=0....n\theta是我们优化的参数对象,\eta是学习速率,J(\theta )是损失函数,后面的求导是根据损失函数来计算\theta的梯度。学习速率过快,参数的更新跨步就会变大,极易出现局部最优和抖动。学习率过慢,梯度更新的迭代次数就会增加,参数更新时间也会变长。

缺点:计算损失值的时间成本和模型训练过程中的复杂度增加。

2.批量梯度下降

假设划分出来的批量个数为m,其中的一个批量包含batch个数据样本,那么一个批量的梯度下降的参数更新公式如下:

\theta_{j}=\theta_{j}-\eta \times \frac{\partial J_{b a c h}\left(\theta_{j}\right)}{\partial \theta_{j}}

缺点:容易导致优化函数的最终结果是局部最优解。

3.随机梯度下降:

假设我们随机选取的一部分数据集包含stochastic个数据样本,那么随机梯度下降的参数更新公式如下:

\theta_{j}=\theta_{j}-\eta \times \frac{\partial J_{\text {stochastic}}\left(\theta_{j}\right)}{\partial \theta_{j}}

缺点:会在模型的参数优化过程中出现抖动的情况。

4.Adam

一个比较智能的优化函数方法--自适应时刻估计方法(Adaptive Moment Estimation)。它在模型训练优化的过程中通过让每个参数获得自适应的学习率,来达到优化质量和速度的双重提升。现在一般都选择用这个方法。

。。。。。。等等

参考:

PyTorch学习之十种优化函数

深度学习各种优化函数详解

猜你喜欢

转载自blog.csdn.net/Frank_LJiang/article/details/104269899