怎么理解surrogate loss function代理损失函数?

  统计/机器学习 监督式学习 损失函数
16

怎么理解surrogate loss function代理损失函数?

 

数据痴汉   2017-04-19 10:33



   2个回答 
20

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的联系。

我的回答主要是参考(翻译)了这篇文章



高代兄   2017-04-19 13:06

好理论啊 - sasa   2017-09-13 22:50
厉害了我的哥。。。我的智商只允许我看懂第一句话。不过似乎第一句搞明白也就够了吧吧吧 - ZackLi   2017-04-19 13:17
作为调参工程师,掩面。。。 - sasa   2017-09-13 22:51
所以可以理解为,计算上的代理? - ljljlj   2017-10-22 14:57
9

高代兄已经说得很多了。我补充一下。Surrogate loss function远比我们想象得重要。

当我们进行分类任务的时候,我们的目标常常是分错样本越少越好,也就是零一损失。

但是零一损失很难计算。我们就寻找一些可以进行计算的损失函数来替代零一损失。也就是说我们把原来的优化问题转化为一个近似的优化问题。不同的surrogate loss function对应着不同的优化问题,就有着不同的优化目标和优化方法,也就从本质上定义了不同类型的分类器。

当我们用hinge loss做surrogate loss function去找一个线性分类器的时候,实际上我们就是用的SVM。当我们用logloss作为surrogate loss function去求解一个线性分类器的时候,实际上我们的模型就是LogisticsRegression。


Nagozi   2017-04-20 01:27

赞同! - batmanX   2017-04-22 12:41


相关问题

cross entropy是什么意思?   1回答

Hamming Loss汉明损失的计算公式是什么?   1回答

logloss的取值范围是多少?一般好的分类器能达到多少?   4回答

python求logloss   1回答

逻辑回归的损失函数是怎么来的   1回答

Ridge,Lasso,ElasticNet的目标函数分别是什么?   1回答

多分类问题有没有类似LogLoss的模型评判标准?   1回答

Gini指数、Gini系数、Gini不纯是一回事吗?   2回答

huber loss是什么?什么时候用?   1回答

最小二乘回归和线性回归   2回答

泊松回归(poission regression)的损失函数是什么?   1回答

python里有没有huber loss的线性回归   1回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!