损失函数 hinge loss vs softmax loss

1. 损失函数

损失函数(Loss function)是用来估量你模型的预测值 f(x) 与真实值 Y 的不一致程度,它是一个非负实值函数,通常用 L(Y,f(x)) 来表示。

损失函数越小,模型的鲁棒性就越好。

损失函数是经验风险函数的核心部分,也是结构风险函数的重要组成部分。模型的风险结构包括了风险项和正则项,通常如下所示:

其中,前面的均值函数表示的是经验风险函数,L代表的是损失函数,后面的 Φ 是正则化项(regularizer)或者叫惩罚项(penalty term),

它可以是L1,也可以是L2,或者其他的正则函数。整个式子表示的意思是找到使目标函数最小时的θ值。

2. 常用损失函数

常见的损失误差有五种: 
1. 铰链损失(Hinge Loss):主要用于支持向量机(SVM) 中; 
2. 互熵损失 (Cross Entropy Loss,Softmax Loss ):用于Logistic 回归与Softmax 分类中; 
3. 平方损失(Square Loss):主要是最小二乘法(OLS)中; 
4. 指数损失(Exponential Loss) :主要用于Adaboost 集成学习算法中; 
5. 其他损失(如0-1损失,绝对值损失)

2.1 Hinge loss

Hinge loss 的叫法来源于其损失函数的图形,为一个折线,通用的函数表达式为:

表示如果被正确分类,损失是0,否则损失就是 1?mi(w) 。

在机器学习中,Hing 可以用来解 间距最大化 的问题,最有代表性的就是SVM 问题,最初的SVM 优化函数如下:

将约束项进行变形,则为:

则损失函数可以进一步写为:

因此, SVM 的损失函数可以看作是 L2-norm 和 Hinge loss 之和。

2.2 Softmax Loss

有些人可能觉得逻辑回归的损失函数就是平方损失,其实并不是。平方损失函数可以通过线性回归在假设样本是高斯分布的条件下推导得到,

而逻辑回归得到的并不是平方损失。在逻辑回归的推导中,它假设样本服从伯努利分布(0-1分布),然后求得满足该分布的似然函数,接着

取对数求极值等等。而逻辑回归并没有求似然函数的极值,而是把极大化当做是一种思想,进而推导出它的经验风险函数为:最小化负的似

然函数(即maxF(y,f(x))→min?F(y,f(x)))。从损失函数的视角来看,它就成了Softmax 损失函数了。

log损失函数的标准形式:

L(Y,P(Y|X))=?logP(Y|X)

刚刚说到,取对数是为了方便计算极大似然估计,因为在MLE中,直接求导比较困难,所以通常都是先取对数再求导找极值点。损失函数

L(Y,P(Y|X)) 表达的是样本X 在分类Y的情况下,使概率P(Y|X) 达到最大值(换言之,就是利用已知的样本分布,找到最有可能(即最大概率)

导致这种分布的参数值;或者说什么样的参数才能使我们观测到目前这组数据的概率最大)。

因为log函数是单调递增的,所以logP(Y|X) 也会达到最大值,因此在前面加上负号之后,最大化P(Y|X) 就等价于最小化L 了。

逻辑回归的P(Y=y|x) 表达式如下(为了将类别标签y统一为1 和0 ):

其中

hθ(x)=11+exp(?f(x))

2.3 Squared Loss

最小二乘法是线性回归的一种,OLS将问题转化成了一个凸优化问题。在线性回归中,它假设样本和噪声都服从高斯分布(中心极限定理),

最后通过极大似然估计(MLE)可以推导出最小二乘式子。

最小二乘的基本原则是:最优拟合直线应该是使各点到回归直线的距离和最小的直线,即平方和最小。

平方损失(Square loss)的标准形式如下:

L(Y,f(X))=(Y?f(X))2

当样本个数为n时,此时的损失函数为:

L(Y,f(X))=∑i=1n(Y?f(X))2

Y?f(X)? 表示残差,整个式子表示的是残差平方和 ,我们的目标就是最小化这个目标函数值,即最小化残差的平方和。

在实际应用中,我们使用均方差(MSE)作为一项衡量指标,公式如下:

MSE=1n∑i=1n(Yi~?Yi)2

2.4 Exponentially Loss

损失函数的标准形式是:

L(Y,f(X))=exp[?Yf(X)]

exp-loss,主要应用于 Boosting 算法中,在Adaboost 算法中,经过 m 次迭代后,可以得到 fm(x) :

fm(x)=fm?1(x)+αmGm(x)

Adaboost 每次迭代时的目的都是找到最小化下列式子的参数α 和G:

argminα,G=∑i=1Nexp[?yi(fm?1(xi)+αG(xi))]

易知,Adabooost 的目标式子就是指数损失,在给定n个样本的情况下,Adaboost 的损失函数为:

L(Y,f(X))=12∑i=1nexp[?yif(xI)]

关于Adaboost的详细推导介绍,可以参考Wikipedia:AdaBoost或者李航《统计学习方法》P145。

2.5 其他损失

0-1 损失函数

L(Y,f(X))={01ifY≠f(X)ifY=f(X)

绝对值损失函数

L(Y,f(X))=|Y?f(X)|



上述几种损失函数比较的可视化图像如下:

3. Hinge loss 与 Softmax loss

SVM和Softmax分类器是最常用的两个分类器。

  1. SVM将输出 f(xi,W) 作为每个分类的评分(没有规定的标准,难以直接解释);
  2. 与SVM 不同,Softmax 分类器可以理解为逻辑回归分类器面对多个分类的一般话归纳,其输出(归一化的分类概率)更加直观,且可以从概率上解释。

在Softmax分类器中, 函数映射f(xi,W) 保持不变,但将这些评分值看做每个分类未归一化的对数概率,且将折叶损失替换为交叉熵损失(cross-entropy loss),公式如下:

Li=?log(efyi∑jefj)

或等价的

Li=?fyi+log∑jfj

fj 表示分类评分向量f 中的第i 个元素,和SVM一样,整个数据集的损失值是数据集中所有样本数据的损失值Li的均值和正则化损失之和。

概率论解释:

P(yi|xi,W)=efyi∑jefj

解释为给定数据xi , W 参数,分配给正确分类标签yi 的归一化概率。

实际操作注意事项——数值稳定: 编程实现softmax函数计算的时候,中间项efyi 和 ∑jefj 因为存在指数函数,所以数值可能非常大,

除以大数值可能导致数值计算的不稳定,所以得学会归一化技巧.若在公式的分子和分母同时乘以一个常数C ,并把它变换到求和之中,就能得到一个等价公式:

P(yi|xi,W)=CefyiC∑jefj=efyi+logC∑jefj+logC

C的值可自由选择,不会影响计算结果,通过这个技巧可以提高计算中的数值稳定性.通常将C设为:

logC=?maxfj

该技巧就是将向量f中的数值进行平移,使得最大值为0。

准确地说,SVM分类器使用的是铰链损失(hinge loss),有时候又被称为最大边界损失(max-margin loss)

Softmax分类器使用的是交叉熵损失(corss-entropy loss)

Softmax分类器的命名是从softmax函数那里得来的,softmax函数将原始分类评分变成正的归一化数值,所有数值和为1,这样处理后交叉熵损失才能应用。

Example:图像识别

针对给出的图像,SVM分类器可能给你的是一个[?2.85,0.86,0.28] 对应分类“猫”,“狗”,“船”,

而softmax分类器可以计算出这三个标签的”可能性“是[0.,0160.631,0.353] ,这就让你能看出对于不同分类准确性的把握。

这里Hinge Loss计算公式为:

Li=∑j≠yimax(0,f(xi,W)j?f(xi,W))yi+Δ

这里 Δ 是一个阈值,表示即使误分类,但是没有达到阈值,也不存在损失 。上面的公式把错误类别 (j≠yi) 都遍历一遍,求值加和。

设 xi 的正确类别是”船”,阈值 Δ=1 ,则对应的Hinge loss 为:

Li=max(0,?2.85?0.28+1)+max(0,0.86?0.28+1)=1.58

下图是对Δ 的理解,蓝色表示正确的类别,Δ 表示一个安全范围,就算是有其他的得分,只要没有到达红色的Δ 范围内,

对损失函数都没有影响。这就保证了SVM 算法的解的稀疏性。

而Softmax 损失则是对向量 fyi 指数正规化得到概率,再求对数即可。

Li=?log(efyi∑jefj)=?log(0.353)≈1.04

4.总结

机器学习作为一种优化方法,学习目标就是找到优化的目标函数——损失函数和正则项的组合;有了目标函数的“正确的打开方式”,才能通过合适的机器学习算法求解优化。

不同机器学习方法的损失函数有差异,合理理解各种损失优化函数的的特点更有利于我们对相关算法的理解。

原文地址:https://www.cnblogs.com/jxhd1/p/8463852.html

时间: 2024-07-29 17:18:44

损失函数 hinge loss vs softmax loss的相关文章

归一化指数函数:softmax loss function

1. softmax 损失函数:归一化指数函数,可以将一个K维向量z“压缩”到另一个K维实向量σ(z)中,使每一个元素的范围在(0,1)之间,并且所有元素的和为1. softmax loss包含三个部分:指数化.归一化.取-log(x) ①指数化:是指将一个样本中各个分类的得分指数化,使得各分类的得分都大于等于0,也就是将每个分数x变为e^x,而e^x函数大于0,即保证了非负性 ②归一化:计算指数化后的各个分类的得分在所有分类的得分总和中所占的比例,所以最后得到的是一个分类的分数在总的得分中的比

基于Caffe的Large Margin Softmax Loss的实现(中)

小喵的唠叨话:前一篇博客,我们做完了L-Softmax的准备工作.而这一章,我们开始进行前馈的研究. 小喵博客: http://miaoerduo.com 博客原文:  http://www.miaoerduo.com/deep-learning/基于caffe的large-margin-softmax-loss的实现(中).html 四.前馈 还记得上一篇博客,小喵给出的三个公式吗?不记得也没关系. 这次,我们要一点一点的通过代码来实现这些公式.小喵主要是GPU上实现前后馈的代码,因为这个层只

基于Caffe的Large Margin Softmax Loss的实现(上)

小喵的唠叨话:在写完上一次的博客之后,已经过去了2个月的时间,小喵在此期间,做了大量的实验工作,最终在使用的DeepID2的方法之后,取得了很不错的结果.这次呢,主要讲述一个比较新的论文中的方法,L-Softmax,据说单model在LFW上能达到98.71%的等错误率.更重要的是,小喵觉得这个方法和DeepID2并不冲突,如果二者可以互补,或许单model达到99%+将不是梦想. 再次推销一下~ 小喵的博客网址是: http://www.miaoerduo.com 博客原文:  http://

卷积神经网络系列之softmax,softmax loss和cross entropy的讲解

我们知道卷积神经网络(CNN)在图像领域的应用已经非常广泛了,一般一个CNN网络主要包含卷积层,池化层(pooling),全连接层,损失层等.虽然现在已经开源了很多深度学习框架(比如MxNet,Caffe等),训练一个模型变得非常简单,但是你对这些层具体是怎么实现的了解吗?你对softmax,softmax loss,cross entropy了解吗?相信很多人不一定清楚.虽然网上的资料很多,但是质量参差不齐,常常看得眼花缭乱.为了让大家少走弯路,特地整理了下这些知识点的来龙去脉,希望不仅帮助自

Large-Margin Softmax Loss for Convolutional Neural Networks

paper url: https://arxiv.org/pdf/1612.02295 year:2017 Introduction 交叉熵损失与softmax一起使用可以说是CNN中最常用的监督组件之一. 尽管该组件简单而且性能出色, 但是它只要求特征的可分性, 没有明确鼓励网络学习到的特征具有类内方差小, 类间方差大的特性. 该文中,作者提出了一个广义的 large margin softmax loss(L-Softmax),是large margin系列的开篇之作. 它明确地鼓励了学习特

train loss与test loss结果分析

train loss 不断下降,test loss不断下降,说明网络仍在学习; train loss 不断下降,test loss趋于不变,说明网络过拟合; train loss 趋于不变,test loss不断下降,说明数据集100%有问题; train loss 趋于不变,test loss趋于不变,说明学习遇到瓶颈,需要减小学习率或批量数目; train loss 不断上升,test loss不断上升,说明网络结构设计不当,训练超参数设置不当,数据集经过清洗等问题. 原文地址:https:

浅谈人脸识别中的loss 损失函数

浅谈人脸识别中的loss 损失函数 2019-04-17 17:57:33 liguiyuan112 阅读数 641更多 分类专栏: AI 人脸识别 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u012505617/article/details/89355690 在人脸识别中,算法的提高主要体现在损失函数的设计上,损失函数会对整个网络的优化有着导向性的作用.我们看到许多常用的损失函数

机器学习中的损失函数

着重介绍hige loss 和 softmax loss. svm回顾 \(C_1,C_2\)是要区分的两个类别,通过分类函数执行时得到的值与阈值的大小关系来决定类别归属,例如: \[g(x) = g(w^Tx+b)\] 我们取阈值为0,此时\(f(x)=sgn[g(x)]\)就是最终的判别函数.对于同一个问题,有多个分类函数,哪一个更好呢?于是引入了"分类间隔"的指标 函数间隔和几何间隔 给定样本\((x_i, y_i)\),函数间隔为: \[\gamma_i=y_i*(w^Tx_i

How to Train Triplet Networks with 100K Identities?

1. 为什么介绍此文? Triplet net 改进工作之一,主要思想是在大数据集(人脸识别)上的困难样本挖掘.人脸识别工作对于图像对匹配而言很有借鉴意义,共性是特征的提取和样本数据的挖掘. Tripnet net源于文章Deep metric learning using triplet network,在论文中也提出了用于训练三张图像的triplet loss.许多类似的人脸识别.匹配工作都是在大数据集上实现的,这就要求对数据的高效利用.原因是大多数样本在训练中后期不再有梯度贡献,例如含有m