1.前言
cross-entropy loss function 是在机器学习中比较常见的一种损失函数。在不同的深度学习框架中,均有相关的实现。但实现的细节有很多区别。本文尝试理解下 cross-entropy 的原理,以及关于它的一些常见问题。
本文将尝试解释以下内容:
• 如何计算 corss-entropy;
• 用 cross-entropy 优化一个分类 model 的动机;
• cross-entropy 与 KL divergence 的区别和关系;
• cross-entropy 与 log loss 的区别和关系;
2 cross-entropy 的概念
2.1 事件的信息量和编码事件信息量 bits 数量的理解
在介绍 cross-entropy 之前,先说说一个事件的信息量和编码一个事件bit 位长度的含义。在信息论中,概率越小的事件,具备的信息量越大;概率越大的事件,具备的信息量越小。如事件 k 发生的概率为
![1ee294ca0201a0a316c8334f6b01125c.png](https://i-blog.csdnimg.cn/blog_migrate/42034ed2a77dfb466f6793ab4e7f917e.png)
为了更直观的理解一个事件的概率和信息量的关系,我们举一个简单的例子:
例1: 比如在一个地区,明天“下雨”和“晴天”的概率各位 0.5,“下雨”和“晴天”的信息量为:
![a2f296ddb2b81fc8d6719a138deff1a0.png](https://i-blog.csdnimg.cn/blog_migrate/e125a687abc02e831756ab307d5d7963.png)
在没看天气预报前,我们不确定明天是“下雨”还是“晴天”。假如天气预报告诉我们明天“下雨”或者“晴天”,那么这个消息为我们带来1 bit 的信息量。
例 2:同理比如这个地区,明天“下雨”概率为 0.75, 明天“晴天”概率为 0.25, “下雨”的信息量为:
![07eda82ae7fc36d02421d885d4a577e9.png](https://i-blog.csdnimg.cn/blog_migrate/b88148a1a5e992bee4e4c75a9a89e636.png)
“晴天”的信息量为:
![0a555ff2869dfdb46f19fb7493102e9b.png](https://i-blog.csdnimg.cn/blog_migrate/b36d35b4455006210961f8889d43ae40.png)
当天气预报告诉我们明天“下雨”,为我们带来 0.41 的信息量;若明天“晴天”,则为我们带来 2bits 的信息量。
当 log 的底数为 2 时,
2.2 entropy 的理解
对于一个离散的概率分布来说,每个事件 k 的信息量,都会对应一个bits 位的数量,entropy 则是概率分布中所有事件的 bits 位数量的期望 (均值),也代表着个事件中的平均信息量。即:entropy 是编码一个概率分布时,用到的 bits 位数量的期望 (均值)。有偏分布的 entropy 要小于均匀分布的 entropy。对于一个概率分布 p,entropy 的概念如下:
![36c26cc2c8f54390a8cc9d21e25f008f.png](https://i-blog.csdnimg.cn/blog_migrate/196d083118e0c23cd58be5d1f9f71262.png)
比如在例 1 中,听天气预报可以获取的平均信息量:
![c07a7a92fc50fad8aabd93fc38dade67.png](https://i-blog.csdnimg.cn/blog_migrate/f4f87abeb8f2905c77dbd9527a8af211.png)