我写这篇很大的原因是因为感觉对各种Loss Functions掌握的不够。经我各种翻阅和调查99%的博客都只告诉你这些个Loss Function是什么,在什么模型下用,他们却不告诉你为什么,怎么来的。(我不会告诉你我是因为被阿里的面试官问了一堆Loss Function问成了个扑街仔才写这篇文章的orz)
希望对大家有所帮助!
0. 本篇大纲
Loss Function的定义
Regression与Classification对Loss Function的选择
Regression中各种Loss Function的选择
Classification中各种Loss Function的选择
Credit
1. Loss Function定义
What it is?
- Loss Function(损失函数)是用来计算模型h(x)的预测值和(训练集中的)真实值y的不一致程度。
Why important?
- 在机器学习的各种模型中Loss Function是一个有非凡意义的概念!通过训练使Loss Function的逐渐减小,模型h(x)和(训练集中)真实值y就越接近,模型的bias就越小,我们就能够得到一个和训练集拟合程度越高的模型。(当然拟合过头overfit了,容易扑街= 。=)
2. Regression与Classification对Loss Function的选择
Main Reasons(万变不离其宗的理由): Loss Function(损失函数)是用来计算模型h(x)的预测值和(训练集中的)真实值y的不一致程度。(重要的事情重复三遍X1)
1. Regression:
How to choose Loss for Regression?
Loss Function(损失函数)是用来计算模型h(x)的预测值和(训练集中的)真实值y的不一致程度。(重要的事情重复三遍X2)
所以对于Regression来说,Loss Function是指每个真实值与其线性模型h(x)不一致程度之合。h(x)与真实值越接近,cost越小,h(x)与真实值越远,cost越大。因此我们需要的cost function需要仅在=真实值的时候为0,越远离真实值越大(不论cost function是直的(MAE)还是弯的(MSE))。
通过使用这样的Cost function和Loss Function,我们就可以很好的找出最能够最好拟合一条符合真实值分布的线。
2. Classification:
How to choose Loss for Classification?
Loss Function(损失函数)是用来计算模型h(x)的预测值和(训练集中的)真实值y的不一致程度。**(重要的事情重复三遍X3)
所以对于Classification而言,Loss Function是指每一个真实分类y与其模型对其分类h(x)的不一致程度之和。h(x)分对了类,cost小,h(x)分错了类,cost大。因为我们需要cost function需要在分对类尽可能接近0或者直接等于0(当y=1的时候, h(x)>1的部分,当y=0的时候,h(x)<0的部分),分的不对的时候尽可能大(不论cost function是弯的(Log Loss)还是直的(Hinge Loss))。
通过使用这样的Cost function和Loss Function,我们就可以很好的找出最能够最好拟合一条符合真实值分布的线。
3. Regression VS Classification
Why MAE or MSE can not be used in Classification?
(credit:What are the main reasons not to use MSE as a cost function for Logistic Regression?)
从上面这张图(y=1时各种cost function,x轴为z=θx)中我们很显然可以看出,MSE这个cost function仅在=真实值的时候为0,也就是仅仅在h(x)=1的时候cost=0。当h(x)>1的时候,cost增加了,然而在classification的定义中,h(x)>1的时候仍然是分为1这个类中的。cost根本不需要增加,也不能增加!由此说明MAE和MSE这种Loss Function是不适用于Classification的问题的。
What if I used MSE in Classification?
(credit: 吴恩达 机器学习课程的某页PPT)
正如上图,如果在Classification中使用MAE,它的Loss Function是非凹(convex)的,但在Classification中使用Log Regression,它的Loss Function是convex的。(具体证明可以用Loss Function的二阶导恒大于等于0证明,大家可以上网搜一下)
What if I used Hinge Loss in Regression?
当我们对Regression使用Hinge Loss:
如果全局仅仅只用y=1的这半边Hinge Loss,那么这个模型对<1的点是0容忍,>1的点是全部容忍,那么最终当Loss Function=0时,就会导致所有的点都在同一边。
如果用了y=1和y=0两边的Hinge Loss,那么对分类对且距离大于1的点是容忍的,对其他的不容忍,这就会导致迭代到最后所有点离那条线就会太远,这条线就不能很好的拟合所有的点,不是一个很好的Regression的线,而是变成一条分类的线了。
3.Loss Function in Regression
(未完待续)
4. Loss Function in Classification
Classification中经典的Loss Functions大致有5种:
Log Loss(Logist Regressionn)
Focal Loss
KL Divergence/Relative Entropy
Exponential Loss(AdaBoost)
Hinge Loss(SVM)
本文主要讲Log Loss, Hinge Loss, Exponential Loss这3种Loss Function。
1. Log Loss
Log Loss要从Logistic Regression的基本的intuition讲起。当有一个二分类的问题时,它的思想大致上是把一个线性回归的结果映射到(0,1)这个区间范围。当这个线性回归的结果映射在(0.5,1)分为一类,映射在(0,0.5)的时候分为另一类。
同图上,我们对h(x)可以这样认为:h(x)代表的意义是在0和x给定的这个条件下,y取得1的概率,当h(x)>0.5时,分类为1,h(x)<0.5,分类为0。
由此我们可以通过条件概率的特有的属性,通过求Maximum Likelihood Estimation来求得可以使得所见到的训练数据出现概率最大。然后log化,通过log函数特有的性质,使连乘变成连加。
这就是Log Loss来的思想,总结一下几个点:
1.基本intuition:将线性回归映射到(0,1)区间
2.g/h(x)代表概率,>0.5分到y=1的类,<0.5分到y=0的类
3.通过条件概率特有属性,通过MLE来求得训练数据出现概率最大
4.log化,连乘变连加,得出loss function,也得出每一个点的cost function
2. Hinge Loss
我在做国内的面试的时候经常被面试官考到让我对Logistic Regression和SVM做比较。讲道理来说,Logistic Regression和SVM的分类核心思想是完全不一样的,这就导致了它们的Loss Function的不同。
SVM的核心思想是在几何空间内做一个划分(h(x)),这个h(x)能使其两边的点尽可能有很大的区分度。所以Hinge Loss的每个点的cost function在分对且离线大于一定范围(一般为1)的时候为0,其他时候为cost=z+1(y=1时)或者cost=-z+1(y=-1时)。
而它的loss function就是将这些cost function连加起来。
(SVM的Loss Function不完全是Hinge Loss,之后我会写LR和SVM的比较中会写到。)
总结一下:
1.基本intuition:每个点都要离分类器这条线尽可能远。
2.每个点cost function在分对类且离分类器为1时,cost function等于0,其他时候为yz+1。
3.连加起来得到总体的Loss Function。
3. Exponential Loss
exponential loss一般是用于Adaboost的情况的。(Adaboost我没有很深入的了解,如果以后对其了解加深,可能会多写一些!)
它的loss function是一堆cost function相加,每个cost function都是e的-zi次方。zi是分类器预测值加权和乘上分类器的标签。
总结一下:
1.每个点cost function是e的-zi次方,zi为分类器预测值加权和乘上分类器的标签。
2.连加起来得到的总和为Loss Function。
5. Credit
【深度学习】一文读懂机器学习常用损失函数(Loss Function)
What are the main reasons not to use MSE as a cost function for Logistic Regression?
损失函数(Loss Function) -1
Loss Functions for Regression and Classification
Introduction to Boosting
5 Regression Loss Functions All Machine Learners Should Know