北大旁听 - Loss Function

深入学习 Loss Function。

1. 想法

由于有朋友在北大,很高兴能蹭到深度学习的课程,李戈教授的课程十分精彩,比起只会念PPT的老师,他的教学就像在堆积知识的金字塔。

2. Loss Function

2.1 经典统计 vs 深度学习 vs 贝叶斯统计

概率论分为两大学派,贝叶斯学派认为先验知识很重要,而经典统计学派就是纯粹的看统计信息。

现在的深度学习最大的优点就是在数据拟合上表现非常好,但最大的缺点就是它的不可解释性

在一篇论文:Deep Learning: A Bayesian Perspective 中提到,目前深度学习算法取得好效果的主要原因归功于ReLU、learning_rate、Dropout

实际上先验知识只是以网络的模型结构的方式呈现的(包括Loss Function的设计等)。

2.2 最大似然估计

其实目前大部分使用的损失函数都是以最大似然原理为核心而设计的。

深度学习的核心问题就是让网络产生的数据分布尽可能贴近样本分布,所以极大似然原理就很自然的用在了深度学习上。

最大似然估计

而要评判分布的“差别”,首先需要可以评判分布的指标,而这个指标就是香农的信息熵

信息熵

有了评价指标后,我们还不急着对比,因为要计算信息熵,需要知道样本的真实分布和概率密度。在计算模型分布的信息熵时,此时就不叫信息熵了,而称为交叉熵

交叉熵

根据Gibbs不等式,有:E(P, Q) >= E(P),其实很好解释,用模拟出来的概率密度去计算真实分布的信息熵,肯定是比较混乱的(相对于真实概率密度计算真实分布的信息熵)。

有了交叉熵和原分布的信息熵后,我们做差,就能得到相对熵(又称KL散度),这也就是所谓的cross-entropy(而不是大家常见的1-log(x))。

Many authors use the term “cross-entropy” to identify specifically the negative log-likelihood of a Bernoulli or softmax distribution, but that is a misnomer.

相对熵

终于,我们得到了相对熵,可以评判分布的“差别”后,我们就可以用一个视角来看Loss Function:

  • Loss Function 用于计算模型输出数据与样本数据之间的“差别”。
  • Loss Function 体现了人们对这种“差别”进行度量时所依赖的先验知识。
  • 几种常见的“差别”度量方法
    • 个体模型结果与样本数据之间的“距离”。
    • 多个模型结果与样本数据之间存在数据分布上的差别。
    • 通过分析”统计距离“(Statistical Distance)来设计Loss。

好了,让我们回到最大似然原理上,为了让模型分布尽可能贴近样本分布,那么我们要解决的问题就是最小化KL散度

最小化KL散度

由于真实样本分布是已经确定的值,而我们能改变的就是pmodel(x)中的权值(也就是神经网络的weights),所以我们将问题简化为最小化(6),简写为:

简写形式

2.3 基于上述原则推导MSE的合理性

MSE损失大家一定都知道,但是它是怎么来的呢?为什么要以这个形式出现呢?其实它是有一个非常严格的使用条件的:

由于模型的输出和真实数据的分布一定会有偏差,那么只有假设当这个偏差符合正态分布时,才可以推导出MSE的形式,具体如下:

MSE推导1

得出了概率密度分布函数后,将其带入最大似然原理中,再取对数,就可以得到MSE的标准形式了:

MSE推导2

那么这里又出现了一个问题,为什么要让偏差符合正态分布呢?

其实这是由以下两条理论得出的:

  • 同分布中心极限定理:n个独立同分布的随机变量之和,服从正态分布。
  • 非同分布的李雅普诺夫定理:大量随机因素叠加的结果,近似服从正态分布。

有了这已经证明的两条理论,才可以基于正态分布,得出MSE的标准形式。

同理,我们可以很容易的得到交叉熵(这里不是真的交叉熵,只是大家都习惯这么叫它了)、softmax的一般形式的证明:

伯努利分布
伯努利分布2
多项分布
多项分布2
多项分布3

2.4 总结

终于,我们说完了现代常用的损失函数是怎么得到的了。来一个简单的总结:

一切的起源都是最大似然原理,为了衡量模型分布和真实分布的差异,我们从信息熵中得到了KL散度。于是我们将基于正态分布的偏差假设(MSE)、伯努利分布、多项分布代入最大似然原理,得到了我们现在常见的Loss Function(MSE、CrossEntropyLoss、Softmax)。

所以这里有很重要的一点,不要盲目地使用交叉熵!你要注意的是你的数据分布,如果它不符合正态分布假设,那么你很可能就需要重新设计Loss Function了,那我们该如何做呢?

其实KL散度有它的缺点,比如它不符合距离的定义(不对称)

KL散度缺点

于是乎,你需要自己寻找衡量数据分布的散度(Divergence)

Divergence
Comprehensive Survey on Distance/Similarity Measures Between Probability Density Functions, 2007

然后根据散度重新你的设计Loss Function。

至此,关于Loss Function的内容就告一段落了,其实讲到最后,以我的数学水平实在达不到这个境界,所以到后面的概念如果讲的不太清楚,请各位读者谅解了。