信息熵概念理解及ML相关应用

基础概念

对于一个随机变量X,其信息熵可以表示为:

H(X) =- \sum P(xi) log P(xi)

为什么是这样,信息熵代表了什么含义?

含义:熵代表信息(事件)的不确定度,代表确定知道一个事件发生需要消耗的能量。

或者可以理解为:熵是服从某一特定概率分布事件的理论最小平均编码长度。涉及到编码相关概念,不能不提一下huffman编码,这里不重点讲,具体逻辑就是出现概率多的字符采用最短的编码方式。

信息熵的三条性质:

1. 单调性

不确定度和事件发生的概率有明显的逻辑关系:

概率越大,不确定度(熵)越小;

概率越小,不确定度(熵)越大。

即,不确定度函数f是概率p的单调减函数

可以将事件的熵理解为事件的不确定度。

2. 非负性

熵不能为负,想象一下一个事件发生的不确定度为-1,是没有意义的,即你为了获知一个事件发生,消耗的能量为负,是不符合物理规律的。(我在别处看到的解释:获知了消息却增加了不确定度是不合理的,不是太好理解)

3.可加性

多随机事件同时发生的总不确定度应该表示为各事件不确定度的和。

H(A,B) = H(A) + H(B) 

A,B需要相互独立;

补充一下,若A,B不互相独立,那么满足

H(A,B) = H(A) + H(B) - I(A,B)

其中I(A,B)是互信息,代表一个随机变量包含另一个随机变量信息量的度量。

综上,log函数满足以上性质,选用概率的log函数来度量不确定度,即熵。香农严格证明了满足上述三个条件的随机变量不确定性度量函数具有唯一形式:

这个时候出现另外一个问题,为什么要给logP(x) 乘上p(x),这个应该理解为对每个可能发生事件的熵做一个加权,这个权重就是该事件的概率,加权求和后得到的综合即为X的熵(x是X可能的取值)。

决策树中的应用

决策树的核心思想就是信息熵。决策树用于分类任务时,他的基础思想是回答每一个问题(对树的每一个节点做决策)。而这个过程找的是最优分类属性,即,如何设置问题。找到了最优分类属性,就找到了分类的方法。解决这个问题的核心就是利用信息熵。

这其中涉及到纯度、信息增益的概念。

信息熵是度量样本集合纯度最常用的一种指标。熵越小,纯度越大。

纯度,理解为样本属于一个类别的比例,数据分布越分散,表明纯度越小,越集中,表明纯度越大。

熵描述信息的不确定度(混乱程度)。纯度越小,意即数据分布越分散,信息的不确定度就大,即熵越大。(就纯在这绕概念理解==!)

信息增益:

假定离散属性a有V个可能的取值,若使用a 来对样本集D 进行划分,则会产生V 个分支结点。其中第v个分支结点包含了D 中所有在属性a 上取值为av 的样本,记为Dv. 我们根据信息熵公式计算出Dv的信息熵,再考虑到不同的分支结点所包含的样本数不同,给分支结点赋予权重IDvI/IDI ,即样本数越多的分支结点的影响越大,于是可计算出用属性α 对样本集D 进行划分所获得的"信息增益" (information gain)。

 Ent是信息熵计算公式。信息增益理解为,样本集本身的信息熵-使用属性a划分数据后样本集的信息熵(记为M-N,M是样本集自身属性,也就是说算法目标是找到分类属性使N越小,即分类后的数据混乱程度为最低)。

一般而言,信息增益越大,则意味着使用属性a来进行划分所获得的"纯度提升"越大。所以属性a就是要找更优的分类属性。

因此,通过对比计算使用各属性分类的信息增益,选取使得信息增益最大的属性作为分类节点。

举个例子:

3个正例,2个负例,

M = -3/5log(3/5)-2/5log(3/5),这是原数据集的信息熵,可以理解为根节点的信息熵。

对于每个样本,都有V个属性,需要计算每个属性的信息增益。

例如,属性"颜色",有三个可能的取值(红黄蓝/012),因此可以得到三个子集,

例如红色子集,有一个正例一个负例;

则其信息熵为:N1 = -(1/2log(1/2)+1/2log(1/2))

依次可以算出三个子集的信息熵,N = N1 + N2 + N3

以此得出属性“颜色”的信息增益:

Gain(D,颜色)=M-N

对于这V个属性都可以算出信息增益;选取信息增益最大的属性作为划分数据集的属性,即这是第一个计算得到的节点。后续节点以此计算得到,已确定的属性(“颜色”)A不再作为候选划分属性。

交叉熵、相对熵

在深度学习中,常用到这两个概念,作为损失函数。这两个概念当然和信息熵是密不可分的。

相对熵

相对熵:KL散度,度量两个分布的差异。

 KL(P||Q) = \int p(x)log\frac{p(x)}{q(x))}dx

p(x)、q(x)分别为分布P、Q的概率密度函数。

这个定义为什么是这个样子嘞:

一个随机变量z,通过一个参数为θ的网络后,生成的数据分布为Pθ(x),希望它和真实数据分布越接近越好。

即从pdata(x)中采样出样本集,使得这些样本通过网络生成出来的概率越大,表示所谓生成数据分布和真实数据分布越接近。

 通过如下推导,得出KL散度的形式。

交叉熵

再进一步推导一下:

KL(P||Q)= \int p(x)logp(x)dx - \int p(x)logq(x)dx = -H(P)+H(P,Q)

这就说明了交叉熵和相对熵的关系。

有一点很微妙但很重要:对于期望,我们使用真实概率分布P来计算;对于编码长度,我们使用假设的概率分布Q来计算,因为它是预估用于编码信息的。因为熵是理论上的平均最小编码长度,所以交叉熵只可能大于等于熵。

交叉熵对比了模型的预测结果和数据的真实标签,随着预测越来越准确,交叉熵的值越来越小,如果预测完全正确,交叉熵的值就为0(可以求导推导计算一下loss的反向传播过程)。因此,训练分类模型时,可以使用交叉熵作为损失函数。

H(P): 对来自P的随机变量进行编码的最小字节数

H(P,Q): 使用基于Q的编码对来自P的变量进行编码所需要的字节数

而KL散度:使用基于Q的编码对来自己P的变量进行编码所需要的“额外”字节数(相比最小字节数)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值