好好睡觉
熬夜的不要

代理损失函数(surrogate loss function)

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 functionl,我们的目标是要找到一个最优的分类器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的联系。

赞(0) 打赏
未经允许不得转载:数据谷 » 代理损失函数(surrogate loss function)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏