今天看啥  ›  专栏  ›  木东居士的茶水间

机器学习面试之各种混乱的熵(二)

木东居士的茶水间  · 掘金  ·  · 2018-01-28 07:28

0x00 前言

此为《机器学习面试之各种混乱的熵》的第二部分,本篇将分享前文提到的各种熵,内容将包括:联合熵、条件熵、相对熵和交叉熵。

0x01 联合熵

虽然前文提出了那么多熵,但它们之间是有内在联系的,所以,我们尽可能按照它们的内在关系开展学习,先从联合熵说起。

联合熵与联合概率分布有关,对于随机变量 X 和 Y,二者的联合概率分布为 p(x,y),则这个联合概率分布的熵就叫做联合熵:

H( x,y) =−Σ p(x,y) log( p(x,y) )

H (x, y) =−Σ p( x,y )lo g( p(x ,y ))

我们假设 X 和 Y 都服从伯努利分布,且相互独立,可以把二者想象为上面的抛硬币,这样思考可以有所依托,不至于太抽象。X 正面朝上的概率为 p1,Y 正面朝上的概率为 p2,那么,它们的联合熵是多少呢?

显然,我们需要找出联合概率分布,如下图所示:

取值情况 概率
(正反) p1 * (1-p2)
(正正) p1 * p2
(反正) p2 * (1-p1)
(反反) (1-p1) * (1-p2)

上面就是联合分布,自然可以据此算出它的熵,由于表达式写出来太麻烦,这里就省去了,感兴趣的可以自己写一下。

我们关心的问题是,H(x,y) 和 H(x),H(y) 有什么关系呢?

这里不想进行繁杂的数学证明,而是要继续用我们的直觉来帮助思考。查看上图,我们和Y的概率分布进行对比。

Y 原先只有两个概率 p2 和 (1-p2),联合分布却有四个概率,这四个概率又可以认为是将Y的每个概率进行了分拆,p2 被分成了p2p1 和 p2(1-p1)。也就是说,对于Y的每个取值,本身就具有一个不确定性 (p2),由于要与X联合起来,就在每个取值的不确定性上又引入了不确定性,不确定性显然是增大了。

如果你理解了上面关于熵的含义,那么,不难想出,H(x,y) 肯定是大于等于 H(x) 和 H(y) 的。仅当X没有不确定性时,比如永远是正面朝上,此时,在Y的基础上联合X,并没有引入新的不确定性,所以,H(x,y)=H(y)。

以上,我们没有运用数学,仅仅依靠感性直觉的思考就确定了联合熵的一些性质,可见,善于运用直觉是很重要的。

0x02 条件熵

现在我们知道,x,y的联合熵大于等于x和y单独的熵,对于y来说,引入的x增大了熵,那么,x的引入增加了多大的熵呢?这就是条件熵。

H( x|y )=H(x, y)− H(y)

H (x| y )=H (x, y) −H (y )

这里,有一个容易搞错的地方,H(x|y) 叫做条件熵,它可不是条件概率 p(x|y) 的熵。为啥?因为 p(x|y) 压根就不是一个概率分布!!!还是以上面的两枚硬币为例,我们来计算一下 p(x|y),注意,我们的例子中假设x,y是相互独立的

P(X | Y) 概率
P(正 | 反) p1
P(正 | 正) p1
P(反 | 正) 1-p1
P(反 | 反) 1-p1

可见,所有的 P(x|y) 相加是2,根本就不是一个概率分布。有人可能会说,那为什么要叫条件熵,这不是故意误导人吗!

这是因为,条件熵的计算,和条件概率还是有点关系的。如下:

H( x|y )=− Σp(x, y)log(p(x|y ))

H (x| y )=− Σ p( x,y )lo g( p(x | y ))

这个公式可以由上面的熵的定义和条件熵的定义推导得出,这里就不推导了,感兴趣的可以自己推导下,并不难。

这里我们再分析一下条件熵 H(x|y) 与 H(x) 的关系,仍然用直觉法。条件熵是在 Y 上引入 X 后增加的不确定性,从感觉上,增加的不确定性无论如何不可能大于X本身自有的不确定性,也就是:

H( x|y )<=H(x)

H (x| y)<= H(x)

仅当x,y相互独立时,等号才成立。

这个结论是我们感性认识到的,事实上,也可以进行证明得到。

学习过《统计学习方法》的同学,肯定对里面的信息增益概念有所了解,其实,我们仍然可以用直觉来理解这个概念。

不过,我们需要换种方式解读 H(x|y) <= H(x)

之前,我们得出这个结论,是说Y上引入的X增加的不确定性不能大于X本身的不确定性。换个角度,X原有的不确定性是 H(x),现在我们引入 Y,得到了联合的不确定性 H(x,y),从这个不确定性中减去Y自身带来的不确定性 H(Y),剩下的就是 H(x|y),这个值小于等于 H(x),说明什么?说明,由于 Y 的引入,X的不确定性变小了,不确定性变小,就是信息含量的增加。不确定性变小的多少就是信息增益:

ga in(X )=H(x) −H(x |y)

g ain (X )=H (x) −H (x| y )

信息增益也叫做互信息。二者完全一样。

注意: 这里简单说下我对李航书的看法,一句话:不适合用来入门!只适合用来提高和面试准备。我意见比较大的是对逻辑回归的推导,不优雅。回头,我会专门写一篇逻辑回归的推导文章。

0x03 相对熵(又叫互熵,KL散度)

把相对熵放到最后来讲,是因为它和前面的几个概念联系不大。

假设我们有如下5个样本:

样本 标签
1 1
2 1
3 -1
4 -1
5 -1

我们要以此推导出标签的真实分布。假设标签的真实分布是 q(x),x 取值为1和-1

为了确定 q(x) 在 x=1 和 x=-1 处的值,我们当然要运用最大似然法则。最大似然函数是:

q(x= 1)∗ q(x=1) ∗q(x =−1)∗q (x=−1) ∗q(x=− 1)

q (x= 1)∗ q( x=1 )∗q (x= −1) ∗q (x= −1) ∗q (x=− 1)

如果你最大似然函数理解上有困难,建议补充一下这方面的知识,因为这个知识点在机器学习中运用的太多,确实无法绕过,逻辑回归本质上也是用的最大似然函数。

对上面的式子做合并处理,得到:

q(x= 1)2 ∗q(x =−1) 3

进一步,对上面的式子开5次方,得到:

q(x= 1)( 2/5) ∗q(x= −1) (3/ 5)

假设p(x)就是由样本中统计出来的标签分布,2/5 就是 p(x=1),3/5 就是p(x=-1)。所以,对上面的式子进行规整就得到最大似然函数最终表达式:

Π q(x) p(x)

再取对数就是

Σ p(x) log( q(x))

再取负号就是

d=−Σ p(x) log( q(x))

最大化似然函数就是最小化d。

心急的朋友可能在想,说了半天,互熵到底是啥?现在就给出定义:

D(q| |p)=d −H(p )

这里的d就是我们上面得到的 d。

互熵描述的是什么呢?如何从直觉上进行理解?毕竟,上面用最大似然推出互熵还是有点太数学了。

这里,我们需要观察一下 d,假设 q 和 p 完全相同,那么 d 就是 H(p),互熵 D 也就等于 0 了。

同理,q 和 p 越接近,越相同,则 D 就越小。互熵 D(q||p) 实际上就是在衡量我们通过计算得出的真实分布的表达式q,究竟与由样本统计得来的分布 p 有多接近,在衡量多接近这个概念时,我们运用到了熵的形式。

0x04 交叉熵

交叉熵放到最后,因为它最简单,它就是上面得出的 d!

我们可以体会一下为什么叫做交叉熵,交叉是什么含义?

d=−Σ p(x) log( q(x))

原本,p 的熵是 -Σp(x)log(p(x)),q 的熵是 -Σq(x)log(q(x))

现在,把 p 熵的 log 成分换成 q(x), q 熵的 log 成分换成 p(x),(这里做了一个“交叉”!)就是

d=−Σ p(x) log( q(x))

d2 =−Σ q(x)log(p(x) )

其中,d 就是 p 和 q 的交叉熵,d2 就是 q 和 p 的交叉熵。

从中我们也体会到,交叉熵是不满足交换律的,也就是说 p和 q 的交叉熵与 q 和 p 的交叉熵是不一样的。

0xFF 无总结,不进步

以上,是我对各种熵的概念的一些理解和感悟,分享出来,希望能够帮助到需要的朋友,当然,由于是个人理解,难免有不到位,甚至错误的地方,还望各路大神多多批评指正!

郑重声明:本篇文章转载、抄袭、引用自仗剑走天涯的《机器学习面试之各种混乱的熵》

木东居士 wechat 欢迎关注我的微信公众号! 坚持原创技术分享,您的支持将鼓励我继续创作! 木东居士 微信支付

微信支付




原文地址:访问原文地址
快照地址: 访问文章快照