「周末AI课堂」理解损失函数(理论篇)机器学习你会遇到的“坑”

szu周南光 2018-09-15

「周末AI课堂」理解损失函数(理论篇)机器学习你会遇到的“坑”

「周末AI课堂」理解损失函数(理论篇)机器学习你会遇到的“坑”

数学准备

  • 连续随机变量的期望:假设X是连续的随机变量,f(X)是其概率密度函数,那么X的期望是:

「周末AI课堂」理解损失函数(理论篇)机器学习你会遇到的“坑”


  • 0-1损失函数:当f(x)=y时,等于1,当f(x)≠y时,等于0。

「周末AI课堂」理解损失函数(理论篇)机器学习你会遇到的“坑”

性能度量与损失函数

机器学习的三要素就是:表示,评估和优化。正如我们在《非参数模型》中提到的:

机器学习分为表示、评估和优化。表示指的是将样本空间映射到一个合适的特征空间,一般地,我们更青睐于这样的表示是低维度的,是更加稀疏交互的,同时也希望是相互独立的。而评估指的是模型在数据上表现的量化形式,我们选取合适的函数来表示什么样子的模型是好的,性能度量就是评估。在前两步都完成了以后,最后要做的就是优化,就是对评估函数进行求解,找出最合适的解,来确定最终的模型。

所谓的性能度量(performance measure)就是关于真实值和预测值的关系,真实值与预测值越接近,或者说真实的分布与预测分布越接近,性能越好。对于回归问题,我们可以选用均方误差(mean squared error),绝对误差(absolute Loss),决定系数(coefficient of determination )以及Huber Loss来度量模型的性能,对于分类问题,我们可以用准确率,错误率,或者得到混淆矩阵,进一步得到查准率(precision)、查全率(recall)以及P-R曲线和ROC曲线。

我们可以很容易想到,损失函数(Loss function)也是这样一回事情,真实值与预测值差别越大,Loss越大,我们的优化的目标就是减小Loss。从评估的角度来说,损失函数和性能度量所起到的作用是相同的,那么我们为什么既要有损失函数,也有要性能评估呢?事实上,常见的均方误差:

「周末AI课堂」理解损失函数(理论篇)机器学习你会遇到的“坑”

既可以被当作性能度量,同时也是回归问题的损失函数。但在更多的问题中,我们会发现,我们往往会为了减小模型的错误率,并不直接优化错误率,而是会优化另一个函数,比如在logistic回归中,我们会优化对数似然,在SVM中,我们会优化hinge loss,在adaboost中会优化指数损失。

「周末AI课堂」理解损失函数(理论篇)机器学习你会遇到的“坑”

期望风险与经验风险

以二分类问题为例,我们的错误率,也就是0-1损失函数,可以定义为:

「周末AI课堂」理解损失函数(理论篇)机器学习你会遇到的“坑”

如果我们的模型f携带参数θ,那么我们的任务可以是找到最佳的θ:

「周末AI课堂」理解损失函数(理论篇)机器学习你会遇到的“坑”

但这样的函数并不是连续的,因为参数的变化会反映到错误率上,而错误率的变化不可能是连续的,当我们预测对样本每增加一个,错误率就会跃变1/m,如果我们采用梯度下降或者牛顿法去优化,就会利用到它的一阶导数甚至二阶导数,会发现导数根本不存在。

所以损失函数一定要是连续的,这是寻找损失函数的第一个条件。此外,根本性的问题在于,我们想优化的根本不是经验风险,所谓的经验风险,如同上式,是定义在训练集上的样本上损失;我们真正想优化的是期望风险,定义在全部样本(包含测试集)的损失,用期望来表示:

「周末AI课堂」理解损失函数(理论篇)机器学习你会遇到的“坑”

将其拆开就是:

「周末AI课堂」理解损失函数(理论篇)机器学习你会遇到的“坑”

但是概率分布P(x,y)未知的话,我们连期望风险都无法计算,更无法将其最小化。但我们使用的数据越多,根据大数定律,期望风险也就越接近于经验风险,注意到,我们的联合分布还可以写为:

「周末AI课堂」理解损失函数(理论篇)机器学习你会遇到的“坑”

联合分布可以被拆为先验概率和条件概率。但是当我们可以假设模型的概率分布时,比如线性回归假设了高斯分布,logistic回归假设了伯努利分布,我们就可以利用极大似然估计来逼近期望风险,这也叫做一致性(consistency ),这个是我们寻找损失的函数第二个条件。

如果是连续的凸函数,在0处可导,且导数小于零,就具备与0-1损失函数的一致性,我们把这些损失函数叫做替代损失(Surrogate loss),值得注意的是,这是我们选用凸函数的最重要的原因,虽然凸函数具备局部最小值就是全局最小值的性质,但主要是为了计算上的便利,而非本质意义上的。

「周末AI课堂」理解损失函数(理论篇)机器学习你会遇到的“坑”

如图,除去Perceptron Loss(我们会在后续的深度学习中讲解),其余的Loss function均可以给出0-1损失的上界,也就是说,在优化替代损失的时候,也就优化了原本的损失函数。

「周末AI课堂」理解损失函数(理论篇)机器学习你会遇到的“坑”

结构风险与正则化

我们在《贝叶斯的回归模型》中曾经把岭回归的正则化项归结于高斯先验,把LASSO的正则化项归结于拉普拉斯先验,那么从损失函数的构造角度来看,所谓正则化项,描述的其实是模型的复杂度,模型的复杂度越高,过拟合的风险也就越大,所谓的结构风险就是指模型本身结构的复杂度。添加结构风险的Loss Function一般形式就是:

「周末AI课堂」理解损失函数(理论篇)机器学习你会遇到的“坑”

结构风险加上经验风险,是在数据量有限的情况下,为了更好的近似期望风险的策略,这一策略的本质意义是,是希望在模型拟合数据能力和复杂度之间取得平衡,拟合数据相同的模型,我们偏向于复杂度低的模型,复杂度相同的模型,我们偏向于拟合得好的模型。虽然我们早就知道了正则化,但从这样的思路去理解正则话会使得我们在神经网络这样解释能力极差的模型中,也可以添加相应对连接权重的正则化项:

「周末AI课堂」理解损失函数(理论篇)机器学习你会遇到的“坑”

「周末AI课堂」理解损失函数(理论篇)机器学习你会遇到的“坑”

读芯君开扒

课堂TIPS

• 有人认为,凸函数在统计学习中最好的性质就是局部最优即全局最优,这样算法就不用担心其会陷入局部最优而非全局最优,但在神经网络这样极其复杂的参数空间中,我们有充足的理由不去过分担心全局最优的问题。从这个意义上来说,寻找一致性的连续的损失函数才是最关键的问题。

• 对于某些模型,结构风险天然就被包含在了模型之中,比如SVM,它的结构风险项是划分超平面间隔的大小。

• 有的人认为,什么模型就只能用什么损失函数,因为其他的损失函数,书上没有讲过,这样的看法是片面的,logistic回归这样一种广义的线性模型也可以用平方损失函数,只是平方损失并不会满足一致性,得到的结果无法改善原来的损失。

「周末AI课堂」理解损失函数(理论篇)机器学习你会遇到的“坑”

留言 点赞 发个朋友圈

我们一起探讨AI落地的最后一公里

作者:唐僧不用海飞丝

如需转载,请后台留言,遵守转载规范

相关推荐