损失函数和优化函数

损失函数和优化函数的重要性:

深度神经网络中的的损失用来度量我们的模型得到的的预测值和数据真实值之间差距,也是一个用来衡量我们训练出来的模型泛化能力好坏的重要指标。

对模型进行优化的最终目的是尽可能地在不过拟合的情况下降低损失值。

损失函数:

1.均方误差函数

均方误差(Mean Square Error)函数计算的是预测值与真实值之差的期望值,可用于评价数据的变化程度,其得到的值越小,则说明模型的预测值具有越好的精确度。计算如下:

《损失函数和优化函数》

其中,ypred表示模型的预测值,ytrue表示真实值,他们的上标i用于指明是那个真实值和预测值在进行损失计算,下同。

2.均方根误差函数

均方根误差(Root Mean Square Error),计算的是均方误差的算术平方根值,其得到的值越小,则说明模型的预测值具有越好的精确度。计算如下:

《损失函数和优化函数》

3.平均绝对误差函数

平均绝对误差(Mean Absolute Error)计算的是绝对误差的平均值,能更好的反映预测值误差的实际情况,其得到的值越小,则说明模型的预测值具有越好的精确度。计算如下:

《损失函数和优化函数》

优化函数:

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

梯度的概念:可以参考此博主的博客https://blog.csdn.net/youhuakongzhi/article/details/80565176

1.梯度下降

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

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

《损失函数和优化函数》

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

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

2.批量梯度下降

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

《损失函数和优化函数》

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

3.随机梯度下降:

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

《损失函数和优化函数》

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

4.Adam

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

    原文作者:几里路遥
    原文地址: https://blog.csdn.net/qjt19950610/article/details/93119757
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞