ML/Deep Learning Note4-交叉熵与KL散度
昨晚被Johnny Zhu问了一下交叉熵是啥东西,发现自己确实是学了如学,只学了个名字,所以重新整理一下
信息量
举个例子1
事件A为小猪一天速通深度学习,事件B为小猪今天吃了三顿饭
很明显事件B绝对发生,小猪肯定要吃饭,所以我们认为理所应当,而事件A一天速通深度学习,这件事情显然不是那么可能,我们可能会问“咋学的这么快”“学了啥啊”等等,所以其中包含的信息明显比“一天吃三顿饭”多得多,这也就是事件的信息量
所以,事件发生的可能性越低,信息量越大
信息量的定义式:
假设
因为概率的取值是0到1,所以函数图形如下:

(确实很符合概率越小,信息量越大的直觉)
熵
对于某个事件,有n种可能的结果,每一个结果对应一个概率,又都对应一个信息量
事件:我去旅游
| 序号 | 事件 | 概率 | 信息量 |
|---|---|---|---|
| A | 我坐高铁去的 | 0.8 | 0.22 |
| B | 我坐飞机去的 | 0.19 | 1.66 |
| C | 我坐火箭去的 | 0.01 | 4.6 |
熵用来表示所有信息量的期望,即:
其中n代表所有的n种可能性
0-1分布问题
当问题为0-1分布问题,即非此即彼,只有两种可能时,熵的算式可化简为:
KL散度(相对熵)
如果对于同一个随机变量
KL散度是一种衡量两个概率分布之间差异性的度量方法
(维基百科说:在描述原来的问题时,P是第一种方法,它对应了一种概率分布,现在你要用一个新的方法Q来描述这个问题,得到了另外一个概率分布,这两个概率分布之间的信息量差值就是KL散度。
为什么要用KL散度?
机器学习中,我们不断尝试用改变函数的权重
KL散度计算公式:
n为事件的所有可能性,
交叉熵
对KL散度的公式变形可得:
等式的前一部分恰好就是p的熵,等式的后一部分,就是交叉熵:
为什么要引入交叉熵?
在机器学习中,我们需要评估label和predicts之间的差距,使用KL散度刚刚好,即
由于KL散度中的前一部分