【机器学习】最大熵模型【上】最大熵模型概述与约束最优化问题

有任何的书写错误、排版错误、概念错误等,希望大家包含指正。

由于字数限制,分成两篇博客。
【机器学习】最大熵模型【上】最大熵模型概述与约束最优化问题
【机器学习】最大熵模型【下】最大熵模型学习的最优化算法

最大熵模型

1. 最大熵原理

熵,表达了一个事物的混乱程度,即不确定性。熵越大,事物越混乱,愈加不确定;熵越小反之。

最大熵原理指出,对以一个随机事件的概率分布进行预测时,预测应当满足全部已知约束,而对未知的情况不要做任何主观假设。在这种情况下,概率分布最均匀,预测风险最小,因此得到的概率分布的熵是最大的。

一个直观的例子,吴军在给 AT&T 实验室作关于最大熵模型的报告时,问听众“骰子每个面朝上的概率分别是多少”,所有人都回答等概率,即各种点数的概率均为 1 / 6 1/6 1/6。吴军告诉听众,骰子经过了特殊处理,已知四点朝上的概率是 1 / 3 1/3 1/3,在这种情况下,大部分听众认为除去四点的概率是 1 / 3 1/3 1/3,其余均是 2 / 15 2/15 2/15。这是因为对于其余各点的概率无从得知,所以只好认为它们是等概率的。当然,也有听众认为骰子四点的反面一定是三点,这部分听众回答的是其余各点并非等概率,但事实上,有的骰子四点的反面不是三点而是一点。显然,四点反面一定是三点的假设是部分听众主观添加的,并不是吴军告知的已知条件,而凭直觉回答等概率的听众的猜测之所以准确,是因为这恰好符合了最大熵原理。

在自然语言处理中,考虑一个利用最大熵原理自动将英语转换为法语的翻译模型。方便起见,我们将这个复杂的问题简化为根据语境将英文语句中的单词 in 翻译成合适的语法单词。翻译模型 P P P 的任务是对于给定包含单词 in 的英文语句,给出某个法语单词 f f f 作为英语单词 in 的翻译结果的概率 P ( f ) P(f) P(f)。从收集到的样本数据中抽取特征(约束),基于这些规则训练翻译模型 P P P

假设从样本中得到的第一个规则为英文单词 in 只可能被翻译成法语单词 dansenàaucours dependant,形式化表示为
P ( d a n s ) + P ( e n ) + P ( a ˋ ) + P ( a u c o u r s   d e ) + P ( p e n d a n t ) = 1 P({\rm dans})+P({\rm en})+P({\rm \grave a})+P({\rm aucours\space de})+P({\rm pendant})=1 P(dans)+P(en)+P(aˋ)+P(aucours de)+P(pendant)=1
这个约束对应于上面骰子例子中的六个点数出现的概率为 1 1 1。显然,有无数个满足上面约束的模型可供选择,例如 P ( d a n s ) = 1 P(\rm dans)=1 P(dans)=1,说明模型 P P P 总是将 in 翻译成 dans;或者 P ( p e n d a n t ) = 1 2 P(\rm pendant)=\frac{1}{2} P(pendant)=21 并且 P ( a ˋ ) = 1 2 P(\grave a)=\frac{1}{2} P(aˋ)=21,说明模型 P P P 等概率地将 in 翻译成 pendantà。这两个模型都是在没有足够经验数据的情况下做的大胆假设。事实上,因为我们当前只知道可选的翻译结果为这五个法语单词,没法确定究竟哪个模型正确,或者说哪个概率分布正确,所以一个更合理的概率分布为
P ( d a n s ) = P ( e n ) = P ( a ˋ ) = P ( a u c o u r s   d e ) = P ( p e n d a n t ) = 1 5 P({\rm dans}) = P({\rm en}) = P({\rm \grave a}) = P({\rm aucours \space de}) = P({\rm pendant}) = \frac{1}{5} P(dans)=P(en)=P(aˋ)=P(aucours de)=P(pendant)=51
该模型将概率均匀分配给五个法语词汇,但在实际情况中,模型肯定不会如此简单,我们会尝试提取更多的经验知识来丰富约束条件。

假设我们从语料中发现有 30 % 30\% 30% 的概率 in 会被翻译成 dansen,将新约束添加到模型中,有
P ( d a n s ) + P ( e n ) = 3 10 P ( d a n s ) + P ( e n ) + P ( a ˋ ) + P ( a u c o u r s   d e ) + P ( p e n d a n t ) = 1 P({\rm dans})+P({\rm en}) = \frac{3}{10} \\ P({\rm dans})+P({\rm en})+P({\rm \grave a})+P({\rm aucours\space de})+P({\rm pendant})=1 P(dans)+P(en)=103P(dans)+P(en)+P(aˋ)+P(aucours de)+P(pendant)=1
新约束对应于上面骰子例子中的已知四点朝上的概率。同样地,满足这两个约束的概率分布也有很多,在没有其他经验知识的情况下,直观上应该选择最均匀的模型,即
P ( d a n s ) = P ( e n ) = 3 20 P ( a ˋ ) = P ( a u c o u r s   d e ) = P ( p e n d a n t ) = 7 30 P({\rm dans})=P({\rm en}) = \frac{3}{20} \\ P({\rm \grave a})= P({\rm aucours\space de}) = P({\rm pendant})=\frac{7}{30} P(dans)=P(en)=203P(aˋ)=P(aucours de)=P(pendant)=307

可见,最大熵原理与我们最直观的感受相吻合。

假设我们又从语料中找到了新规则,有 50 % 50\% 50% 的概率 in 会被翻译成 dansà。三个约束为
P ( d a n s ) + P ( a ˋ ) = 1 2 P ( d a n s ) + P ( e n ) = 3 10 P ( d a n s ) + P ( e n ) + P ( a ˋ ) + P ( a u c o u r s   d e ) + P ( p e n d a n t ) = 1 P({\rm dans}) + P({\rm \grave a}) =\frac{1}{2} \\ P({\rm dans})+P({\rm en}) = \frac{3}{10} \\ P({\rm dans})+P({\rm en})+P({\rm \grave a})+P({\rm aucours\space de})+P({\rm pendant})=1 P(dans)+P(aˋ)=21P(dans)+P(en)=103P(dans)+P(en)+P(aˋ)+P(aucours de)+P(pendant)=1
由于经验知识的增加,问题的复杂度也增加了,我们想确定一个满足三个约束的最均匀的模型变得不再显而易见。因此,我们需要一套方法来量化我们对于“最均匀”的直观感受,并且学习到我们想要的模型。

2. 最大熵模型的定义

最大熵模型以最大熵原理为依据,通过信息论中的“熵”来度量数据的均匀程度,希望学习到在满足已知事实的前提下熵最大的概率分布。

继续考虑上面的翻译问题,我们再细化一下翻译场景,让问题更加完整、更加符合实际。引入英文单词 in 的上下文信息,比如在某句话中 in 后面紧跟单词 January,那么模型应当给予翻译结果为 en 90 % 90\% 90% 的可能性。显然,考虑单词的上下文信息使得模型更加合理。对与该翻译问题类似的一类问题进行抽象,规定用 Y \mathcal Y Y 表示可能候选结果的集合, X \mathcal X X 表示上下文信息构成的集合, f ( a , b ) f(a,b) f(a,b) 为定义在 { 0 , 1 } \{0,1\} {0,1} 域上的特征函数:
f ( x , y ) = { 1 , if    ( x , y ) ∈ ( X , Y )    and    meet    certain    conditions 0 , otherwise f(x,y) = \left\{ \begin{array}{l} 1, & {\textbf {if}} \space\space (x,y)\in (\mathcal X,\mathcal Y) \space\space \textbf{and} \space\space \textbf{meet}\space\space \textbf{certain} \space\space \textbf{conditions}\\ 0,& \textbf{otherwise} \end{array} \right. f(x,y)={1,0,if  (x,y)(X,Y)  and  meet  certain  conditionsotherwise
在上面的翻译例子中, Y = { d a n s , e n , a ˋ , a u c o u r s   d e , p e n d a n t } \mathcal Y=\{{\rm dans},{\rm en},{\rm \grave a},{\rm aucours\space de},{\rm pendant}\} Y={dans,en,aˋ,aucours de,pendant},如果简单地将中心词周围的四个词作为作为其上下文信息,那么语句 College students have holidays in January and Julyin 的上下文信息为 haveholidaysJanuary and,对应于集合 X \mathcal X X 中表示为 ( h a v e , h o l i d a y s , J a n u a r y , a n d ) (\rm have, holidays, January, and) (have,holidays,January,and) 的一个元素,该训练样本的标签为 e n \rm en en,特征为 ( h a v e , h o l i d a y s , J a n u a r y , a n d ) (\rm have, holidays, January, and) (have,holidays,January,and)。如果存在多条含 in 的语句,那么这些语句中 in 的周围词组成的向量将构成集合 X \mathcal X X。特征函数是一种指示函数(indicator function),用于筛选样本是否具备某类特征。比如
f 1 ( x , y ) = { 1 , if    y = e n    and    M O N T H s    follow    i n 0 , otherwise f_1(x,y) = \left\{ \begin{array}{l} 1, & {\textbf {if}} \space\space y= {\rm en}\space\space \textbf{and} \space\space {\rm MONTHs}\space\space \textbf{follow} \space\space {\rm in}\\ 0,& \textbf{otherwise} \end{array} \right. f1(x,y)={1,0,if  y=en  and  MONTHs  follow  inotherwise
特征函数 f 1 f_1 f1 将上下文具有 in MONTH 结构且标签为 en 的样本筛选出来。显然,上面提到的样本符合特征函数 f 1 f_1 f1;再比如
f 2 ( x , y ) = { 1 , if    y = a ˋ    and    C I T Y s    follow    i n 0 , otherwise f_2(x,y) = \left\{ \begin{array}{l} 1, & {\textbf {if}} \space\space y= {\rm \grave a}\space\space \textbf{and} \space\space {\rm CITYs}\space\space \textbf{follow} \space\space {\rm in}\\ 0,& \textbf{otherwise} \end{array} \right. f2(x,y)={1,0,if  y=aˋ  and  CITYs  follow  inotherwise
特征函数 f 2 f_2 f2 将上下文具有 in CITY 结构且标签为 à 的样本筛选出来。对于上面的样本该特征函数不再奏效,但是从语句 I have lived in Peking for a long time 中得到的中心词为 in 的样本符合特征函数 f 2 f_2 f2

注意,不同的样本可能符合相同的特征函数,比如语句 College students have holidays in January and JulyI will graduate in June and study for doctorate in September 关于 in 形成的样本标签均为 en,那么尽管两个样本特征不完全一致,却都符合特征函数。特征函数筛选出一类样本,而不是唯一样本。另外,同一样本也可以符合不同的特征函数。

建立最大熵的目的是对于给定的输入 x ∈ X x\in \mathcal X xX,以条件概率 P ( y ∣ x ) P(y\mid x) P(yx) 输出 y ∈ Y y\in \mathcal Y yY,即利用训练好的最大熵模型选择条件概率 P ( y ∣ x ) P(y\mid x) P(yx) 最大的候选结果作为最终的判定结果:
y ∗ = arg ⁡ max ⁡ y ∈ Y P ∗ ( y ∣ x ) y^* = {\arg}\max_{y\in \mathcal Y} P^*(y\mid x) y=argyYmaxP(yx)
其中, P ∗ ( y ∣ x ) P^*(y\mid x) P(yx) 为训练好的概率分布,即满足最大熵原理的概率分布。

根据条件熵的定义可知,使条件概率分布的熵最大,就是使两个随机的条件熵最大。因此条件熵表示为
H ( P ) = H ( Y ∣ X ) = ∑ x ∈ X P ( x ) H ( Y ∣ X = x ) = − ∑ x ∈ X P ( x ) ∑ y ∈ Y P ( Y = y ∣ X = x ) log ⁡ P ( Y = y ∣ X = x ) = − ∑ x , y P ( x ) P ( y ∣ x ) log ⁡ P ( y ∣ x ) \begin{align} H(P) &= H(\mathcal Y\mid \mathcal X) \notag\\ &= \sum_{x\in \mathcal X} P(x) H(\mathcal Y\mid \mathcal X = x) \notag\\ &=-\sum_{x\in \mathcal X}P(x) \sum_{y\in \mathcal Y}P(\mathcal Y = y\mid \mathcal X = x)\log P(\mathcal Y = y\mid \mathcal X = x) \notag\\ &= -\sum_{x,y} P(x)P(y\mid x) \log P(y\mid x) \tag{1} \end{align} H(P)=H(YX)=xXP(x)H(YX=x)=xXP(x)yYP(Y=yX=x)logP(Y=yX=x)=x,yP(x)P(yx)logP(yx)(1)
其中, P P P 是条件概率分布 P ( y ∣ x ) P(y\mid x) P(yx) 的简写。根据最大熵原则,我们从满足约束条件的概率分布集合 P \mathcal P P 中选择熵最大的概率分布 P ∗ P^* P 作为目标概率分布,即最大化条件概率分布的熵:
P ∗ ( y ∣ x ) = a r g max ⁡ P ∈ P H ( P ) (2) P^*(y \mid x) = {\rm arg}\max_{P\in \mathcal P} H(P) \tag{2} P(yx)=argPPmaxH(P)(2)
集合 P \mathcal P P 中分布满足的约束可以抽象地概括为,与经验分布近似;或者说以“目标分布与经验分布近似”为指导思想规定约束。给定训练数据集,可以确定经验联合分布 P ~ ( x , y ) \tilde P(x,y) P~(x,y) 和经验边缘分布 P ~ ( x ) \tilde P(x) P~(x)
P ~ ( x ) = C o u n t ( x ) N P ~ ( x , y ) = C o u n t ( x , y ) N \tilde P(x)= \frac{{\rm Count} (x)}{N} \\ \tilde P(x,y) = \frac{{\rm Count} (x,y)}{N} P~(x)NCount(x)P~(x,y)=NCount(x,y)
其中, C o u n t ( x , y ) {\rm Count}(x,y) Count(x,y) 表示训练数据中样本 ( x , y ) (x,y) (x,y) 出现的频数, C o u n t ( x ) {\rm Count}(x) Count(x) 同理, N N N 表示训练样本容量。

注意,符号会有点重复。如果认为 P ( y ∣ x ) P(y\mid x) P(yx) 中的 x x x y y y 为占位符,而不是具体实例,那么 P ( y ∣ x ) P(y\mid x) P(yx) 表示的是整个条件概率分布。读者应当具备从上下文出发正确理解符号的能力。

根据规定约束的指导思想,确定一个显而易见的约束条件:
P ~ ( x ) = P ( x ) (3) \tilde P(x)=P(x) \tag{3} P~(x)=P(x)(3)
约束条件式 ( 3 ) (3) (3) 表示目标边缘概率分布 P ( x ) P(x) P(x) 必须符合已知训练数据集中的边缘概率分布 P ~ ( x ) \tilde P(x) P~(x)。利用约束 ( 3 ) (3) (3) 对条件熵式 ( 1 ) (1) (1) 变形得
H ( P ) = − ∑ x , y P ~ ( x ) P ( y ∣ x ) log ⁡ P ( y ∣ x ) (4) H(P) = -\sum_{x,y}\tilde P(x)P(y\mid x) \log P(y\mid x) \tag{4} H(P)=x,yP~(x)P(yx)logP(yx)(4)
我们需要明确,在规定了约束 ( 3 ) (3) (3) 的条件下,不能够再直接约束目标联合概率分布与经验联合概率分布相同,即 P ~ ( x , y ) = P ( x , y ) \tilde P(x,y) = P(x,y) P~(x,y)=P(x,y),因为在联合概率和边缘概率均已知的情况下,条件概率将唯一确定,即目标条件概率分布与训练数据集的条件概率分布一致。但是需要注意,如果二者一致,那么模型将失去意义,输入的新样本的类别完全依赖于已知数据集的分布,也就是说我们认为数据集提供的信息是完整的,但这显然不可能。以文章最开始提到的不考虑上下文的翻译问题为例,如果直接将 in 的每种翻译结果的统计频率作为目标概率分布,将不会用到最大熵原理,因为每种结果都是确定的概率。另外,以这样的方式建立的模型对统计频率非常敏感,数据集的轻微变化都会影响到模型,这种模型显然不是我们想要的。出现这种情况的原因在于,我们的约束太“紧”,以至于直接规定了目标概率分布,这使得我们只有唯一分布可选;而我们最初的想法其实是希望在约束构成的可行域中,利用最大熵原理确定分布。过“紧”的约束使得可行域缩成一个点,即唯一可行解,导致最大熵原理失去用武之地。避免约束过“紧”的一种直观的好方法是,仅选定我们非常有把握存在的知识作为约束,适当抛弃一些没有把握、相对主观的假设,这也是最大熵原理能在最大熵模型中发挥作用的前提。

因此,我们不会直接约束 P ~ ( x , y ) = P ( x , y ) \tilde P(x,y) = P(x,y) P~(x,y)=P(x,y),而是采用一种更加有效、更加可行的约束。用 E P ~ ( f ) E_{\tilde P}(f) EP~(f) 表示特征函数 f ( x , y ) f(x,y) f(x,y) 关于经验分布 P ~ ( x , y ) \tilde P(x,y) P~(x,y) 的期望值:
E P ~ ( f ) = ∑ x , y P ~ ( x , y ) f ( x , y ) E_{\tilde P}(f) = \sum_{x,y} \tilde P(x,y) f(x,y) EP~(f)=x,yP~(x,y)f(x,y)
E P ( f ) E_{P}(f) EP(f) 表示特征函数 f ( x , y ) f(x,y) f(x,y) 关于目标联合分布 P ( x , y ) P(x,y) P(x,y) 的期望值:
E P ( f ) = ∑ x , y P ( x , y ) f ( x , y ) E_P(f) = \sum_{x,y} P(x,y)f(x,y) EP(f)=x,yP(x,y)f(x,y)
利用条件概率公式和约束 ( 3 ) (3) (3) 对上式变形,得
E P ( f ) = ∑ x , y P ~ ( x ) P ( y ∣ x ) f ( x , y ) E_P(f) = \sum_{x,y}\tilde P(x) P(y\mid x)f(x,y) EP(f)=x,yP~(x)P(yx)f(x,y)
如果模型能够获取训练数据中的信息,那么可以假设这两个期望值相等,即
E P ( f ) = E P ~ ( f ) E_P(f) = E_{\tilde P}(f) EP(f)=EP~(f)

∑ x , y P ~ ( x ) P ( y ∣ x ) f ( x , y ) = ∑ x , y P ~ ( x , y ) f ( x , y ) (5) \sum_{x,y}\tilde P(x) P(y\mid x)f(x,y) = \sum_{x,y} \tilde P(x,y) f(x,y) \tag{5} x,yP~(x)P(yx)f(x,y)=x,yP~(x,y)f(x,y)(5)
( 5 ) (5) (5) 作为新的约束。相比于约束 P ~ ( x , y ) = P ( x , y ) \tilde P(x,y) = P(x,y) P~(x,y)=P(x,y),约束 ( 5 ) (5) (5) 不是直接限制目标联合分布与经验联合分布相同,而是限制目标联合分布与经验联合分布在某些特征上的期望值相同。显然,约束条件得到了放松,让可选的模型不再唯一;同时,考虑了样本的特征信息,模型更加合理。另外,我们已经将全部与 P ( x ) P(x) P(x) 有关的位置利用约束 ( 3 ) (3) (3) 进行了替换,所以约束 ( 3 ) (3) (3) 被隐式地包含在条件熵 ( 4 ) (4) (4) 和约束 ( 5 ) (5) (5) 中,不需要显式表示。

考虑到已知的样本数据集不可能只有一种有价值的特征,我们需要定义多个特征函数来提取不同的特征信息。假设根据经验,定义了 n n n 个特征函数 f i ( x , y ) ,   i = 1 , 2 , … , n f_i(x,y),\space i=1,2,\dots, n fi(x,y), i=1,2,,n,那么将对应 n n n 个与特征函数有关的约束条件。最大熵模型的定义如下。

假设满足所有约束条件的模型集合为
P = { P ∣ E P ( f i ) = E P ~ ( f i ) ,      i = 1 , 2 , … , n } \mathcal P = \{P\mid E_P(f_i) = E_{\tilde P}(f_i),\space\space\space\space i=1,2,\dots, n \} P={PEP(fi)=EP~(fi),    i=1,2,,n}
定义在条件概率分布 P ( y ∣ x ) P(y\mid x) P(yx) 上的熵为
H ( P ) = − ∑ x ∈ X , y ∈ Y P ~ ( x ) P ( y ∣ x ) log ⁡ P ( y ∣ x ) H(P) = -\sum_{x\in \mathcal X,y\in \mathcal Y} \tilde P(x) P(y\mid x) \log P(y\mid x) H(P)=xX,yYP~(x)P(yx)logP(yx)
则模型集合 P \mathcal P P 中条件熵 H ( P ) H(P) H(P) 最大的模型称为最大熵模型。

3. 最大熵模型的学习

最大熵模型的学习过程就是求解最大熵模型的过程。最大熵模型的学习可以形式化为约束最优化问题:
max ⁡ P H ( P ) = − ∑ x ∈ X , y ∈ Y P ~ ( x ) P ( y ∣ x ) log ⁡ P ( y ∣ x ) s . t . E P ( f i ) = E P ~ ( f i ) ,      i = 1 , 2 , … , n ∑ x ∈ X , y ∈ Y P ~ ( x ) P ( y ∣ x ) = 1 \begin{array}{l} \max \limits_{P} & H(P) = -\sum\limits_{x\in \mathcal X,y\in\mathcal Y} \tilde P(x) P(y\mid x) \log P(y\mid x) & \\ s.t. & E_P(f_i) = E_{\tilde P}(f_i),\space\space\space\space i=1,2,\dots, n \\ &\sum\limits_{x\in \mathcal X,y\in \mathcal Y} \tilde P(x)P(y\mid x) = 1 \end{array} Pmaxs.t.H(P)=xX,yYP~(x)P(yx)logP(yx)EP(fi)=EP~(fi),    i=1,2,,nxX,yYP~(x)P(yx)=1
观察优化问题中第二部分约束条件,该约束条件的意义在于指明 P P P 是合法的概率分布,其来源为将式 ( 3 ) (3) (3) 代入 ∑ x ∈ X , y ∈ Y P ( x , y ) = 1 \sum\limits_{x\in \mathcal X,y \in \mathcal Y} P(x,y) = 1 xX,yYP(x,y)=1。另外,还有一个没有标出的约束条件 ∑ y ∈ Y P ( y ∣ x ) = 1 \sum\limits_{y\in \mathcal Y} P(y\mid x)=1 yYP(yx)=1,此约束不会出现在拉格朗日函数中,但是并非忽略,只是让其在合适时机发挥作用,并不会影响结果。

注意,在讨论最大熵模型的概念时,认为约束条件只有式 ( 5 ) (5) (5) 一类;但是当讨论其等价最优化问题,涉及严格计算时,新增加的两个对概率分布合法性的约束是不可忽略的。

按照最优化问题的习惯,将求最大值问题改写为等价的求最小值问题:
min ⁡ P − H ( P ) = ∑ x , y P ~ ( x ) P ( y ∣ x ) log ⁡ P ( y ∣ x ) s . t . E P ( f i ) − E P ~ ( f i ) = 0 ,      i = 1 , 2 , … , n ∑ x , y P ~ ( x ) P ( y ∣ x ) = 1 (6) \begin{array}{l} \min \limits_{P} & -H(P) = \sum\limits_{x,y} \tilde P(x) P(y\mid x) \log P(y\mid x) & \\ s.t. & E_P(f_i) -E_{\tilde P}(f_i) = 0,\space\space\space\space i=1,2,\dots, n \\ &\sum\limits_{x,y} \tilde P(x)P(y\mid x) = 1 \end{array} \tag{6} Pmins.t.H(P)=x,yP~(x)P(yx)logP(yx)EP(fi)EP~(fi)=0,    i=1,2,,nx,yP~(x)P(yx)=1(6)
求解约束最优化问题 ( 6 ) (6) (6),所得出的解就是最大熵模型学习的解。下面给出具体推导。

将约束最优化的原始问题转换为无约束最优化的对偶问题,通过求解对偶问题求解原始问题。首先引进拉格朗日乘子 w 0 , w 1 , … , w n w_0,w_1,\dots, w_n w0,w1,,wn,定义拉格朗日函数 L ( P , w ) L(P,w) L(P,w)
L ( P , w ) = − H ( P ) + w o ( 1 − ∑ x , y P ~ ( x ) P ( y ∣ x ) ) + ∑ i = 1 n w i ( E P ~ ( f i ) − E P ( f i ) ) = ∑ x , y P ~ ( x ) P ( y ∣ x ) log ⁡ P ( y ∣ x ) + w 0 ( 1 − ∑ x , y P ~ ( x ) P ( y ∣ x ) ) + ∑ i = 1 n w i ( ∑ x , y P ~ ( x , y ) f i ( x , y ) − ∑ x , y P ~ ( x ) P ( y ∣ x ) f i ( x , y ) ) \begin{align} L(P,w) &= -H(P) + w_o\left(1-\sum_{x,y}\tilde P(x)P(y\mid x)\right) + \sum_{i=1}^n w_i \big( E_{\tilde P}(f_i) - E_P(f_i) \big) \notag\\ &= \sum_{x,y} \tilde P(x)P(y\mid x)\log P(y\mid x) + w_0\left( 1-\sum_{x,y} \tilde P(x)P(y\mid x) \right)+ \sum_{i=1}^n w_i\left( \sum_{x,y} \tilde P(x,y)f_i(x,y) - \sum_{x,y}\tilde P(x) P(y\mid x)f_i(x,y) \right) \tag{7} \end{align} L(P,w)=H(P)+wo(1x,yP~(x)P(yx))+i=1nwi(EP~(fi)EP(fi))=x,yP~(x)P(yx)logP(yx)+w0(1x,yP~(x)P(yx))+i=1nwi(x,yP~(x,y)fi(x,y)x,yP~(x)P(yx)fi(x,y))(7)
最优化的原始问题是
min ⁡ P max ⁡ w L ( P , w ) (8) \min_P \max_w L(P,w) \tag{8} PminwmaxL(P,w)(8)
对偶问题是
max ⁡ w min ⁡ P L ( P , w ) (9) \max_w \min_P L(P,w) \tag{9} wmaxPminL(P,w)(9)
根据拉格朗日函数 L ( P , w ) L(P,w) L(P,w) 关于 P P P 的二阶导数大于等于零可知, L ( P , w ) L(P,w) L(P,w) P P P 的凸函数,原始问题的解与对偶问题的解等价。这样,可以通过求解对偶问题来求解原始问题。

关于二阶导数的计算,参考下面关于一阶导数的计算后自行计算。

首先,求解对偶问题 ( 9 ) (9) (9) 内部的极小化问题 min ⁡ P L ( P , w ) \min\limits_P L(P,w) PminL(P,w) min ⁡ P L ( P , w ) \min\limits_P L(P,w) PminL(P,w) w w w 的函数,将其记作
ψ ( w ) = min ⁡ P L ( P , w ) = L ( P w , w ) \psi(w) = \min_P L(P,w) = L(P_w, w) ψ(w)=PminL(P,w)=L(Pw,w)
其中,
P w = a r g min ⁡ P L ( P , w ) = P w ( y ∣ x ) P_w = {\rm arg} \min_P L(P,w) = P_w(y\mid x) Pw=argPminL(P,w)=Pw(yx)
计算拉格朗日函数 L ( P , w ) L(P,w) L(P,w) P P P 的偏导数
∂ L ( P , w ) ∂ P ( y ∣ x ) = P ~ ( x ) ( log ⁡ P ( y ∣ x ) + ) − P ~ ( x ) w 0 − P ~ ( x ) ∑ i = 1 n w i f i ( x , y ) = P ~ ( x ) ( log ⁡ P ( y ∣ x ) + 1 − w 0 − ∑ i = 1 n w i f i ( x , y ) ) \begin{align} \frac{\partial L(P,w)}{ \partial P(y\mid x)} &= \tilde P(x)\big(\log P(y\mid x) + \big) - \tilde P(x)w_0 - \tilde P(x)\sum_{i=1}^n w_if_i(x,y) \notag\\ &= \tilde P(x)\left( \log P(y\mid x) + 1 - w_0 - \sum_{i=1}^n w_if_i(x,y) \right) \notag \end{align} P(yx)L(P,w)=P~(x)(logP(yx)+)P~(x)w0P~(x)i=1nwifi(x,y)=P~(x)(logP(yx)+1w0i=1nwifi(x,y))

这里计算偏导中的 P ( y ∣ x ) P(y\mid x) P(yx) 认为是一个具体实例,而不是整个分布。因为不同的 x x x y y y 对应的全部情况为 X × Y \mathcal X\times \mathcal Y X×Y(笛卡尔积),所以上式表达的其实是多个偏导函数,即对每种取值情况的偏导。

令偏导数为零,在 P ~ ( x ) > 0 \tilde P(x)>0 P~(x)>0 的情况下,解得
P ( y ∣ x ) = exp ⁡ ( ∑ i = 1 n w i f i ( x , y ) + w 0 − 1 ) = exp ⁡ ( ∑ i = 1 n w i f i ( x , y ) ) exp ⁡ ( 1 − w 0 ) (10) P(y\mid x) = \exp \left(\sum_{i=1}^n w_if_i(x,y) + w_0 - 1\right) =\frac{\exp \left( \sum\limits_{i=1}^nw_if_i(x,y) \right)}{\exp (1-w_0)} \tag{10} P(yx)=exp(i=1nwifi(x,y)+w01)=exp(1w0)exp(i=1nwifi(x,y))(10)
上面提到过有个没有标出的约束 ∑ y P ( y ∣ x ) = 1 \sum_{y} P(y\mid x)=1 yP(yx)=1,这里利用这个约束,对上式等式两侧同时关于 y y y 求和得
∑ y P ( y ∣ x ) = ∑ y exp ⁡ ( ∑ i = 1 n w i f i ( x , y ) ) exp ⁡ ( 1 − w 0 ) = 1 \sum_y P(y\mid x) = \frac{\sum\limits_y \exp \left( \sum\limits_{i=1}^n w_if_i(x,y) \right)}{\exp(1-w_0)} = 1 yP(yx)=exp(1w0)yexp(i=1nwifi(x,y))=1
可得
exp ⁡ ( 1 − w 0 ) = 1 ∑ y exp ⁡ ( ∑ i = 1 n w i f i ( x , y ) ) \exp(1-w_0) = \frac{1}{\sum\limits_y \exp \left( \sum\limits_{i=1}^n w_if_i(x,y) \right)} exp(1w0)=yexp(i=1nwifi(x,y))1
代回到式 ( 10 ) (10) (10) 中得
P w = 1 Z w ( x ) exp ⁡ ( ∑ i = 1 n w i f i ( x , y ) ) (11) P_w = \frac{1}{Z_w(x)}\exp \left( \sum\limits_{i=1}^n w_if_i(x,y) \right) \tag{11} Pw=Zw(x)1exp(i=1nwifi(x,y))(11)
其中
Z w ( x ) = ∑ y exp ⁡ ( ∑ i = 1 n w i f i ( x , y ) ) (12) Z_w(x) = \sum\limits_y \exp \left( \sum\limits_{i=1}^n w_if_i(x,y) \right) \tag{12} Zw(x)=yexp(i=1nwifi(x,y))(12)
Z w ( x ) Z_w(x) Zw(x) 称为规范化因子(normalizing factor)。可以发现,目标最大熵模型 P w P_w Pw w 0 w_0 w0 不再相关,仅与 w 1 , w 2 , … , w n w_1,w_2,\dots,w_n w1,w2,,wn 有关,分别对应特征 f 1 , f 2 , … , f n f_1,f_2,\dots,f_n f1,f2,,fn 的权重,权重越大表明特征越关键。

得到对偶问题 ( 9 ) (9) (9) 内层极小问题的解 P w P_w Pw 后,接着求解外层的极大值问题:
max ⁡ w ψ ( w ) = max ⁡ w L ( P w , w ) \max_w \psi(w) = \max_w L(P_w, w) wmaxψ(w)=wmaxL(Pw,w)
其中 ψ ( w ) \psi(w) ψ(w)
ψ ( w ) = L ( P w , w ) = ∑ x , y P ~ ( x ) P w ( y ∣ x ) log ⁡ P w ( y ∣ x ) + w 0 ( 1 − ∑ x , y P ~ ( x ) P w ( y ∣ x ) ) + ∑ i = 1 n w i ( ∑ x , y P ~ ( x , y ) f i ( x , y ) − ∑ x , y P ~ ( x ) P w ( y ∣ x ) f i ( x , y ) ) \begin{align} \psi(w) &= L(P_w, w) \notag\\ &= \sum_{x,y} \tilde P(x)P_w(y\mid x)\log P_w(y\mid x) + w_0\left( 1-\sum_{x,y} \tilde P(x)P_w(y\mid x) \right)+ \sum_{i=1}^n w_i\left( \sum_{x,y} \tilde P(x,y)f_i(x,y) - \sum_{x,y}\tilde P(x) P_w(y\mid x)f_i(x,y) \right) \end{align} ψ(w)=L(Pw,w)=x,yP~(x)Pw(yx)logPw(yx)+w0(1x,yP~(x)Pw(yx))+i=1nwi(x,yP~(x,y)fi(x,y)x,yP~(x)Pw(yx)fi(x,y))
ψ ( w ) \psi(w) ψ(w) 表达式的第二项,利用式 ( 11 ) (11) (11) 和式 ( 12 ) (12) (12) 可以进行如下变形
w 0 ( 1 − ∑ x , y P ~ ( x ) P w ( y ∣ x ) ) = w 0 ( 1 − ∑ x ∑ y P w ( y ∣ x ) P ~ ( x ) ) = w 0 ( 1 − ∑ x ( ∑ y P w ( y ∣ x ) ) P ~ ( x ) ) = w 0 ( 1 − ∑ x P ~ ( x ) ) = 0 \begin{align} w_0\left( 1-\sum_{x,y}\tilde P(x)P_w(y\mid x) \right) &= w_0\left( 1-\sum_{x}\sum_y P_w(y\mid x) \tilde P(x) \right)\notag \\ &= w_0\left( 1-\sum_{x}\Big(\sum_yP_w(y\mid x)\Big)\tilde P(x) \right) \notag\\ &= w_0\left( 1-\sum_{x}\tilde P(x) \right)\notag \\ &=0\notag \end{align} w0(1x,yP~(x)Pw(yx))=w0(1xyPw(yx)P~(x))=w0(1x(yPw(yx))P~(x))=w0(1xP~(x))=0
因此第二项可以去掉。利用式 ( 11 ) (11) (11) 和式 ( 12 ) (12) (12) 对去掉第二项的 ψ ( w ) \psi(w) ψ(w) 进行如下变形
ψ ( w ) = ∑ x , y P ~ ( x ) P w ( y ∣ x ) log ⁡ P w ( y ∣ x ) + ∑ i = 1 n w i ( ∑ x , y P ~ ( x , y ) f i ( x , y ) − ∑ x , y P ~ ( x ) P w ( y ∣ x ) f i ( x , y ) ) = ∑ x , y P ~ ( x ) P w ( y ∣ x ) log ⁡ P w ( y ∣ x ) + ∑ x , y P ~ ( x , y ) ∑ i = 1 n w i f i ( x , y ) − ∑ x , y P ~ ( x ) P w ( y ∣ x ) ∑ i = 1 n w i f i ( x , y ) = ∑ x , y P ~ ( x , y ) ∑ i = 1 n w i f i ( x , y ) + ∑ x , y P ~ ( x ) P w ( y ∣ x ) log ⁡ P w ( y ∣ x ) − ∑ x , y P ~ ( x ) P w ( y ∣ x ) ∑ i = 1 n w i f i ( x , y ) = ∑ x , y P ~ ( x , y ) ∑ i = 1 n w i f i ( x , y ) + ∑ x , y P ~ ( x ) P w ( y ∣ x ) ( log ⁡ P w ( y ∣ x ) − ∑ i = 1 n w i f i ( x , y ) ) = ∑ x , y P ~ ( x , y ) ∑ i = 1 n w i f i ( x , y ) + ∑ x , y P ~ ( x ) P w ( y ∣ x ) ( − Z w ( x ) ) = ∑ x , y P ~ ( x , y ) ∑ i = 1 n w i f i ( x , y ) − ∑ x P ~ ( x ) Z w ( x ) ∑ y P w ( y ∣ x ) = ∑ x , y P ~ ( x , y ) ∑ i = 1 n w i f i ( x , y ) − ∑ x P ~ ( x ) log ⁡ Z w ( x ) \begin{align} \psi(w) &= \sum_{x,y} \tilde P(x)P_w(y\mid x)\log P_w(y\mid x) + \sum_{i=1}^n w_i\left( \sum_{x,y} \tilde P(x,y)f_i(x,y) - \sum_{x,y}\tilde P(x) P_w(y\mid x)f_i(x,y) \right) \notag \\ &= \sum_{x,y} \tilde P(x)P_w(y\mid x)\log P_w(y\mid x) + \sum_{x,y} \tilde P(x,y) \sum_{i=1}^n w_i f_i(x,y) - \sum_{x,y}\tilde P(x) P_w(y\mid x) \sum_{i=1}^n w_i f_i(x,y) \notag \\ &= \sum_{x,y} \tilde P(x,y) \sum_{i=1}^n w_i f_i(x,y) + \sum_{x,y} \tilde P(x)P_w(y\mid x)\log P_w(y\mid x) - \sum_{x,y}\tilde P(x) P_w(y\mid x) \sum_{i=1}^n w_i f_i(x,y) \notag \\ &= \sum_{x,y} \tilde P(x,y) \sum_{i=1}^n w_i f_i(x,y) + \sum_{x,y} \tilde P(x)P_w(y\mid x)\left(\log P_w(y\mid x) - \sum_{i=1}^n w_i f_i(x,y)\right) \notag \\ &= \sum_{x,y} \tilde P(x,y) \sum_{i=1}^n w_i f_i(x,y) + \sum_{x,y} \tilde P(x)P_w(y\mid x)\left( -Z_w(x) \right) \notag \\ &=\sum_{x,y} \tilde P(x,y) \sum_{i=1}^n w_i f_i(x,y) - \sum_{x} \tilde P(x)Z_w(x)\sum_yP_w(y\mid x)\notag\\ &=\sum_{x,y} \tilde P(x,y) \sum_{i=1}^n w_i f_i(x,y) - \sum_{x} \tilde P(x)\log Z_w(x) \tag{13} \end{align} ψ(w)=x,yP~(x)Pw(yx)logPw(yx)+i=1nwi(x,yP~(x,y)fi(x,y)x,yP~(x)Pw(yx)fi(x,y))=x,yP~(x)Pw(yx)logPw(yx)+x,yP~(x,y)i=1nwifi(x,y)x,yP~(x)Pw(yx)i=1nwifi(x,y)=x,yP~(x,y)i=1nwifi(x,y)+x,yP~(x)Pw(yx)logPw(yx)x,yP~(x)Pw(yx)i=1nwifi(x,y)=x,yP~(x,y)i=1nwifi(x,y)+x,yP~(x)Pw(yx)(logPw(yx)i=1nwifi(x,y))=x,yP~(x,y)i=1nwifi(x,y)+x,yP~(x)Pw(yx)(Zw(x))=x,yP~(x,y)i=1nwifi(x,y)xP~(x)Zw(x)yPw(yx)=x,yP~(x,y)i=1nwifi(x,y)xP~(x)logZw(x)(13)

4. 与极大似然估计的关系

上面得到了 ψ ( w ) \psi(w) ψ(w) 的具体表达式,剩下的任务是求解其最大值点 w ∗ w^* w。但在讨论具体的最优化算法之前,我们再补充一下对偶函数的极大化与最大熵模型的极大似然估计等价的证明。

我们先来讨论一般形式的似然函数,再由此引出最大熵模型的似然函数。

似然函数的通用定义形式为
L ( x 1 , x 2 , … , x N ∣ θ ) = ∏ i = 1 N P ( x i ∣ θ ) L(x_1,x_2,\dots,x_N\mid \theta) = \prod_{i=1}^N P(x_i\mid \theta) L(x1,x2,,xNθ)=i=1NP(xiθ)
其中, x i x_i xi 表示样本具体的观测值, N N N 为样本数量,该式表示数据集中样本的联合概率。假设样本可能的观测值有 k k k 个,分别为 v 1 , v 2 , … , v k v_1,v_2,\dots, v_k v1,v2,,vk,则似然函数 L L L 可以等价地表示为
L ( x 1 , x 2 , … , x N ∣ θ ) = ∏ i = 1 k P ( x = v i ) C o u n t ( x = v i ) L(x_1,x_2,\dots,x_N\mid \theta) = \prod_{i=1}^k P(x=v_i) ^{{\rm Count}(x = v_i)} L(x1,x2,,xNθ)=i=1kP(x=vi)Count(x=vi)
其中 C o u n t ( x = v i ) {\rm Count}(x=v_i) Count(x=vi) 表示观测值为 v i v_i vi 的样本在数据集中的出现频数。对等式两侧同时开 N N N 次方,可得
L ( x 1 , x 2 , … , x N ∣ θ ) 1 N = ∏ i = 1 k P ( x = v i ) C o u n t ( x = v i ) N L(x_1,x_2,\dots,x_N\mid \theta)^{\frac{1}{N}} = \prod_{i=1}^k P(x=v_i) ^{\frac{{\rm Count}(x = v_i)}{N}} L(x1,x2,,xNθ)N1=i=1kP(x=vi)NCount(x=vi)
由于经验概率 P ~ ( x = v i ) = C o u n t ( x = v i ) N \tilde P(x = v_i) = \frac{{\rm Count}(x= v_i)}{N} P~(x=vi)=NCount(x=vi),所以
L ( x 1 , x 2 , … , x N ∣ θ ) 1 N = ∏ i = 1 k P ( x = v i ) P ~ ( x = v i ) L(x_1,x_2,\dots,x_N\mid \theta)^{\frac{1}{N}} = \prod_{i=1}^k P(x=v_i) ^{\tilde P(x = v_i)} L(x1,x2,,xNθ)N1=i=1kP(x=vi)P~(x=vi)
据上式可以写出最大熵模型中联合概率分布 P ( x , y ) P(x,y) P(x,y) 的对数似然函数:
L ( P w ( x , y ) ) = log ⁡ ∏ x ∈ X , y ∈ Y P w ( x , y ) P ~ ( x , y ) L(P_w(x,y)) = \log \prod_{x\in \mathcal X,y\in \mathcal Y} P_w(x,y)^{\tilde P(x,y)} L(Pw(x,y))=logxX,yYPw(x,y)P~(x,y)
最大熵模型是满足 P ( x ) = P ~ ( x ) P(x) = \tilde P(x) P(x)=P~(x) 约束的模型, L ( P w ( x , y ) ) L(P_w(x,y)) L(Pw(x,y)) 函数可以表示为 L ( P ~ ( x ) P w ( y ∣ x ) ) L\big(\tilde P(x)P_w(y\mid x)\big) L(P~(x)Pw(yx)),其中 P ~ ( x ) \tilde P(x) P~(x) 为常数,因此 L L L 本质上是关于 P w = P w ( y ∣ x ) P_w=P_w(y\mid x) Pw=Pw(yx) 的函数(更准确地说,应该是关于 w w w 的函数),即
L ( P w ) = log ⁡ ∏ x ∈ X , y ∈ Y P w ( x , y ) P ~ ( x , y ) = ∑ x , y P ~ ( x , y ) log ⁡ P ( x , y ) = ∑ x , y P ~ ( x , y ) log ⁡ [ P ~ ( x ) P ( y ∣ x ) ] = ∑ x , y P ~ ( x , y ) log ⁡ P ( y ∣ x ) + ∑ x , y P ~ ( x , y ) log ⁡ P ~ ( x ) \begin{align} L(P_w) &= \log \prod_{x\in \mathcal X,y\in \mathcal Y} P_w(x,y)^{\tilde P(x,y)}\notag \\ &= \sum_{x,y} \tilde P(x,y) \log P(x,y) \notag\\ &= \sum_{x,y} \tilde P(x,y) \log [\tilde P(x)P(y\mid x)]\notag \\ &= \sum_{x,y} \tilde P(x,y) \log P(y\mid x) + \sum_{x,y} \tilde P(x,y)\log \tilde P(x)\notag \end{align} L(Pw)=logxX,yYPw(x,y)P~(x,y)=x,yP~(x,y)logP(x,y)=x,yP~(x,y)log[P~(x)P(yx)]=x,yP~(x,y)logP(yx)+x,yP~(x,y)logP~(x)
第二项与 P w P_w Pw 无关,可忽略。上式等价表示为
L ( P w ) = ∑ x , y P ~ ( x , y ) log ⁡ P ( y ∣ x ) (14) L(P_w) = \sum_{x,y} \tilde P(x,y) \log P(y\mid x) \tag{14} L(Pw)=x,yP~(x,y)logP(yx)(14)
将式 ( 11 ) (11) (11) 和式 ( 12 ) (12) (12) 代入得
L ( P w ) = ∑ x , y P ~ ( x , y ) log ⁡ P ( y ∣ x ) = ∑ x , y P ~ ( x , y ) ∑ i = 1 n w i f i ( x , y ) − ∑ x , y P ~ ( x , y ) log ⁡ Z w ( x ) = ∑ x , y P ~ ( x , y ) ∑ i = 1 n w i f i ( x , y ) − ∑ x ( ∑ y P ~ ( x , y ) ) log ⁡ Z w ( x ) = ∑ x , y P ~ ( x , y ) ∑ i = 1 n w i f i ( x , y ) − ∑ x P ~ ( x ) log ⁡ Z w ( x ) \begin{align} L(P_w) &= \sum_{x,y} \tilde P(x,y) \log P(y\mid x) \notag\\ &= \sum_{x,y} \tilde P(x,y) \sum_{i=1}^n w_if_i(x,y) - \sum_{x,y} \tilde P(x,y) \log Z_w(x) \notag \\ &= \sum_{x,y} \tilde P(x,y) \sum_{i=1}^n w_if_i(x,y) - \sum_{x} \Big(\sum_{y}\tilde P(x,y) \Big) \log Z_w(x) \notag \\ &= \sum_{x,y} \tilde P(x,y) \sum_{i=1}^n w_if_i(x,y) - \sum_{x} \tilde P(x) \log Z_w(x) \tag{15} \end{align} L(Pw)=x,yP~(x,y)logP(yx)=x,yP~(x,y)i=1nwifi(x,y)x,yP~(x,y)logZw(x)=x,yP~(x,y)i=1nwifi(x,y)x(yP~(x,y))logZw(x)=x,yP~(x,y)i=1nwifi(x,y)xP~(x)logZw(x)(15)
比较式 ( 13 ) (13) (13) 和式 ( 15 ) (15) (15) 可得
ψ ( w ) = L ( P w ) \psi(w) = L(P_w) ψ(w)=L(Pw)
既然对偶函数 ψ ( w ) \psi(w) ψ(w) 等价于对数似然函数 L ( P w ) L(P_w) L(Pw),于是证明了最大熵模型学习中的对偶函数极大化等价于最大熵模型的极大似然估计这一事实。

也可以从交叉熵的角度来理解式 ( 14 ) (14) (14)。交叉熵(cross entropy)用于度量真实分布与非真实分布之间的差异,我们希望差异最小,即交叉熵最小化
C r o s s E n t r o p y = − ∑ x , y P ~ ( x , y ) log ⁡ P ( x , y ) = − ∑ x , y P ~ ( x , y ) log ⁡ [ P ~ ( x ) P ( y ∣ x ) ] = − ∑ x , y P ~ ( x , y ) log ⁡ P ( y ∣ x ) − ∑ x , y P ~ ( x , y ) log ⁡ P ~ ( x ) \begin{align} {\rm CrossEntropy} &= -\sum_{x,y}\tilde P(x,y) \log P(x,y) \notag \\ &= - \sum_{x,y} \tilde P(x,y) \log [\tilde P(x)P(y\mid x)] \notag\\ &= - \sum_{x,y} \tilde P(x,y) \log P(y\mid x) - \sum_{x,y} \tilde P(x,y) \log \tilde P(x) \notag \end{align} CrossEntropy=x,yP~(x,y)logP(x,y)=x,yP~(x,y)log[P~(x)P(yx)]=x,yP~(x,y)logP(yx)x,yP~(x,y)logP~(x)
第二项为常数,可忽略。因此,极小化交叉熵等价于极大化 L ( P w ) L(P_w) L(Pw)(即式 ( 14 ) (14) (14))。

这样,最大熵的学习问题就转换为具体求解对数似然函数极大化或对偶函数极大化的问题。

最大熵模型与逻辑回归模型有类似的形式,它们被称为线性对数模型(log linear model)。

你可能感兴趣的:(【机器学习】,人工智能,算法,概率论,自然语言处理)