损失函数,一般由两项组成,一项是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)

输入:

预测的值:  y^∈[−∞,+∞] , 其中,它们的形状为: N×C×H×W

标签的值:  y∈[−∞,+∞] , 其中,它们的形状为: N×C×H×W

输出:

损失的值: Loss=12N∑Nn=1∥y^n−yn∥22

适合场景:

回归,特别是其回归的值是实数值得时候。

对比损失函数(Contrastive loss)

输入:

形状: (N×C×1×1)  特征  a∈[−∞,+∞]

形状: (N×C×1×1)  特征  b∈[−∞,+∞]

形状: (N×1×1×1)  相似性  y∈[0,1]

输出:

形状: (1×1×1×1)

对比损失函数为:  E=12N∑n=1N(y)d+(1−y)max(margin−d,0)

其中  d=||an−bn||22 .

适合场景:

可以用来训练Siamese网络

铰链损失函数(Hinge Loss)

输入:

形状: (N×C×H×W)  预测值  t∈[−∞,+∞]  代表着预测  K=CHW  个类中的得分(注:CHW表示着在网络设计中,不一定要把预测值进行向量化,只有其拉直后元素的个数相同即可。) . 在SVM中,  t  是 D 维特征 X∈RD×N , 和学习到的超平面参数 W∈RD×K  内积的结果  XTW  
所以,一个网络如果仅仅只有全连接层 + 铰链损失函数,而没有其它的可学习的参数,那么它就等价于SVM

标签值:

(N×1×1×1)  标签  l , 是一个整数类型的数  ln∈[0,1,2,...,K−1]  其代表在  K  个类中的正确的标签。

输出:

形状: (1×1×1×1)  
损失函数计算:  E=1N∑n=1N∑k=1K[max(0,1−δ{ln=k}tnk)]p ,  Lp  范数 (默认是  p=1 , 是 L1 范数; L2 范数,正如在 L2-SVM中一样,也有实现),

其中  δ{条件}={1−1成立不成立

应用场景:

在一对多的分类中应用,类似于SVM.

信息增益损失函数(InformationGain Loss)

输入:

  1. 形状: (N×C×H×W)  预测值  p^∈[0,1]  内, 表示这预测每一类的概率,共  K=CHW  个类, 每一个预测 概率 p^n  的和为1:  ∀n∑k=1Kp^nk=1 .

  2. 形状: (N×1×1×1)  标签值:  l , 是一个整数值,其范围是  ln∈[0,1,2,...,K−1]  表示着在  K  个类中的索引。

  3. 形状: (1×1×K×K)  (可选) 信息增益矩阵  H .作为第三个输入参数,. 如果  H=I , 则它等价于多项式逻辑损失函数

输出:

形状: (1×1×1×1)

计算公式:  E=−1N∑n=1NHlnlog(p^n)=−1N∑n=1N∑k=1KHln,klog(p^n,k) , 其中  Hln  表示 行  ln  of  H .

多项式逻辑损失函数(Multinomial Logistic Loss)

输入:

形状: (N×C×H×W)  预测值  p^∈[0,1] 范围中, 表示这预测的每一类的概率,共  K=CHW  个类. 每一个预测概率 p^n  的和为1:  ∀n∑k=1Kp^nk=1 .

形状: (N×1×1×1)  标签  l , 是一个整数值,其范围是  ln∈[0,1,2,...,K−1]  表示着在  K  个类中的索引。

输出:

形状: (1×1×1×1)  计算公式:  E=−1N∑n=1Nlog(p^n,ln)

应用场景:

在一对多的分类任务中使用,直接把预测的概率分布作为输入.

Sigmoid 交叉熵损失函数(Sigmoid Cross Entropy Loss)

输入:

  1. 形状:  (N×C×H×W)  得分  x∈[−∞,+∞] , 这个层使用 sigmoid 函数  σ(.)  映射到概率分布  p^n=σ(xn)∈[0,1]

  2. 形状: (N×C×H×W)  标签  y∈[0,1]

输出:

  1. 形状: (1×1×1×1)  计算公式:  E=−1n∑n=1N[pnlogp^n+(1−pn)log(1−p^n)]

应用场景: 
预测目标概率分布

Softmax+损失函数(Softmax With Loss)

输入:

  1. 形状: (N×C×H×W)  预测值  x∈[−∞,+∞]  代表预测每个类的得分。 共  K=CHW  类. 这一层把得分通过softmax映射到概率分布 p^nk=exp(xnk)/[∑k′exp(xnk′)]

  2. 形状: (N×1×1×1)  标签值 是一个整数值,其范围是  ln∈[0,1,2,...,K−1]  表示着在  K  个类中的索引。

输出:

  1. 形状: (1×1×1×1)  计算公式:  E=−1N∑n=1Nlog(p^n,ln) , 其中  p^  为softmax输出的类概率。

应用场景:

在一对多分类中应用。

caffe 损失函数相关推荐

  1. cnn汇总(1)(2)

    卷积神经网络 one-stage two-stage目标检测总结 2d目标检测网络各种结构代码 Deep Learning (Computer Architecture) 计算框架 caffe pyt ...

  2. Caffe中的损失函数解析

    Caffe中的损失函数解析 导言 在有监督的机器学习中,需要有标签数据,与此同时,也需要有对应的损失函数(Loss Function). 在Caffe中,目前已经实现了一些损失函数,包括最常见的L2损 ...

  3. caffe 中的损失函数分析

    目前大部分机器学习算法都是基于统计学, 统计学习方法的三要素:模型策略和算法. 基本步骤: 1 得到有限的训练数据集合 2 确定包含所有可能的模型假设空间,即学习模型的集合 3 确定模型选择的准则,其 ...

  4. Caffe中的损失函数

    文章从自己的QQ(632846506)2年前的日志中移过来的.https://user.qzone.qq.com/632846506/infocenter. 机器学习的目的就是通过对训练样本输出与真实 ...

  5. caffe详解之损失函数

    从零开始,一步一步学习caffe的使用,期间贯穿深度学习和调参的相关知识! [转]Caffe中的损失函数解析 导言 在有监督的机器学习中,需要有标签数据,与此同时,也需要有对应的损失函数(Loss F ...

  6. Caffe学习笔记(二):Caffe前传与反传、损失函数、调优

    Caffe学习笔记(二):Caffe前传与反传.损失函数.调优 在caffe框架中,前传/反传(forward and backward)是一个网络中最重要的计算过程:损失函数(loss)是学习的驱动 ...

  7. Caffe源码中Net文件分析

    Caffe源码(caffe version commit: 09868ac , date: 2015.08.15)中有一些重要的头文件,这里介绍下include/caffe/net.hpp文件的内容: ...

  8. Caffe源码中layer文件分析

    Caffe源码(caffe version commit: 09868ac , date: 2015.08.15)中有一些重要的头文件,这里介绍下include/caffe/layer.hpp文件的内 ...

  9. Caffe 关于 LetNet-5 之 lenet_train_test.prototxt 解析

    前面我们深入分析了 lenet.prototxt 这个网络参数描述文件,但是这是对广义 LetNet-5 网络进行描述的. 在实际训练和测试中,LetNet-5 网络 稍有不同,那么针对 训练和测试, ...

最新文章

  1. ZOJ 1292 Integer Inquiry
  2. React Native --网络请求(fetch)
  3. CentOS 网络设置修改
  4. java小游戏毕业论文,你不懂还不学?
  5. 内连级元素有哪些_行内元素和块级元素都有哪些
  6. zabbix-设置邮箱预警
  7. 成都-地点-文创-宽窄巷子:宽窄巷子
  8. 基于MATLAB的特殊函数与画图(附图像与代码)
  9. 社交电商 社群电商 源码下载
  10. cad图纸问号怎么转换文字_CAD中文图纸中文字体变成问号怎么办?不慌这几步教你轻松解决...
  11. HDLBits刷题Day6
  12. 20-Netty TCP 粘包和拆包及解决方案
  13. 计算机科学与工程学院团委,湖南科技大学计算机科学与工程学院
  14. Python爬虫入门(一)(适合初学者)
  15. 点击按钮变色,松开按钮恢复原来的颜色
  16. 最火爆的人工智能学习基础课程(2021人工智能视觉训练营)
  17. 百度霸屏什么意思?如何实现百度霸屏!
  18. java添加员工代码_利用java代码,编写JDBC连接数据库新增员工信息的步骤. 员工信息表:t_emp(id int?...
  19. 自考笔记-创业学01(小白编写)
  20. Flash使用代码大全

热门文章

  1. 利用Vlookup函数在Excel中根据一列来筛选信息
  2. 深度学习+语音,基础普及篇笔记(一)
  3. java的23种设计模式法则(权威版)
  4. su su- sudo
  5. 余承东:华为技术走在产业前列,别人想超越很难;理想销量夺冠后,员工不满年终奖打折;黑客窃取GitHub代码签名证书|极客头条
  6. 淘宝网热浪引擎平台资费规则
  7. python出行轨迹记录软件_看看过去跑过哪些地方,用Python和高德API绘制跑步轨迹...
  8. tosmana使用教程_20款最流行的免费定性数据分析工具
  9. C++基础知识(上)
  10. 读文万卷036期:警戒状态下自发性眼睑闭合与功能磁共振成像动态连接的联系;自闭症患者的胼胝体扩散峰度成像