![fd8161d78562f9c90ecf879257bfe19e.png](https://i-blog.csdnimg.cn/blog_migrate/19892c5bb8dcfc06ab2afe83cb138e7a.jpeg)
交叉熵是信息论中的一个重要概念,它的大小表示两个概率分布之间的差异,可以通过最小化交叉熵来得到目标概率分布的近似分布。本文主要介绍了交叉熵及其相关概念以及交叉熵损失函数的应用。
为了理解交叉熵,首先要了解下面这几个概念。
- 自信息
信息论的基本想法是,一个不太可能的事件发生了的话,要比一个非常可能的事件发生能提供更多的信息。
如果想通过这种想法来量化信息,需要满足以下性质:
- 非常可能发生的事件信息量比较少,并且极端情况下,确定能够发生的事件没有信息量。
- 较不可能发生的事件具有更高的信息量。
- 独立事件应具有增量的信息。例如,投掷的硬币两次正面朝上传递的信息量,应该是投掷一次硬币正面朝上的信息量的两倍。
根据以上三点,定义自信息(self-information):
![70a7df73689ce518861c22201d64805a.png](https://i-blog.csdnimg.cn/blog_migrate/280ca1bf51db5f2ce44855e744b10bfd.png)
在本文中,用log来表示自然对数,其底数为e。
- 香农熵
设
![842cc38f71289eaa0ea3d1b14553dcd7.png](https://i-blog.csdnimg.cn/blog_migrate/8dffe0d5d6f45a1d3a166bf0375ec9c4.png)
对于该离散随机变量,用自信息的期望来量化整个概率分布中的不确定性总量:
![54ef011faae9aaf3c8b87563a9e938c4.png](https://i-blog.csdnimg.cn/blog_migrate/22b03311f9d96d678081b7e5b348b463.png)
这里的H(X)定义为随机变量
下面借助抛硬币的例子来简单理解一下香农熵。
在抛硬币时,假设正面朝上的概率为p,反面朝上的概率为1-p,即 P(X=正) = p, P(X=反) = 1-p,香农熵大小为:
![0d92c961f262b28eb64e5907b5ced11e.png](https://i-blog.csdnimg.cn/blog_migrate/b6e187b86fb6097b28c87c7b19e22573.png)
H(p)随概率p变化的曲线为
![2f3942735f37945b0dc9a0bbc19a7354.png](https://i-blog.csdnimg.cn/blog_migrate/f26a7e72024cbaebefc1fa71755f8914.png)
从上图中可以看到,当正面朝上的概率p=0或1时,这时我们完全可以确定抛硬币的结果,此时香农熵H(p)=0,随机变量完全没有不确定性。当p=0.5时,正面和反面出现的概率相同,我们完全无法确定结果,此时香农熵取值最大,随机变量不确定性也最大。这说明了更接近确定性的分布具有较低的香农熵,而更接近均匀分布的分布(不确定性最大)具有较高的香农熵。
看到这里是不是明白了一些呢,说白了,香农熵就是代表了事件发生的不确定性,不确定性越大,香农熵越大,不确定性越小,香农熵越小。
- KL散度(相对熵)
KL散度(Kullback-Leibler divergence),也叫做相对熵。若随机变量
![eda4c371ac8f8bbc7ab558ea9194d2ad.png](https://i-blog.csdnimg.cn/blog_migrate/f7d637240376e3126e36a10681f3c5d4.png)
相对熵是非负的,它的大小可以用来衡量两个分布之间的差异,当且仅当P和Q具有完全相同的分布时,相对熵取值为0。
需要注意的是,相对熵并不是对称的,对于某些P和Q,
概念介绍完了,终于要进入正题了!
Are you ready?
- 交叉熵
通过上面的介绍,相信聪明的同学已经发现可以通过最小化相对熵来用分布Q逼近分布P(目标概率分布)。首先我们对相对熵公式进行变形:
![bbb76e07883412593fe0b8e8e002a3e6.png](https://i-blog.csdnimg.cn/blog_migrate/65e06a2f52e1c40dd55bf692c4218af0.png)
这里的H(P,Q)就是交叉熵(cross-entropy),它的定义为:
![857c358004a79ba6f8fab5e1d6fe31b4.png](https://i-blog.csdnimg.cn/blog_migrate/fae569af617a65eb1552485a341b51eb.png)
对于确定的概率分布P,它的香农熵H(P)是一个常数,所以要对相对熵
通过最小化交叉熵,就可以得到分布P的近似分布,这也是为什么可以用交叉熵作为网络的损失函数。
最后简单介绍一下交叉熵在机器学习中的应用。
- 交叉熵损失函数
交叉熵损失函数常用于分类问题中,下面以图像分类问题来举例说明。
为了计算网络的loss,模型的输出要确保归一化到0到1之间,二分类问题通常使用sigmoid函数来进行归一化,多分类问题通常使用softmax函数来归一化。
假设我们需要对数字1,2,3进行分类,它们的label依次为:
[1,0,0], [0,1,0], [0,0,1]
当输入的图像为数字1时,它的输出和label为:
[0.3,0.4,0.3] , [1,0,0]
接下来我们就可以利用交叉熵计算网络的![]()
随着训练次数的增加,模型的参数得到优化,这时的输出变为:[0.8,0.1,0.1]
则![]()
可以发现loss由1.20减小为0.22,而判断输入图像为数字1的概率由原本的0.3增加为0.8,说明训练得到的概率分布越来越接近真实的分布,这样就大大的提高了预测的准确性。
参考资料:
《深度学习》 IanGoodfellow、YoshuaBengio和AaronCourville
《统计学习方法》 李航