最大熵模型

熵的相关概念,第一次在决策树那章做了简单介绍,但是要想正确理解熵的确实需要下一番功夫。这次,我们在最大熵模型这章继续来学习熵,理解熵在该模型中所扮演的角色。

以一个问题开始我们的学习:机器学习的目的或者意义是什么?

对于监督学习来说,我们希望通过现有获得的观测数据训练一个数据模型,然后来对未知类别样本和数据进行回归和分类预测。

那么问题来了,什么样的模型才是比较好的模型呢?也许熵可以给我们提供了另一种特别的视角。

好,让我们重新看一下熵的定义:

\[ H(x) = - \sum_{x=1}^N P(x)log(P(x)) \]

\[ 0 <= H(x) <= log|N|,右边等号成立当且仅当P(x)服从均匀分布 \]

比如,一个抛硬币的实验,得到正反两面的概率分别都是0.5,相应系统的熵为1。也就是说,如果一个随机变量的分布确定之后,熵也就唯一确定了。假设这里的$P(x)$是我们随机变量的真实分布,因此这个熵是我们的下界,任何估计得到的数据分布的熵都应当大于等于它。

那么,最大熵模型以及同样为指数模型的逻辑斯特回归模型究竟是怎么和熵联系起来的呢?为什么利用熵的约束可以使得我们训练的模型可以很好地表征观测数据。

首先,让我们来看一下逻辑斯特回归所使用的交叉熵损失函数:

\[ CE(x) = - \sum_{x=1}^N P(x)log(Q(x)) \]

\[ H(x) <= CE(x) , 等号成立当且仅当Q(x) = P(x) \]

因此,通过优化最小$CE(x)$会使得$Q(x)$尽量逼近真实数据分布$P(x)$。噢,原来通过最小化交叉熵可以使得模型朝着我们想要的方向进行优化,表达训练样本啊!

然后,我们再来看一下最大熵模型这边又是什么情况。

经验告诉我们,对于已知事件可以通过极大似然估计来统计各个事件发生的概率,而对于未知事件一般做法是把剩余概率平均分给这些事件。比如,下面这个简单的例子:

概率/颜色 红球 绿球 蓝球
P(x) 3/5 ?(1/5) ?(1/5)

为什么这样做?因为我们无法获得额外的信息来使得熵进一步减小,也可以说我们无法再做进一步的判断。

平均这个词生来就和熵有特殊的关系,我们知道当$P(x)$服从均匀分布时,系统的熵最大。

我们的目标刚好就是使得未知事件的概率分布为均匀分布,也就是使这些未知事件的熵最大。通过这个约束得到的模型就不会对未知事件做任何假设,公平的对待它们,这就是最大熵的核心思想。

先简单窥探一下最大熵模型中熵的引入定义:

\[ H(x) = - \sum_{x,y} P^-(x)P(y|x)log(P(y|x)) \]

注意,这里定义的是条件熵,$P(y|x)$是我们需要估计的目标分布。所以,优化上面的条件熵并使其最大,得到的最优模型就能实现我们公平的理想。当然,这种约束只应该尽量施加在未知样本上,而对于已知样本还需要做点什么,后面我们会继续探讨。

可能这里有人会有一些疑问,比如:

  1. 为什么都是熵, 怎么一下求最大值好,一下又求最小值好?

    我们的最终目的都是希望模型最优,熵大熵小只是准则和途径。最终都是希望估计分布和真实分布趋于一致。

  2. 抛硬币是服从均匀分布,如果我们针对该问题学习到的模型也大致服从均匀分布是不是说明该模型不好,因为熵大?

    我们只是希望估计分布的熵尽可能和真实分布的熵一致,而不是希望对真实分布做什么改变以求熵小。
    举个栗子,我只是希望我画苹果像真实的苹果,而不是要求苹果像其它什么水果,比如香蕉(假设苹果的熵比香蕉的熵大)。

最大熵模型

上一节提到最大熵模型是怎么利用熵来约束未知事件的概率分布服从均匀分布。那已知事件或者说已知样本怎么处理呢?我们还必须让我们的模型能够很好的表示已知样本啊!好像缺了什么,对吧?

是时候我们来看下最大熵代价损失函数:

\[ H(x) = - \sum_{x,y} P^-(x)P(y|x)log(P(y|x)) \]

\[ \sum_{x,y} P^-(x)P(y|x)f(x,y) = \sum_{x,y} P^-(x,y)f(x,y) \]

\[ \sum_{y} P(y|x) = 1 \]

第二个等式就是用来约束模型训练尽量表示我们的已知样本信息。

最大熵模型这里引入了一个特征函数的概念:

f(x,y) = 1, x与y满足某一事实
f(x,y) = 0, 否则

为什么需要特征函数?比较容易理解的是,特征函数其实是一个用户接口,我们可以通过定制特征函数来控制模型的训练。比如,我们可以这样设计特征函数:

f(x,y) = 1, 客户拥有一套房产,允许贷款
f(x,y) = 0, 否则

好像还是不太清楚为什么需要特征函数啊!我们换个角度来思考,即怎样度量两个分布之间的距离或者相似度呢?

\[ \sum_{x,y} ||p(x,y)-q(x,y)|| \]

\[ \sum_{x,y} p(x,y)f(x,y) = \sum_{x,y} q(x,y)f(x,y) \]

\[ \sum_{x,y} p(x,y)log(p(x,y) / q(x,y)) \]

第一个就是常用的欧式距离;第二个是$f(x,y)$关于两个分布的期望差值;第三个是KL距离。我们重点关注第二个度量方法,因为最大熵模型用的就是这种。

注意,$f(x,y)$必须是实数函数,而最大熵模型一般要求这个函数是一个二值函数。也就是说通过这个特征函数把$x$和$y$之间千丝万缕的关系转化成了一个实数值,这时我们就可以度量$P-(x)P(y|x)$和$P-(x,y)$两个分布之间的相似度了。

我们再来看个图,理解一下特征函数$f(x,y)$的实质意义是什么。

从这里看出,特征函数其实就是从分布上采样,特征函数越多、越好就可以使得采样越充分,但同时模型也就越复杂,容易过拟合。

所以在这些特征函数的约束下,使得两个分布在这些采样点上都能取得一致,进而使得两个分布尽量相似。

说到这里,特征函数的意义应该明白了。没错,最大熵模型就是通过约束上面说的两个期望相等来使得模型尽量去学习表征我们的观测数据。

最大熵模型学习

对于最大熵这种有约束的优化问题,一般情况下会通过拉格朗日乘子法把它转化为无约束优化问题。

\[ min_p max_w L(p,w) = \sum_{x,y} P^-(x)P(y|x)log(P(y|x)) + w_0(1- \sum_y P(y|x)) + \sum_{i=1}^n w_i(\sum_{x,y} P^-(x,y)f_i(x,y) - \sum_{x,y} P^-(x)P(y|x)f_i(x,y)) \]

整个优化目标表达式包含两个未知项,一个是待求的类后验分布$P(y|x)$,另一个是权重$w$。

一方面,我们希望$w$越大越好,这等价于要求模型要尽可能拟合或者说表示我们的数据;另一方面,希望最后选择的$P(y|x)$使得$L(p,w)$越小越好,这又等价于要求选择的模型使得条件熵$H(x)$越大越好。

到此,只要优化上面的函数,就可以满足我们两方面的需求了。

对于简单的栗子,我们可以直接求上面代价函数的解析解,其实就是二元函数的极值求解问题。比如,先对$P(y|x)$求偏导并令求导公式等于0,然后再对$w$求导并令求导公式等于0,解出$w^*$。

最终,我们求得的$P(y|x)$形式为:

\[ P_w(y|x) = \frac{exp(\sum_{i=1}^n w_if_i(x,y))}{Z_w(x) } \]

\[ Z_w(x) = \sum_y exp(\sum_{i=1}^n w_if_i(x,y)) \]

而实际上,我们遇到的问题大多是样本多、特征函数也多的情况,这个时候只能采用迭代求解的方法。

最大熵模型目前最采用的迭代优化算法主要是IIS(迭代尺度法),也出现了该算法的很多变体算法。大家有兴趣可以关注一下。

基本IIS算法思想:

假设最大熵模型当前的参数是:

\[ w_t = (w_1,w_2,...,w_n)^T \]

找到新的参数:

\[ w_{t+1} = (w_1+δ_1,w_2+δ_2,...,w_n+δ_n)^T \]

使得模型的对数似然值

\[ L(w) = \sum_{x,y} P-(x,y)\sum_{i=1}n w_if_i(x,y) - \sum_x P^-(x)log(Z_w(x)) \]

增大。不断地使用该方法对$w$进行更新,就可以使得$w$最终收敛到$w^*$。那现在的问题就变成了怎么去迭代寻找$δ = (δ_1,δ_2,...,δ_n)^T$了。

在机器学习领域,有一个非常好的优化策略,就是当原问题难以求解的时候,可以通过优化原问题的下界函数,来间接优化原问题。

比如,现在的优化问题是:

\[ L(w_{t+1}) - L(w_t) = \sum_{x,y} P-(x,y)\sum_{i=1}n δif_i(x,y) - \sum_x P^-(x)log\frac{Z{w+δ}(x)}{Z_w(x)} \]

我们当然希望这个似然值改变量越大越好,可是这问题不好求解怎么办?那我们就求这个函数的下界函数嘛。于是,通过不停地改写,就得到了下面的式子:

\[ L(w_{t+1}) - L(w_t) >= \sum_{x,y} P-(x,y)\sum_{i=1}n δi f_i(x,y) + 1 - \sum_x P^-(x) \sum_y P_w(y|x) \sum{i=1}^n \frac{f_i(x,y)}{f^#(x,y)}exp(
δ_i f^#(x,y)) \]

\[ f^#(x,y) = \sum_{i=1}^n f_i(x,y) \]

我们可以对这个下界函数针对$δ_i(i∈[1,n])$进行求导,解出$δ_i$。

\[ \sum_{x,y} P^-(x,y)f_i(x,y) - \sum_{x,y} P^-(x) P_w(y|x) f_i(x,y) exp(δ_i f^#(x,y)) = 0 \]

最大熵的应用

关于最大熵的应用,我自己接触的就是它在语言模型中的应用。记得Mikolov的RNN的网络结构中,有集成一个最大熵的模型,有兴趣可以去看一下。

另外,最大熵模型可以应用于平常的序列标注任务,比如专有名词识别NER、语义角色标注SRL,分词、词性标注POS以及语义解析SP等任务。

语义解析是搜索、对话等AI技术的基石,所以就拿语义解析来简单举例:

B_OPT B_TARGET E_TARGET O B_NAME I_NAME E_NAME
O O B_OPT B_DATE E_DATE O B_TARGET I_TARGET E_TARGET

类似这样序列化标注的任务,都可以考虑使用最大熵模型来做。

总结

至此,我们最大熵模型的基本理论和应用都已经讲完了,主要内容包括:

  • 逻辑斯特回归与最大熵模型是怎么和熵联系起来的;

  • 最大熵模型的代价损失函数中约束项的含义分析;

  • 最大熵模型常用的优化及IIS方法基本原理;

  • 最大熵模型的应用场景简单介绍。

另外,注意1 2两小节内容仅是个人的理解和分析,仅供参考学习。有兴趣的童鞋可以重点关注一下最大熵模型学习优化的公式推导,仔细阅读还是能够看明白的。

参考资料

统计学习方法 李航著

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容