信息量, 信息熵, 交叉熵, KL散度

来源:互联网 发布:linux查看文件前100行 编辑:程序博客网 时间:2024/05/22 21:01

信息量, 信息熵, 交叉熵, 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)是定值.

原创粉丝点击