损失函数
MSE
均方差(Mean squared error,MSE),是真实值与预测值的差值的平方然后求和平均。该指标计算的是拟合数据和原始数据对应样本点的误差的平方和的均值,其值越小说明拟合效果越好
RMSE
均方根误差。观测值与真值偏差的平方和与观测次数m比值的平方根。
假如有2000次观测,即N=2000,对于某一次(第i次)观测来说,y值是真实值,而f(x)是观测值,对所有N次观测的的偏差取平方后相加,得到的值再除以m,然后再开根号,就得到RMSE了。
MAE
平均绝对误差(Mean Absolute Error,MAE),观测值与真实值的误差绝对值的平均值。用于评估预测结果和真实数据集的接近程度的程度,其值越小说明拟合效果越好
MAPE平均绝对百分误差
MAE和MSE的区别
参考资料:https://blog.csdn.net/qq_42189083/article/details/105811405
关于异常值
MAE和RMSE(即MSE的平方根,同MAE在同一量级中)的两个指标是用来描述预测值与真实值的误差情况。它们之间在的区别在于,RMSE先对偏差做了一次平方,这样,如果误差的离散度高,也就是说,如果最大偏差值大的话,RMSE就放大了。比如真实值是0,对于3次测量值分别是8,3,1,那么
如果3次测量值分别是5,4,3,那么
可以看出,两种情况下MAE相同,但是因为前一种情况下有更大的偏离值,所以RMSE就大的多了。
MSE对误差取了平方(令e=真实值-预测值),因此若e>1,则MSE会进一步增大误差。如果数据中存在异常点,那么e值就会很大,而 \(e^2\) 则会远大于|e|。因此,相对于使用MAE计算损失,使用MSE的模型会赋予异常点更大的权重。在第一个例子中,用RMSE计算损失的模型会以牺牲了其他样本的误差为代价,朝着减小异常点误差的方向更新。然而这就会降低模型的整体性能。如果训练数据被异常点所污染,那么MAE损失就更好用(比如,在训练数据中存在大量错误的反例和正例标记,但是在测试集中没有这个问题)
MSE与MAE如何选择
如果异常点代表在商业中很重要的异常情况,并且需要被检测出来,则应选用MSE损失函数。相反,如果只把异常值当作受损数据,则应选用MAE损失函数。总的来说,处理异常点时,MAE损失函数更稳定,但它的导数不连续,因此求解效率较低。MSE损失函数对异常点更敏感,但通过令其导数为0,可以得到更稳定的封闭解。
关于梯度
MAE存在一个严重的问题(特别是对于神经网络):更新的梯度始终相同,也就是说,即使对于很小的损失值,梯度也很大。这样不利于模型的学习。为了解决这个缺陷,我们可以使用变化的学习率,在损失接近最小值时降低学习率。而MSE在这种情况下的表现就很好,即便使用固定的学习率也可以有效收敛。MSE损失的梯度随损失增大而增大,而损失趋于0时则会减小。这使得在训练结束时,使用MSE模型的结果会更精确。
交叉熵损失函数「Cross Entropy Loss」
参考资料:
交叉熵刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近,即拟合的更好。
交叉熵计算公式
式中 \(x\) 为一个离散随机变量, \(p(x_j)\) 表示第 \(j\) 类的概率。
假设同一随机变量 \(X\) ,我们有两个单独的概率分布 \(P(x)\) 和 \(Q(x)\) ,那KL散度是用以描述这两个分布之间的差异。计算公式:
交叉熵和KL散度的关系:
当分布 \(P\) 是已知的,则熵是常量,此时最小化交叉熵等价于最小化KL散度。
最大似然估计
我们这里先说最大似然估计的计算步骤:
(1)写出似然函数;
(2)对似然函数取对数,并整理;
(3)求导数;
(4)解似然方程。
似然函数:
当我们在计算一个batch的最大似然时有
实际上在使用最大似然估计时常取负数,通过上面的式子我们就可以看出,这样我们就发现最大似然和最小化交叉熵是等价的。(因为有一个负号,最小化交叉熵就是最大化似然,模型训练得到的效果是一样的)。
本文来自博客园,作者:Un-Defined,转载请保留本文署名Un-Defined,并在文章顶部注明原文链接:https://www.cnblogs.com/EIPsilly/p/18423027