一 损失函数介绍

损失函数用于描述模型预测值与真实值的差距大小。一般有有两种常见的算法——均值平方差(MSE)和交叉熵。下面来分别介绍每个算法的具体内容。

1 均值平方差

均值平方差(Mean Squared Error,MSE),也称“均方误差”,在神经网络中主要是表达预测值和真实值之间的差异,在数理统计中,均方误差是指参数估计值与参数真值之差平方的预期值,主要用于回归问题。

公式如下:主要是对每一个真实值与预期值相减的平方取平均值

BP神经网络的均方根误差是损失曲线吗 神经网络均方误差公式_MSE

均方误差的值越小,表明模型越好,拟合程度也越好,泛化性能也较好。

类似的损失算法还有均方根误差RMSE(将MSE开平方):

BP神经网络的均方根误差是损失曲线吗 神经网络均方误差公式_深度学习_02

平均绝对值误差MAD(对一个真实值与预测值相减的绝对值取平均值)

BP神经网络的均方根误差是损失曲线吗 神经网络均方误差公式_机器学习_03

2 交叉熵

交叉熵(crossentropy)也是loss算法的一种,一般用在分类问题上,表达意思为预测输入样本属于哪一类的概率。其表达式如下,其中y代表真实值分类(0或1)需要进行ont-hot表示,a代表预测值。

二分类情况下的公式:

BP神经网络的均方根误差是损失曲线吗 神经网络均方误差公式_深度学习_04

交叉熵也是值越小,代表预测结果越准。多类别交叉熵和二分类类似,只是计算的公式变化了而已,稀疏类别交叉熵也和以上类似,只不过稀疏类别交叉熵不需要把标签y进行ont-hot表示,但是需要进行顺序表示,eg: y 取值为0 1 2 3 4   要从0开始进行标号。

3 损失算法的选取

损失函数的选取取决于输入标签数据的类型:

如果输入的实数、无界的值,损失函数使用平方差。

如果输入标签是位矢量(分类标志),使用交叉熵会更适合。

二 损失函数举例

下面是3个训练样本经过使用softmax作为激活函数的神经网络的输出(computed)、真实结果(targets)以及是否预测正确的对比表格。

BP神经网络的均方根误差是损失曲线吗 神经网络均方误差公式_深度学习_05

下面是另外一个网络的训练结果

BP神经网络的均方根误差是损失曲线吗 神经网络均方误差公式_机器学习_06

1 交叉熵计算(三分类交叉熵)

第一个样本的交叉熵为:

−(0∗ln0.3+0∗ln0.3+1∗ln0.4)=−ln0.4

对于神经网络来说,交叉熵的计算有点古怪,因为只有一项会被保留下来。因此三个样本的平均交叉熵为:

−(ln0.4+ln0.4+ln0.1)/3=1.38

第二个网络的平均交叉熵为:

−(ln0.7+ln0.7+ln0.3)/3=0.64

2 均方误差(Root Mean Square Error, RMSE)

第一个网络:0.81

第二个网络:0.34