Surrogate loss function,中文可以译为代理损失函数。当原本的loss function不便计算的时候,我们就会考虑使用surrogate loss function。

在二元分类问题中,假如我们有\(n\)个训练样本\(\{(X_1,y_1),(X_2,y_2),\cdots,(X_n,y_n)\}\),其中\(y_i\in\{0,1\}\)。为了量化一个模型的好坏,我们通常使用一些损失函数,损失函数越小,模型越好。最常用的损失函数就是零一损失函数\(l(\hat y,y)\)。
\[
l(y, \hat y)=\sum_{i=1}^m\chi(y_i\neq\hat y_i).
\]
比如说,测试集里有5个数据点,真实分类为\(y=(1,1,1,-1,-1)\),预测分类为\(\hat y =(1,-1,1,1,-1)\)。那么

\[
l(y, \hat y)=0+1+0+1+0=2.
\]
对于一个loss function\(l\),我们的目标是要找到一个最优的分类器\(h\),使得这个分类器在测试样本上的期望损失最小。数学式子表达是
\[
\min_{h}\mathbb{E}_{X\times y}[l(y, h(X))].
\]

理论上,我们是可以直接对上式进行优化,得到最优的分类器\(h\)。然而这个过程是非常困难的(甚至不可行)。其一是因为\(X\times y\)的概率分布是未知的,所以计算loss的期望是不可行的。另外一个难处是这个期望值很难进行优化,因为这个loss function是非连续的,这个优化问题本质是NP-Hard的。举个例子来说,假定\(X\in\mathbb{R}^2\),我们希望找一个线性分类器

\[
h(X)=\begin{cases}1, ~Xw\geq 0\\ -1, ~Xw<0 \end{cases}
\]

使得loss的期望最小化。所以我们也就是求解\(w=(w_1, w_2)^T\)。关于\(w_1,w_2\)以及loss的图像大致如下,

这个函数显然是非连续的。我们常用的优化方法,比如梯度下降,对此都失效了。正因此,我们可以考虑一个与零一损失相接近的函数,作为零一损失的替身。这个替身我们就称作surrogate loss function代理损失函数。为了计算的便利,这个函数通常是凸函数。例如逻辑回归的loss function,\(\log(1+e^{-yXw})\),就是光滑可导的,更容易被求解。


最后补充几句。当我们把原来的零一损失函数替代为其他损失函数的时候,我们自然会问,当我们对代理损失函数进行优化的时候,原来的零一损失是否也被最小化了?它们的差距是多少呢?如果最优化代理损失函数的同时我们也最优化了原本的损失函数,我们就称校对性(calibration)或者一致性(consistency)。这个性质与我们所选择的代理损失函数相关。一个重要的定理是,如果代理损失函数是凸函数,并且在0点可导,其导数小于0,那么它一定是具有一致性的。这也是为什么我们通常选择凸函数作为我们的loss function的原因之一。

下图是零一损失函数与logloss,hinge loss,squared hinge loss以及modified Huber loss的联系。

代理损失函数(surrogate loss function)的更多相关文章

  1. 【深度学习】一文读懂机器学习常用损失函数(Loss Function)

    最近太忙已经好久没有写博客了,今天整理分享一篇关于损失函数的文章吧,以前对损失函数的理解不够深入,没有真正理解每个损失函数的特点以及应用范围,如果文中有任何错误,请各位朋友指教,谢谢~ 损失函数(lo ...

  2. 惩罚因子(penalty term)与损失函数(loss function)

    penalty term 和 loss function 看起来很相似,但其实二者完全不同. 惩罚因子: penalty term的作用是把受限优化问题转化为非受限优化问题. 比如我们要优化: min ...

  3. 对数损失函数(Logarithmic Loss Function)的原理和 Python 实现

    原理 对数损失, 即对数似然损失(Log-likelihood Loss), 也称逻辑斯谛回归损失(Logistic Loss)或交叉熵损失(cross-entropy Loss), 是在概率估计上定 ...

  4. Tensorflow 损失函数(loss function)及自定义损失函数(三)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/limiyudianzi/article ...

  5. 损失函数(Loss Function)

    转载请注明出自BYRans博客:http://www.cnblogs.com/BYRans/ 线性回归中提到最小二乘损失函数及其相关知识.对于这一部分知识不清楚的同学可以参考上一篇文章<线性回归 ...

  6. 损失函数(loss function)

    通常而言,损失函数由损失项(loss term)和正则项(regularization term)组成.发现一份不错的介绍资料: http://www.ics.uci.edu/~dramanan/te ...

  7. 损失函数 hinge loss vs softmax loss

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

  8. logistic回归具体解释(二):损失函数(cost function)具体解释

    有监督学习 机器学习分为有监督学习,无监督学习,半监督学习.强化学习.对于逻辑回归来说,就是一种典型的有监督学习. 既然是有监督学习,训练集自然能够用例如以下方式表述: {(x1,y1),(x2,y2 ...

  9. 损失函数(Loss Function) -1

    http://www.ics.uci.edu/~dramanan/teaching/ics273a_winter08/lectures/lecture14.pdf Loss Function 损失函数 ...

随机推荐

  1. Java学习|强引用,软引用,弱引用,幻想引用有什么区别?

    在Java语言中,除了基本数据类型外,其他的都是指向各类对象的对象引用:Java中根据其生命周期的长短,将引用分为4类. 1 强引用 特点:我们平常典型编码Object obj = new Objec ...

  2. 微信小程序商城系统怎样搭建?

    微信是一种非常便捷的生活方式,微信小程序一直深受企业和商家的青睐,如美团.京东.拼多多.唯品会.小红书等知名公司都推出了自己的小程序.对于网上商城小程序的开发似乎是一件非常难的事情,用什么开发?如何开 ...

  3. abp(net core)+easyui+efcore实现仓储管理系统——使用 WEBAPI实现CURD (十四)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  4. 解决问题:安装Ubuntu时遇到nouveau sched_error问题

    当我们在为有独立显卡gpu的电脑安装Ubuntu系统时,有可能会遇到nouveau sched_error问题. 方法一:安装系统时,开机出现dell图标时长按F12进入启动项选择界面, 然后选择UE ...

  5. GStreamer基础教程07 - 播放速率控制

    摘要 在常见的媒体播放器中,通常可以看到快进,快退,慢放等功能,这部分功能被称为“特技模式(Trick Mode)”,这些模式有个共同点:都通过修改播放的速率来达到相应的目的. 本文将介绍如何通过GS ...

  6. Unity Editor已停止工作

    在更换系统之后,可能会出现打开刚安装好的Unity,显示Unity Editor已停止工作,这时候我们考虑是系统win7的问题.可以在原系统上升级,也可以重新安装,升级.文中所涉及到的软件,可在右侧加 ...

  7. C#数据结构_图

    顶点的度=顶点的入度+顶点的出度. 顶点 v 的入度是指以该顶点 v 为弧头的弧的数目:顶点 v 的出度是指以该顶点 v 为弧尾的弧的数目. 简单路径:一条路径上顶点不重复出现. 回路:第一个顶点和最 ...

  8. CodeForces 909F

    题意略. 思路: 第一问: 递归地来写,找对称,发现关于(1<<y) - 1和(1<<y)对称的数字做 & 结果为0. 第二问: 6,7特殊考虑.循环左移(1<& ...

  9. Java 最全异常讲解

    1. 导引问题 实际工作中,遇到的情况不可能是非常完美的.比如:你写的某个模块,用户输入不一定符合你的要求.你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,你要读取数据库的数据,数据可能是 ...

  10. 重温Android和Fragment生命周期

    重温下Android和Fragment生命周期,理解生命周期方法的作用,什么时候调用,可以做一些什么操作. 1.Android生命周期 1.1 生命周期图 1.2 生命周期函数说明 onCreate: ...