机器学习中的各种损失函数

SVM multiclass loss(Hinge loss)


这是一个合页函数,也叫Hinge function,loss 函数反映的是我们对于当前分类结果的不满意程度。在这里,多分类的SVM,我们的损失函数的含义是这样的:对于当前的一组分数,对应于不同的类别,我们希望属于真实类别的那个分数比其他的类别的分数要高,并且最好要高出一个margin,这样才是安全的。反映在这个函数中,就是0的那一项的取值范围,Syi表示的是xi样本的真实类别所得到的分数,而Sj指的是其他的类别的分数,如果真实类别的分数是最大的,且大一个margin 1,那么就表示满意,也就是说不惩罚,这一项的loss为0。如果不满足这一条件,我们用下面的一段,也就是Sj - Syi + 1, 1在这里是一个常数,可以使得函数连续起来,这个Sj - Syi表示,Syi,也就是真实样本的分数比别的少的越多,我们越不满意,具体计算方式有下面这个栗子:

有时候我们也会用hinge function的平方项作为loss函数。

考虑到很多W都能满足零loss,那么如何在这些W中做出选择?

这里就需要对W进行选择,也就是正则,引出了经验风险损失和结构风险损失的概念,正则的概念众所周知,此略。

这里乱入一下各种正则化,关于正则化的相关问题留作以后整理。

multinomial logistic regression (softmax loss)

就是常说的softmax的损失函数,通过将score变成probablity,从而每次只用计算属于正确的分类的那个概率,用对数最大似然的方法,将它变成prob == 1,也就是min -log 使其等于0 。


可以看出,如果类别标签是one-hot vector的话,那么实际上只对真实类别的一类进行求log并加负号。

但是,考虑到这一类的prob是由所有的logits的exp后的和归一化得来的,因此实际上还是对所有的score都有作用。相对于前面的SVM的hinge loss,可以这样对比描述:Hinge loss 对于那些对真实类别给分高的样本不进行过多奖励(loss小相当于奖励高),也就是说只要正确类别的分数比其他的大1以上,那么就认为这个score已经足够好了,这样就可以关注整体的loss,争取所有样本上表现都比较好。而softmax loss 是对概率分布进行优化,力图使所有的概率密度都向着正确分类样本上集中。

* 关于多分类问题的 softmax loss 和 二分类问题的 logistic 回归的 loss

二分类问题的logistic回归的loss函数是:

loss=−1n∑[ylna+(1−y)ln(1−a)] l o s s = − 1 n ∑ [ y ln ⁡ a + ( 1 − y ) ln ⁡ ( 1 − a ) ]

loss = - \frac{1}{n}\sum[y\ln a + (1-y)\ln (1-a)]

可以看出,二类别的分类是多分类的一个特殊情况,因此也可以用softmax的方式来处理。但是二分类又是一个特例,因为它的类别不用写成one-hot vector,而是直接用0到1之间的一个数字就可以表示,接近1就是正例,接近0就是反例。所以符合上面的这个公式。这个公式可以看出,y=0,即真实标签为0的时候,第一项就没有了,loss变成-(1-y)ln(1-a),也就是-ln(1-a),a越接近0,loss越小;y=1时反之,这样就使得a越来越趋近于真实答案。

考虑到a是logistic方程的输出,x为输入,w是要优化的weights,a在0-1之间,如果我们把两个类别按照多分类的方式,写成one-hot vector的话,那么可以是[1, 0] 和 [0 ,1] ,那么用softmax输出的结果分别是[1-a, a],其中a接近0,这个向量就接近[1,0]也就是第一类,a接近1,向量接近第二类。用softmax写出来,就和上面的logistic二分类的loss一样了。

logistic回归的loss是可以通过最大似然取对数写出来的,这里假设样本的label,也就是类别服从Bernoulli分布。在【统计学习方法(李航)】一书中有推导过程,如下:

交叉熵损失函数(cross entropy loss function)

交叉熵的公式:

这个是来源于信息论的一个定义,表示的是用某个分布去编码另一个分布所需要的平均码长。

作为损失函数时,它可以用来度量两个分布的差异性,比如上述的 softmax 得到的概率分布,和one-hot的概率分布相比,差异性就可以用cross entropy来衡量。按照编码的规则,作为权重的p和在log里面的p两个分布分别代表着真实分布和用来编码的预测分布,这个函数越小,说明两个分布越相像。

用交叉熵损失函数的优势在于,可以避免MSE损失带来的梯度过小的问题。(mse求导后chain里面带着sigmoid的导数,这个导数在有的位置是接近于0的,也就是前面说的软饱和,而cross entropy的导数只和真实值和预测值的差异成正比,所以避免了这一问题。)

2018年04月23日16:49:40

人间永远有秦火烧不尽的诗书,法钵罩不住的柔情。 —— 散文家,张晓风 【风荷举】

机器学习中的各种损失函数(Hinge loss,交叉熵,softmax)相关推荐

  1. 一文搞懂交叉熵在机器学习中的使用,透彻理解交叉熵背后的直觉

    关于交叉熵在loss函数中使用的理解 交叉熵(cross entropy)是深度学习中常用的一个概念,一般用来求目标与预测值之间的差距.以前做一些分类问题的时候,没有过多的注意,直接调用现成的库,用起 ...

  2. 机器学习中的常见问题—损失函数

    机器学习中的常见问题--损失函数 一.分类算法中的损失函数 在分类算法中,损失函数通常可以表示成损失项和正则项的和,即有如下的形式: J(w)=∑iL(mi(w))+λR(w)J(w)=∑iL(mi( ...

  3. 机器学习中常见的损失函数_机器学习中最常见的损失函数

    机器学习中常见的损失函数 现实世界中的DS (DS IN THE REAL WORLD) In mathematical optimization and decision theory, a los ...

  4. 一文看懂机器学习中的常用损失函数

    作者丨stephenDC 编辑丨zandy 来源 | 大数据与人工智能(ID: ai-big-data) 导语:损失函数虽然简单,却相当基础,可以看做是机器学习的一个组件.机器学习的其他组件,还包括激 ...

  5. LESSON 10.110.210.3 SSE与二分类交叉熵损失函数二分类交叉熵损失函数的pytorch实现多分类交叉熵损失函数

    在之前的课程中,我们已经完成了从0建立深层神经网络,并完成正向传播的全过程.本节课开始,我们将以分类深层神经网络为例,为大家展示神经网络的学习和训练过程.在介绍PyTorch的基本工具AutoGrad ...

  6. 【交叉熵损失函数】关于交叉熵损失函数的一些理解

    目录 0. 前言 1.损失函数(Loss Function) 1.1 损失项 1.2 正则化项 2. 交叉熵损失函数 2.1 softmax 2.2 交叉熵 0. 前言 有段时间没写博客了,前段时间主 ...

  7. 交叉熵损失函数优缺点_交叉熵损失函数的优点(转载)

    第一篇: 利用一些饱和激活函数的如sigmoid激活时,假如利用均方误差损失,那么损失函数向最后一层的权重传递梯度时,梯度公式为 可见梯度与最后一层的激活函数的导数成正比,因此,如果起始输出值比较大, ...

  8. 入门|机器学习中常用的损失函数你知多少?

    本文作者将常用的损失函数分为了两大类:分类和回归.然后又分别对这两类进行了细分和讲解,其中回归中包含了一种不太常见的损失函数:平均偏差误差,可以用来确定模型中存在正偏差还是负偏差. 机器通过损失函数进 ...

  9. 机器学习中目标函数、损失函数、代价函数之间的区别和联系

    首先给出结论:损失函数和代价函数是同一个东西,目标函数是一个与他们相关但更广的概念,对于目标函数来说在有约束条件下的最小化就是损失函数(loss function) 举个例子解释一下:(图片来自And ...

最新文章

  1. JQuery Easy Ui 可装载组合框 - ComboBox
  2. opencv 裁剪 java_如何在opencv java中裁剪检测到的面部图像
  3. leetcode算法题--最低票价★
  4. greenplum(一)
  5. linq to sql 插入值,以及如何取回自增的ID
  6. Ajax工作流程(原生Ajax)
  7. 1Android系统移植与驱动开发概述
  8. 下拉框_教你封装 Element Tree 树状下拉框
  9. 你想要的江湖,可能不在这时候笑傲
  10. 声压级 matlab,语音信号处理教程(二)声音的声压级和响度
  11. 【Siddhi】Syntax error in SiddhiQL, no viable alternative at input
  12. 基于Pytorch实现CNN卷积神经网络-Mnist数据集
  13. Google chrome浏览器保存离线网页方法
  14. 码云zheng项目介绍
  15. mac自带邮件设置QQ企业邮箱发邮件
  16. 论文阅读笔记--Predicting Human Eye Fixations via an LSTM-based Saliency Attentive Model
  17. gamemaker: studio html5,HTML5 Game Development with Gamemaker
  18. 详细介绍GPIO、I2C、SPI通讯原理以及物理层原理
  19. 浪潮服务器安装windows2008系统,浪潮NF5280M3安装Windows Server 2008 R2注意事项
  20. Java程序中如何判断一个数是否为素数

热门文章

  1. 【栈和队列】栈的push、pop序列
  2. DNA甲基化数据分析专题
  3. 对Max Pooling的理解
  4. 故宫景点功课20:宁寿宫区2
  5. 以优质氘代产品为刃,劈开生物原材料市场壁垒
  6. 业务流程管理(BPM)系统的九大必备特点
  7. JavaScript 怎么自己手写一个Promise
  8. 关于java中的魔幻数字47你知道么
  9. 国家开放大学2021春2405现代汉语(1)题目
  10. Java去除首尾指定字符串