【机器学习】熵与KL散度(Kullback-Leibler divergence)

1. 信息量

1.1 定义

信息量是对一个概率P(θ)中所包含的信息的量化。

1.2 解释

假设我们要判断一个人是好人还是坏人的概率。现在有两个概率PP_{1}(好人)=0.8,P_{1}(好人)=0.5。P1包含的信息量少,P2包含的信息量多。为什么后者信息量多呢? 因为我们做出决策所需要的考虑会越多,换句话说就是信息量太多,我们不知道怎么做决策。而前者概率为0.8,判断一个人是好人还是坏人的所需要的额外信息量少,因此越接近1的概率信息量越少。

1.3 数学表达

1.3.1 符号说明

通常信息量表示为一个关于P(\theta)的函数,用子母I表示信息量,I = f(p(\theta))

1.3.2 满足条件

前者表示不同x的概率,后者表示不同概率表达下所包含的信息量

  • p(x_i) = p(x_j) \Leftrightarrow I(x_i) = I(x_j)
  • p(x_i) < p(x_j) \Leftrightarrow I(x_i) > I(x_j)
  • p(x_i) =1 \Leftrightarrow I(x_i) =0
  • I(x_i,y_i) = I(x_i)+I(y_i)

1.3.3 具体公式

对数的表达可以很好的满足1.3.2的条件,是我们将信息量量化的一个方式。

公式:I(x_i) = -logp(x_i),可以将两种不同的概率代入式子,对比是否满足1.3.2中的所有条件。

2. 熵

2.1 定义

熵表示混乱程度,如人在判断是否出门或一个人是否是好人时,大脑是否不容易作出决策,若难以作出决策,表示混乱程度很大,也就是熵很大,这点和信息量类似。不过略有不同的是,熵是信息量的期望,简单来说,熵是信息量的均值。

2.2 数学表达

2.2.1 公式

通常用H来表示熵

H(X) = \sum_{i=1}^{N} -p(x_i)logp(x_i)

2.2.2 案例解释

假设我们有如下数据,代表我们在这个世界上一共只认识14个人,第一列是编号,第二列表示这个人是否是好人,1代表是,0代表不是。

编号是否好人
11
20
30
41
50
60
70
80
91
101
110
121
131
140

那么第二列x_2的熵是多少呢?根据2.2.1的公式,如下:

H(x_2) = - p(好人)log p(好人) - p(坏人)log p(坏人),即:

H(x_2) = \frac{1}{6}log \frac{1}{6} + \frac{1}{8}log \frac{1}{8}

其中,1/6和1/8分别是第二列中1和0的频率。

为什么说熵是信息量的期望呢?如果我们将信息量看做是由X映射出来的随机变量就很好理解,如下所示:

随机变量logp(好人)logp(坏人)
频率p1/61/8

这样就可以清晰看出,熵其实就是信息量的期望。

3. KL散度

3.1 定义

KL散度表示两个不同分布间的差异

3.2 数学表达

D_{KL}(p||q) = \sum_{i=1}^{N}p(x_i)log\frac{p(x_i)}{q(x_i)}

通常,p(x)为已知的分布,q(x)是未知的分布。显示中,我们往往将p代表的分布表示为样本中的已知分布y,q(x)是需要经过模型训练出的预测分布,若预测分布和样本中已知分布相同,那么KL散度的值就是0。

需要注意的是:p(x)其实是上帝分布,我们的目的是通过得到q(x)去拟合上帝分布,但是由于上帝分布我们通常是不可知的,所以只能通过抽样的方式来代表上帝分布,样本所代表的的分布即p(x)

3.3 性质

  • D_{KL}(p||q) \geq 0,可以通过jensen不等式证明。
  • D_{KL}(p||q) = 0p(x_i) = q(x_i),即两个分布相同
  • KL散度不可以理解为距离公式,因为若理解为距离公式,当p(x)和q(x)互换位置,得到的值应该一样才对,但是它是非对称的,换位置后得到的值不一样。

3.4 优点

由于KL散度是非对称的,更加有利于我们将q(x)分布推往上帝分布p(x),因为在推动的过程中,上帝分布不会发生改变。

解释:

如果KL散度是对称的,我们在推动q(x)的同时,上帝分布p(x)也会往q(x)的方向前进,换句话说,两个分布在互相靠近。但是当结果收敛时,我们得到的预测分布q(x)已经不是我们想要的那个靠近上帝分布q(x)的分布,因为此时上帝分布已经发生了变化,不是原本的上帝分布。

4. 交叉熵

4.1 定义

交叉熵是指两个分布相互节后的熵值的表示

4.2 数学表达

H(p,q) = p(x_i)log q(x_i)

= D_{KL}(p||q) + H(p_(x_i))

在3.2中我们已知KL散度,其实交叉熵就隐含在KL散度当中,现在将KL散度拆开,如下:

D_{KL}(p||q) = \sum_{i=1}^{N}p(x_i)log\frac{p(x_i)}{q(x_i)}

                     = \sum_{i=1}^{N}p(x_i)log p(x_i) - p(x_i)log q(x_i)

式子最后的结论中,负号左侧p(x_i)log p(x_i)是我们正常的熵值表达H(p(x_{i})),右侧p(x_i)log q(x_i)即我们所说的交叉熵。

5. 机器学习中的KL散度

那么KL散度如何用语机器学习呢,其实在3.4中也有说明。通过KL散度,我们可以将预测分布q(x)无限逼近样本分布p(x),从而达到我们预测的目的。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值