【本文内容是对下面视频的整理和修正】
1.“最大似然估计”为什么又叫“交叉熵”
上一篇文章《 “损失函数”是如何设计出来的?》已经介绍过,损失函数到底是什么,以及它在机器学习中的作用。在其中,我们还介绍了设计损失函数的两种常用方法,一个是“最小二乘法”,一个是“最大似然估计”,而且还介绍了这两种方法某种程度上来说是等价的。
感兴趣的话,可以去看一下。
这一次,我想分享一个我自己在学习是产生的疑问,我估计很多人在学习损失函数的时候都会产生一样的疑问。
下面这个是吴恩达大佬在他的课程里面写出来的最大似然估计法的公式,y是标签值, 是神经网络的估计值。
这个的确是用最大似然估计法写出来的损失函数,但是,只要你对损失函数有了解,就可能见到过,同样的这个公式也叫交叉熵,或者说是最小交叉熵方法。
这就是有疑问的地方了,同样一个东西,为什么既可以叫这个名字,又可以叫那个名字。如果,两个名字相似也就算了,关键是“最大似然估计”和“交叉熵”两个没有丝毫相似的地方,为什么可以表示同一种东西呢?
这就需要搞明白交叉熵到底是什么东西了,等把它搞明白之后,你就会明白,交叉熵和最大似然估计,虽然它们设计损失函数的思路不同,但是它们却是殊途同归,本质上是相同的。
为了能搞明白什么是交叉熵,在这篇文章里,我们将会一起了解如下内容:
- 如何比较两个不同的概率分布?
- 什么是信息量?信息量是如何定义出来的?
- 什么是熵?
- 什么是KL散度(相对熵)和交叉熵?
- 用交叉熵如何设计损失函数?真的和最大似然估计法没有区别吗?
2.熵可以让不同的类型的概率分布实现公度
还是拿分类问题来举例,给了一堆猫狗的照片要把它们正确的分开,猫狗的区别这是有一个客观的规律的。我们上一次也讲过了,这个客观的规律,我们可以用函数来表示,也可以概率分布来表示。
假如说,这个真实的规律我们可以用P(y,x|真实规律)来表示,其中y是判断结果,x是输入的图片,如果以真实规律作为条件,那么输入的图片一定能准确地判断出是猫还是狗。那机器学习呢?其实就是在计算机里面尽可能没有差别地把这个P(y,x|真实规律)概率分布学出来。
这里就出现一个关键问题了,假如说机器学习算法做出了一个猜测,P(y,x|猜测规律)。我们应该如何判断,这个猜测出来的概率分布与表示真实规律的概率分布是不是一样的?
其实不只是是判断出来“一样”还是“不一样”就可以了,还需要知道它们之间的差距有多大,这样才能帮助机器学习的算法调整和修改,越来越接近真实规律。
那么如何才能对两个概率分布做出比较呢?
如果是同一类的概率分布的话,那还好办。比如说,都是正态分布,影响分布的参数就两个,一个均值一个方差。只需要判断真实规律和猜测规律里面这两个参数是不是一样,不一样的话看看参数差了多少,就行了。
但真实的情况却不是这么简单,真实规律表现出来是什么样子的,我们根本不知道,别说我们根本无法确定真实规律那个概率分布到底是什么类型的,就算是确定了,决定它的参数也可能有很多,无法进行简单地比较。
于是,比较两个概率分布的最大障碍出现了。两个不同类型的概率分布,它们无法直接公度。
那怎么办呢?有什么方法可以让无法公度的两个概率分布,变得可以公度吗?
这件事上,虽然不能一下子想到解决方法,但是说到公度的话,我们的世界里有一个特别伟大的系统,通过它可以让许多本来无法公度的事情变得可以公度,这或许可以给我们带来启发。
这个系统就是货币系统,它让许多无法公度的事情,都可以变成一个价格数字,通过价格就能进行比较了。
就比如,一个房子,你家里的老房子,在里面有几代人的记忆,对于你来说这个房子是价值很大的。但是,对于买房的人来说,这并没有什么特殊的,他心中这个房子的价值一定不如你。这本来是一个无法公度的事情,因为你们选择的根本就是不同的价值体系。
不过没有关系,只要把房子放到货币体系里面,货币体系就可以完成对这个房子价值的评估,在你和买房人之间寻找到一个价值平衡点。
虽然价格体系的运行方式很复杂,但是有一点是能给我们启发的,那就是不论是什么东西,它都可以把它们换成一串数字,变成数字之和就可以进行公度了。
那么不同类型的概率分布,它们是不是也可以有类似的方法,先把它们转换成一串数字,将这个数字作为他们进行公度的代表。
还真有,这个概率分布的“货币体系”就是熵。
所有的概率分布,都可以统一地被转换成熵,比较两个概率分布是不是相同