损失函数
当在训练神经网络模型的时候,特别是一些线性分类器,往往需要定义一个损失函数 L(yˆ,y) ,函数用来表征模型的预测 yˆ 与真实的输出 y 之间的损失,而模型的训练就是要通过样本将损失函数最小化。可以说损失函数就是一个评分函数,用以对模型预测准确性进行打分,所以损失函数没有负值,当函数值为0时,说明模型预测与真实值完全相符。
原则上是可以使用任意的函数用来映射这种评分函数,但是在实际优化过程中,更倾向于损失函数易于求梯度,这对模型的优化具有重要作用。
Hinge Loss
Hinge Loss损失函数,也被称为“最大距离损失”函数,之所以称为距离损失,因为其优化的目的可以认为是将距离最大化,这个思想在SVM优化中得到应用。
Hinge Loss二分类:对于二分类问题,神经网络模型往往输出一个变量
损失函数的数学表达式:
可以想象,当分类器输出正确且 |yˆ|≥1 时,损失函数为0,否则,函数值线性增大。换句话说,该损失函数的优化是为了获得一个正确的分类器,通过使距离至少为1。
此处注意: yˆ 作为预测输出,其值得大小并不固定,如 yˆ=x⋅w+b ,而 y 作为正确值却又固定值域{-1,+1}。
Hinge Loss多分类:对于多分类问题,
假设用 t=argmaxiy 表示正确的类别,此外 k=argmaxi≠tyˆ ,获取输出中除正确分类下标后最高得分项,且 k≠t 。 那么多分类问题的hinge loss为:
该损失函数最小化,就是要让正确分类下标项尽可能的大,而其他的项尽可能的小。其距离也是如上所述,最小为1。
Cross-entropy Loss
第三种损失函数——交叉熵损失函数
交叉熵损失函数二分类:对于二分类问题,以逻辑回归模型为例。
上式求和,前半部分代表分类概率偏向1,后一个偏向0,每次 i 取值只有一个式子有值,另一个为0,即对应分类的0,1。
交叉熵损失函数多分类问题:对于多分类问题,交叉熵以概率的方式进行解释。
另
对于交叉熵的含义可以参看 如何通俗的解释交叉熵与相对熵
对于hard分类问题,即每个样本都有一个确定的类别固定,如手写体识别问题,每张图,其有一个确定的类别,其余类别都为0。那么交叉熵损失函数可以简化为:
其中 t 代表正确的类别下标,此公式的含义可以理解为对于
举个例子来说明: 以手写体识别为例
假设有10个样本, (x1,y1),...,(x10,y10) ,定义y=[0123456789],10个样本对应的正确分类,则:
损失函数就对应了简化的交叉熵损失函数:
其中D代表样本空间。
Ranking losses
在某型领域,我们并没有给定的监督样本,即没有样本的对应标签,毕竟监督数据是昂贵的,此时拥有的是正确样本
x
和不正确样本
其中 NN(x) 是对于输入向量 x ,经过神经网络模型后产生的得分。公式的含义同Hing(multiclass)。
该损失函数的另一个变种,使用
这种损失函数的训练方法在词向量Word Embedding训练过程中得到充分的应用,Mikolov在其论文【1】中提出Negative Sampling模型中应用,并附上该模型讲解分析博客【2】,感谢博主深入的分析,让我受益匪浅。
Squared loss
在线性回归和线性分类器中,经常用到Squared loss(平方误差),即将模型输出
y′
与真实
y
相比较得出误差。
损失函数讲义
查看链接【3】
参考:
1. Sridhar V K R. Unsupervised Text Normalization Using Distributed Representations of Words and Phrases[C]// The Workshop on Vector Space Modeling for Natural Language Processing. 2015:8-16.
2. http://blog.csdn.net/itplus/article/details/37998797
3. 一份不错的损失函数讲义
4. 手写识别案例
5. 如何通俗的解释交叉熵与相对熵