机器学习中熵、交叉熵、KL散度(相对熵)之间的关系
文章目录
- 
- 
- 1 信息量
 - 2 熵
 - 3 相对熵(KL散度)
 - 4 交叉熵
 
 
 - 
 
1 信息量
信息的信息量大小和它的不确定性有很大的关系,如果一句话需要很多外部信息才能确定的话,那么这句话的信息就很大,例如你说‘明天可能是晴天’,那你需要去看天气预告等去预测明天是否晴天,有一定的不确定性,如果你说‘今天是周五,明天是周六’,那么这句话就没什么信息量,因为这是既定的事实,确定性很高。
因此我们就将事件x_0的信息量定义如下:
I(x_0) = -log(p(x_0)) \qquad (1)
其中概率p是介于0到1之间的数值,概率越大,信息量越小。
2 熵
信息量是对单次事件来说的,实际中一个事件有多种发生的可能,比如明天可能晴天、多云、下雨等天气。
熵表示随机事件不确定的度量,是对所有可能发生的事件的信息量的期望。
H(x) = -\sum_{i=1}^{n}p(x_i)log(p(x_i)) \qquad (2)
其中n表示事件可能发生的情况的总数。
如果对于二分类问题,二项分布或者0-1分布,那么n=2,熵的计算可以转化为:
H(x) = -\sum_{i=1}^{n}p(x_i)log(p(x_i))
\qquad\qquad\qquad =-p(x)log(p(x))-(1-p(x))log(1-p(x)) \qquad (3)
其中p(x)代表正例的概率,1-p(x)表示负例的概率。
3 相对熵(KL散度)
相对熵又称KL散度。用于衡量同一个随机变量x的两个分布p(x)和q(x)之间的差异,其中p(x)用于表示样本的实际分布,例如[1,0,0,0]表示样本属于第一类,q(x)用于表示样本的预测分布,例如[0.6,0.2,0.1,0.1],很显然,使用p(x)表示样本比q(x)准确,q(x)是需要通过不断学习来拟合实际的分布p(x)。
KL散度的公式如下:
D_{KL}(p||q) = \sum_{i=1}^{n}p(x_i)log(\frac{p(x_i)}{q(x_i)}) \qquad (4)
KL散度的值越小表示两个分布越接近。
4 交叉熵
将KL散度公式进行分解变形得到:
D_{KL}(p||q) = \sum_{i=1}^{n}p(x_i)log(\frac{p(x_i)}{q(x_i)})
\qquad\qquad= p(x)log(p(x)) - p(x)log(q(x))
\qquad\qquad= -(-p(x)log(p(x))) + [ - p(x)log(q(x))]
\qquad\qquad= -H(x) + [ - p(x)log(q(x))] \qquad (5)
因此,三者之间满足:
KL散度 = -熵 + 交叉熵
机器学习中,常使用KL散度来评估预测值predict和实际值label之间的差别,但是从上面可以看出来前半部分-熵是一个常数,因此就直接将后半部分的交叉熵作为损失函数,结果是等效的。
