一 损失函数介绍
损失函数用于描述模型预测值与真实值的差距大小。一般有有两种常见的算法——均值平方差(MSE)和交叉熵。下面来分别介绍每个算法的具体内容。
1 均值平方差
均值平方差(Mean Squared Error,MSE),也称“均方误差”,在神经网络中主要是表达预测值和真实值之间的差异,在数理统计中,均方误差是指参数估计值与参数真值之差平方的预期值,主要用于回归问题。
公式如下:主要是对每一个真实值与预期值相减的平方取平均值
均方误差的值越小,表明模型越好,拟合程度也越好,泛化性能也较好。
类似的损失算法还有均方根误差RMSE(将MSE开平方):
平均绝对值误差MAD(对一个真实值与预测值相减的绝对值取平均值)
2 交叉熵
交叉熵(crossentropy)也是loss算法的一种,一般用在分类问题上,表达意思为预测输入样本属于哪一类的概率。其表达式如下,其中y代表真实值分类(0或1)需要进行ont-hot表示,a代表预测值。
二分类情况下的公式:
交叉熵也是值越小,代表预测结果越准。多类别交叉熵和二分类类似,只是计算的公式变化了而已,稀疏类别交叉熵也和以上类似,只不过稀疏类别交叉熵不需要把标签y进行ont-hot表示,但是需要进行顺序表示,eg: y 取值为0 1 2 3 4 要从0开始进行标号。
3 损失算法的选取
损失函数的选取取决于输入标签数据的类型:
如果输入的实数、无界的值,损失函数使用平方差。
如果输入标签是位矢量(分类标志),使用交叉熵会更适合。
二 损失函数举例
下面是3个训练样本经过使用softmax作为激活函数的神经网络的输出(computed)、真实结果(targets)以及是否预测正确的对比表格。
下面是另外一个网络的训练结果
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