Entropy

作者: 孟哲凡 | 来源:发表于2018-09-27 18:43 被阅读0次

    Entropy(熵)

    一个信息源发出多种信号,如果某个信号概率大,那么它后面出现的机会也大,不确定性会小。反之就会机会小,不确定性就大,即不确定性函数 f 是概率 p 的单调递减函数。

    那如果有两个信号A、B,他们产生的不确定性应该是各自不确定性的和,即 f(P_{A},P_{B}) = f(P_{A}) + f(P_{B}) ,它们具有可加性。

    那么不确定性 f 的函数体要满足几个条件:1.单调递减 2.具有可加性 3.f(p)\geq0(p\geq0) 所以很容易想到对数函数,即 f(P) = -logP

    %matplotlib inline
    import matplotlib.pyplot as plt
    import numpy as np
    
    p = np.arange(0.4, 0.99, 0.01)
    f = [-1 * np.log2(a) for a in p]
    plt.plot(p,f)
    
    image.png

    那么如果考虑这个信息源的不确定性,即是考虑所有信号产生不确定性的统计平均值。 若信息源产生的各信息 1..i..n 的不确定性有 n 种取值:U_{1}..U_{i}..U_{n},对应的概率为P_{1}..P_{i}..P_{n},并且它们彼此独立。 信息的不确定性应该为 -logP_{i} 的统计平均值(期望)(E),这就是信息熵(Information Entropy),即 H(U) = E[-logP_{i}] = -\sum_{i=1}^{n} p_{i}logp_{i}
    因为不确定性是抽象出来的,并非实际值,所以对于对数的底数的取值也并无要求,当我们以2为底的时候,单位为bit;底是e的时候,单位是nat。所以这里用2为底。

    同时,有 0\leq H(U) \leq logn,证明如下(拉格朗日乘子法):

    目标函数:H(x)=H[p(1),p(2),..,p(n)]=-[p(1)logp(1)+p(2)logp(2)+..+p(n)logp(n)]

    因为 p(1)+p(2)+..p(n)=1

    设置约束条件 :G(x)=g[p(1),p(2),..,p(n),\lambda]=\lambda*[p(1)+p(2)+..+p(n)-1]=0

    设置拉格朗日函数:
    L[p(1),p(2),..,p(n),\lambda]=H(x)+G(x)
    p(1),p(2),..,p(n),\lambda 依次求偏导,令偏导为0,有:
    \frac{\partial L}{\partial p(1)}=\lambda-log[e*p(1)]=0
    \frac{\partial L}{\partial p(2)}=\lambda-log[e*p(1)]=0
    ...
    \frac{\partial L}{\partial p(n)}=\lambda-log[e*p(1)]=0
    \frac{\partial L}{\partial \lambda}=p(1)+p(2)+..+p(n)-1=0

    联立得 p(1)=p(2)=..=p(n)

    p(1)=p(2)=..=p(n)=\frac{1}{n}

    H(\frac{1}{n},\frac{1}{n},..,\frac{1}{n})=-(\frac{1}{n}log\frac{1}{n}+\frac{1}{n}log\frac{1}{n}+..+\frac{1}{n}log\frac{1}{n})=logn

    当然最简单的单符号信号源仅取 0 和 1 两个元素,其概率为 P 和 1 - P,该信源的熵为下面所示

    p = np.arange(0.001, 1, 0.001)
    H = [-1 * a * np.log2(a) - (1 - a) * np.log2(1 - a) for a in p]
    plt.gca().set_ylim([0,1])
    plt.gca().set_xlim([0,1])
    plt.plot(p,H)
    
    image.png

    Joint entropy(联合熵)

    当我们从一维随机变量分布推广到多维随机变量分布,则其联合熵(Joint entropy)为:
    H(X,Y)=-\sum_{x\in\mathcal{X},y\in\mathcal{Y}}p(x,y)logp(x,y)= -\sum_{i=1}^{n} \sum_{j=1}^{m}p(x_{i},y_{j})logp(x_{i},y_{j})

    Conditional entropy(条件熵)

    条件熵 H(Y|X) 表示在已知随机变量 X 的条件下随机变量 Y的不确定性
    条件熵 H(Y|X) (X \in \mathcal{X},Y \in \mathcal{Y}) 定义为在 X 给定条件下 Y 的条件概率分布的熵对 X 的数学期望:
    H(Y|X) \equiv \sum_{x\in\mathcal{X}}p(x)H(Y|X=x)
    = -\sum_{x\in\mathcal{X}}p(x)\sum_{y\in\mathcal{Y}}p(y|x)logp(y|x)
    = -\sum_{x\in\mathcal{X}}\sum_{y\in\mathcal{Y}}p(x,y)logp(y|x)
    = -\sum_{x\in\mathcal{X},y\in\mathcal{Y}}p(x,y)logp(y|x)
    = -\sum_{x\in\mathcal{X},y\in\mathcal{Y}}p(x,y)log\frac{p(x,y)}{p(x)}
    = \sum_{x\in\mathcal{X},y\in\mathcal{Y}}p(x,y)log\frac{p(x)}{p(x,y)}
    同时,条件熵 H(Y|X) = H(X,Y) - H(X) ,证明如下:

    H(Y,X) = -\sum_{x\in\mathcal{X},y\in\mathcal{Y}}p(x,y)logp(x,y)
    = -\sum_{x\in\mathcal{X},y\in\mathcal{Y}}p(x,y)log(p(y|x)p(x))
    = -\sum_{x\in\mathcal{X},y\in\mathcal{Y}}p(x,y)logp(y|x) - \sum_{x\in\mathcal{X},y\in\mathcal{Y}}p(x,y)logp(x)
    = H(Y|X)-\sum_{x\in\mathcal{X}}\sum_{y\in\mathcal{Y}}p(x,y)logp(x)
    = H(Y|X)-\sum_{x\in\mathcal{X}}logp(x)\sum_{y\in\mathcal{Y}}p(x,y)
    = H(Y|X)-\sum_{x\in\mathcal{X}}logp(x)p(x)
    = H(Y|X)-\sum_{x\in\mathcal{X}}p(x)logp(x)
    = H(Y|X)+H(X)

    即为上式所证

    相关文章

      网友评论

          本文标题:Entropy

          本文链接:https://www.haomeiwen.com/subject/jwpeoftx.html