【学习笔记】ML的核心-Loss Functions!

2019-01-28  本文已影响0人  野生小熊猫

我写这篇很大的原因是因为感觉对各种Loss Functions掌握的不够。经我各种翻阅和调查99%的博客都只告诉你这些个Loss Function是什么,在什么模型下用,他们却不告诉你为什么,怎么来的。(我不会告诉你我是因为被阿里的面试官问了一堆Loss Function问成了个扑街仔才写这篇文章的orz)

希望对大家有所帮助!

0. 本篇大纲

  1. Loss Function的定义

  2. Regression与Classification对Loss Function的选择

  3. Regression中各种Loss Function的选择

  4. Classification中各种Loss Function的选择

  5. Credit

1. Loss Function定义

What it is?
Why important?

2. Regression与Classification对Loss Function的选择

Main Reasons(万变不离其宗的理由): Loss Function(损失函数)是用来计算模型h(x)的预测值和(训练集中的)真实值y的不一致程度。(重要的事情重复三遍X1)

1. Regression:

How to choose Loss for Regression?
1.png

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.png

2. Classification:

How to choose Loss for Classification?
3.png 3.1.png

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,我们就可以很好的找出最能够最好拟合一条符合真实值分布的线。

4.png

3. Regression VS Classification

Why MAE or MSE can not be used in Classification?
5.png

(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?
6.png

(credit: 吴恩达 机器学习课程的某页PPT)

正如上图,如果在Classification中使用MAE,它的Loss Function是非凹(convex)的,但在Classification中使用Log Regression,它的Loss Function是convex的。(具体证明可以用Loss Function的二阶导恒大于等于0证明,大家可以上网搜一下)

What if I used Hinge Loss in Regression?
7.png

当我们对Regression使用Hinge Loss:

如果全局仅仅只用y=1的这半边Hinge Loss,那么这个模型对<1的点是0容忍,>1的点是全部容忍,那么最终当Loss Function=0时,就会导致所有的点都在同一边。

如果用了y=1和y=0两边的Hinge Loss,那么对分类对且距离大于1的点是容忍的,对其他的不容忍,这就会导致迭代到最后所有点离那条线就会太远,这条线就不能很好的拟合所有的点,不是一个很好的Regression的线,而是变成一条分类的线了。

8.png

3.Loss Function in Regression

(未完待续)

4. Loss Function in Classification

Classification中经典的Loss Functions大致有5种:

  1. Log Loss(Logist Regressionn)

  2. Focal Loss

  3. KL Divergence/Relative Entropy

  4. Exponential Loss(AdaBoost)

  5. 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)的时候分为另一类。

41.png

同图上,我们对h(x)可以这样认为:h(x)代表的意义是在0和x给定的这个条件下,y取得1的概率,当h(x)>0.5时,分类为1,h(x)<0.5,分类为0。

由此我们可以通过条件概率的特有的属性,通过求Maximum Likelihood Estimation来求得可以使得所见到的训练数据出现概率最大。然后log化,通过log函数特有的性质,使连乘变成连加。

42.png 43.png

这就是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时)。

44.png

而它的loss function就是将这些cost function连加起来。

45.png

(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我没有很深入的了解,如果以后对其了解加深,可能会多写一些!)

46.png

它的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

上一篇 下一篇

猜你喜欢

热点阅读