【自然语言处理】最大熵马尔可夫模型

news2025/1/11 20:04:10

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

由于这部分的参考资料比较少,网上大部分资料重复且不完整,对于一些关键计算没有推导,所以这里我主要讨论几篇论文和讲义。但是这些论文和讲义之间也有些许差别,讨论的过程中我会加入自己的理解,难免存在错误,欢迎大家讨论。

最大熵马尔可夫模型

最大熵马尔可夫模型(maximum-entropy Markov model,MEMM)又称为条件马尔可夫模型(conditional Markov model,CMM)。单纯顾名思义的话,可能会认为最大熵马尔可夫模型是最大熵模型与马尔可夫模型的融合,但其实,它结合了最大熵模型和隐马尔可夫模型(HMM)的共同特点,被广泛应用于序列标注问题。

模型介绍与对比

我们的讨论是以观测与状态是一对一关系为前提,而不考虑多个观测对应一个状态的情况,比如:Yellow River 被认为是一个专有名词,而不是一个形容词和一个名词。

先对比 MEMM 与 HMM。二者的概率图如下。

在这里插入图片描述

图 1    HMM (上)和满足一阶马尔可夫性质的 MEMM (下)

1 1 1 中的中的 MEMM 概率图为满足一阶马尔可夫性质的 MEMM,二阶 MEMM 的概率图只需要在此基础上加上从 s t − 2 s_{t-2} st2 s t s_{t} st 的箭头。

对比 HMM 和 MEMM 的概率图,HMM 认为观测作为输出值与当前时刻的状态有关,而 MEMM 认为当前时刻的状态由之前时刻的状态和全部观测(或者多个时刻的观测值)共同确定,也就是说,在 MEMM 中观测不再独立,甚至作为输入值用于确定每个时刻的状态。这种性质决定了 HMM 是生成式模型,而 MEMM 是判别式模型。生成式模型对概率图表示的联合概率进行建模,再利用联合概率计算后验概率进行解码等操作;判别模型直接对概率图表示的条件概率建模,避免了对联合概率建模,使得解码等操作更加直接。

根据 HMM 的概率图,我们知道 HMM 直接对联合概率 P ( S , O ) P(S, O) P(S,O) 建模,即
P ( S , O ) = ∏ t = 1 T P ( s t ∣ s t − 1 ) P ( o t ∣ s t ) P(S, O) = \prod_{t=1}^T P(s_t\mid s_{t-1}) P(o_t\mid s_t) P(S,O)=t=1TP(stst1)P(otst)
为了公式简洁、形式统一,不再特殊考虑 t = 1 t=1 t=1 时的初始概率分布。

根据 MEMM 的概率图,我们对条件概率建模,有
P ( S ∣ O ) = ∏ t = 1 T P ( s t ∣ s t − 1 , O ) (1) P(S\mid O) = \prod_{t=1}^T P(s_t\mid s_{t-1}, O) \tag{1} P(SO)=t=1TP(stst1,O)(1)

也有部分参考资料会进一步简化模型,将 HMM 概率图中状态到观测的箭头反向后的概率图作为 MEMM 的概率图,这相当于他们认为每个时刻的状态 s t s_t st 不是与整个观测序列 O O O 有关,而是与当前时刻的观测值 o t o_t ot 有关。这会影响模型效果,但不会影响我们的推导和理解。

另外,对于每个时刻的状态,MEMM 考虑的是观测序列和之前时刻的状态,而 HMM 仅考虑之前时刻的状态。在序列标注问题中,将文本上下文包含的信息(特征)作为解码输出状态的判断依据显然更加合理,所以 MEMM 考虑整个观测序列是必然选择。如果将整个观测序列视为输入,那么输入值很可能无法完整枚举,因此需要大量的特征来刻画观测序列。如在文本中识别一个未见的公司名字时,除了传统的单词识别方法以外,还需要用到很多特征信息,如大写字母、结尾词、词性、格式、在文本中的位置等信息。也就是说,我们无法直接使用大量不同的观测序列,故需要提取其中的上下文信息(特征)来代表输入的观测序列。HMM 不适合处理用很多特征描述观测序列的情况,因为 HMM 在建模时不会将整个观测序列视为输入值,也就无法提取充足的特征。为此,MEMM 直接采用条件概率模型,从而使观测序列可以用特征表示,借助最大熵框架进行特征选取。

注意,对于某个时刻状态的解码一般不以整个观测序列作为输入,而是选取该时刻周围若干时刻的观测作为输入。之所以上文以“整个观测序列”进行叙述,其一是为了强调 MEMM 相比于 HMM 更加注重整体、上下文,其二是因为如此叙述会使得语言更加简洁。

对比 MEMM 与最大熵模型。最大熵模型没有考虑时序关系,以观测序列为条件,每个词是单独进行判别的,状态之间的关系无法得到充分利用,但是最大熵模型的优点在于可以使用任意的复杂特征。具有时序关系的 HMM 可以建立状态之间的马尔可夫性,这是最大熵模型所没有的。一个很自然的想法就是将两者的优势结合起来,这就得到了最大熵马尔可夫模型。

最大熵模型是一种特殊的逻辑回归模型(softmax),所以在有些文章中会看到。

学习问题

文献 [1 McCallum et al. ,2000] 与文献 [3 Michael Collins 讲义] 有些许不同,这里分开讨论。

基本假设,可能的状态数为 N N N,所有可能的状态的集合为 Q = { q 1 , q 2 , … , q N } Q = \{q_1,q_2,\dots, q_N\} Q={q1,q2,,qN}

先讨论文献 [3]。假设训练集中的样本个数为 D D D,样本的序列长度均为 T T T,第 d d d 个样本的状态序列 S d = ( s 1 ( d ) , s 2 ( d ) , … , s T ( d ) ) S_d=(s^{(d)}_1,s_2^{(d)},\dots, s^{(d)}_T) Sd=(s1(d),s2(d),,sT(d)),观测序列为 O d = ( o 1 ( d ) , o 2 ( d ) , … , o T ( d ) ) O_d = (o^{(d)}_1,o^{(d)}_2,\dots, o^{(d)}_T) Od=(o1(d),o2(d),,oT(d))。对于第 d d d 个样本的每个时刻 t t t,可以定义一个三元组
h t ( d ) = < S d , O d , t > h_t^{(d)} =<\mathcal S_d,\mathcal O_d,t> ht(d)=<Sd,Od,t>
其中 S d \mathcal S_d Sd 为状态序列 S d S_d Sd 的子集,在文献 [3] 中,由于讨论的是二阶马尔可夫性的 MEMM,所以 S d = { s t − 2 ( d ) , s t − 1 ( d ) } \mathcal S_d = \{s^{(d)}_{t-2},s^{(d)}_{t-1}\} Sd={st2(d),st1(d)} O d \mathcal O_d Od 为观测序列 O d O_d Od 的子集,在文献 [3] 中 O d = O d \mathcal O_d = O_d Od=Od t t t 表示序列的位置。可见, h t h_t ht 捕获 s t s_t st 的条件信息,可以将 h t h_t ht 与 HMM 中的 o t o_t ot 类比理解,只不过在 MEMM 中不再简单地以某个时刻的观测值作为条件,而是以一组信息作为条件。另外,因为本文为了统一,仅讨论一阶 MEMM,故 S d = { s t − 1 ( d ) } \mathcal S_d = \{s_{t-1}^{(d)}\} Sd={st1(d)};至于 O d \mathcal O_d Od ,在理论推导中是取 O d O_d Od 的真子集还是与之相同都无所谓。

这样一来,特征函数 f f f 会将 h h h s s s 一并考虑,即
f ( h , s ) = { 1 , if    ( h , s )    and    meet    certain    conditions 0 , otherwise f (h,s) = \left\{ \begin{array}{ll} 1, & {\textbf {if}} \space\space (h,s) \space\space \textbf{and} \space\space \textbf{meet}\space\space \textbf{certain} \space\space \textbf{conditions}\\ 0, & \textbf{otherwise}\\ \end{array} \right. f(h,s)={1,0,if  (h,s)  and  meet  certain  conditionsotherwise
( 1 ) (1) (1) 可以被写为
P ( S ∣ O ) = ∏ t = 1 T P ( s t ∣ h t ) (2) P(S\mid O) = \prod_{t=1}^T P(s_t\mid h_t) \tag{2} P(SO)=t=1TP(stht)(2)
根据最大熵模型,其中 P ( s t ∣ h t ) P(s_t\mid h_t) P(stht) 可以表示为
P ( s t ∣ h t ; w ) = exp ⁡ ( w ⋅ f ( h t , s t ) ) ∑ i = 1 N exp ⁡ ( w ⋅ f ( h t , s = q i ) ) (3) P(s_t\mid h_t;w) = \frac{\exp\left(w·f(h_t,s_t)\right)}{\sum\limits_{i=1}^N\exp\left( w·f(h_t, s=q_i) \right)} \tag{3} P(stht;w)=i=1Nexp(wf(ht,s=qi))exp(wf(ht,st))(3)
其中 w w w f f f 均为向量, w ⋅ f w·f wf 表示内积运算。

文献 [3] 中直接给出了采用正则化的对数似然函数来学习模型参数 w w w
L ( w ) = log ⁡ ∏ d = 1 D ∏ t = 1 T P ( s t ( d ) ∣ h t ( d ) ; w ) − λ 2 ∥ w ∥ 2 2 = ∑ d = 1 D ∑ t = 1 T log ⁡ P ( s t ( d ) ∣ h t ( d ) ; w ) − λ 2 ∑ i = 1 n w i 2 \begin{align} L(w) &= \log \prod_{d = 1}^D\prod_{t=1}^T P(s_t^{(d)}\mid h_t^{(d)};w) - \frac{\lambda}{2} \Vert w \Vert_2^2 \notag\\ &= \sum_{d=1}^D\sum_{t=1}^T \log P(s_t^{(d)}\mid h_t^{(d)};w) - \frac{\lambda}{2} \sum_{i=1}^n w_i^2 \tag{4} \end{align} L(w)=logd=1Dt=1TP(st(d)ht(d);w)2λw22=d=1Dt=1TlogP(st(d)ht(d);w)2λi=1nwi2(4)
将全部样本每个时刻的条件概率之积作为似然函数,同时引入正则化项。加入正则化项主要是考虑到最大似然估计可能会遇到特征函数数量特别大的情况,从而导致个别特征函数只有一个样本符合的极端情形。可以想象到,这些特征函数对应的权重会趋于无穷,所以样本对应的条件概率为 1 1 1,这使得模型对于这些样本不具有很好的泛化能力。举个简单的例子,训练集中满足特征函数 f 1 f_1 f1 的只有样本 Yellow River,训练后的特征函数 f 1 f_1 f1 对应的权重 w 1 w_1 w1 趋于无穷, P ( s t = R i v e r ∣ s t − 1 = Y e l l o w ) = 1 P(s_t = {\rm River} \mid s_{t-1} = {\rm Yellow})=1 P(st=Riverst1=Yellow)=1,也就是说,训练后的模型只要遇到 Yellow 就一定会将下一个时刻的状态解码为 River,这显然是不合理的,加上正则化项以缓解这类问题。

我认为文献 [3] 中的学习算法,即式 ( 4 ) (4) (4) 有些许不合理,因为无法类似于最大熵模型一样证明对偶函数与对数似然函数等价。


再来讨论我认为比较合理的文献 [1] 提出的学习方案。

该文献提出的方案为,在一阶 MEMM 的前提下,将 < s t − 1 ( d ) , s t ( d ) , O d > <s_{t-1}^{(d)},s_t^{(d)},O_d> <st1(d),st(d),Od> 视为一个单元,那么对于大小为 D D D,各序列长度均为 T T T 的训练集而言,可以拆分出大约 D × T D\times T D×T 个单元。这些单元相当于特征为 h t ( d ) = < s t − 1 ( d ) , O d , t > h_t^{(d)}=<s_{t-1}^{(d)},O_d,t> ht(d)=<st1(d),Od,t>,标签为 s t ( d ) s_t^{(d)} st(d) 的新样本,但是为了区别于“样本”,仍然采用“单元”来叙述。为了表示更加简洁,我们为这些单元统一下标,即第 i i i 个单元为 < h i , s i > <h_i, s_i> <hi,si>

我们总共要训练出 N N N 个最大熵模型, N N N 为上面介绍的可能的状态数。每个单元的三元组 h i h_i hi 中的前一个时刻状态总共有 N N N 种取值,将相同取值的单元划分为同组,总共可以将单元分为 N N N 组,每组单元训练一个最大熵模型,即每组单元对应一个权重向量。这些最大熵模型的训练方法类似,所以这里只讨论其中一组的训练方法。

假设这组单元对应的前一个时刻状态取值均为 s ′ s' s,单元个数为 K s ′ K_{s'} Ks,对这组单元重新顺序编号为 1 ∼ K s ′ 1\sim K_{s'} 1Ks,那么这些单元对应的 < h , s > <h,s> <h,s> 的下标也对应重新编号为 1 ∼ K s ′ 1\sim K_{s'} 1Ks。定义特征函数的经验期望:
E P ~ ( f ) = 1 K s ′ ∑ k = 1 K s ′ f ( h k , s k ) (5) E_{\tilde P} (f) = \frac{1}{K_{s'}} \sum_{k=1}^{K_{s'}} f (h_k, s_k) \tag{5} EP~(f)=Ks1k=1Ksf(hk,sk)(5)
使用估计的条件概率计算的特征函数的真实期望:
E P ( f ) = 1 K s ′ ∑ k = 1 K s ′ ∑ i = 1 N P ( s = q i ∣ s ′ , h k ) f ( h k , s = q i ) = 1 K s ′ ∑ k = 1 K s ′ ∑ i = 1 N P s ′ ( s = q i ∣ h k ) f ( h k , s = q i ) (6) \begin{align} E_P(f) &= \frac{1}{K_{s'}} \sum_{k=1}^{K_{s'}} \sum_{i = 1}^N P(s = q_i\mid s', h_k) f(h_k, s=q_i) \\ &= \frac{1}{K_{s'}} \sum_{k=1}^{K_{s'}} \sum_{i = 1}^N P_{s'}(s = q_i\mid h_k) f(h_k, s=q_i) \\ \end{align} \tag{6} EP(f)=Ks1k=1Ksi=1NP(s=qis,hk)f(hk,s=qi)=Ks1k=1Ksi=1NPs(s=qihk)f(hk,s=qi)(6)
最大熵模型对应优化问题的约束条件(之一)为
E P ~ ( f i ) = E P ( f ) ,      i = 1 , 2 , … , n E_{\tilde P}(f_i) = E_P(f),\space\space\space\space i = 1,2,\dots, n EP~(fi)=EP(f),    i=1,2,,n
其中 n n n 为特征函数个数。最大熵模型的学习转化为约束最优化问题,优化问题对应的目标函数为
max ⁡ P s ′      H ( P s ′ ) = − ∑ k = 1 K s ′ ∑ i = 1 N P s ′ ( h k ) P s ′ ( s = q i ∣ h k ) log ⁡ P s ′ ( s = q i ∣ h k ) \max_{P_{s'}} \space \space\space\space H(P_{s'}) = -\sum_{k=1}^{K_{s'}} \sum_{i=1}^N P_{s'}(h_k)P_{s'}(s=q_i\mid h_k) \log P_{s'}(s=q_i\mid h_k) Psmax    H(Ps)=k=1Ksi=1NPs(hk)Ps(s=qihk)logPs(s=qihk)
由于枚举的单元都是被观察到的单元,所以 P s ′ ( h k ) = 1 P_{s'}(h_k)=1 Ps(hk)=1。故,完整的约束优化问题为
max ⁡ P s ′ H ( P s ′ ) = − ∑ k = 1 K s ′ ∑ i = 1 N P s ′ ( s = q i ∣ h k ) log ⁡ P s ′ ( s = q i ∣ h k ) s . t . K s ′ E P ( f i ) = K s ′ E P ~ ( f i ) ,      i = 1 , 2 , … , n ∑ k = 1 K s ′ ∑ i = 1 N P s ′ ( s = q i ∣ h k ) = K s ′ \begin{array}{l} \max\limits_{P_{s'}} & H(P_{s'}) = -\sum\limits_{k=1}^{K_{s'}} \sum\limits_{i=1}^NP_{s'}(s=q_i\mid h_k) \log P_{s'}(s=q_i\mid h_k) \\ s.t. & K_{s'}E_P(f_i) = K_{s'}E_{\tilde P} (f_i),\space\space\space\space i=1,2,\dots, n \\ & \sum\limits_{k=1}^{K_{s'}} \sum\limits_{i=1}^N P_{s'}(s=q_i\mid h_k) = K_{s'} \end{array} Psmaxs.t.H(Ps)=k=1Ksi=1NPs(s=qihk)logPs(s=qihk)KsEP(fi)=KsEP~(fi),    i=1,2,,nk=1Ksi=1NPs(s=qihk)=Ks
转换为最小化问题后对应的拉格朗日函数为
L ( P s ′ , w ) = − H ( P s ′ ) + w 0 ( K s ′ − ∑ k = 1 K s ′ ∑ i = 1 N P s ′ ( s = q i ∣ h k ) ) + K s ′ ∑ i = 1 n w i ( E P ~ ( f i ) − E P ( f i ) ) = ∑ k = 1 K s ′ ∑ i = 1 N P s ′ ( s = q i ∣ h k ) log ⁡ P s ′ ( s = q i ∣ h k ) + w 0 ( K s ′ − ∑ k = 1 K s ′ ∑ i = 1 N P s ′ ( s = q i ∣ h k ) ) + ∑ i = 1 n w i ∑ k = 1 K s ′ ( f i ( h k , s k ) − ∑ i = 1 N P s ′ ( s = q i ∣ h k ) f i ( h k , s = q i ) ) \begin{align} L(P_{s'},w) &= -H(P_{s'})+ w_0 \Big(K_{s'} - \sum_{k=1}^{K_{s'}}\sum_{i=1}^N P_{s'} (s=q_i\mid h_k)\Big) + K_{s'}\sum_{i=1}^n w_i\big( E_{\tilde P}(f_i) - E_{P}(f_i) \big) \notag\\ &= \sum\limits_{k=1}^{K_{s'}} \sum\limits_{i=1}^N P_{s'}(s=q_i\mid h_k) \log P_{s'}(s=q_i\mid h_k) + w_0 \Big(K_{s'} - \sum_{k=1}^{K_{s'}}\sum_{i=1}^N P_{s'} (s=q_i\mid h_k)\Big) + \sum_{i=1}^n w_i\sum_{k=1}^{K_{s'}}\Big( f_i(h_k, s_k) - \sum_{i=1}^N P_{s'}(s=q_i\mid h_k)f_i(h_k, s=q_i) \Big) \notag \\ \end{align} L(Ps,w)=H(Ps)+w0(Ksk=1Ksi=1NPs(s=qihk))+Ksi=1nwi(EP~(fi)EP(fi))=k=1Ksi=1NPs(s=qihk)logPs(s=qihk)+w0(Ksk=1Ksi=1NPs(s=qihk))+i=1nwik=1Ks(fi(hk,sk)i=1NPs(s=qihk)fi(hk,s=qi))
拉格朗日函数对 P s ′ ( s ∣ h ) P_{s'}(s\mid h) Ps(sh) 求偏导,其中 s s s h h h 均为确切取值,假设这 K s ′ K_{s'} Ks 个单元中为 < h , s > <h,s> <h,s> 的单元个数为 K K K,则
∂ L ∂ P s ′ ( s ∣ h ) = K ( log ⁡ P s ′ ( s ∣ h ) + 1 ) − K w 0 − K ∑ i = 1 N w i f i ( h , s ) \frac{\partial L}{\partial P_{s'}(s\mid h)} = K\big(\log P_{s'}(s\mid h)+1\big) - Kw_0 - K\sum_{i=1}^N w_if_i(h, s) Ps(sh)L=K(logPs(sh)+1)Kw0Ki=1Nwifi(h,s)
令偏导为零,利用 ∑ i = 1 N P s ′ ( s = q i ∣ h ) \sum\limits_{i=1}^N P_{s'}(s=q_i\mid h) i=1NPs(s=qih) 可得最大熵模型
P s ′ ( s ∣ h ) = exp ⁡ ( w ⋅ f ( h , s ) ) Z ( h , s ′ ) (7) P_{s'}(s\mid h) = \frac{\exp\big( w·f(h, s) \big)}{Z(h,s')} \tag{7} Ps(sh)=Z(h,s)exp(wf(h,s))(7)
其中
Z ( h , s ′ ) = ∑ i = 1 N exp ⁡ ( w ⋅ f ( h , s = q i ) ) Z(h, s') = \sum\limits_{i=1}^N\exp\big( w·f(h, s=q_i) \big) Z(h,s)=i=1Nexp(wf(h,s=qi))
其中 w ⋅ f w·f wf 为向量内积。

将式 ( 7 ) (7) (7) 代入拉格朗提函数得到对偶函数
ψ ( w ) = ∑ k = 1 K s ′ ∑ i = 1 N P s ′ ( s = q i ∣ h k ) log ⁡ P s ′ ( s = q i ∣ h k ) + ∑ i = 1 n w i ∑ k = 1 K s ′ ( f i ( h k , s k ) − ∑ i = 1 N P s ′ ( s = q i ∣ h k ) f i ( h k , s = q i ) ) = ∑ k = 1 K s ′ ∑ i = 1 N P s ′ ( s = q i ∣ h k ) log ⁡ P s ′ ( s = q i ∣ h k ) + ∑ k = 1 K s ′ ∑ i = 1 n w i f i ( h k , s k ) − ∑ k = 1 K s ′ ∑ i = 1 N P s ′ ( s = q i ∣ h k ) ∑ i = 1 n w i f i ( h k , s = q i ) = ∑ k = 1 K s ′ ∑ i = 1 n w i f i ( h k , s k ) + ∑ k = 1 K s ′ ∑ i = 1 N P s ′ ( s = q i ∣ h k ) log ⁡ P s ′ ( s = q i ∣ h k ) − ∑ k = 1 K s ′ ∑ i = 1 N P s ′ ( s = q i ∣ h k ) ∑ i = 1 n w i f i ( h k , s = q i ) = ∑ k = 1 K s ′ ∑ i = 1 n w i f i ( h k , s k ) + ∑ k = 1 K s ′ ∑ i = 1 N P s ′ ( s = q i ∣ h k ) ( log ⁡ P s ′ ( s = q i ∣ h k ) − ∑ i = 1 n w i f i ( h k , s = q i ) ) = ∑ k = 1 K s ′ ∑ i = 1 n w i f i ( h k , s k ) − ∑ k = 1 K s ′ ∑ i = 1 N P s ′ ( s = q i ∣ h k ) log ⁡ Z ( h k , s ′ ) = ∑ k = 1 K s ′ ∑ i = 1 n w i f i ( h k , s k ) − ∑ k = 1 K s ′ log ⁡ Z ( h k , s ′ ) ∑ i = 1 N P s ′ ( s = q i ∣ h k ) = ∑ k = 1 K s ′ ∑ i = 1 n w i f i ( h k , s k ) − ∑ k = 1 K s ′ log ⁡ Z ( h k , s ′ ) \begin{align} \psi(w) &= \sum\limits_{k=1}^{K_{s'}} \sum\limits_{i=1}^N P_{s'}(s=q_i\mid h_k) \log P_{s'}(s=q_i\mid h_k) + \sum_{i=1}^n w_i\sum_{k=1}^{K_{s'}}\Big( f_i(h_k, s_k) - \sum_{i=1}^N P_{s'}(s=q_i\mid h_k)f_i(h_k, s=q_i) \Big) \notag \\ &= \sum_{k=1}^{K_{s'}} \sum_{i=1}^N P_{s'} (s=q_i \mid h_k) \log P_{s'} (s = q_i\mid h_k) + \sum_{k=1}^{K_{s'}}\sum_{i=1}^n w_i f_i(h_k,s_k) - \sum_{k=1}^{K_{s'}}\sum_{i=1}^NP_{s'}(s = q_i\mid h_k) \sum_{i=1}^n w_i f_i(h_k, s=q_i) \notag \\ &= \sum_{k=1}^{K_{s'}}\sum_{i=1}^n w_i f_i(h_k,s_k) + \sum_{k=1}^{K_{s'}} \sum_{i=1}^N P_{s'} (s=q_i \mid h_k) \log P_{s'} (s = q_i\mid h_k) - \sum_{k=1}^{K_{s'}}\sum_{i=1}^NP_{s'}(s = q_i\mid h_k) \sum_{i=1}^n w_i f_i(h_k, s=q_i) \notag\\ &= \sum_{k=1}^{K_{s'}}\sum_{i=1}^n w_i f_i(h_k,s_k) + \sum_{k=1}^{K_{s'}} \sum_{i=1}^N P_{s'} (s=q_i \mid h_k) \Big(\log P_{s'} (s = q_i\mid h_k) - \sum_{i=1}^n w_i f_i(h_k, s=q_i) \Big) \notag\\ &= \sum_{k=1}^{K_{s'}}\sum_{i=1}^n w_i f_i(h_k,s_k) - \sum_{k=1}^{K_{s'}} \sum_{i=1}^N P_{s'} (s=q_i \mid h_k) \log Z(h_k, s')\notag\\ &= \sum_{k=1}^{K_{s'}}\sum_{i=1}^n w_i f_i(h_k,s_k) - \sum_{k=1}^{K_{s'}} \log Z(h_k, s')\sum_{i=1}^N P_{s'}(s=q_i\mid h_k) \notag\\ &= \sum_{k=1}^{K_{s'}}\sum_{i=1}^n w_i f_i(h_k,s_k) - \sum_{k=1}^{K_{s'}} \log Z(h_k, s') \notag\\ \end{align} ψ(w)=k=1Ksi=1NPs(s=qihk)logPs(s=qihk)+i=1nwik=1Ks(fi(hk,sk)i=1NPs(s=qihk)fi(hk,s=qi))=k=1Ksi=1NPs(s=qihk)logPs(s=qihk)+k=1Ksi=1nwifi(hk,sk)k=1Ksi=1NPs(s=qihk)i=1nwifi(hk,s=qi)=k=1Ksi=1nwifi(hk,sk)+k=1Ksi=1NPs(s=qihk)logPs(s=qihk)k=1Ksi=1NPs(s=qihk)i=1nwifi(hk,s=qi)=k=1Ksi=1nwifi(hk,sk)+k=1Ksi=1NPs(s=qihk)(logPs(s=qihk)i=1nwifi(hk,s=qi))=k=1Ksi=1nwifi(hk,sk)k=1Ksi=1NPs(s=qihk)logZ(hk,s)=k=1Ksi=1nwifi(hk,sk)k=1KslogZ(hk,s)i=1NPs(s=qihk)=k=1Ksi=1nwifi(hk,sk)k=1KslogZ(hk,s)
这里的最大熵模型同样满足对偶函数与对数似然函数等价。对数似然函数为
L ( w ) = log ⁡ ∏ k = 1 K s ′ P s ′ ( s k ∣ h k ) = ∑ k = 1 K s ′ log ⁡ P s ′ ( s k ∣ h k ) = ∑ k = 1 K s ′ ( ∑ i = 1 n w i f i ( h k , s k ) − log ⁡ Z ( h k , s ′ ) ) = ∑ k = 1 K s ′ ∑ i = 1 n w i f i ( h k , s k ) − ∑ k = 1 K s ′ log ⁡ Z ( h k , s ′ ) \begin{align} L(w) &= \log \prod_{k=1}^{K_{s'}} P_{s'} (s_k \mid h_k)\notag \\ &= \sum_{k=1}^{K_{s'}} \log P_{s'} (s_k\mid h_k) \notag\\ &= \sum_{k=1}^{K_{s'}} \left( \sum_{i=1}^n w_if_i(h_k,s_k) - \log Z(h_k, s') \right) \notag\\ &= \sum_{k=1}^{K_{s'}}\sum_{i=1}^n w_i f_i(h_k,s_k) - \sum_{k=1}^{K_{s'}} \log Z(h_k, s')\notag \\ \end{align} L(w)=logk=1KsPs(skhk)=k=1KslogPs(skhk)=k=1Ks(i=1nwifi(hk,sk)logZ(hk,s))=k=1Ksi=1nwifi(hk,sk)k=1KslogZ(hk,s)
可见,对数似然函数与对偶函数相同。

极大化 ψ ( w ) \psi(w) ψ(w) 可以采用最大熵模型中提到的最优化算法,比如通用迭代尺度法(GIS)、改进的迭代尺度法(IIS)等。文献 [3] 中介绍到,对每组单元对应的 ψ ( w ) \psi(w) ψ(w) 分别采用 GIS 进行迭代,最终得到 N N N 组权重向量,对应 N N N 个最大熵模型,这 N N N 个最大熵模型完整地描述了概率分布 P ( s ∣ s ′ , h ) P(s\mid s', h) P(ss,h)

可以想象,如果满足二阶马尔可夫性,那么就需要训练 N × N N\times N N×N 个最大熵模型来描述概率分布 P ( s ∣ s ′ , s ′ ′ , h ) P(s\mid s', s'', h) P(ss,s′′,h),具体过程与上面类似。

对比两个文献提出的学习方法,文献 [1] 的观点更能让我信服,而且可以通过比较合理的推导进行证明。

这部分推导属于我自己研究的,正确性无法保证,仅供参考。

解码问题

Daniel Jurafsky 在《Speech and Language Processing》中提到,MEMM 的解码也可以采用类似于 HMM 中近似算法的贪心思想。使用这种方式解码,需要对输入观测序列从头到尾运行分类器,每次分类都作出当前最好的决定。算法流程大致描述为,从头到尾扫描整个观测序列,对于每个时刻,根据前一个时刻我们的解码得到的状态选择当前时刻对应的最大熵模型学习到的条件概率分布来确定当前时刻的解码状态,依次类推。特别地,第一个时刻的解码状态可以仅依赖于观测。

至于 Viterbi 算法也是与 HMM 一致。定义
δ t ( i ) = max ⁡ s 1 , s 2 , … , s t − 1 P ( O , s t = q i , s t − 1 , … , s 1 ∣ w ) ,      1 ≤ i ≤ N \delta_t(i) = \max _{s_1,s_2,\dots, s_{t-1}} P(O,s_{t}=q_i,s_{t-1},\dots, s_1\mid w),\space\space\space\space 1\le i\le N δt(i)=s1,s2,,st1maxP(O,st=qi,st1,,s1w),    1iN
其中 P P P P s ′ P_{s'} Ps 的简写。对式 ( 1 ) (1) (1) 变形可得
δ t ( i ) = max ⁡ s 1 , s 2 , … , s t − 1 P ( s t = q i ∣ s t − 1 , … , s 1 , O , w ) P ( s t − 1 , … , s 1 , O ∣ w ) = max ⁡ 1 ≤ j ≤ N P ( s t = q i ∣ h t , w ) δ t − 1 ( j ) = max ⁡ 1 ≤ j ≤ N [ δ t − 1 ( j ) ] P ( s t = q i ∣ h t , w ) \begin{align} \delta_t(i) &= \max_{s_1, s_2,\dots, s_{t-1}} P(s_t=q_i\mid s_{t-1},\dots, s_1, O, w) P(s_{t-1},\dots, s_1, O \mid w) \notag\\ &= \max_{1\le j \le N} P(s_t=q_i \mid h_t, w) \delta_{t-1}(j) \notag\\ &= \max_{1\le j \le N} [\delta_{t-1}(j)]P(s_t=q_i \mid h_t, w) \notag\\ \end{align} δt(i)=s1,s2,,st1maxP(st=qist1,,s1,O,w)P(st1,,s1,Ow)=1jNmaxP(st=qiht,w)δt1(j)=1jNmax[δt1(j)]P(st=qiht,w)
如果考虑一阶马尔可夫性,那么其中 h t = < s t − 1 , O , t > h_t=< s_{t-1},O, t> ht=<st1,O,t>。初始化
δ 1 ( i ) = P ( s 1 = q i ∣ h 1 , w ) \delta_1(i) = P(s_1 = q_i\mid h_1, w) δ1(i)=P(s1=qih1,w)
其中 h 1 = < O , 1 > h_1 = <O, 1> h1=<O,1>

定义在时刻 t t t 状态为 q i q_i qi 的所有单个路径 ( s 1 , s 2 , … , s t − 1 , s t = q i ) (s_1,s_2,\dots ,s_{t-1},s_t=q_i) (s1,s2,,st1,st=qi) 中概率最大的路径的第 t − 1 t - 1 t1 个结点为
ψ t ( i ) = a r g max ⁡ 1 ≤ j ≤ N [ δ t − 1 ( j ) ] ,      , 1 ≤ i ≤ N \psi_t(i) = {\rm arg} \max_{1\le j \le N} [\delta_{t-1}(j)],\space\space\space\space,1\le i \le N ψt(i)=arg1jNmax[δt1(j)],    ,1iN
ψ t ( i ) \psi_t(i) ψt(i) 保存的是时刻 t t t 状态 s t = q i s_t=q_i st=qi 由时刻 t − 1 t-1 t1 的哪种状态转移而来。初始化
ψ 1 ( i ) = 0 \psi_1(i) = 0 ψ1(i)=0
终止
P ∗ = max ⁡ 1 ≤ i ≤ N δ T ( i ) s T ∗ = a r g max ⁡ 1 ≤ i ≤ N [ δ T ( i ) ] P^* = \max_{1\le i \le N}\delta_T(i) \\ s_T^* = {\rm arg}\max \limits_{1\le i\le N} [\delta_T(i)] P=1iNmaxδT(i)sT=arg1iNmax[δT(i)]
路径回溯,只需要根据 s t ∗ = ψ t + 1 ( s t + 1 ∗ ) s_t^* = \psi_{t+1}(s_{t+1}^*) st=ψt+1(st+1) 逆序递推即可得到最优路径 S ∗ = ( s 1 ∗ , s 2 ∗ , … , s T ∗ ) S^*=(s_1^*,s_2^*,\dots, s_T^*) S=(s1,s2,,sT)

关于“双向 MEMM”、“MEMM 的缺点”等扩展问题在这里不展开,可以见其他文章。

REF

[1] McCallum A, Freitag D, Pereira F C N. Maximum entropy Markov models for information extraction and segmentation[C]//Icml. 2000, 17(2000): 591-598.

[2] Ratnaparkhi A. A maximum entropy model for part-of-speech tagging[C]//Conference on empirical methods in natural language processing. 1996.

[3] fall2014-loglineartaggers.pdf (columbia.edu)

[4] Collins M. Log-linear models[J]. Self-published Tutorial, 2005.

[5] Collins M. Log-linear models, memms, and crfs[J]. Columbia University lecture, 2015.

[6] Lafferty J, McCallum A, Pereira F C N. Conditional random fields: Probabilistic models for segmenting and labeling sequence data[J]. 2001.

[7] Wang H, Fei H, Yu Q, et al. A motifs-based Maximum Entropy Markov Model for realtime reliability prediction in System of Systems[J]. Journal of Systems and Software, 2019, 151: 180-193.

[8]《Speech and Language Processing》Daniel Jurafsky 等著

[9]《百面机器学习》诸葛越等著

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

[11] 【机器学习】最大熵模型【下】最大熵模型学习的最优化算法 - CSDN

[12] 【自然语言处理】隐马尔可夫模型【Ⅴ】解码问题 - CSDN

[13] (【自然语言处理】隐马尔可夫模型【Ⅱ】隐马尔科夫模型概述 - CSDN

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/114120.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法CPP时间复杂度

观察数据生成器可以发现对于每次操作均有 。 考虑将这些三元组想象成空间直角坐标系中 为对顶点的长方体。 将操作分成两部分&#xff0c;一部分是对 轴同时操作的&#xff0c;可以一开始就用前缀 统计完&#xff0c;将长方体变 成一个底面为阶梯状的直棱柱。另一部分是对 或…

【网络工程】9、实操-万达酒店综合项目(三)

接上篇《8、实操-万达酒店综合项目&#xff08;三&#xff09;》 之前我们按照项目要求进行模拟拓扑的构建实操&#xff0c;完成了办公区部分的网络配置&#xff0c;本篇我们来继续完成其他区域的网络配置。 一、总体架构情况 按照之前项目需求的拓扑图&#xff1a; 我们已经…

爱了爱了,Spring Cloud Alibaba内部微服务架构笔记真的太牛了

现如今微服务架构十分流行&#xff0c;而采用微服务构建系统也会带来更清晰的业务划分和可扩展性。同时&#xff0c;支持微服务的技术栈也是多种多样的&#xff0c;本文主要讲述我们为什么选择Spring Cloud和它的技术概要。 为什么微服务架构需要Spring Cloud 简单来说&#x…

【C++初阶】list的模拟实现

文章目录list的介绍list的模拟实现成员变量Member functionsconstructordestructoroperatorIterators正向迭代器反向迭代器beginendrbeginrendModifierspush_frontpop_frontpush_backpop_backinserteraseclear完整版代码list.hreverse_iterator.htest.cpplist的介绍 list是STL…

Selenium自动化测试环境搭建及问题

一、前言 目标&#xff1a;环境搭建及测试 主要问题&#xff1a;浏览器闪退&#xff0c;路径不明确&#xff0c;语法弃用 二、环境搭建&#xff08;自带python3.9以上&#xff09; 2.1.1、下载谷歌浏览器驱动 https://registry.npmmirror.com/binary.html?pathchromedriver/&…

数据结构---A星寻路算法

A星寻路算法第一步第二步第三步第四步JAVA实现用于寻找有效路径的算法。定义俩个集合 OpenList&#xff1a;可到达的格子 CloseList&#xff1a;已到达的格子 每一个格子都具有F、G、H这3个属性 G&#xff1a;从起点走到当前格子的成本&#xff0c;也就是已经花费了多少步。H&a…

生产级部署 Python 脚本,崩溃可自启

今天介绍一个生产级的流程管理工具 PM2&#xff0c;通常我们说到 PM2 的时候&#xff0c;都是在说如何部署 Node.js 程序&#xff0c;但是实际上 PM2 很强大&#xff0c;不仅仅可以用来管理 Node.js&#xff0c;它还可以用来管理 Python、PHP、Ruby、perl 等等。 这里就以 Pyt…

看了下华为工资,我不加班了

周五快下班&#xff0c;我本来是想继续好好上班的。那时候是晚上8点左右&#xff0c;跟我一个华为的朋友聊天&#xff0c;聊完之后&#xff0c;我气得把电脑合上&#xff0c;拿上花了7万巨款买的车钥匙&#xff0c;头也不回的走到电梯口&#xff0c;按下了下楼的电梯按钮。-事情…

项目集成MybatisPlus

目录 1.MyBatisPlus介绍 1.1.为什么需要 1.2.MyBatisPlus简介 1.3.MybatisPlus特点 2.项目集成MybatisPlus 2.1.导入依赖 2.2.创建配置 2.3.代码生成主类GenteratorCode 2.4.Controller&#xff0c;Query模板 2.5.生成代码 2.6最终效果 1.MyBatisPlus介绍 1.1.为什么…

SQL优化篇:如何成为一位写优质SQL语句的绝顶高手

(Structured Query Language)标准结构化查询语言简称SQL&#xff0c;编写SQL语句是每位后端开发日常职责中&#xff0c;接触最多的一项工作&#xff0c;SQL是关系型数据库诞生的产物&#xff0c;无论是什么数据库&#xff0c;MySQL、Oracle、SQL Server、DB2、PgSQL....&#x…

JSP ssh网上商品拍卖系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 JSP ssh网上商品拍卖系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S 模式开发。开发环境为TOMCAT7.0…

个人收款的实现方案

最近出于个人需要折腾了一套微信免签支付的个人系统,下面介绍一下整体的一个实现方案 由于微信本身不提供免签的支付api,因此个人若想要实现免签支付,那么只能通过监听微信收款通知来实现了,因此整个系统的实现部分分为 收款服务端和监听客户端来实现 收款服务端实现 整个…

【nowcoder】笔试强训Day5

目录 一、单选题 二、多选题 三、编程题 3.1统计回文 3.2连续最大和 一、单选题 1.下面的程序 编译运行后&#xff0c;在屏幕上显示的结果是&#xff08;&#xff09; public class Test {public static void main(String args[]) {int x, y;x 5 >> 2;y x >&…

docker入门以及常见的命令

目录 1. 什么是docker 2. docker的核心组件 3. docker的安装 3.1 安装的先决条件 3.2.1 ubuntu安装docker 3.2.2 CentOS安装docker 3.3 配置镜像加速器 4. 镜像常用操作 4.1 搜索镜像 4.2 镜像下载 4.3 查看宿主机中的镜像 4.3 删除镜像 5. 容器常用命令 5.1 运行…

#Z1243. 完美数

一&#xff0c;题目描述 一个数是完美的&#xff0c;仅当它等于它的因数中比它小的所有数之和。 例如&#xff1a;28124714&#xff0c;所以 28 是完美的。 由此我们可以定义一个数的不完美值 F(N)&#xff0c;代表 N和比 N 小的所有 N 的因数之和的差的绝对值。 例如&…

c# 服务

是什么 Microsoft Windows 服务&#xff08;过去称为 NT 服务&#xff09;允许用户创建可在其自身的 Windows 会话中长时间运行的可执行应用程序。 这些服务可在计算机启动时自动启动&#xff0c;可以暂停和重启&#xff0c;并且不显示任何用户界面。 这些功能使服务非常适合在…

metrics-server监控主机资源

使用metrics-server实现主机资源监控获取metrics-server资源清单文件修改metrics-server资源清单文件部署metrics-server资源清单文件验证及授权获取metrics-server资源清单文件 直接使用命令来获取资源清单文件 wget https://github.com/kubernetes-sigs/metrics-server/rele…

车用DCDC双路输出电源模块规格书

产品名称&#xff1a;非隔离稳压双路输出车用电源模块 产品型号&#xff1a;LM36J40W2EH 典型特征值&#xff1a;24V/8V(3A)&5V(2A) u 产品概述 LM36J40W2EH模块电源是一款非隔离型双路输出的开关稳压器。它采用集成IC设计&#xff0c;使用一进两出的接线方式&#xff…

【Html圣诞树】2022年的圣诞节了,祝大家节日快乐。

目录 1. 效果展示2. 源代码1. 效果展示 是最近在互联网上很火的一个效果。 是带有背景音乐的,而且背景音乐支持选择,也支持自定义。 2. 源代码 美丽的圣诞树.html <!DOCTYPE html> <html lang="en"

从零学习 InfiniBand-network架构(十) —— IB协议中全局ID

从零学习 InfiniBand-network架构&#xff08;十&#xff09; —— IB协议中全局ID &#x1f508;声明&#xff1a; &#x1f603;博主主页&#xff1a;王_嘻嘻的CSDN主页 &#x1f511;未经作者允许&#xff0c;禁止转载 &#x1f6a9;本专题部分内容源于《InfiniBand-network…