Caffe中的损失函数
转载自:http://m.blog.****.net/ZhikangFu/article/details/46458375
损失函数,一般由两项组成,一项是loss term,另外一项是regularization term。
J=L+R
先说损失项loss,再说regularization项。
1. 分对得分1,分错得分0.gold standard
2. hinge loss(for softmargin svm),J=1/2||w||^2 + sum(max(0,1-yf(w,x)))
3. log los, cross entropy loss function in logistic regression model.J=lamda||w||^2+sum(log(1+e(-yf(wx))))
4. squared loss, in linear regression. loss=(y-f(w,x))^2
5. exponential loss in boosting. J=lambda*R+exp(-yf(w,x))
再说regularization项,
一般用的多的是R2=1/2||w||^2,R1=sum(|w|)。R1和R2是凸的,同时R1会使得损失函数更加具有sparse,而R2则会更加光滑些。具体可以参见下图:
caffe的损失函数,目前已经囊括了所有可以用的了吧,损失函数由最后一层分类器决定,同时有时会加入regularization,在BP过程中,使得误差传递得以良好运行。
contrastive_loss,对应contrastive_loss_layer,我看了看代码,这个应该是输入是一对用来做验证的数据,比如两张人脸图,可能是同一个人的(正样本),也可能是不同个人(负样本)。在caffe的examples中,siamese这个例子中,用的损失函数是该类型的。该损失函数具体数学表达形式可以参考lecun的文章Dimensionality Reduction by Learning an Invariant Mapping, Raia Hadsell, Sumit Chopra, Yann LeCun, cvpr 2006.
euclidean_loss,对应euclidean_loss_layer,该损失函数就是l=(y-f(wx))^2,是线性回归常用的损失函数。
hinge_loss,对应hinge_loss_layer,该损失函数就是。主要用在SVM分类器中。
infogain_loss,对应infogain_loss_layer,损失函数表达式没找到,只知道这是在文本处理中用到的损失函数。
multinomial_logistic_loss,对应multinomial_logistic_loss_layer,
sigmoid_cross_entropy,对应sigmoid_cross_entropy_loss_layer,也就是logistic regression使用的损失函数。
softmax_loss,对应softmax_loss_layer,损失函数等可以见UFLDL中关于softmax章节。在caffe中多类分类问题,损失函数就是softmax_loss,比如imagenet, mnist等。softmax_loss是sigmoid的多类问题。但是,我就没明白,multinomial_logistic_loss和这个有什么区别,看代码,输入有点差别,softmax的输入是probability,而multinomial好像不要求是probability,但是还是没明白,如果只是这样,岂不是一样啊?
这里详细说明了两者之间的差异,并且有详细的测试结果,非常赞。简单理解,multinomial 是将loss分成两个层进行,而softmax则是合在一起了。或者说,multinomial loss是按部就班的计算反向梯度,而softmax则是把两个步骤直接合并为一个步骤进行了,减少了中间的精度损失等 ,从计算稳定性讲,softmax更好,multinomial是标准做法,softmax则是一种优化吧。
转自caffe:
Softmax
-
LayerType:
SOFTMAX_LOSS
The softmax loss layer computes the multinomial logistic loss of the softmax of its inputs. It’s conceptually identical to a softmax layer followed by a multinomial logistic loss layer, but provides a more numerically stable gradient.
references:
http://www.ics.uci.edu/~dramanan/teaching/ics273a_winter08/lectures/lecture14.pdf
http://caffe.berkeleyvision.org/tutorial/layers.html
Bishop, pattern recognition and machine learning
http://deeplearning.stanford.edu/wiki/index.php/Softmax%E5%9B%9E%E5%BD%92
http://freemind.pluskid.org/machine-learning/softmax-vs-softmax-loss-numerical-stability/
Caffe中的损失函数解析
导言
在有监督的机器学习中,需要有标签数据,与此同时,也需要有对应的损失函数(Loss Function)。
在Caffe中,目前已经实现了一些损失函数,包括最常见的L2损失函数,对比损失函数,信息增益损失函数等等。在这里做一个笔记,归纳总结Caffe中用到的不同的损失函数,以及分析它们各自适合的使用场景。
欧式距离损失函数(Euclidean Loss)
输入:
预测的值: , 其中,它们的形状为:
标签的值: , 其中,它们的形状为:
输出:
损失的值:
适合场景:
回归,特别是其回归的值是实数值得时候。
对比损失函数(Contrastive loss)
输入:
形状: 特征
形状: 特征
形状: 相似性
输出:
形状:
对比损失函数为:
其中 .
适合场景:
可以用来训练Siamese网络
铰链损失函数(Hinge Loss)
输入:
形状: 预测值 代表着预测 个类中的得分(注:CHW表示着在网络设计中,不一定要把预测值进行向量化,只有其拉直后元素的个数相同即可。)
. 在SVM中, 是
D 维特征,
和学习到的超平面参数 内积的结果
所以,一个网络如果仅仅只有全连接层 + 铰链损失函数,而没有其它的可学习的参数,那么它就等价于SVM
标签值:
标签 , 是一个整数类型的数 其代表在 个类中的正确的标签。
输出:
形状:
损失函数计算: , 范数
(默认是 ,
是 L1 范数; L2 范数,正如在 L2-SVM中一样,也有实现),
其中
应用场景:
在一对多的分类中应用,类似于SVM.
信息增益损失函数(InformationGain Loss)
输入:
-
形状: 预测值 内, 表示这预测每一类的概率,共 个类, 每一个预测 概率 的和为1: .
-
形状: 标签值: , 是一个整数值,其范围是 表示着在 个类中的索引。
-
形状: (可选) 信息增益矩阵 .作为第三个输入参数,. 如果 , 则它等价于多项式逻辑损失函数
输出:
形状:
计算公式: , 其中 表示 行 of .
多项式逻辑损失函数(Multinomial Logistic Loss)
输入:
形状: 预测值 范围中, 表示这预测的每一类的概率,共 个类. 每一个预测概率 的和为1: .
形状: 标签 , 是一个整数值,其范围是 表示着在 个类中的索引。
输出:
形状: 计算公式:
应用场景:
在一对多的分类任务中使用,直接把预测的概率分布作为输入.
Sigmoid 交叉熵损失函数(Sigmoid Cross Entropy Loss)
输入:
-
形状: 得分 , 这个层使用 sigmoid 函数 映射到概率分布
-
形状: 标签
输出:
- 形状: 计算公式:
应用场景:
预测目标概率分布
Softmax+损失函数(Softmax With Loss)
输入:
-
形状: 预测值 代表预测每个类的得分。 共 类. 这一层把得分通过softmax映射到概率分布
-
形状: 标签值 是一个整数值,其范围是 表示着在 个类中的索引。
输出:
- 形状: 计算公式: , 其中 为softmax输出的类概率。
应用场景:
在一对多分类中应用。