信息量, 信息熵, 交叉熵, KL散度
信息量
信息量字面意思理解就是一个事件包含信息的多少. 如果一个事件x发生的概率 ( p(x) ) 越高, 那其实它包含的信息量越少, 反而一个发生概率很小的事件包含的信息量越高. 也就是说信息量与发生的概率成反比. 此外, 考虑到在计算机存储时是按照bit来存储, 所以还会取对数 (我对为什么取对数这一块理解也不是很深刻…), 总结起来就是:
I(x)=log1p(x)=−logp(x)
由于计算机存储时是二进制存储, 所以有些地方一般去对数的底为2. 当然底为多少只是相当于scale了一下, 不影响相对性.
信息熵
信息熵其实就是信息量的均值, 这里我们假设x的取值范围是{x1,x2,⋯,xn}, 那么信息熵为
H(p)=∑ip(xi)I(xi)=−∑ip(xi)logp(xi)
显然当x的分布比较均匀时, 信息熵最大. 这跟物理学里面熵的概念比较吻合.
交叉熵 (cross-entropy)
交叉熵衡量了用概率分布p去估计概率分布q所包含的平均信息量, 也就是:
H(p,q)=∑iq(xi)I(xi)=−∑iq(xi)logp(xi)
从另一个角度看, 当p, q相等时, 交叉熵就等于信息熵, 此时交叉熵最小. 所以在机器学习中, 交叉熵被用来做loss去衡量分类结果与真值的相似程度.
KL散度
KL散度/距离是衡量两个分布的距离:
D(p||q)=∑iq(xi)logq(xi)p(xi)
简单分解可以知道
H(p,q)=D(p||q)+H(q)
即交叉熵等于信息熵与KL散度的和.
在机器学习中, 优化交叉熵与优化KL散度是一样的效果, 因为q是已知的真值的分布, 所以H(q)是定值.