与信息熵相关的概念梳理(条件熵/互信息/相对熵/交叉熵)

news/2024/5/19 20:40:17 标签: 信息论, , 交叉熵, 相对熵, 互信息

香农信息量

信息量表示不确定性的大小。 信息量的单位是比特(bit)。

香 农 信 息 量 = log ⁡ 1 p = − log ⁡ p ( 以 2 为 底 ) 香农信息量=\log\frac{1}{p}=-\log p\quad(以2为底) =logp1=logp(2)

上式中,p越小,则不确定性越大,包含的信息量就越多。比如32支球队,在无任何先验信息的前提下,用二分法猜冠军队伍,最多猜5次,那么信息量就是 log ⁡ 1 32 = 5 \log \frac{1}{32}=5 log321=5


信息(Entropy)

用于衡量信息量和变量的不确定度。越大,所涵盖的信息量越大,变量的不确定度越大。对于任意一个随机变量X,它的定义如下:
H ( X ) = − ∑ x ∈ X P ( x ) log ⁡ P ( x ) H(X)=-\sum_{x\in X}P(x)\log P(x) H(X)=xXP(x)logP(x)
当X中每个x的概率P(x)相等时,X的不确定度最大,最大,也就是其涵盖的信息量最大。

的概念来源于热力学中的,代表系统中的混乱程度(也就是不确定度)。越大,系统越混乱,越接近与均匀分布。(很容易想象,如果系统的分布很不均匀,也就是有某种规律在里面,那么系统的混乱程度就低)


条件(Conditional Entropy)

条件的含义是:假定X和Y是两个随机变量。现在我们知道X和Y同时出现的概率(联合分布),以及在Y取不同值的前提下X的概率分布(条件概率分布)。那么定义X在Y的条件下的条件为:
H ( X ∣ Y ) = − ∑ x ∈ X , y ∈ Y P ( x , y ) l o g P ( x ∣ y ) H(X|Y)=-\sum_{x\in X,y\in Y}P(x,y)logP(x|y) H(XY)=xX,yYP(x,y)logP(xy)
可以证明,H(X)>=H(X|Y)。也就是说多了Y的信息后,关于X的不确定性下降了。在统计语言模型中,如果把Y看成是前一个字,那么在数学上就证明了二元模型的不确定性小于一元模型。

当Y与X完全无关(独立)时,H(X|Y)=H(X)

同理,可以定义有两个条件的条件
H ( X ∣ Y , Z ) = − ∑ x ∈ X , y ∈ Y , z ∈ Z P ( x , y , z ) l o g P ( x ∣ y , z ) H(X|Y,Z)=-\sum_{x\in X,y\in Y,z\in Z}P(x,y,z)logP(x|y,z) H(XY,Z)=xX,yY,zZP(x,y,z)logP(xy,z)
还可以证明H(X|Y)>=H(X|Y,Z)。也就是说,三元模型应该比二元的好。


互信息(Mutual Information)

互信息用来表示事件X和Y的相关性互信息是一个取值在0到min(H(X),H(Y))之间的函数。当X和Y完全相关时,它的取值是H(X),同时H(X)=H(Y);当X和Y完全不相关时,X与Y的互信息为0。互信息的公式如下:
I ( X ; Y ) = ∑ x ∈ X , y ∈ Y P ( x , y ) l o g P ( x , y ) P ( x ) P ( y ) = H ( X ) − H ( X ∣ Y ) I(X;Y)=\sum_{x\in X,y\in Y}P(x,y)log\frac{P(x,y)}{P(x)P(y)}=H(X)-H(X|Y) I(X;Y)=xX,yYP(x,y)logP(x)P(y)P(x,y)=H(X)H(XY)


相对(Relative Enrtopy)

又叫KL散度(Kullback-Leibler Divergence)
K L ( f ( x ) ∣ ∣ g ( x ) ) = ∑ x ∈ X f ( x ) ⋅ log ⁡ f ( x ) g ( x ) KL(f(x)||g(x))=\sum_{x\in X}f(x)\cdot \log\frac{f(x)}{g(x)} KL(f(x)g(x))=xXf(x)logg(x)f(x)
相对也用来衡量相关性,但和变量的互信息不同,它用来衡量两个取值为正数的函数的相似性。

不必关心公式本身,只要记住下面三条结论就好:

  1. 如果两个函数完全相同,那么它们的相对为0
  2. 相对越大,两个函数的差异越大;相对越小,两个函数的差异越小
  3. 对于概率分布或者概率密度函数(>0),如果取值都大于0,那么相对可以度量两个随机分布的差异性

需要注意,相对不对称的,即:
K L ( f ( x ) ∣ ∣ g ( x ) ) ≠ K L ( g ( x ) ∣ ∣ f ( x ) ) KL(f(x)||g(x)) \ne KL(g(x)||f(x)) KL(f(x)g(x))=KL(g(x)f(x))
因此为了方便,詹森和香农剔除一种新的相对计算方法,将不等式两边取平均,即:
J S ( f ( x ) ∣ ∣ g ( x ) ) = 1 2 [ K L ( f ( x ) ∣ ∣ g ( x ) ) + K L ( g ( x ) ∣ ∣ f ( x ) ) ] JS(f(x)||g(x))=\frac{1}{2}[KL(f(x)||g(x))+KL(g(x)||f(x))] JS(f(x)g(x))=21[KL(f(x)g(x))+KL(g(x)f(x))]


交叉(Cross-Entropy)

对于一个随机事件,其真实概率分布为p(x),从数据中得到的概率分布为q(x),则我们定义,交叉为:
H ( p , q ) = ∑ i p ( x ) log ⁡ 1 q ( x ) = − ∑ i p ( x ) log ⁡ q ( x ) H(p,q)=\sum_ip(x)\log\frac{1}{q(x)}=-\sum_ip(x)\log q(x) H(p,q)=ip(x)logq(x)1=ip(x)logq(x)
理解:

用p的来衡量识别一个真实分布的信息量: H ( p ) = ∑ p log ⁡ 1 p H(p)=\sum p\log \frac{1}{p} H(p)=plogp1

用q来估计真实分布为p的样本的信息量: H ( p , q ) = ∑ p log ⁡ 1 q H(p,q)=\sum p\log \frac{1}{q} H(p,q)=plogq1

则估计多出来的冗余信息量 D ( p ∣ ∣ q ) = H ( p , q ) − H ( p ) = ∑ p log ⁡ p q D(p||q)=H(p,q)-H(p)=\sum p\log\frac{p}{q} D(pq)=H(p,q)H(p)=plogqp (就是KL散度)

在机器学习中,通常设定p为真实标记的分布,q为训练后模型预测标记的分布。很容易发现:
H ( p , q ) = H ( p ) + D K L ( p ∣ ∣ q ) H(p,q)=H(p)+D_{KL}(p||q) H(p,q)=H(p)+DKL(pq)
即:pq的交叉=p的信息+pq的KL散度(相对

由于真实分布的信息H§是固定不变的,因此我们在机器学习中就用交叉作为损失函数。

显然, H ( p , q ) ≥ H ( p ) H(p,q)\ge H(p) H(p,q)H(p)


http://www.niftyadmin.cn/n/1548773.html

相关文章

农业领域的知识图谱构建(Agriculture_KnowledgeGraph)

Agriculture_KnowledgeGraph demo:http://ecnukg.vicp.io github:https://github.com/qq547276542/Agriculture_KnowledgeGraph 欢迎star&fork~ 命名实体识别 进入主页面,输入文本,即可看到以下命名实体和分词的结果&#x…

关于java中使用FileOutputStream的write函数写一个整型数,在读取的时候的异常

java.io.FileOutputStream的write函数能写整型数和byte[]数组进行写入 当使用整型数去写后,再用FileInputStream去读取(因为FileInputStream不支持用整型去读取,只能用Byte[]数组),byte数组只会读取一个字节&#xff0…

java中设置JFrame或者JPanel的布局为空的时候,出现控件不能显示问题的解决

最近在写一个压缩算法,用到了java.swing。也遇到了控件不能显示的问题,现总结如下: 1. JFrame和JPanel都是容器,必须在在里面添加子容器和控件之前设置布局为null,不然控件是添加不进去的。 2.如果是很小的矩形框&…

利用SSH远程登录服务器使用的SSH原理

说明:由于在搭建自己的博客,对SSH有了简单认识,特记录此篇文章。 SSH (Secure Shell) 是一种协议标准,主流的协议有有两个不兼容的版本分别是:1.x和2.x,意味着服务器端和客户端必须…

同步IO 和异步IO

同步IO:在一个线程中,CPU执行代码的速度极快,然而,一旦遇到IO操作,如读写文件、发送网络数据时,就需要等待IO操作完成,才能继续进行下一步操作。IO期间CPU会转去执行其他线程。 异步IO&#xf…

View类和ViewGroup的关系以及LayoutParams和MarginLayoutParams的关系

View类和ViewGroup类都位于android.view包中(View和ViewGroup的子类位于android.widget包中); ViewGroup类是View类的子类,是View类的扩展,是一个抽象类; ViewGroup中的LayoutParams和MarginLayoutParams…

Android中RelativeLayout布局各个xml相对布局属性的介绍和使用

在RelativeLayout类中的内部类LayoutParams提供了各种与相对布局有关的属性。 android:layout_above,android:layout_below,android:layout_toLeftOf,android:layout_toRightOf:分别用于控制此组件与其他组件的相对位置为上下左右…

Android线性LinearLayout布局xml属性介绍

因为不同布局有不同的xml标记所以RelativeLayout拥有的属性在LinearLayout中不一定有。 LinearLayout标记中的属性除了通用的属性外还有android:orientation和android:gravity,他们分别的作用是控制组件水平或者垂直排列和控制全部组件在布局的哪个位置显示&#x…