美文网首页
各种熵,条件熵,KL

各种熵,条件熵,KL

作者: 锦绣拾年 | 来源:发表于2021-05-24 22:58 被阅读0次

熵、条件熵、交叉熵、相对熵

参考《统计学习方法》李航

通俗理解信息熵 - 忆臻的文章 - 知乎 https://zhuanlan.zhihu.com/p/26486223

熵表示一个事件的信息量。

一般认为,如果一个事件的随机性很大,那么这个事件的熵很大。

如果一个事件比较确定,那么这个事件的熵很小。

一个【具体】事件的信息量应该是随着其发生概率而递减的,且不能为负。

信息的大小跟随机事件的概率有关。
越小概率的事情发生了产生的信息量越大,如湖南产生的地震了;
越大概率的事情发生了产生的信息量越小,如一个具体事件的信息量应该是随着
其发生概率而递减的,且不能为负。

如果我们有俩个不相关的事件x和y,那么我们观察到的俩个事件同时发生时获得
的信息应该等于观察到的事件各自发生时获得的信息之和,即:

h(x,y) = h(x) + h(y)

由于x,y是俩个不相关的事件,那么满足p(x,y) = p(x)*p(y).

根据上面推导,我们很容易看出h(x)一定与p(x)的对数有关(因为只有对数形式
的真数相乘之后,能够对应对数的相加形式,可以试试)。因此我们有信息量
公式如下:
h(x)=-log p(x)

为什么有一个负号?
负号是为了确保信息一定是正数或者是0,总不能为负数吧!

对于一个二分类事件,概率为[0.9999,0.0001],基本就是个随机性很小的事件,对应它的熵应该很小。

反之,如果这个二分类事件概率为[0.5,0.5],比如抛硬币,正反概率差不多,基本很难确定,那么它的熵很大。

定义:

设x是一个取有限个值的离散随机变量,其概率分布是:

P(x=x_i)=p_i,i=1,2,\dots,n

则随机变量x的熵定义为:H(x)=-\sum_{i=1}^np_i logp_i ,若p_i=0,则定义0log0=0。

在这里,一个事件分布的熵可以看作是具体事件信息量的期望。(即对各个事件的信息量依照概率加权)。

注意:最后得到的熵与x无关,只与概率分布有关。

所以我们可以得到二分类事件熵的函数图:

1621866074(1).png

条件熵

H(Y|X) : 是已知随机变量X的前提下,随机变量Y的不确定性。

定义:

H(Y|X)=-\sum_{i=1}^np_iH(Y|X=x_i)=-\sum_{i=1}^np(x=x_i)\sum_{i=1}^mp(y=y_j|x=x_i)logp(y=y_j|x=x_i)

即,已知X的取值情况,则先求x确定下的事件信息量,H(Y|X=x_i),再对信息量求一个期望。

信息增益:

知道随机变量X,使随机变量Y的信息,不确定性减少的程度。

g(D,A) = H(D) - H(D|A)

信息增益比:

g_R(D,A)=\frac{g(D,A)}{H_A(D)}

KL

参考花书《深度学习》第三章

如果我们对同一个随机变量x,有两个单独的概率分布,P(x)和Q(x),我们可以使用KL散度,来衡量这两个分布的差异

D_{KL}(P||Q)=E_{x\sim P}[log\frac{P(X)}{Q(X)}]=E_{x\sim P}[logP(x)-logQ(x)]=-H(P)+H(P,Q)[交叉熵]

p在前,表示以p为基准,去考虑p和q相差多少
信息量的差值:

表示分布差异,再×概率得到期望。

性质:

KL 散度有很多有用的性质,最重要的是它是非负的。KL 散度为 0 当且仅当P 和 Q 在离散型变量的情况下是相同的分布(此时P(x)/Q(x)=1),或者在连续型变量的情况下是 ‘‘几乎处处’’ 相同的。因为 KL 散度是非负的并且衡量的是两个分布之间的差异,它经常被用作分布之间的某种距离。然而,它并不是真的距离因为它不是对称的:对于某些 P 和 Q, D_{KL}(P||Q) \neq D_{KL}(Q||P)

pytorch对应损失函数:

torch.nn.KLDivLoss(size_average=None, reduce=None, reduction='mean', log_target=False)
https://pytorch.org/docs/stable/generated/torch.nn.KLDivLoss.html
torch.nn.KLDivLoss()(x,y)
x:input ,y:target
the input given is expected to contain log-probabilities and is not restricted to a 2D Tensor. The targets are interpreted as probabilities by default, but could be considered as log-probabilities with log_target set to True.

l(x,y)=L={l_1,\dots,l_N},l_n=y_n \cdot (log y_n -x_n)

示例

import torch.nn.functional as F
x1 = torch.tensor([[0.23,0.9],[-1.2,2.5]])
x2 = torch.tensor([[-1,3.4],[-1.2,2.5]])
x1_log_prob=F.log_softmax(x1,dim=-1)#log pi 概率值经过log函数
x2_prob = F.softmax(x2,dim=-1)#得到概率值
print(x1_log_prob)
print(x2_prob)
tensor([[-1.0832, -0.4132],
        [-3.7244, -0.0244]])
tensor([[0.0121, 0.9879],
        [0.0241, 0.9759]])
import torch.nn as nn
nn.KLDivLoss(reduction='none')(x1_log_prob,x2_prob)
tensor([[-4.0375e-02,  3.9617e-01], 
        [ 0.0000e+00,  1.8177e-08]])#可以看到,相同的分布值接近于0
import math
0.0121*(math.log(0.0121)+1.0832) #-0.040309332899191246,值为p(logp-logq)
0.9879*(math.log(0.9879)+0.4132) #0.3961737820595649

torch.sum(nn.KLDivLoss(reduction='none')(x1_log_prob,x2_prob),dim=-1)
tensor([3.5580e-01, 1.8177e-08])
#,最后结果应该是每一行值相加。

交叉熵

常用的损失函数。不具有对称性。H(P , Q)≠H(Q , P) 且非负。

H(P,Q)=-E_{x\sim P}logQ(x)

二分类问题的交叉熵损失函数的本质是假设数据服从以模型输出为参数的伯努利分布的极大似然估计。(为什么交叉熵(cross-entropy)可以用于计算代价? - Chris的回答 - 知乎 https://www.zhihu.com/question/65288314/answer/244601417)

实际计算:
\mathcal{L} = - \frac{1}{N} \sum_{n=1}^{N} logp(y^{(n)}|s^{(n)})
可以直接 认为是这样的一个概率和,

如果是多分类,假设真实标签[0,1,2,1,1,2,1]

那就是-(logp(0|x)+logp(1|x)+log p(2|x)+log p(1|x)+log p(1|x)+log p(2|x)+log p(1|x))
因为在实际运算中,目标label已确定,对应概率值就是1

相关文章

  • 各种熵,条件熵,KL

    熵、条件熵、交叉熵、相对熵 参考《统计学习方法》李航 通俗理解信息熵 - 忆臻的文章 - 知乎 https://z...

  • 机器学习-面试总结

    决策树问题 1)各种熵的计算熵、联合熵、条件熵、交叉熵、KL散度(相对熵) 熵用于衡量不确定性,所以均分的时候熵最...

  • 信息熵相关的定义定理

    1. 信息熵 // todo 2. 条件熵 // todo 3. 联合熵 // todo 4. 相对熵KL距离 5...

  • KL散度其实就是相对熵

    一直以为KL散度是什么新奇玩意,但是其实还是旧瓶装新酒 机器学习中的熵、条件熵、相对熵(KL散度)和交叉熵_冉茂松...

  • 交叉熵与KL散度

    老遇到交叉熵作为损失函数的情况,于是总结一下 KL散度 交叉熵从KL散度(相对熵)中引出,KL散度(Kullbac...

  • 信息熵相关知识总结

    前言 学习决策树时会接触到一些信息熵,条件熵和信息增益的知识,此外还有互信息,相对熵,交叉熵和互信息,KL散度等等...

  • 面试

    最大似然 交叉熵 KL散度 相对熵 Information bottleneck

  • 熵、条件熵、信息增益(互信息)

    信息增益 首先明确一点,信息熵是信息量的期望!期望!期望!(各种信息熵都是如此,像熵、条件熵、信息增益)熵:表示随...

  • 信息熵/相对熵/交叉熵

    信息熵 信息熵也被称为熵,用来表示所有信息量的期望。 其中X是一个离散型随机变量。 相对熵 相对熵即KL散度。如果...

  • 机器学习相关的数学知识

    知识点理解: 信息量->熵->相对熵(KL散度)->交叉熵->分类的loss 信息量:I(x0)=−log(p(x...

网友评论

      本文标题:各种熵,条件熵,KL

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