上一篇笔记中,我介绍了熵和信息熵,都是本篇笔记的基础,想要了解的可以点击链接复习一下。这里我们来看一下什么是KL散度和交叉熵。
上篇笔记我们了解了信息量的定义,理解了信息熵就是对系统中信息量的期望。
接下来,我国我们想比较两个神经网络模型(概率模型)之间的熵,该怎么比较呢?这里将引入另一个概念,叫做相对熵,又被称之为“KL散度”
一、KL散度
相对熵(即KL散度),是计算两个概率系统的相对混乱程度。需要涉及到两个概率系统。P系统和Q系统,下图为两个系统的概率分布图和信息量。
KL散度表示如下:
括号中P在前,表示为以P系统作为基准,去计算P与Q之间的差值。如果则说明两者完全相等。
观察展开式中的最后一项,其为P系统的信息熵。如果我们将P系统作为基准的话,后面这个值是一个常数。那么主要就是看前面的那一部分了,前面的这一部分就被叫做是交叉熵 表示为:
这里还有一个关键的问题值得我们思考,是前面这项更大呢,还是后面这项更大?这将能够将KL散度变成两部分,如果前面一项恒小于后面一项,那么当前一项逐渐增大,最终等于后面那项的时候,KL散度等于零,两个系统越接近。
然而有一个大佬证明过了,叫做吉布斯不等式。其结论为:
如果说我们想要P系统和Q系统更相似,我们需要找到交叉熵的最小值。
二、交叉熵
在深度学习中,我们将交叉熵作为损失函数,我们希望交叉熵越小越好,其实实质是想要两个概率分布更相似,两个概率分布的相对熵更小。所以模型的最优解能够使得。
这里我们以猫狗识别的神经网络入手,神经网络的输出经过softmax激活函数,将结果转换为概率值。同时我们对标签进行onehot编码,将数据集作为我们的P系统,作为基准。神经网络为Q系统。我们使用交叉熵函数作为我们的损失函数。更新梯度,使得损失越小越好。
到这里,忽然间觉得数学大佬们真的是牛啊。终于理解了什么是交叉熵。
如果你还不了解什么是熵,什么是交叉熵,大家可以参考我的文章:
【1】大白话理解——熵和信息熵 - 简书 (jianshu.com)
本文参考视频内容:“交叉熵”如何做损失函数?打包理解“信息量”、“比特”、“熵”、“KL散度”、“交叉熵” 去给up主点个赞吧!
网友评论