8

损失函数漫谈

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MTEwNTM0ODI0MQ%3D%3D&%3Bmid=2653455932&%3Bidx=1&%3Bsn=3ff98659ba79a6df780c8cc3aa749fe9
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

作者: tobynzhang   腾讯PCG算法工程师

| 导语    关于各类损失函数的由来,很多地方,如简书、知乎都有相关文章。 但是很少看到统一成一个体系的阐述,基本都是对一些公式的讲解。 实际上这一系列的损失函数都是有一整套数学体系的,可以互相推导互相转化的。 作者特地做了一些整理,水平有限,方便读者查阅。 水平有限,大佬勿喷,感激不尽~

一、概述

各类有监督算法的本质其实都是在于:用样本观察值去估计随机事件的实际分布。举个例子,推荐算法,其实就是使用观察到的用户行为,如点击行为,去估计用户点击这个随机事件的实际分布。通过估计出来的分布去预测用户下一次点击的概率。

概率分布估计过程就是各类损失函数的来源。对未知事件的分布进行各种假设,从而衍生出了不同的损失函数。

二、同分布评估

要想估计随机事件的实际分布,首先就需要定义两个分布之间的衡量方式,也就是如何定义两个分布之间的差异?这其实是一件非常麻烦的事情,要详细阐述这个问题的解决过程需要查阅很多资料,一篇文章的篇幅是写不完的。

感谢伟大的信息论之父香侬,这些麻烦的事情都可以统一在信息论的框架下,用概率论相关的原理进行推导和研究。所以我们下面直接使用相关的理论进行推演,而这些理论的来源感兴趣的读者可以查阅相关文献。

2.1 KL散度

KL散度又称相对信息熵,可以用来衡量两个分布之间的信息增益。

假设存在分布P和分布Q,分布P相对于分布Q具有的信息增益可以用下列式子表达

此处应注意:  yyMj22u.png!mobile

2.2 交叉熵

此处有长得比较帅的读者就注意到了,KL散度和交叉熵公式长得很像, 他们是否有联系呢?

是的,交叉熵(cross-entropy)和 KL 散度联系很密切,以下以离散分布举例,对于连续分布是一样的。

交叉熵为:

iiIVb27.png!mobile

KL散度推导:

FriYR3q.png!mobile

H§是自信息,对于一个给定的分布而言,这是个常数。所以,在实际使用中,优化交叉熵实际就是优化KL散度。

在实际使用中,我们要衡量的是:对于给定的输入X,预测的分布和实际分布的差异。并希望优化这个差异,是的预测的分布和实际分布尽可能分布,用数学语言表示如下。

jQVRBzu.png!mobile

公式里的N是N个分类,P(y|X)是离散分布。一般来说,对于一个确定的输入,y(即label)是确定的,也即P(y=target|X) = 1, P(y=other|X) = 0。简单的说, 就是对于正确分类,p(y)=1,否则p(y) = 0。此时就是常见的从最大化似然函数推导出来的形式。

应该注意的是交叉熵里,log前的那一项是不该理解为label的,只是对于互斥的多分类而言,这个值恰巧和label一样而已。举个例子,对于二分类的交叉熵:

2IRNV3Q.png!mobile

这个式子里的y 和(1- y)应该是概率,即在输入X的情况下,标签label=1的概率和label=0的概率。只是恰巧label也是1和0,看起来像是label而已。

三、参数估计

有了衡量两个分布的概率,那问题自然就来了。用什么参数才能使我们你和出来的分布尽可能地接近实际分布呢?这就是参数估计。常见的有矩估计、最大似然估计、贝叶斯估计等。其中和我们今天主旨最接近的是最大似然估计。

最大似然估计和最小KL散度估计是对偶问题(一般意义上,此处不讨论严格的数学约束条件)。以下是证明。

最大似然可以有如下推导。

对于一系列抽样,希望从观察值中推断隐藏的参数,将n个独立样本的概率表示如下:

ZzYjYj.png!mobile

为使系统达到最优,我们应挑选参数\theta使得P是最大的。对于连乘形式,在运算过程中容易出现数值极值,取其对数进行研究,最后该问题可描述为:

R3Yzua3.png!mobile

n个独立样本是从实际分布P里抽样出来的,它可以看做是对原始分布的一个抽样近似

MjuuIfF.png!mobile

同样的,考察最小化KL散度:

V7FBVrZ.png!mobile

这个形式和最大化似然是一样的。最大化似然可以看做是通过抽样的形式,用样本进行最小化KL散度估计。

四、损失函数由来

通过以上的阐述,可以看到,无论是最大化似然还是最小化交叉熵,其实都可以统一在最小化KL散度这个框架下。通过这两种方法推导出来的损失函数,其实都是对原始分布P进行一定的假设的前提下推导出来的。互相之间是可以转化的。

4.1 二分类交叉熵

交叉熵函数如下:

jQVRBzu.png!mobile

当分类数N=2时,可以这样写:

eyIBBju.png!mobile

由于只有两个分类,那么由 P(i=1) + P(i=2) = 1,可以对上式做进一步简化。

模型输出一个在[0,1]之间的值(sigmoid激活)表示第一个分类P(i=1)的概率(就是label=1的概率),则第二个分类P(i=2)的概率(就是label=0的概率)就是 1 - P(i=1)。此处应注意,分类的类别号和label的区别。0-1分布准确的说法是,二分布,第一个分类标签是0,第二个标签是1。

这样就可以简化成

2IRNV3Q.png!mobile

由于两个分类的互斥性,这时只需要一个输出就可以计算出两个分类的概率。

4.2 多分类交叉熵

对于多分类

交叉熵函数如下:

jQVRBzu.png!mobile

一般模型是同时输出N个结果,经过softmax后作为P(yi|X)的概率。

值得注意的是,当N=2时,这两种操作是等效的:

  1. 输出两个值,经过softmax操作后分别作为y=1和y=0的概率,计算交叉熵;

  2. 输出一个值,经过sigmoid操作后,作为y_{i=1}的概率,y=0的概率通过1-y_{i=1}计算得到,然后用这两个概率值计算交叉熵;

2操作其实是1操作的简化方案。

4.3 最大化均方误差

假设当数据分布服从高斯分布时,最大化似然函数有以下推导过程:

假定数据分布服从 QBNz6nr.png!mobile

方差一定,需要通过最大化似然去估计这个高斯分布的参数。

条件对数似然如下:

u6Znm2J.png!mobile

可以看到,最大化似然函数,其实就是最小化均方误差mse

NnqqeaR.png!mobile

可以看出,这就是我们常见的mse loss的由来。它的准确表示应该是:

当误差分布服从高斯分布时,通过抽样的方法近似的最小化KL散度,获得输出均值的模型参数。

也就是说,以下几种说法是等价的:

  1. mse估计是误差服从连续高斯分布时,最大化似然估计,获得输出均值的模型参数。

  2. mse估计是误差服从连续高斯分布时,以抽样的形式估计的最小化KL散度,获得输出均值的模型参数。

  3. mse估计是误差服从连续高斯分布时,以抽样的形式估计的最大化交叉熵,获得输出均值的模型参数。

值得注意的是,对于表述3。大部分人只使用了离散形式的交叉熵,实际上交叉熵是衡量两个分布之间的信息差的,是可以应用在连续分布中的。

近期热文

YrUzqeu.jpg!mobile

浅谈SWOT分析法

YfmUbyN.jpg!mobile

《QQ炫舞》十二年成熟游戏的求变思新之路

Rf6FfyA.jpg!mobile

基于Scrapy的爬虫解决方案

iqQFna3.jpg!mobile

让我知道你在看


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK