熵的基础知识

  • 近来抽空过了些熵相关的基础知识,自己手动整理了下,有很多是借鉴了别的博客的内容,所以先感谢网上大佬们的分享了,具体参考的博客有:
    机器学习各种熵:从入门到全面掌握
    Cross-entropy and Maximum Likelihood Estimation

  • 在机器学习中 熵是表征随机变量分布的混乱程度,分布越混乱,则熵越大。

  • Self-information (自信息)
    自信息表示某一事件发生时所带来的信息量的多少,事件发生的概率越大,则自信息越小。或者可以这样理解:某一事件发生的概率非常小,但是实际上却发生了(观察结果),则此时的自信息非常大;某一事件发生的概率非常大,并且实际上也发生了,则此时的自信息较小。
    度量自信息时,需要寻找一个函数,它满足的条件是:事件发生的概率越大,则自信息越小;自信息不能是负值,最小是0;自信息应该满足可加性,并且两个独立事件的自信息应该等于两个事件单独的自信息。自信息公式定义: I ( p i ) = − log ⁡ ( p i ) I(p_i) = -\log(p_i) I(pi)=log(pi)



  • Entropy (信息熵)
    自信息描述的是随机变量的某个事件发生所带来的信息量,而信息熵通常用来描述整个随机分布所带来的信息量平均值,更具统计特性。信息熵也叫香农熵: H ( X ) = E x ∼ p [ I ( x ) ] = − E x ∼ p [ log ⁡ p ( x ) ] = − ∑ i = 1 n p ( x i ) log ⁡ p ( x i ) = − ∫ x p ( x ) log ⁡ p ( x ) d x \begin{aligned} \mathcal{H}(X) &=\mathbb{E}_{x \sim p}[I(x)]=-\mathbb{E}_{x \sim p}[\log p(x)] \\&=-\sum_{i=1}^{n} p\left(x_{i}\right) \log p\left(x_{i}\right)=-\int_{x} p(x) \log p(x) dx \end{aligned} H(X)=Exp[I(x)]=Exp[logp(x)]=i=1np(xi)logp(xi)=xp(x)logp(x)dx 随机变量取值个数越多,状态数也就越多,累加次数就越多,信息熵就越大,混乱程度就越大,纯度越小越宽广的分布,熵就越大,在同样的定义域内,由于分布宽广程度:脉冲分布 < 高斯分布 < 均匀分布,故而熵的关系为:脉冲分布的信息熵 < 高斯分布的信息熵 < 均匀分布的信息熵。可以通过数学证明,当随机变量分布为均匀分布时即状态数最多时,熵最大。

    • 熵只依赖于随机变量的分布,与随机变量取值无关;
    • 定义 0 × log ⁡ 0 = 0 0 \times \log0 = 0 0×log0=0 (可能出现某个概率取值为0的情况);
    • 熵越大,随机变量的不确定性就越大,分布越混乱,随机变量状态数越多。



  • Conditional Entropy (条件熵)
    条件熵的定义为:在 X X X 给定条件下, Y Y Y 的条件概率分布的熵对 X X X 的数学期望。 H ( Y ∣ X ) = E x ∼ p [ H ( Y ∣ X = x ) ] = ∑ i = 1 n p ( x i ) H ( Y ∣ X = x i ) = − ∑ i = 1 n p ( x i ) ∑ j = 1 m p ( y j ∣ x i ) log ⁡ p ( y j ∣ x i ) = − ∑ i = 1 n ∑ j = 1 m p ( x i , y j ) log ⁡ p ( y j ∣ x i ) = − ( ∑ i = 1 n ∑ j = 1 m p ( x i , y j ) log ⁡ p ( x i , y j ) − ∑ i = 1 n ∑ j = 1 m p ( x i , y j ) log ⁡ p ( x i ) ) = − ( ∑ i = 1 n ∑ j = 1 m p ( x i , y j ) log ⁡ p ( x i , y j ) − ∑ i = 1 n log ⁡ p ( x i ) ∑ j = 1 m p ( x i , y j ) ) = − ( ∑ i = 1 n ∑ j = 1 m p ( x i , y j ) log ⁡ p ( x i , y j ) − ∑ i = 1 n p ( x i ) log ⁡ p ( x i ) ) = H ( X , Y ) − H ( X ) \begin{aligned} \mathcal{H}(Y | X) &= \mathbb{E}_{x \sim p}[\mathcal{H}(Y | X=x)]=\sum_{i=1}^{n} p(x_i) \mathcal{H}(Y | X=x_i) \\&=-\sum_{i=1}^{n} p(x_i) \sum_{j=1}^{m} p(y_j | x_i) \log p(y_j | x_i) = - \sum_{i=1}^{n} \sum_{j=1}^{m} p(x_i, y_j) \log p(y_j | x_i) \\&=-\left(\sum_{i=1}^{n} \sum_{j=1}^{m} p(x_i, y_j) \log p(x_i, y_j)-\sum_{i=1}^{n} \sum_{j=1}^{m} p(x_i, y_j) \log p(x_i)\right) \\& =-\left(\sum_{i=1}^{n} \sum_{j=1}^{m} p(x_i, y_j) \log p(x_i, y_j)-\sum_{i=1}^{n} \log p(x_i) \sum_{j=1}^{m} p(x_i, y_j)\right) \\ &=-\left(\sum_{i=1}^{n} \sum_{j=1}^{m} p(x_i, y_j) \log p(x_i, y_j)-\sum_{i=1}^{n} p(x_i) \log p(x_i)\right) \\ &= \mathcal{H}(X, Y)-\mathcal{H}(X) \end{aligned} H(YX)=Exp[H(YX=x)]=i=1np(xi)H(YX=xi)=i=1np(xi)j=1mp(yjxi)logp(yjxi)=i=1nj=1mp(xi,yj)logp(yjxi)=(i=1nj=1mp(xi,yj)logp(xi,yj)i=1nj=1mp(xi,yj)logp(xi))=(i=1nj=1mp(xi,yj)logp(xi,yj)i=1nlogp(xi)j=1mp(xi,yj))=(i=1nj=1mp(xi,yj)logp(xi,yj)i=1np(xi)logp(xi))=H(X,Y)H(X)

  • Mutual Information (互信息)
    引入互信息,它不仅能说明两个随机变量之间是否有关系,也能反应它们之间关系的强弱。 I ( X ; Y ) = ∫ X ∫ Y P ( X , Y ) log ⁡ P ( X , Y ) P ( X ) P ( Y ) = ∫ X ∫ Y P ( X , Y ) log ⁡ P ( X , Y ) P ( X ) − ∫ X ∫ Y P ( X , Y ) log ⁡ P ( Y ) = ∫ X ∫ Y P ( X ) P ( Y ∣ X ) log ⁡ P ( Y ∣ X ) − ∫ Y log ⁡ P ( Y ) ∫ X P ( X , Y ) = ∫ X P ( X ) ∫ Y P ( Y ∣ X ) log ⁡ P ( Y ∣ X ) − ∫ Y log ⁡ P ( Y ) P ( Y ) = − ∫ X P ( X ) H ( Y ∣ X = x ) + H ( Y ) = H ( Y ) − H ( Y ∣ X ) \begin{aligned} I(X ; Y) &=\int_{X} \int_{Y} P(X, Y) \log \frac{P(X, Y)}{P(X) P(Y)} \\ &=\int_{X} \int_{Y} P(X, Y) \log \frac{P(X, Y)}{P(X)}-\int_{X} \int_{Y} P(X, Y) \log P(Y) \\ &=\int_{X} \int_{Y} P(X) P(Y | X) \log P(Y | X)-\int_{Y} \log P(Y) \int_{X} P(X, Y) \\ &=\int_{X} P(X) \int_{Y} P(Y | X) \log P(Y | X)-\int_{Y} \log P(Y) P(Y) \\ &=-\int_{X} P(X) \mathcal{H}(Y | X=x) + \mathcal{H}(Y) \\ &= \mathcal{H}(Y)- \mathcal{H}(Y | X) \end{aligned} I(X;Y)=XYP(X,Y)logP(X)P(Y)P(X,Y)=XYP(X,Y)logP(X)P(X,Y)XYP(X,Y)logP(Y)=XYP(X)P(YX)logP(YX)YlogP(Y)XP(X,Y)=XP(X)YP(YX)logP(YX)YlogP(Y)P(Y)=XP(X)H(YX=x)+H(Y)=H(Y)H(YX) H ( Y ) \mathcal{H}(Y) H(Y) 衡量的是 Y Y Y 的不确定度, Y Y Y 分布得越离散, H ( Y ) \mathcal{H}(Y) H(Y) 的值越高。 H ( Y ∣ X ) \mathcal{H}(Y | X) H(YX) 则表示在已知 X X X 的情况下, Y Y Y 的不确定度,而 I ( X ; Y ) I(X ; Y) I(X;Y) 则表示得知特征 X X X 的信息而使得 Y Y Y 信息的不确定性减少的程度,因而如果 X X X Y Y Y 关系越大, I ( X ; Y ) I(X ; Y) I(X;Y)越大。

    • X X X Y Y Y 完全相关时, I ( X ; Y ) I(X ; Y) I(X;Y) 取值最大为 H ( Y ) \mathcal{H}(Y) H(Y)。由于 X X X的引入, Y Y Y 的熵由原来的 H ( Y ) \mathcal{H}(Y) H(Y) 减小了 I ( X ; Y ) = H ( Y ) I(X;Y) = \mathcal{H}(Y) I(X;Y)=H(Y),变成了 0,也就是说如果 X X X 确定,那么 Y Y Y 就完全确定了。
    • 而当 X X X Y Y Y独立时, I ( X ; Y ) = 0 I(X;Y)=0 I(X;Y)=0 ,引入 X X X,并未给 Y Y Y 带来任何好处。

    综合以上分析,可以得到互信息的一些性质:

    • I ( X ; Y ) ≥ 0 I(X; Y) \geq 0 I(X;Y)0
    • H ( X ) − H ( X ∣ Y ) = I ( X ; Y ) = I ( Y ; X ) = H ( Y ) − H ( Y ∣ X ) \mathcal{H}(X)-\mathcal{H}(X | Y)=I(X ; Y)=I(Y ; X)=\mathcal{H}(Y)-\mathcal{H}(Y | X) H(X)H(XY)=I(X;Y)=I(Y;X)=H(Y)H(YX)
    • X X X Y Y Y 独立时, I ( X ; Y ) = 0 I(X; Y) = 0 I(X;Y)=0
    • X X X Y Y Y 知道一个就能推断另一个时, I ( X ; Y ) = H ( X ) = H ( Y ) I(X;Y)=\mathcal{H}(X)=\mathcal{H}(Y) I(X;Y)=H(X)=H(Y)

    互信息在 Decision Tree (决策树) 领域有着很广泛的应用,决策树中常用的 Information Gain (信息增益) 就等价于训练集中类与特征的互信息: g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D, A) = \mathcal{H}(D) - \mathcal{H}(D|A) g(D,A)=H(D)H(DA),表示由于特征 A A A 而使得对数据集 D D D 的分类的不确定性减少的程度。 g ( D , A ) g(D, A) g(D,A) 越大,则说明特征 A A A 越重要。



  • Cross Entropy (交叉熵)
    交叉熵广泛用在 Logistic Regression (逻辑回归) 和 Softmax 函数中作为损失函数使用。其主要用于度量两个概率分布间的差异性信息,公式定义为: H ( p , q ) = E x ∼ p [ − log ⁡ q ( x ) ] = − ∑ i = 1 n p ( x i ) log ⁡ q ( x i ) \begin{aligned} H(p, q)=\mathbb{E}_{x \sim p}[-\log q(x)]=-\sum_{i=1}^{n} p(x_i) \log q(x_i) \end{aligned} H(p,q)=Exp[logq(x)]=i=1np(xi)logq(xi)
    其中 p ( x ) p(x) p(x) 是真实样本分布, q ( x ) q(x) q(x) 是预测得到的样本分布。

    • 交叉熵在逻辑回归中应用广泛,逻辑回归的损失函数就是交叉熵,其定义为: J ( θ ) = − 1 n ∑ i = 1 n [ y i log ⁡ h θ ( x i ) + ( 1 − y i ) log ⁡ ( 1 − h θ ( x i ) ) ] \begin{aligned} J(\theta)=-\frac{1}{n} \sum_{i=1}^{n}\left[y_{i} \log h_{\theta}\left(x_{i}\right)+\left(1-y_{i}\right) \log \left(1-h_{\theta}\left(x_{i}\right)\right)\right] \end{aligned} J(θ)=n1i=1n[yiloghθ(xi)+(1yi)log(1hθ(xi))]
      • 其中 y i y_i yi 为 0 或 1,模型预测为 1 的概率为 h θ ( x i ) h_\theta(x_i) hθ(xi),预测为 0 的概率为 1 − h θ ( x i ) 1 - h_\theta(x_i) 1hθ(xi)
        • y i = 1 y_i = 1 yi=1 时,对应的 q ( x ) = h θ ( x i ) q(x) = h_\theta(x_i) q(x)=hθ(xi)
        • y i = 0 y_i = 0 yi=0 时,对应的 q ( x ) = 1 − h θ ( x i ) q(x) = 1 - h_\theta(x_i) q(x)=1hθ(xi)
          它们共同组合则得到到了逻辑回归的损失函数。
    • 对于多分类的逻辑回归算法,通常使用 Softmax 作为输出层映射,其对应的损失函数也叫交叉熵,只不过写法有点区别,具体如下: J ( θ ) = − 1 n [ ∑ i = 1 n ∑ j = 1 k 1 { y i = j } log ⁡ e θ j T x i ∑ l = 1 k e θ l T x i ] \begin{aligned} J(\theta)=-\frac{1}{n}\left[\sum_{i=1}^{n} \sum_{j=1}^{k} 1\left\{y_{i}=j\right\} \log \frac{e^{\theta_{j}^{T} x_{i}}}{\sum_{l=1}^{k} e^{\theta_{l}^{T} x_{i}}}\right] \end{aligned} J(θ)=n1[i=1nj=1k1{yi=j}logl=1keθlTxieθjTxi],其中 n n n 是样本个数, k k k 是输出层的分类个数。
      对比逻辑回归算法的损失函数: J ( θ ) = − 1 n ∑ i = 1 n [ y i log ⁡ h θ ( x i ) + ( 1 − y i ) log ⁡ ( 1 − h θ ( x i ) ) ] = − 1 n [ ∑ i = 1 n ∑ j = 0 1 1 { y i = j } log ⁡ p ( y i = j ∣ x i ; θ ) ] \begin{aligned} J(\theta) &= -\frac{1}{n} \sum_{i=1}^{n} \left[ y_{i} \log h_{\theta}\left(x_{i}\right)+\left(1-y_{i}\right) \log \left(1-h_{\theta}\left(x_{i}\right)\right) \right] \\&= -\frac{1}{n}\left[\sum_{i=1}^{n} \sum_{j=0}^{1} 1\left\{y_{i}=j\right\} \log p\left(y_{i}=j \mid x_{i};\theta\right)\right] \end{aligned} J(θ)=n1i=1n[yiloghθ(xi)+(1yi)log(1hθ(xi))]=n1[i=1nj=011{yi=j}logp(yi=jxi;θ)] 可以看出,其实两者是一样的,Softmax 只是对逻辑回归在多分类上面的推广。



  • Relative Entropy (相对熵)
    相对熵是一个较高端的存在,其作用和交叉熵差不多。相对熵经常也叫做 Kullback-Leibler Divergence (KL 散度),在贝叶斯推理中, D KL ( p ∣ ∣ q ) D_\text{KL}(p || q) DKL(pq) 衡量当修改了从先验分布 q q q 到后验分布 p p p 的信念之后带来的信息增益。 D KL ( p ∥ q ) = E x ∼ p ( x ) [ log ⁡ p ( x ) q ( x ) ] = − E x ∼ p ( x ) [ log ⁡ q ( x ) p ( x ) ] = − ∑ i p ( x i ) log ⁡ q ( x i ) p ( x i ) = H ( p , q ) − H ( p ) \begin{aligned} D_\text{KL}(p \| q) &= \mathbb{E}_{x \sim p(x)}\left[\log \frac{p(x)}{q(x)}\right] = -\mathbb{E}_{x \sim p(x)}\left[\log \frac{q(x)}{p(x)}\right] \\ &= -\sum_{i} p(x_i) \log \frac{q(x_i)}{p(x_i)}=\mathcal{H}(p, q) - \mathcal{H}(p) \end{aligned} DKL(pq)=Exp(x)[logq(x)p(x)]=Exp(x)[logp(x)q(x)]=ip(xi)logp(xi)q(xi)=H(p,q)H(p) 相对熵较交叉熵有更多的优异性质,主要为:

    • p p p 分布和 q q q 分布相等时候,KL 散度值为 0,这是一个非常好的性质;
    • KL 散度是非负的;
    • 非对称的,通过公式可以看出,KL 散度是衡量两个分布的不相似性,不相似性越大,则值越大,当完全相同时,取值为0。

    简单对比交叉熵和相对熵,可以发现仅仅差了一个 H ( p ) \mathcal{H}(p) H(p),如果从优化角度来看, p p p 是真实分布,是固定值,最小化 KL 散度情况下, H ( p ) \mathcal{H}(p) H(p) 可以省略,此时交叉熵等价于KL散度。在最优化问题中,最小化相对熵等价于最小化交叉熵;
    交叉熵大量应用在 Sigmoid 函数和 Softmax 函数中,最经典的应用就是神经网络的训练和逻辑回归。而相对熵大量应用在生成模型中,例如 GAN、EM、贝叶斯学习和变分推导中。

    • 在监督学习中,训练神经网络所用到的相对熵的 loss 等价于交叉熵的 loss D KL ( p ∣ ∣ q ) = E x ∼ p ( x ) [ log ⁡ p ( x ) q ( x ) ] = ∑ i p ( x i ) ⋅ log ⁡ p ( x i ) q ( x i ) = ∑ i p ( x i ) ⋅ log ⁡ p ( x i ) − ∑ i p ( x i ) ⋅ log ⁡ q ( x i ) = − ∑ i p ( x i ) ⋅ log ⁡ q ( x i ) \begin{aligned} D_\text{KL}(p||q) &= \mathbb{E}_{x\sim p(x)} \left[\log {\frac {p(x)} {q(x)}}\right] = \sum_{i}p(x_{i}) \cdot \log {\frac {p(x_{i})} {q(x_{i})}} \\&= \sum_{i}p(x_{i}) \cdot \log p(x_{i}) - \sum_{i}p(x_{i}) \cdot \log q(x_{i}) = - \sum_{i}p(x_{i}) \cdot \log q(x_{i}) \end{aligned} DKL(pq)=Exp(x)[logq(x)p(x)]=ip(xi)logq(xi)p(xi)=ip(xi)logp(xi)ip(xi)logq(xi)=ip(xi)logq(xi) 因为 p ( x i ) p(x_i) p(xi) 在分类任务中为 one-hot 形式的 label,label 为 0 或 1,所以有: ∑ i p ( x i ) ⋅ log ⁡ p ( x i ) = 0 \begin{aligned} \sum_{i}p(x_{i}) \cdot \log p(x_{i}) = 0 \end{aligned} ip(xi)logp(xi)=0
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值