从信息熵的角度来理解机器学习要优化的目标


声明:本文转载自https://my.oschina.net/darylqian/blog/1476564,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

 

摘要:机器学习任务中最核心的工作是对构造合适的损失函数,并对其进行优化,得到最终的模型。那么如何来构造损失函数,常用的构造函数背后有哪些理论的支撑,本篇文章从熵的角度来解析,希望对对读者起到抛装引玉的作用。

一、 基础概念

信息量

对于离散概率,定义p_i的信息量为

wpsD01C.tmp

可以理解为需要查找多少次可以找到对应的离散值,比如概率0.125,对应的信息量是3,也就是说需要至少折半查找3次才能找到对应的离散取值。

信息熵(Information entropy

衡量信息的不确定性(对于人来说),熵越小,信息就越确定。通俗的说,可以从几个方面来描述,比如人判断一件事情时有把握的程度、信息压缩编码时最小需要的位数。简单的说,熵反应了信息量。定义如下wpsD01D.tmp

交叉熵(Cross Information entropy)

如果一件事情的不确定性为0,那么信息熵也为0,所以信息熵可以理解为消除事件不确定性所要付出的代价,而实际当中很难采用最真实的概率分布来对事件进行判断,而是采用一种接近真实的概率分布,比如q来拟合真实的场景,将q带入信息熵的公式就可以得出交叉熵的定义

wpsD01E.tmp

交叉熵所代表的含义是,采用非真实概率分布q下,要消除事件的不确定性所付出的代价,通常情况下,交叉熵要比信息熵大,证明的方法可参考Gibbs inequality

相对熵(relative Information entropy

交叉熵减去信息熵即是相对熵的定义

wpsD01F.tmp

实际上相对熵和交叉熵只相差了一个常量,代表了采用非真实概率分布q下,消除事件不确定性所付出的代价比采用真实概率分布下所付出的代价的差距,也可以看做是两个概率分布的差异性,和KL散度是等价的。

接下来举个例子来真切的感受下不同熵指标的变化。

举个例子A: 箱子里有4个球,2个白色,2个黑色,现在从中随即拿出来一个,猜测下颜色,猜对有奖。那么我们需要猜测几次才能中奖呢?很明显,白色和黑色的概率相同,那么最优的策略是随即选个颜色了,白色吧,如果不对,那就肯定是黑色了,所以最多只需要猜一次就可以完成。此时信息熵为

wpsD020.tmp

举个例子B:箱子里有4个球,1个白色,3个黑色,现在从中随机拿出来一个,猜测下颜色。很显然,黑色概率更高,此时肯定不会向例子A那样随即选择颜色了,更好的策略是先选择黑色,如果错了,在选择白色了。显然此时,能够猜对的概率要比A例子高很多,也就是意味着这个时间的不确定性相比A下降了。此时信息熵为

wpsD030.tmp

举个例子C: 箱子里有四个球,全是黑色,现在从中随即选择一个,猜测下颜色。太明显了,不用猜了。时间完全是确定性的,熵为0

wpsD031.tmp

举个例子D: 箱子里有四个球,1白3黑,但是不告诉真实的概率分布,现在从中选择一个,猜测下颜色。此时对时间完全一无所知,只能随机的来猜,默认黑白各半,试想这个肯定是不够优秀的策略,此时的交叉熵为

wpsD032.tmp

和例子B相比,使用随机猜测,事件的熵上升,说明基于的概率分布猜测不好,如果能够知道真实的概率分布,那么信息熵将为最低,H4-H2的差(相对熵)0.19,就是我们做模型、做特征工程、做优化的奋斗目标啊。

二、 损失函数

相对熵是要优化的目标,而相对熵和交叉熵相差一个常量,一般使用交叉熵来推导模型。因为本篇使用概率输出,所以选择二元分类逻辑回归模型和多元分类逻辑回归模型来描述基于熵的模型优化。

拿点击率预估来阐述,来了一条样本,要预估它的点击概率P(click),当然P(click)+P(nonclick)=1。显然对点击还是不点击这件事情来说,真实的概率分布就是(P(click)=100%,P(nonclick)=0%)或者(P(click)=0%,P(nonclick)=100%)。

那么我们已经知道了真实的概率分布,但是无法确切的知道具体的概率公式或者具体形式,所以只能通过构造一个概率公式比如

wpsD033.tmp

来近似真实的概率分布,那么我们就可以计算交叉熵了,形式如下

wpsD034.tmp

其中参数含义为

wpsD035.tmp

代入具体的构造概率公式,可以得到

wpsD036.tmp

其中y_hat是真实的label(1,0),这个形式和基于最大似然推导出来的损失函数形式上是一样了。

对于多类逻辑回归,最常见的场景为文本分类,此时有多个输出目标,也就是说有多个输出概率值,此时构造的概率公式为

wpsD037.tmp

针对每个输出,都一组对应的参数来进行拟合。此时的交叉熵形式如下

wpsD038.tmp

wpsD039.tmp

如果将k设置为2,就和二元分类一样了,但是形式看上仍然多了一组参数,而二元逻辑回归只有一组参数,实际上这一组参数是W0和W1的差值,为了节省空间,自然就没有多增加一组参数了。

有了交叉熵,也即要求的损失函数,剩下的事情就是通过梯度下降法来找到最优解了,在附录中,会把梯度推导的过程也粘贴过来,以备查阅。

三、 总结思考

本文从熵的角度来思考模型的优化问题,对于以概率输出的模型,都可以通过交叉熵的方式来定义优化目标,通过定义不同的概率公式,可以形成不同的模型。

交叉熵并不是概率输出模型的唯一优化方式,这是频率学派的常规思路,还可以通过贝叶斯的方式优化以概率输出为目标的模型,下一篇文章将对此阐述。

附录:

多元逻辑回归的梯度计算

对于输出label为i的样本进行交叉熵损失函数的梯度计算,求导的参数有W_0~W_k(k为分类数)

wpsD03A.tmp

先对W_i进行求导

wpsD03B.tmp

令:wpsD03C.tmp wpsD03D.tmp,则有

wpsD03E.tmp

wpsD03F.tmp

然后在对其余W_j请求求导

wpsD040.tmp

综合一下,可以得到多元分类逻辑回归模型损失函数的梯度计算公式为

wpsD051.tmp

实际应用中,损失函数使用自然对数而非以2为底对数,这样可以去掉ln(2)这个常数,同时并不改变模型本身的性质。

二元逻辑回归的梯度计算

此时参数只有一组,直接对W进行求偏导数,也分成两种情况下来计算,先看下Label=0的情况下的梯度

wpsD052.tmp

在看下Label=1的情况下的梯度

wpsD053.tmp

综合一下,可以得到二元分类逻辑回归模型的梯度计算公式

wpsD054.tmp

和多元回归一样,损失函数一般采用自然对数,可以消除常数ln(2)

本文发表于2017年07月20日 18:36
(c)注:本文转载自https://my.oschina.net/darylqian/blog/1476564,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 2180 讨论 0 喜欢 1

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1