信息是用来减少随机不确定性的东西。
(来自:https://baijiahao.baidu.com/s?id=1595106694519834247)
设p为随机变量X的概率分布,即p(x)为随机变量X在X=x处的概率密度函数值,随机变量X在x处的香农信息量定义为:
$$ log( \frac{1}{p(x)} ) $$
信息熵H(p)是香农信息量$ -logp(x) $的数学期望。
信息论之父克劳德·香农,总结出了信息熵的三条性质:
单调性,即发生概率越高的事件,其所携带的信息熵越低。极端案例就是“太阳从东方升起”,因为为确定事件,所以不携带任何信息量。从信息论的角度,认为这句话没有消除任何不确定性。
非负性,即信息熵不能为负。这个很好理解,因为负的信息,即你得知了某个信息后,却增加了不确定性是不合逻辑的。
累加性,即多随机事件同时发生存在的总不确定性的量度是可以表示为各事件不确定性的量度的和。写成公式就是:
事件 X=A,Y=B 同时发生,两个事件相互独立:
$$ p(X=A,Y=B)=p(X=A)\cdot p(Y=B) $$
那么信息熵$ H(A,B)=H(A)+H(B) $。
(来自:https://blog.csdn.net/qq_39521554/article/details/79078917)
香农从数学上,严格证明了满足上述三个条件的随机变量不确定性度量函数具有唯一形式:
$$ H(X)=-C\sum\limits_{x\in\mathcal{X}}p(x)\log p(x) $$
其中的 C 为常数,我们将其归一化为 C=1 即得到了信息熵公式。
(来自:https://www.cnblogs.com/liaohuiqiang/p/7673681.html)
按照真实分布p来编码样本所需的编码长度的期望为:
https://images2017.cnblogs.com/blog/1160281/201710/1160281-20171015181058496-735607316.png,
这就是上面说的信息熵H( p )
按照不真实分布q来编码样本所需的编码长度的期望为:
这里引申出KL散度
$$ D(p||q) = H(p,q) - H(p) $$
也叫做相对熵,它表示两个分布的差异,差异越大,相对熵越大。
机器学习中,我们用非真实分布q去预测真实分布p,因为真实分布p是固定的,$ D(p||q) = H(p,q) - H(p) $中 H(p) 固定,也就是说交叉熵H(p,q)越大,相对熵D(p||q)越大,两个分布的差异越大。
所以交叉熵用来做损失函数就是这个道理,它衡量了真实分布和预测分布的差异性。
(来自:https://baike.baidu.com/item/%E7%9B%B8%E5%AF%B9%E7%86%B5/4233536)
计算实例
这里给出一个对相对熵进行计算的具体例子。假如一个字符发射器,随机发出0和1两种字符,真实发出概率分布为A,但实际不知道A的具体分布。通过观察,得到概率分布B与C,各个分布的具体情况如下:
可以计算出得到如下:
由上式可知,按照概率分布
进行编码,要比按照
进行编码,平均每个符号增加的比特数目少。从分布上也可以看出,实际上
要比
更接近实际分布(因为其与
分布的相对熵更小)。
JS散度
(来自:https://baijiahao.baidu.com/s?id=1595106694519834247)
KL散度的缺点是它不是距离、不对称。因此引进JS散度的概念。JS散度的定义如下:
由定义可以看出,JS散度是对称的,可以用于衡量两种不同分布之间的差异。JS散度用于生成对抗网络的数学推导上。