[machine learning] Loss Function view
[machine learning] Loss Function view
有关Loss Function(LF),只想说,终于写了
一、Loss Function
什么是Loss Function?wiki上有一句解释我觉得很到位,引用一下:The loss function quantifies the amount by which the prediction deviates from the actual values。Loss Function中文损失函数,适用于用于统计,经济,机器学习等领域,虽外表形式不一,但其本质作用应是唯一的,即用于衡量最优的策略。本章只从机器学习(ML)领域来对其进行阐述,机器学习其实是个不停的模拟现实的过程,比如无人驾驶车,语音识别,流感预测,天气预报,经济周期行为等众多领域,是互联网发展过程中“科学家”(暂且这么称呼吧)对于人类文明进步的另一个贡献,其本质就是要建立一个数学模型用于模拟现实,越接近真实越好,那么转化为数学语言即LF越小越好,因为LF值代表着现实与学习预测的差距,这个不停的缩小LF值的过程就称为优化,如果理解这些的话,就不难理解优化问题对于ML来说的重要性了,如水之于鱼,魂之于人!
![]()
二、几种Loss Function概述
如上一节所述,LF的概念来源于机器学习,同时我们也知道机器学习的应用范围相当广泛,几乎可以涵盖整个社会领域,那么自然不同的领域多少会有不同的做法,这里介绍在一般的机器学习算法中常见的几种,具有概括性
2.1 一般形式
J(w)=∑iL(mi(w))+λR(w)
LF分为两部分:L+R,L表示loss term,其中mi(w)=y(i)wTxi,y(i)∈{−1,1},w表示学习出来的权重,该公式的作用很明显了,用来收集现实与学习结果的差距,是LF的核心部分,LF的不同大部分也是指的loss term的不同;R表示范式,范式存在的意思是进行约束,以防止优化过偏。
2.2 一般的loss term有5种,分别用于5种常见的机器学习算法
Gold Standard(标准式)于理想sample,这种一般很少有实践场景,这个方法的作用更多的是用来衡量其他LF的效用;Hinge于soft-margin svm算法;log于LR算法(Logistric Regression);squared loss于线性回归(Liner Regression)和Boosting。
1)Gold Standard loss,一般我们称这个LF为L01,从公式中可以看出该公式的主要职责是在统计多少个错误的case,很明显现实数据不允许如此简单的统计方式
![]()
从公式我们可以很清楚的看出,当m<0的时候L=1,m<0说明预测失败,那么Loss则加1,这样将错误累加上去,就是Gold Standard loss的核心思想。
2)hinge loss,常用于“maximum-margin”的算法,公式如下
l(y)=max(0,1−mi(w))
这个公式也很好理解,其中mi(w)在前面介绍过,表示样本i在模型下的预测值的样本i的类标记{-1,1}的乘积,这个乘积可以用来检验预测与真实结果是否一致来表示分类是否正确,当乘积大于0时表示分类正确,反之亦然。
3) log loss(一般又称为基于最大似然的负log loss)
likelihood=![]()
l(y)=−likelihood
其中
是log函数
最大似然思想指的是使得某种情况发生的概念最大的思想,根据LR的思想(参考这篇文章logistic回归深入篇(1)),我们知道g(w)对应的simod图,其将实域上的值映射到区间{0,1},因此我们可以把g(w)看作事件A发生的概率,那么1-g(w)可以看作事件A不发生的概率,那么公式likelihood表达的含义就很明显了,y也是一个概率值,可以看做是对事件A与A逆的分量配额,当然我们的期望是A发生的可能越大越好,A逆发生的可能越小越好!因此likelihood是一个max的过程,而loss是一个min的过程,因此log loss是负的likelihood。
4)square loss
![]()
这个loss很好理解,就是平方差,loss 一般也成为最小二乘法
5)boosting loss
![]()
这个loss主要是基于指数函数的loss function。
三、几种Loss Function的效果对比
![]()
上图是多LF的效果对比图,其中蓝色的是Gold loss,可以看作水平基线,其他的loss的效果可以基于与它的比较结果,首先,红色的是Hinge loss,黄色的是log loss,绿色的是boosting loss,黑色的是square loss,从上图可以看出以下结论: Hinge,log对于噪音函数不敏感,因为当m<0时,他们的反应不大,而黑线与绿线可能更爱憎分明,尤其是黑线,因此,在很多线性分类问题中,square loss也是很常见的LF之一。
本文版权属作者@eletva所有,转载须注明出处,谢谢
通常而言,损失函数由损失项(loss term)和正则项(regularization term)组成。发现一份不错的介绍资料:
- 对回归问题,常用的有:平方损失(for linear regression),绝对值损失;
- 对分类问题,常用的有:hinge loss(for soft margin SVM),log loss(for logistic regression)。
说明:
- 对hinge loss,又可以细分出hinge loss(或简称L1 loss)和squared hinge loss(或简称L2 loss)。国立台湾大学的Chih-Jen Lin老师发布的Liblinear就实现了这2种hinge loss。L1 loss和L2 loss与下面的regularization是不同的,注意区分开。
- 常用的有L1-regularization和L2-regularization。上面列的那个资料对此还有详细的总结。
- Liblinear地址:http://www.csie.ntu.edu.tw/~cjlin/liblinear/
[machine learning] Loss Function view的更多相关文章
- 【转】Loss Function View
感谢原文作者!原文地址:http://eletva.com/tower/?p=186 一.Loss Function 什么是Loss Function?wiki上有一句解释我觉得很到位,引用一下:Th ...
- 白话machine learning之Loss Function
转载自:http://eletva.com/tower/?p=186 有关Loss Function(LF),只想说,终于写了 一.Loss Function 什么是Loss Function?wik ...
- [Machine Learning] 浅谈LR算法的Cost Function
了解LR的同学们都知道,LR采用了最小化交叉熵或者最大化似然估计函数来作为Cost Function,那有个很有意思的问题来了,为什么我们不用更加简单熟悉的最小化平方误差函数(MSE)呢? 我个人理解 ...
- Machine Learning/Introducing Logistic Function
Machine Learning/Introducing Logistic Function 打算写点关于Machine Learning的东西, 正好也在cnBlogs上新开了这个博客, 也就更新在 ...
- machine learning(11) -- classification: advanced optimization 去求cost function最小值的方法
其它的比gradient descent快, 在某些场合得到广泛应用的求cost function的最小值的方法 when have a large machine learning problem, ...
- 【机器学习Machine Learning】资料大全
昨天总结了深度学习的资料,今天把机器学习的资料也总结一下(友情提示:有些网站需要"科学上网"^_^) 推荐几本好书: 1.Pattern Recognition and Machi ...
- A Gentle Introduction to the Gradient Boosting Algorithm for Machine Learning
A Gentle Introduction to the Gradient Boosting Algorithm for Machine Learning by Jason Brownlee on S ...
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料【转】
转自:机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一 ...
- How do I learn mathematics for machine learning?
https://www.quora.com/How-do-I-learn-mathematics-for-machine-learning How do I learn mathematics f ...
随机推荐
- ASP.NET网站前端页面的复制
网络普及的时代,遇到问题的首要解决方案并不是问人,而是找度娘.当我们找一些技术性的问题时,会发现很多解决方案在博客里,看看博主发表的博客总是惊叹不已,想要自己也有这么一个好习惯,把学到的东西以自己的方 ...
- 原生JS面向对象思想封装轮播图组件
原生JS面向对象思想封装轮播图组件 在前端页面开发过程中,页面中的轮播图特效很常见,因此我就想封装一个自己的原生JS的轮播图组件.有了这个需求就开始着手准备了,代码当然是以简洁为目标,轮播图的各个功能 ...
- Unity3D设置字体颜色大小,用于游戏分数显示设置等,
最近在学unity3d,慢慢的学会了许多unity的东西,今天记录下unity3d的Label字体大小及颜色的代码,下面是显示游戏中分数的代码,, public static int Score = ...
- 7.JAVA_SE复习(文件)
文件和流 1.什么是节点流和处理流 InputStream & OutputStream Reader & Writer 乃节点流, 前面加File之类的名词 的节点流 其余加动词的均 ...
- 基于MRG_MyISAM引擎的Mysql分表
正常情况下的分表,都是直接创建多个相同结构的表,比如table_1.table_2...最近碰到一个特殊需求,需要创建一个主表,所有分表的数据增删改查,全部自动实时更新到主表,这个时候可以使用MRG_ ...
- CSS 中的 em单位
em的对应的像素值如何计算,一言以蔽之:em就是倍数当前元素font-size的倍数,其结果就是当前字体的像素值乘以em的值,至于font-size来自何处?有两个来源:继承自父元素和通过CSS直接设 ...
- 直接下载完整chrome浏览器的方法
目前通过下吗的链接可以获得独立的安装包. http://www.google.com/chrome/eula.html?standalone=1&hl=zh-CN
- python自定义线程池
关于python的多线程,由与GIL的存在被广大群主所诟病,说python的多线程不是真正的多线程.但多线程处理IO密集的任务效率还是可以杠杠的. 我实现的这个线程池其实是根据银角的思路来实现的. 主 ...
- C++ STL中迭代器失效的问题
my_container.erase(iter); 其中my_container是STL的某种容器,iter是指向这个容器中某个元素的迭代器.如果不是在for,while循环中,这种方式删除元素没有问 ...
- 拓展:return和print的使用时机
拓展:return和print的使用时机 一直纠结函数里的return用法.以下内容摘自百度知道..def 是用来定义函数的一个关键字,只有在函数的定义时用到他.Python 函数定义的语法:def ...