信息熵是随机数据源产生信息的均量。信息熵代表的是随机变量或整个系统的不确定性,熵越大,随机变量或系统的不确定性就越大。
例如: 一枚正常硬币进行若干次抛投,这个事件的熵是1bit,因为结果不外乎两个 - 正面或反面,可以表示为0,1编码,而且两个结果彼此之间相互独立。但如果一枚硬币的两面完全相同,那抛硬币事件的熵为零,因为结果能被准确预测。
信息熵的数学公式如下:
H(X) = E[I(X)] = E[-ln(P(X))]
其中 P 为X的概率质量函数,E为期望函数,而I(x)是X的信息量。I(X)本身是个随机变数。当取自有限样本时,熵的公式可以表示为:
H(X) = \sum_{i=1}^nP(x_i)I(x_i) = -\sum_{i=1}^nP(x_i)log_bP(x_i)
所以熵的本质是香农信息量 log(1/p)的期望, 在编程的时候, 一般令b=2,.
从f(x) = log_2(x), 其中x=p(x_i)的图像可以看出, 一个事件结果的出现概率$p(x_i)$越低,H(X)就越大, 对其编码的bit长度就越长。以期望在整个随机事件的无数次重复试验中,用最少的bit去记录整个实验历史,即无法压缩的表达,代表了真正的信息量。
当随机变量X,Y\sim p(x,y), 则联合熵为:
H(X,Y) = \sum_{x \in X} \sum_{y \in Y}\ p(x,y)\ logp(x,y)
条件熵 H(Y|X)表示在已知随机变量 X 的条件下随机变量 Y 的不确定性。条件熵 H(Y|X)定义为 X 给定条件下 Y 的条件概率分布的熵对 X 的数学期望:
H(Y|X) = \sum_{i=1}^nP(x_i)H(Y|X=x) = -\sum_{x,y}p(x,y)logP(y|x)
条件熵 H(Y|X)相当于联合熵 H(X,Y)减去单独的熵 H(X),即 H(Y|X)=H(X,Y)-H(X)
一个系统有一个真实的概率分布,也叫真实分布,根据真实分布,我们能够找到一个最优策略,以最小的代价消除系统的不确定性,而这个代价大小就是信息熵。
多数情况下,我们并不知道系统的真实分布,如抛硬币例子,如果硬币两面一样,但我们不知道这一信息,以为两面不一样,两面不一样是一个非真实分布。交叉熵,是用来衡量在给定的真实分布下,使用非真实分布所指定的策略消除系统的不确定性所需要付出的努力大小。
交叉熵的公式为:
H(X,Y)=-\sum_{x}p(x)log\ p(y)
其中X为真实分布,Y为非真实分布。交叉熵越低,意味着Y越接近X。所以在机器学习分类算法中,我们总是最小化交叉熵,交叉熵越低,间接证明算法推算出的非真实分布q越接近真实分布p。
深度学习中交叉熵损失函数Cross Entropy Loss;
L(X,Y)=- [y\ log \hat{y}\ (1-y)log(1-\hat{y})]
相对熵又称KL散度,是为了衡量不同分布之间的差异,即:
H(f|g) = D_{KL}(f, g) = \sum_{x\in X}f(x)*log_2\ \frac{f(x)}{g(y)}
假设f(x)为真实分布X,g(y)为非真实分布Y,则上述相对熵为:
H(X|Y) = D_{KL}(X||Y) = \sum_{i=1}^{N}\ p(x)\ log_2\ \frac{1}{p(y)} - \sum_{i=1}^{N}\ p(x)\ log_2\ \frac{1}{p(x)} = \sum_{i=1}^{N}\ p(x)\ log_2\ \frac{p(x)}{p(y)} = \sum_{i=1}^{N}\ p(x)\ [log_2{p(x)} - \ log_2{p(y)} ]
KL散度一般用来衡量2个分布的距离, 但不是真正的距离, 它不是对称的, 如果两个分布一样, 那么KL散度=0, 如果两个分布不一样那么:
D_{KL}(X||Y) \ne D_{KL}(Y||X)
互信息可以看成一个随机变量包含的关于另一个随机变量的信息量, 或者说是一个随机变量由于以知另一个随机变量而减少的不确定性,. 其定义如下:
I(X,Y) =\begin{cases}\sum_{x \in X}\sum_{y \in Y}p(x,y)log(\frac{p(x,y)}{p(x)p(y)}) &X,Y是离散型随机变量 \\\int_{X}\int_{Y}p(x,y)log(\frac{p(x,y)}{p(x)p(y)}) &X,Y是连续型随机变量\end{cases}
如上图所示, 假设有2个集合X, Y, 那么存在:
I(X,Y) = H(X) - H(X|Y) = H(Y) - H(Y|X)
H(X,Y) = H(X) + H(X|Y) = H(Y) + H(Y|X)
用集合的角度来理解就是:
(1) 互信息就是两个集合的交集;
(2) 交叉熵就是两个集合的并集;
(3) 条件熵就是表示条件概率;
(4) KL散度就是表示差集;
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。