IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【知识建设】信息熵、条件熵、互信息、交叉熵及相对熵(KL散度) -> 正文阅读

[人工智能]【知识建设】信息熵、条件熵、互信息、交叉熵及相对熵(KL散度)

一、信息熵

1. 定义

衡量一个随机变量 X X X的信息量,用 H H H表示

根据这个定义,这应该是个不确定的值(随机变量是变化的),而数学上使用期望来将这种不确定性量化:

H = ∑ x ∈ X P ( x ) ? x H = \sum_{x \in X}P(x)*x H=xX?P(x)?x的信息量

其中 x x x为随机变量 X X X的不同取值

那么问题就变成了如何在具体的情形(即一个事件)下,估算随机变量的信息量

2. 语义理解

先从语义上理解信息量应该满足的条件,当一件事的不确定性越大(概率越小),那么它所包含的信息量就应该越大,相反,不确定性越小(概率越大),包含的信息量就越小;比如太阳从东边升起这件事是非常确定的,不确定性很小,那么你告诉我也不会改变什么,也就是没什么信息量。由此得知,信息量应该是关于概率的连续函数,其大小应该跟概率成反比,概率的范围是 [ 0 , 1 ] [0, 1] [0,1],那么信息量就应该是 [ 0 , 1 ] [0, 1] [0,1]为定义域的连续函数

另外,信息量还应该保证不是负值(一件事揭露的信息量应该至少为0,不可能是负值)(也就是说信息量在定义域 [ 0 , 1 ] [0, 1] [0,1]上应为非负值);具有可加性(同时告知两件事,应该比告知一件事的信息量大或相等)(其实可加性就指示了应该使用 l o g log log函数了);概率越小,信息量的增加速度越快,反之,信息量增加速度越慢,也就是说在定义域 [ 0 , 1 ] [0, 1] [0,1]上斜率应该递减(仍然参考太阳的例子)

3. 公式

那么满足上诉四个条件的函数,也就是负对数函数(或许还有别的吧,但是负对数函数非常常用),公式为 ? l o g ( x ) -log(x) ?log(x)。而具体事件 x x x的信息量,在信息论中也称为自信息。综上所述,信息熵的整体公式应为:

H = ? ∑ x ∈ X P ( x ) ? l o g P ( x ) H = -\sum_{x \in X}P(x)*logP(x) H=?xX?P(x)?logP(x)

4. 自信息与信息熵

自信息表示一个确定事件的信息量,即一个事件的不确定性;而信息熵表示随机变量或整个系统的不确定性,是随机变量在不同事件下的信息量的期望,所以信息熵越大,表示该系统的不确定性越大

二、条件熵

H ( Y ∣ X ) H(Y|X) H(YX),定义为 X X X给定条件下 Y Y Y的条件分布的熵对 X X X的数学期望

这个定义也太拧巴了,可以理解为,在已知 X X X事件的情况下,事件 Y Y Y的信息量。而 X X X是一个不确定事件,因此需要通过将 X X X化为具体事件 x x x,分别计算不同 x x x下Y的信息量,则公式应为:

H ( Y ∣ X ) = ∑ x ∈ X P ( x ) H ( Y ∣ X = x ) H(Y|X) = \sum_{x \in X}P(x)H(Y|X=x) H(YX)=xX?P(x)H(YX=x)

那么就要计算 H ( Y ∣ X = x ) H(Y|X=x) H(YX=x),即,在确定事件 x x x下,计算 Y Y Y的信息量,同样的,需要化为 Y Y Y的具体事件:

H ( Y ∣ X ) = ? ∑ x ∈ X P ( x ) ∑ y ∈ Y P ( y ∣ x ) l o g P ( y ∣ x ) H(Y|X) = -\sum_{x \in X}P(x) \sum_{y \in Y}P(y|x)logP(y|x) H(YX)=?xX?P(x)yY?P(yx)logP(yx)

根据条件概率的转化公式:

H ( Y ∣ X ) = ? ∑ x ∈ X ∑ y ∈ Y P ( x , y ) l o g P ( y ∣ x ) H(Y|X) = -\sum_{x \in X} \sum_{y \in Y}P(x, y)logP(y|x) H(YX)=?xX?yY?P(x,y)logP(yx)

三、互信息

1. 定义

衡量随机变量之间相互依赖程度的度量

2. 公式

假如有两个随机变量 X X X Y Y Y,那么要衡量 Y Y Y变量对 X X X变量的影响,就应该去计算,在未知 Y Y Y变量的情况下 X X X变量的信息量,和已知 Y Y Y变量的情况下 X X X变量的信息量,即:

I ( X ; Y ) = H ( X ) ? H ( X ∣ Y ) I(X;Y) = H(X) - H(X|Y) I(X;Y)=H(X)?H(XY)

结合上面对于信息熵和条件熵的解释,我们对齐进行整理:

I ( X ; Y ) = ? ∑ x ∈ X P ( x ) ? l o g P ( x ) + ∑ x ∈ X ∑ y ∈ Y P ( x , y ) l o g P ( x ∣ y ) I(X;Y) = -\sum_{x \in X}P(x)*logP(x) + \sum_{x \in X} \sum_{y \in Y}P(x, y)logP(x|y) I(X;Y)=?xX?P(x)?logP(x)+xX?yY?P(x,y)logP(xy)

其中根据全概率公式 P ( x ) = ∑ y ∈ Y P ( x , y ) P(x) = \sum_{y \in Y}P(x, y) P(x)=yY?P(x,y),得到:

I ( X ; Y ) = ? ∑ x ∈ X ∑ y ∈ Y P ( x , y ) ? l o g P ( x ) + ∑ x ∈ X ∑ y ∈ Y P ( x , y ) l o g P ( x ∣ y ) I(X;Y) = -\sum_{x \in X}\sum_{y \in Y}P(x, y)*logP(x) + \sum_{x \in X} \sum_{y \in Y}P(x, y)logP(x|y) I(X;Y)=?xX?yY?P(x,y)?logP(x)+xX?yY?P(x,y)logP(xy)

然后可以合并同类项 P ( x , y ) P(x, y) P(x,y)

I ( X ; Y ) = ∑ x ∈ X ∑ y ∈ Y P ( x , y ) ? l o g P ( x , y ) P ( x ) P ( y ) I(X;Y) = \sum_{x \in X}\sum_{y \in Y}P(x, y)*log \frac{P(x, y)}{P(x)P(y)} I(X;Y)=xX?yY?P(x,y)?logP(x)P(y)P(x,y)?

3. 应用

互信息和信息熵的关系可以通过下图表示:
在这里插入图片描述
经常见到的目标是,要使互信息最大化,就是最大化两个随机事件的相关性,在深度学习中,就是最大化数据集所拟合出的分布的相关性

当两个随机变量相同时,互信息最大,公式:

I ( X ; X ) = H ( X ) ? H ( X ∣ X ) = H ( X ) I(X;X) = H(X) - H(X|X) = H(X) I(X;X)=H(X)?H(XX)=H(X)

四、交叉熵

这里先引入对信息熵的另一种理解,即为了消除某随机变量的不确定性要付出的最小努力。当你正确估计随机变量的分布(即真实分布,记为 p ( x ) p(x) p(x))时,这种努力会达到最小;相反,当你得到的是非真实分布(记为 q ( x ) q(x) q(x))时,就要为了消除随机变量的不确定性付出更多努力。而我们要衡量这种非真实分布下要付出的努力,就用到了交叉熵:

H ( p , q ) = ? ∑ x ∈ X p ( x ) l o g q ( x ) H(p, q) = -\sum_{x \in X}p(x)log q(x) H(p,q)=?xX?p(x)logq(x)

p ( x ) p(x) p(x)为随机变量的特定取值下的概率,这个是不变的,而 l o g q ( x ) logq(x) logq(x)表示随机变量特定取值下,为了消除不确定性所付出的努力,这一点是与对分布的估计相关的,当你正确估计,则付出的努力小,反之,付出的努力大;

而许多地方消除了负号,写作下面的形式:

H ( p , q ) = ∑ x ∈ X p ( x ) l o g 1 q ( x ) H(p,q) = \sum_{x \in X}p(x)log\frac{1}{q(x)} H(p,q)=xX?p(x)logq(x)1?

五、相对熵,也称为KL散度

上一部分我们谈到,信息熵可以理解为,为了消除不确定性所付出的最小努力,而交叉熵衡量了错误估计随机变量的分布时,消除不确定性所付出的努力;那么如何去衡量这种错误估计时的努力,与需要付出的最小努力,他们之间的差异呢?就用到了相对熵。

根据这种理解,我们可以结合信息熵和交叉熵的公式(仍然假设 p p p为真实分布):

D K L ( p ∣ ∣ q ) = H ( p , q ) ? H ( p ) D_{KL}(p||q) = H(p,q) - H(p) DKL?(pq)=H(p,q)?H(p)

代入,

D K L ( p ∣ ∣ q ) = ? ∑ x ∈ X p ( x ) l o g q ( x ) + ∑ x ∈ X p ( x ) l o g p ( x ) D_{KL}(p||q) = -\sum_{x \in X}p(x)logq(x) + \sum_{x \in X}p(x) logp(x) DKL?(pq)=?xX?p(x)logq(x)+xX?p(x)logp(x)

稍作整理,

D K L ( p ∣ ∣ q ) = ∑ x ∈ X p ( x ) l o g p ( x ) q ( x ) D_{KL}(p||q) = \sum_{x \in X}p(x)log \frac{p(x)}{q(x)} DKL?(pq)=xX?p(x)logq(x)p(x)?

六、结束语

两天了,终于整理完confuse我两年的小登西。谢谢下面参考:

信息熵是什么? - 运筹之学的回答 - 知乎

通俗理解条件熵 - 忆臻的文章 - 知乎

什么是「互信息」? - 甜草莓的回答 - 知乎

如何通俗的解释交叉熵与相对熵? - Peiwen的回答 - 知乎

详解机器学习中的熵、条件熵、相对熵和交叉熵

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-04-07 22:41:41  更:2022-04-07 22:42:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/8 4:36:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码