[机器学习] 深入理解 目标函数,损失函数和代价函数

目标函数,损失函数和代价函数

基本概念:

损失函数:计算的是一个样本的误差

代价函数:是整个训练集上所有样本误差的平均

目标函数:代价函数 + 正则化项

通常机器学习每一个算法中都会有一个目标函数,算法的求解过程是通过对这个目标函数优化的过程。在分类或者回归问题中,通常使用损失函数(代价函数)作为其目标函数。损失函数用来评价模型的预测值和真实值不一样的程度,损失函数越好,通常模型的性能越好。不同的算法使用的损失函数不一样。

实际应用:

损失函数和代价函数是同一个东西,目标函数是一个与他们相关但更广的概念,举例说明:

我们给定x,这三个函数都会输出一个f(X),这个输出的f(X)与真实值Y可能是相同的,也可能是不同的,为了表示我们拟合的好坏,我们就用一个函数来度量拟合的程度。这个函数就称为损失函数(loss function),或者叫代价函数(cost function)。

损失函数越小,就代表模型拟合的越好。那是不是我们的目标就只是让loss function越小越好呢?还不是。这个时候还有一个概念叫风险函数(risk function)。风险函数是损失函数的期望,这是由于我们输入输出的(X,Y)遵循一个联合分布,但是这个联合分布是未知的,所以无法计算。但是我们是有历史数据的,就是我们的训练集,f(X)关于训练集的平均损失称作经验风险(empirical risk),所以我们的目标就是最小化经验风险。

 

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

过拟合(over-fitting)。为什么会造成这种结果?大白话说就是它的函数太复杂了,都有四次方了,这就引出了下面的概念,我们不仅要让经验风险最小化,还要让结构风险最小化。

这个时候就定义了一个函数J(f),这个函数专门用来度量模型的复杂度,在机器学习中也叫正则化(regularization)。常用的有L1, L2范数。到这一步我们就可以说我们最终的优化函数是: 

$$\theta^* = \arg \min_\theta \frac{1}{N}{}\sum_{i=1}^{N} L(y_i, f(x_i; \theta) + \lambda\  \Phi(\theta)$$

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

即最优化经验风险和结构风险,而这个函数就被称为目标函数

 

 

常用损失函数

常见的损失误差有五种:
1.  铰链损失(Hinge Loss):主要用于支持向量机(SVM) 中;
2. 交叉熵损失 (Cross Entropy Loss,Softmax Loss ):用于Logistic 回归与Softmax 分类中;
3. 平方损失(Square Loss):主要是最小二乘法(OLS)中;
4. 指数损失(Exponential Loss) :主要用于Adaboost 集成学习算法中;
5. 其他损失(如0-1损失,绝对值损失)

 

1 平方误差损失函数

最小二乘法是线性回归的一种方法,它将回归的问题转化为了凸优化的问题。最小二乘法的基本原则是:最优拟合曲线应该使得所有点到回归直线的距离和最小。通常用欧几里得距离进行距离的度量。平方损失的损失函数为:

 

1

损失函数:


分类实例:

 

2

优点:容易优化(一阶导数连续)

缺点:对outlier点很敏感(因为惩罚是指数增长的,左图的两个outlier将分类面强行拉到左边,得不到最优的分类面)

 

2 Logit损失函数(Logistic 回归)

逻辑斯特回归的损失函数就是对数损失函数,在逻辑斯特回归的推导中,它假设样本服从伯努利分布(0-1)分布,然后求得满足该分布的似然函数,接着用对数求极值。逻辑斯特回归并没有求对数似然函数的最大值,而是把极大化当做一个思想,进而推导它的风险函数为最小化的负的似然函数。从损失函数的角度上,它就成为了log损失函数。

5

损失函数:


优点:稳定的分类面,严格凸,且二阶导数连续

 

3 Hinge损失函数(SVM)

6

minJ(w)=1n∑i=1nH(yif(xi,w)),whereH(t)={−t+10t<1t≥0


优点:稳定的分类面,凸函数。对分对的但又不是很对的样本也进行惩罚(0-1之间),可以极大化分类间隔。

 

【问题】为什么不能用回归的损失函数来处理分类的问题

例子:

7

上例中,红圈中的样本是被正确分类了,但是回归损失函数还是会惩罚它们,而按照分类的观点是不应该惩罚的。

分类 != 回归

特例:1998年LeCun LeNet5 和 2016年的YOLO用回归解决分类问题,是因为它们的特征特别强。

 

4. 指数损失函数

AdaBoost就是一指数损失函数为损失函数的。
指数损失函数的标准形式:

 

5 感知机损失函数(L1 margin cost)

 

3

损失函数:

minJ(w)=1n∑i=1nH(yif(xi,w)),whereH(t)={−t0t<0t≥0


在t=0处不连续,所以不可导,但是可以求次梯度(导数)

 

4

优点:稳定的分类面,次梯度可导

缺点:二阶不可导,有时候不存在唯一解

 

5 两种正则化方法

8

L1正则化假设了模型的先验概率分布服从拉普拉斯分布;L2正则化假设了模型的先验概率分布服从高斯分布。

【问题】什么样的损失函数是好的损失函数?

有明确的极大似然/后验概率解释,如果不满足,则满足以下几条:

minJ(w)=1n∑i=1nH(yif(xi,w))+Ω(w)

 

  • H(t)
  • 梯度需要有界,鲁棒性保障(反例:AdaBoost)
  • 将L1作为H(t)的渐近线,稳定的分类边界(L1满足最小误分样本数)
  • 大分类间隔,保障泛化性能
  • 选择正确的正则化方式(一般默认L2)

9

Reference

1 次导数 次梯度 小结
http://blog.csdn.net/bitcarmanlee/article/details/51896348

2 集智公开课 https://jizhi.im/course/dl_theory/6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值