损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下式子:

θ∗=argminθ1N∑i=1NL(yi,f(xi;θ))+λ Φ(θ)θ∗=arg⁡minθ1N∑i=1NL(yi,f(xi;θ))+λ Φ(θ)

其中,前面的均值函数表示的是经验风险函数,L代表的是损失函数,后面的ΦΦ是正则化项(regularizer)或者叫惩罚项(penalty term),它可以是L1,也可以是L2,或者其他的正则函数。整个式子表示的意思是找到使目标函数最小时的θθ值。下面主要列出几种常见的损失函数。

一、log对数损失函数(逻辑回归)

有些人可能觉得逻辑回归的损失函数就是平方损失,其实并不是。平方损失函数可以通过线性回归在假设样本是高斯分布的条件下推导得到,而逻辑回归得到的并不是平方损失。在逻辑回归的推导中,它假设样本服从伯努利分布(0-1分布),然后求得满足该分布的似然函数,接着取对数求极值等等。而逻辑回归并没有求似然函数的极值,而是把极大化当做是一种思想,进而推导出它的经验风险函数为:最小化负的似然函数(即max F(y, f(x)) —-> min -F(y, f(x)))。从损失函数的视角来看,它就成了log损失函数了。

log损失函数的标准形式

L(Y,P(Y|X))=−logP(Y|X)L(Y,P(Y|X))=−log⁡P(Y|X)

刚刚说到,取对数是为了方便计算极大似然估计,因为在MLE中,直接求导比较困难,所以通常都是先取对数再求导找极值点。损失函数L(Y, P(Y|X))表达的是样本X在分类Y的情况下,使概率P(Y|X)达到最大值(换言之,就是利用已知的样本分布,找到最有可能(即最大概率)导致这种分布的参数值;或者说什么样的参数才能使我们观测到目前这组数据的概率最大)。因为log函数是单调递增的,所以logP(Y|X)也会达到最大值,因此在前面加上负号之后,最大化P(Y|X)就等价于最小化L了。

逻辑回归的P(Y=y|x)表达式如下(为了将类别标签y统一为1和0,下面将表达式分开表示):

将它带入到上式,通过推导可以得到logistic的损失函数表达式,如下:

逻辑回归最后得到的目标式子如下:

J(θ)=−1m∑i=1m[y(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]J(θ)=−1m∑i=1m[y(i)log⁡hθ(x(i))+(1−y(i))log⁡(1−hθ(x(i)))]

上面是针对二分类而言的。这里需要解释一下:之所以有人认为逻辑回归是平方损失,是因为在使用梯度下降来求最优解的时候,它的迭代式子与平方损失求导后的式子非常相似,从而给人一种直观上的错觉

这里有个PDF可以参考一下:Lecture 6: logistic regression.pdf.

二、平方损失函数(最小二乘法, Ordinary Least Squares )

最小二乘法是线性回归的一种,OLS将问题转化成了一个凸优化问题。在线性回归中,它假设样本和噪声都服从高斯分布(为什么假设成高斯分布呢?其实这里隐藏了一个小知识点,就是中心极限定理,可以参考【central limit theorem】),最后通过极大似然估计(MLE)可以推导出最小二乘式子。最小二乘的基本原则是:最优拟合直线应该是使各点到回归直线的距离和最小的直线,即平方和最小。换言之,OLS是基于距离的,而这个距离就是我们用的最多的欧几里得距离。为什么它会选择使用欧式距离作为误差度量呢(即Mean squared error, MSE),主要有以下几个原因:

  • 简单,计算方便;
  • 欧氏距离是一种很好的相似性度量标准;
  • 在不同的表示域变换后特征性质不变。

平方损失(Square loss)的标准形式如下:

L(Y,f(X))=(Y−f(X))2L(Y,f(X))=(Y−f(X))2

当样本个数为n时,此时的损失函数变为:

Y-f(X)表示的是残差,整个式子表示的是残差的平方和,而我们的目的就是最小化这个目标函数值(注:该式子未加入正则项),也就是最小化残差的平方和(residual sum of squares,RSS)。

而在实际应用中,通常会使用均方差(MSE)作为一项衡量指标,公式如下:

MSE=1n∑i=1n(Yi~−Yi)2MSE=1n∑i=1n(Yi~−Yi)2

上面提到了线性回归,这里额外补充一句,我们通常说的线性有两种情况,一种是因变量y是自变量x的线性函数,一种是因变量y是参数αα的线性函数。在机器学习中,通常指的都是后一种情况。

三、指数损失函数(Adaboost)

学过Adaboost算法的人都知道,它是前向分步加法算法的特例,是一个加和模型,损失函数就是指数函数。在Adaboost中,经过m此迭代之后,可以得到fm(x)fm(x):

Adaboost每次迭代时的目的是为了找到最小化下列式子时的参数αα 和G:

而指数损失函数(exp-loss)的标准形式如下

可以看出,Adaboost的目标式子就是指数损失,在给定n个样本的情况下,Adaboost的损失函数为:

关于Adaboost的推导,可以参考Wikipedia:AdaBoost或者《统计学习方法》P145.

四、Hinge损失函数(SVM)

在机器学习算法中,hinge损失函数和SVM是息息相关的。在线性支持向量机中,最优化问题可以等价于下列式子:

下面来对式子做个变形,令:

于是,原式就变成了:

如若取λ=12Cλ=12C,式子就可以表示成:

可以看出,该式子与下式非常相似:

前半部分中的ll就是hinge损失函数,而后面相当于L2正则项。

Hinge 损失函数的标准形式

L(y)=max(0,1−yy~),y=±1L(y)=max(0,1−yy~),y=±1

可以看出,当|y|>=1时,L(y)=0。

更多内容,参考Hinge-loss。

补充一下:在libsvm中一共有4中核函数可以选择,对应的是-t参数分别是:

  • 0-线性核;
  • 1-多项式核;
  • 2-RBF核;
  • 3-sigmoid核。

五、其它损失函数

除了以上这几种损失函数,常用的还有:

0-1损失函数

绝对值损失函数

下面来看看几种损失函数的可视化图像,对着图看看横坐标,看看纵坐标,再看看每条线都表示什么损失函数,多看几次好好消化消化。

OK,暂时先写到这里,休息下。最后,需要记住的是:参数越多,模型越复杂,而越复杂的模型越容易过拟合。过拟合就是说模型在训练数据上的效果远远好于在测试集上的性能。此时可以考虑正则化,通过设置正则项前面的hyper parameter,来权衡损失函数和正则项,减小参数规模,达到模型简化的目的,从而使模型具有更好的泛化能力。

参考文献

  • https://github.com/JohnLangford/vowpal_wabbit/wiki/Loss-functions
  • library_design/losses
  • http://www.cs.cmu.edu/~yandongl/loss.html
  • http://math.stackexchange.com/questions/782586/how-do-you-minimize-hinge-loss
  • 《统计学习方法》 李航 著.
  • http://www.csuldw.com/2016/03/26/2016-03-26-loss-function/

转载于:https://www.cnblogs.com/shixiangwan/p/7953591.html

Deep Learning基础--各个损失函数的总结与比较相关推荐

  1. Deep Learning基础--Softmax求导过程

    一.softmax函数 softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类! 假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个 ...

  2. 深度学(deep learning)基础-神经网络简易教程

    首先简单介绍一下人工神经网络,也叫ANN. 很多机器学习算法的灵感来自于大自然,而最大的灵感来自我们的大脑,我们如何思考.学习和做决定. 有趣的是,当我们触摸到热的东西时,我们身体里的神经元会将信号传 ...

  3. grad在python什么模块_深度学习(Deep Learning)基础概念1:神经网络基础介绍及一层神经网络的python实现...

    此专栏文章随时更新编辑,如果你看到的文章还没写完,那么多半是作者正在更新或者上一次没有更新完,请耐心等待,正常的频率是每天更新一篇文章. 该文章是"深度学习(Deep Learning)&q ...

  4. Deep Learning Chapter02:Python基础语法回顾

    Deep Learning Chapter02:Python基础语法回顾 由于一年多没有接触python,现在恶补了下python基础语法,为以后的深度学习打下基础.现总结如下,希望对大家有所帮助. ...

  5. 深度学习(Deep Learning)从零基础达到入门级水平

    本文标签:   机器学习 TensorFlow Google机器智能 人工智能 无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序 ...

  6. 深度学习基础 Probabilistic Graphical Models | Statistical and Algorithmic Foundations of Deep Learning

    文章目录 Probabilistic Graphical Models Statistical and Algorithmic Foundations of Deep Learning 01 An o ...

  7. 笔记 | 吴恩达Coursera Deep Learning学习笔记

    向AI转型的程序员都关注了这个号☝☝☝ 作者:Lisa Song 微软总部云智能高级数据科学家,现居西雅图.具有多年机器学习和深度学习的应用经验,熟悉各种业务场景下机器学习和人工智能产品的需求分析.架 ...

  8. Deep Learning for 3D Point Clouds: A Survey 论文阅读

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 Abstract:在点云深度学习中,主要包含的任务有:3D形状分类.3D目标检测和跟踪.3D点云分割. ...

  9. 【论文笔记】 LSTM-BASED DEEP LEARNING MODELS FOR NONFACTOID ANSWER SELECTION

    一.简介 这篇论文由IBM Watson发表在2016 ICLR,目前引用量92.这篇论文的研究主题是answer selection,作者在这篇论文基础上[Applying Deep Learnin ...

最新文章

  1. 技术图文:Numpy 一维数组 VS. Pandas Series
  2. php遍历父元素,PHP遍历函数将单个数组转换为具有子元素的嵌套数组 – 基于父标识...
  3. 访问指定html页面,Spring boot的Controller类是如何指定HTML页面的
  4. 当我们在谈深度学习时,到底在谈论什么(三)--转
  5. Linux系统swap虚拟内存的增加,删除,修改
  6. MySQL DELETE 语句的一个简单介绍
  7. jxl生成表格(合并单元格,字体,样式)
  8. 三菱fx5u modbus tcp fb块用法_三菱PLC型号怎么选?四大方面告诉你三菱FX3U和5U的最大区别!...
  9. 基于JAVA+SpringMVC+MYSQL的求职招聘管理系统
  10. Ubuntu——系统扩容(加硬盘)的学习笔记
  11. 老李推荐:第8章2节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-解析处理命令行参数...
  12. Java代理(proxy)
  13. VISUAL STUDIO INSTALLER下载速度过慢的解决办法
  14. mysqldump: Got error: 1168 differently defined non-MyISAM LOCK TABLES
  15. Mac下复制粘贴的快捷键是什么?随记
  16. 域名系统服务器的功能,域名系统的主要功能是什么
  17. 当RPM包安装遇上“依赖性”问题时的解决办法
  18. StringBuffer去掉最后一个字符
  19. Windows10修改Users下的用户文件夹名
  20. vue 组件,props 属性 ,Vue 生命周期

热门文章

  1. dede织梦数据表字段解释
  2. Ext4.1 Grid 分页查询
  3. 从头学习DirectDraw
  4. Flutter中嵌入Android 原生TextView
  5. from表单iframe原网页嵌入
  6. 带权图的最短路径算法(Dijkstra)实现
  7. C#中Split用法
  8. 用MS.NET开发三层结构应用程序[转载]
  9. 带你学习ES5中新增的方法
  10. PCL综述—三维图像处理