详解机器学习中的损失函数


Class Content
layout Blog
title 详解机器学习中的损失函数
categories Blog
description 机器学习中常见的损失函数以及它们的特点和适用场景
keywords 机器学习 损失函数 风险函数

1. 前言

我们知道机器学习的三要素是:方法= 模型+策略+算法, 如何从假设空间中选择最优模型,这涉及到我们需要用什么样的准则进行学习,这就是三要素中的"策略"问题。

在假设空间中选择模型y(x_n,w)作为决策函数,给定输入x_n,由模型得到输出y(x_n,w),而预测的y(x_n,w)与真实值t_n之间可能不一致,如图1-1 可以看出预测值y(x_n,w)与真实值t_n存在不一致情况,他们之间的差的绝对值为|y(x_n,w)-t_n|为绿色线部分, 而损失函数是定义在单个样本上的,算的是一个样本的误差。因此选用损失函数来度量预测误差。

1-1 预测值与真实值的误差

损失函数(loss function)是用来度量模型的预测值与真实值的不一致程度,是一个非负实值函数,损失函数越小,预测正确程度越高,表示为:L(y_i,f(x_i))

  • 损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。模型的结构风险函数包括了经验风险项和正则项,可以表示为:R_{srm}(f)= \frac{1}{N}\sum_{i=1}^NL(y_i,f(x_i))+\lambda J (f)
    这个公式为结构风险函数,其中,包括前一部分的经验风险项以及后一部分的正则化项,正则化项用于控制模型复杂度,\lambda则是用于权衡经验风险和模型复杂度之间的关系.
    所以,通过最小化结构风险的策略找到最优模型,求解最优模型就是求解如下最优化问题:min_{f\in\digamma}\frac{1}{N}\sum_{i=1}^NL(y_i,f(x_i))+\lambda J(f)

  • 当然,除了让结构风险最小化寻找最优模型外,还可以直接最小化经验风险,即
    min_{f\in\digamma}\frac{1}{N}\sum_{i=1}^NL(y_i,f(x_i))
    在样本足够的情况下,经验风险最小化可以达到很好的学习效果,但是样本容量有限时,容易产生过拟合现象,所以在才有上面结构风险最小化求最优模型的策略.


2. 区别损失函数\ 风险函数\ 代价函数\ 目标函数

  • 损失函数:衡量单个样本预测值与真实值的误差【不赘述】.
  • 代价函数:定义在训练集上,是模型关于训练集的平均损失,它也叫经验风险,表示为:\frac{1}{N}\sum_{i=1}^NL(y_i,f(x_i))
  • 风险函数:是指损失函数的期望,又叫期望损失,由于输入X和输出Y是随机变量,那么可求得联合分布P(X,Y),所以可以表示为:R_{exp}(f)=E_p[L(Y,f(X))] = \int_{X,Y}L(y,f(x))p(x,y)dxdy
  • 目标函数:是一个更为广的概念,比如最小化结构风险求最优模型时,结构化风险函数就是目标函数,而最小化经验风险求最优模型时,经验风险函数就是目标函数,简单地讲,目标函数就是需要优化的函数。

Note:

  • a.通常,我们没有细分损失函数和代价函数,经常将两个概念混用。
  • b.由于P(Y,X)未知,所以风险函数无法计算,经验风险R_{emp}(f)是模型关于训练集的平均损失,根据大数定律,当样本容量N趋于无穷时,经验风险R_{emp}(f)趋于风险函数R_{exp}(f),这也说明了训练集容量越大,选择的最优模型越逼近真实模型。

3. 常见的损失函数

  • (1) 0-1损失函数(Zero-one Loss)
    L(y_i,f(x_i))=\left\{ \begin{aligned} 1 \text{, $y_i \neq f(x_i)$}\\ 0 \text{, $y_i = f(x_i)$} \end{aligned} \right.
    0-1 损失函数简单易理解,用于分类,如果预测的标签和数据标注的标签一致,那么就为0,否则就为1,当然, 如果认为相等的要求太严苛,可以放宽要求,用于回归中,如果他们的绝对值小于某个阈值,即为0,否则为1,表示为
    L(y_i,f(x_i))=\left\{ \begin{aligned} 1 \text{, $|y_i-f(x_i)| \geq t$}\\ 0 \text{,$|y_i-f(x_i)| < t$} \end{aligned} \right.

  • (2) 平方损失函数(Square Loss)
    L(y_i,f(x_i))=(y_i-f(x_i))^2
    由于其计算的优越性,所以常常用于回归中, 权重由可以直接初始化,再通过梯度下降不断更新。

  • 举例说明,一个线性回归,假设输入有n个特征,为了方便表示用n+1表示输入向量为x=[0,x_1,x_2,...,x_n]^T,模型参数为w=[w_0,w_1,...,w_n]^T,那么线性回归的模型表示为f(x)=w_0+w_1x_1+,...,w_nx_n=w^Tx
    那么它的代价函数可以表示为L(w,x)=\frac{1}{2N}\sum_{i=1}^N(y^{(i)}-w^Tx^{(i)})+\frac{\lambda}{2}||w||^2
    注意:在这里都使用\frac{1}{2}的目的是方便在后续求导中计算,\lambda是正则项前面的参数。
    w_i求导:
    \frac{dL(w,x)}{dw_i} = \frac{1}{N}\sum_{i=1}^N(y_i-w^Tx)x_i+\lambda w_i
    由于这是目标函数是一个有最小值的凸函数,所以是沿着梯度的反方向进行更新,表示为w_i = w_i -\eta\frac{dL(w,x)}{dw_i}
    注:权重矩阵w最开始可以随机初始,再不断更新.

  • (3) 绝对损失函数(Absolute loss)
    L(y_i,f(x_i))=|(y_i-f(x_i))|
    绝对值损失函数也经常用于回归中,而用于分类就等价于0-1损失函数,在sklearn中有Huber损失函数,它是平方损失函数和绝对值损失函数的结合,详细介绍请参考 [F2001],比较简单【不再赘述】。

  • (4) 对数损失函数(Log Loss or Cross-entropy Loss)
    L(y_i,f(x_i))=-logP(y_i|x_i)
    对数损失函数适用于逻辑回归,那什么是逻辑回归呢?
    举例说明:其实就是在线性回归的基础上增加了逻辑函数h(x)= \frac{1}{1+e^{-x}},那么对于在线性回归基础上加上逻辑函数,则逻辑回归模型可以表示为p(1|w,x^{(i)})=h(f(x^{(i)}))=\frac{1}{1+e^{-f(x^{(i)})}}=\frac{1}{1+e^{-w^Tx^{(i)}}}
    即上式表示,给定输入,该实例为类别1的概率,由于逻辑回归是二分类,所以为类别0的概率为p(0|w,x^{(i)})=1-p(1|w,x^{(i)})
    而在逻辑回归中,由于提供了模型的概率估计,所以使用的损失函数为对数损失函数,表示如下:L(y^{(i)},f(x^{(i)}))=\left\{ \begin{aligned} -logp(1|w,x^{(i)}) \text{, $y^{(i)}=1$}\\ -log(1-p(w|x^{(i)})) \text{, $y^{(i)}=0$} \end{aligned} \right.
    那么最终的代价函数可以表示为
    L(w,x)=-\frac{1}{N}\sum_{i=1}^N \lbrace y^{(i)}logp(y^{(i)}=1|w,x^{(i)})+(1-y^{(i)})logp(y^{(i)}=0|w,x^{(i)})\rbrace
    接下来就从另外一个角度说明,已知逻辑回归模型表示为:p(1|w,x^{(i)})=h(f(x^{(i)}))=\frac{1}{1+e^{-f(x^{(i)})}}=\frac{1}{1+e^{-w^Tx^{(i)}}}
    在模型的数学形式确定后,剩下的就是如何去求解模型中的参数w,而在已知模型和一定样本的情况下,估计模型的参数,在统计学中常用的是极大似然估计方法。即找到一组参数w,使得在这组参数下,样本数据的似然度(概率)最大.
    对于逻辑回归模型,假定概率分布服从伯努利分布【0-1分布】,其概率质量函数PMF为:f(x)=p^x(1-p)^{(1-x)},其中x只能取0或者1,那么似然函数可以表示:为L(w)=\prod_{i=1}^Np(y^{(i)}=1|w,x^{(i)})^{y^{(i)}}p(y^{(i)}=0|w,x^{(i)})^{1-y^{(i)}}
    那么对上式取对数,得到对数似然函数为:
    logL(w)=\sum_{i=1}^Ny^{(i)}logp(y^{(i)}=1|w,x^{(i)})+(1-y^{(i)})logp(y^{(i)}=0|w,x^{(i)})
    则全体样本的代价函数为:
    logL(w)=-\sum_{i=1}^N\lbrace y^{(i)}logp(y^{(i)}=1|w,x^{(i)})+(1-y^{(i)})logp(y^{(i)}=0|w,x^{(i)})\rbrace
    由此可以看出对数损失函数与极大似然估计的对数似然函数本质上是等价的.

  • (5) 绞链损失函数(Hinge Loss)
    L(m_i)=max(0,1-m_i(w))
    铰链损失函数常用于支持向量机(SVM)中,它名字来源于它的损失函数图像为一个折线图像,如果模型分类正确,损失为0,否则损失为1-m_i(w),在SVM损失函数表示为:L(y^{(i)},x^{(i)})=max(0,1-y^{(i)}f(x^{(i)})),
    举例说明:在SVM中,最终的支持向量机的分类模型是能最大化分类间隔,又减少错误分类的样本数目,意味着一个好的支持向量机的模型,需要满足以上两个条件:1、最大化分类间隔,2、错误分类的样本数目。如图说明,f(x^{(i)})是预测值,且预测值在-1到1之间,y^{(i)}为目标值取值为-1或者1,如果分类正确,L(y^{(i)},x^{(i)})=0,如果分类错误,L(y^{(i)},x^{(i)})=1-y^{(i)}f(x^{(i)})\xi是引入的松弛变量,错误分类的样本数目,就回到了损失函数的范畴。

    SVM分类
    综上所述推导SVM的代价函数,最初的SVM优化函数如下:
    \begin{eqnarray} && {argmin}_{(w,\xi_i)}\quad \frac{1}{2} \Vert w \Vert^2+C\sum_i\xi_i\\ &&s.t.\quad \forall y^{(i)}f(x^{(i)}) \geq 0 \\ && \quad\quad\quad \xi_i \geq 0 \end{eqnarray}
    将约束条件变形为\xi_i>1-y^{(i)}f(x^{(i)})
    最终SVM的代价函数可以表示为:L(w,x^{(i)})=C \sum_{i=0}^{N}max(0,1-y^{(i)}f(x^{(i)}))+\frac{1}{2} \Vert w \Vert^2

  • (6) 指数损失函数(Exponential loss)
    L(y_i,f(x_i)) = exp(-y_if(x_i))指数损失函数,主要应用于 Boosting 算法中
    在Adaboost 算法中,经过m次迭代后,可以得到 f_m(x^{(i)}),表示为:f_m(x^{(i)})=f_{m−1}(x^{(i)})+α_mG_m(x^{(i)})
    Adaboost 每次迭代时的目的都是找到最小化下列式子的参数αG
    argmin_{(α,G)} \quad \sum_{i=1}^{N}exp(-y^i(f_{m−1}(x^{(i)})+αG(x^{(i)})))
    易知,Adaboost应用了指数损失函数L(y^i,f(x^i))=exp(-y^if(x^i))

总结

看了很多资料和网页,结合自己的理解写出了这一篇博客,以前只知道有这些损失函数,并没有探讨过损失函数的适用性以及该如何去推导这些公式。继续加油O(∩_∩)O~~
如有问题联系dengwenjun818@gmail.com

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容