神经网络中常用的损失函数

损失函数(Loss Function),又称为代价函数(Cost Function),是神经网络设计中的一个重要部分。损失函数用来表征模型的预测值与真实类标之间的误差,深度学习模型的训练就是使用基于梯度的方法使损失函数最小化的过程。

均方误差损失函数

均方误差(Mean Squared Error,MSE)损失函数用预测值和实际值之间的距离(即误差,为了保证一致性,通常使用距离的平方)来衡量模型的好坏。在深度学习算法中,我们使用基于梯度的方式来训练参数,每次将一个批次的数据输入模型中,并得到这批数据的预测结果,再利用这一预测结果和实际值之间的距离更新网络的参数。

均方误差损失函数将这一批数据的误差的期望作为最终的误差值,均方误差的公式如下:
均方误差的公式
上式中 yk 为样本数据的实际值,为模型的预测值。

为了简化计算,我们一般会在均方误差的基础上乘以 1/2(与求导后多出的“乘以 2”相抵消),作为最终的损失函数:
损失函数

交叉熵损失函数

交叉熵(Cross Entropy)损失函数使用训练数据的真实类标与模型预测值之间的交叉熵作为损失函数,相较于均方误差损失函数更受欢迎。假设使用均方误差这类二次函数作为代价函数更新神经网络参数,误差项中则会包含激活函数的偏导。在前面已经介绍过,Logistic 等激活函数很容易饱和,使得参数的更新缓慢,甚至无法更新。

交叉熵损失函数求导不会引入激活函数的导数,因此可以很好地避免这一问题,交叉熵的定义如下:
交叉熵的定义
上式中 p(x) 为样本数据的真实分布,q(x) 为模型预测结果的分布。

以二分类问题为例,交叉熵损失函数的形式如下:
交叉熵损失函数
上式中 y 为真实值,为预测值。对于多分类问题,我们对每一个类别的预测结果计算交叉熵后求和即可。