吴恩达深度学习 2.3 损失函数

笔记

相关函数定义介绍

代价函数和损失函数

损失函数(Loss/error function)是定义在单个训练样本上的,即一个样本的误差。
代价函数(Cost function)是定义在整个训练集上面的,对所有样本的误差的总和求平均值。

但由于实质相同,都是事先定义一个假设函数,通过训练集由算法找出一个最优拟合,即使得函数值最小(如通过梯度下降法),从而估计出假设函数的参数。所以往往我所看到的大多将代价函数和损失函数视为同一东西,下文就不给予区分,以损失函数来讲。(求和除以样本数的为代价函数,否则为损失函数)

损失函数

损失函数(loss function)是用来估量模型的预测值f(x)与真实值Y的不一致程度,即度量拟合程度。它是一个非负实值函数,通常使用 L(Y, f(X)) 来表示,损失函数越小,模型的拟合越好,鲁棒性越好。

但是并不是损失函数越小,结果就越好。

风险函数

风险函数(risk function)是损失函数的期望,这是由于我们输入输出的(X,Y)遵循一个联合分布,但是这个联合分布是未知的,所以无法计算。但是我们是有历史数据的,就是我们的训练集, 关于训练集的平均损失称作经验风险(empirical risk),通常可以表示成如下式子:
吴恩达深度学习 2.3 损失函数
我们的目标就是最小化经验风险,称为经验风险最小化。

但仅此还是不够,过度学习历史数据,会导致在真正预测时效果会很不好,这种情况称为过拟合(over-fitting)

过拟合

过拟合是指为了得到一致假设而使假设变得过度严格,简单来说就是训练出来的模型在训练集上表现很好,但是在测试集上表现较差的一种现象。避免过拟合是分类器设计中的一个核心任务。

主要原因:
(1)数据有噪声
(2)训练数据不足,有限的训练数据
(3)训练模型过度导致模型非常复杂

简单来讲,排开训练数据不足的原因,结合(1)(3)两点,即当我们在训练数据训练的时候,如果训练过度,模型复杂,导致完全拟合了训练数据的话,得到的模型不一定是可靠的。
例如在有噪声的训练数据中,我们要是训练过度,会让模型学习到噪声的特征,会造成在没有噪声的真实测试集上准确率下降。

避免过拟合有两种方案:
(1)减少选取变量的数量
(2)保留所有特征变量,但减少特征变量的数量级,即正则化

为了避免过拟合,不仅要让经验风险最小化,还要让结构风险最小化这个时候就定义了一个函数 J(f) ,这个函数专门用来度量模型的复杂度,在机器学习中也叫正则化(regularization)

正则化

正则化方法是在训练数据不够多时,或者over training时,常常会导致过拟合(overfitting)。 这时向原始模型引入额外信息,以便防止过拟合和提高模型泛化性能的一类方法的统称。

引例吴恩达深度学习 2.3 损失函数

可见,更高次的多项式能很好拟合训练集,但由于过度拟合了数据,并不是一个好的结果。于是考虑下面假设,加上惩罚项,从而使θ3\theta_{3}θ4\theta_{4}足够的小。
吴恩达深度学习 2.3 损失函数
现在,对函数添加一些惩罚项,假设为1000θ321000{\theta_{3}}^{2}1000θ421000{\theta_{4}}^{2}两项。为了最小化这个新的代价函数,我们要让θ3\theta_{3}θ4\theta_{4}尽可能小。因为,如果在原有代价函数的基础上加上 1000 乘以θ3\theta_{3}这一项 ,那么这个新的代价函数将变得很大。所以,当我们最小化这个新的代价函数时, 如果我们能使得θ3\theta_{3}θ4\theta_{4}接近 0 ,那么我们将得到一个近似的二次函数。如此,我们最终恰当地拟合了数据,我们所使用的正是二次函数加上一些非常小,贡献很小的项(因为这些项的θ3\theta_{3}θ4\theta_{4} 非常接近于0)。显然,这是一个更好的假设。

正则化

在实际应用中,特征可能有上百种,且并不知道参数所对应的多项式的项,无法选择关联度更好的参数或者缩小参数的数目等。

因此在正则化里,就需要减少代价函数所有的参数值。为此我们增加一个额外的正则化项来收缩每个参数:
吴恩达深度学习 2.3 损失函数
(由于没有去惩罚θ0\theta_{0}θ0\theta_{0}的值是大的。这就是一个约定从 1 到 n 的求和,而不是从 0 到 n 的求和。但其实在实践中这只会有非常小的差异,无论你是否包括这θ0\theta_{0}这项。但是按照惯例,通常情况下还是只从θ1\theta_{1}θn\theta_{n}进行正则化。)

正则化综述来讲,就是对函数添加惩罚项,减小代价函数所有的参数值,收缩每个参数。

正则化参数

λ\lambda成为正则化参数,控制 更好拟合 和 保持参数值较小 两个目标的平衡关系。从而保持假设的形式相对简单,避免过度拟合。

实际上,这些参数的值越小,通常对应越光滑的函数,也就是更加简单的函数,因此不易发生过拟合的问题。
吴恩达深度学习 2.3 损失函数

但如果λ\lambda设定为非常大,过度惩罚参数,会使所有这些参数接近于零,使假设与θ0\theta_{0}相等,最后得到类似于拟合了一条水平直线,此时对于数据这就是一个欠拟合(underfitting)。
吴恩达深度学习 2.3 损失函数

目标函数

模型的结构风险函数包括了经验风险项和正则项,损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。目标函数是结构风险最小化的最终优化函数,通常可以表示成如下式子:

吴恩达深度学习 2.3 损失函数

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

线性回归和逻辑回归的损失函数

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

最小二乘法是线性回归的一种方法,OLS将问题转化成了一个凸优化问题。在线性回归中,它根据中心极限定理假设样本和噪声都服从高斯分布,最后通过极大似然估计(MLE)可以推导出最小二乘式子。最小二乘的基本原则是:最优拟合直线应该是使各点到回归直线的距离和最小的直线,即平方和最小。换言之,OLS是基于欧几里得距离的。

平方损失(Square loss)的标准形式如下:
L(Y,f(X))=(Yf(X))2L(Y, f(X)) =(Y - f(X))^2

当样本个数为n时,此时的损失函数变为:
L(Y,f(X))=i=1n(Yf(X))2L(Y, f(X)) = \sum _{i=1}^{n}(Y - f(X))^2

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

而在实际应用中,通常会使用均方差(Mean squared error, MSE)作为一项衡量指标,公式如下:
MSE=1ni=1n(Yi^Yi)2MSE=\frac{1}{n} \sum _{i=1}^{n}(\hat{Y_{i}}−Y_{i})^2

补充:通常说的线性有两种情况,一种是因变量y是自变量x的线性函数,一种是因变量y是参数α的线性函数。在机器学习中,通常指的都是后一种情况。

凸优化

凸优化问题是一种特殊的优化问题。
凸优化问题的形式是:吴恩达深度学习 2.3 损失函数

其中f(x)是凸函数,可行域S是凸集。

此外还有个等价形式:吴恩达深度学习 2.3 损失函数

其中f(x)和所有的限制函数gi(x)都必须是凸函数。

凸优化问题有个很好的性质,它的局部最优解一定是全局最优解。

高斯分布

正态分布又名高斯分布,是一个非常常见的连续概率分布。
吴恩达深度学习 2.3 损失函数
中心极限定理是概率论中的一组定理。中心极限定理说明,在适当的条件下,大量相互独立随机变量的均值经适当标准化后依分布收敛于正态分布。

最大似然估计

最大似然估计,就是利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值。这时是求样本所有观测的联合概率最大化,是个连乘积,只要取对数,就变成了线性加总。此时通过对参数求导数,并令一阶导数为零,就可以通过解方程(组),得到最大似然估计值。

最大似然估计推到最小二乘公式:
吴恩达深度学习 2.3 损失函数
由此可见可以通过最大似然估计L(w)L(w)推出最小二乘式子f(w)f(w)

欧几里得距离

在数学中,欧几里得距离或欧几里得度量是欧几里得空间中两点间“普通”(即直线)距离。
在欧几里得空间中,点x =(x1,…,xn)和 y =(y1,…,yn)之间的欧氏距离为

d(x,y):=(x1y1)2+(x2y2)2++(xnyn)2{\displaystyle d(x,y):={\sqrt {(x_{1}-y_{1})^{2}+(x_{2}-y_{2})^{2}+\cdots +(x_{n}-y_{n})^{2}}}}

向量x\vec {x}的自然长度,即该点到原点的距离为

x2=x12++xn2{\displaystyle \|{\vec {x}}\|_{2}={\sqrt {|x_{1}|^{2}+\cdots +|x_{n}|^{2}}}}
它是一个纯数值。在欧几里得度量下,两点之间线段最短。

选择欧几里得距离的原因:

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

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

平方损失函数可以通过线性回归在假设样本是高斯分布的条件下推导得到,而逻辑回归得到的并不是平方损失。同时,在学习这些参数的时候,优化问题会变成非凸的,最后会得到很多局部最优解,用梯度下降法可能找不到全局最优值。
在逻辑回归的推导中,它假设样本服从伯努利分布(0-1分布),然后求得满足该分布的似然函数,接着取对数求极值等等。而逻辑回归并没有求似然函数的极值,而是把极大化当做是一种思想,进而推导出它的经验风险函数为:最小化负的似然函数(即max F(y, f(x)) —> min -F(y, f(x)))。从损失函数的视角来看,它就成了log损失函数了。

log损失函数的标准形式:
L(Y,P(YX))=logP(YX)L(Y,P(Y|X))=−logP(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,下面将表达式分开表示):
吴恩达深度学习 2.3 损失函数

将它带入到上式,通过推导可以得到logistic的损失函数表达式,如下:
吴恩达深度学习 2.3 损失函数
即能够达到效果:如果y=1尽可能让y^\hat{y}足够大;如果y=0尽可能让y^\hat{y}足够小
逻辑回归最后得到的目标式子如下:
吴恩达深度学习 2.3 损失函数
简单来看:
吴恩达深度学习 2.3 损失函数

总结

代价函数越小,预测的结果和真实值越接近,所以训练模型的过程就是优化代价函数的过程。
通过计算损失函数关于w参数的梯度来逐步调整w参数,使损失函数越来越小,达到一个极小值为止,完成模型的训练,参数达到收敛。
吴恩达深度学习 2.3 损失函数

参考资料

机器学习-损失函数
作者:刘帝伟
链接:http://www.csuldw.com/2016/03/26/2016-03-26-loss-function/
来源:个人技术博客

loss function与cost function
作者:Excaliburer
链接:https://www.cnblogs.com/wangkundentisy/p/5935103.html
来源:博客园

机器学习中的目标函数、损失函数、代价函数有什么区别?
作者:zzanswer
链接:https://www.zhihu.com/question/52398145
来源:知乎

大白话解释模型产生过拟合的原因!
作者:忆臻
链接:https://zhuanlan.zhihu.com/p/26122044
来源:知乎

机器学习中常常提到的正则化到底是什么意思?
作者:陶轻松
链接:https://www.zhihu.com/question/20924039
来源:知乎

机器学习之正则化
作者:Acjx
链接:https://www.cnblogs.com/jianxinzhou/p/4083921.html
来源:博客园

什么样的优化问题算是凸优化?
作者:可爱多
链接:http://sofasofa.io/forum_main_post.php?postid=1000369
来源:SofaSofa

最大似然估计和最小二乘法怎么理解?
作者:司马懿、贰君、bsdelf
链接:https://www.zhihu.com/question/20447622
来源:知乎

机器学习算法应用---损失函数
作者:洞若观火
链接:https://zhuanlan.zhihu.com/p/28761075
来源:知乎