17 条件随机场(二):CRF

5 CRF 概率密度函数的参数形式

前面我们花了大量的功夫来将CRF 是如何演变来的,讲述了从HMM-MEMM-CRF 的演化过程,理性的讲述了CRF 图结构的合理性。所谓条件随机场,我们分成两个部分来进行解释:条件指的是,条件概率;随机场指的是,y 节点连接而成的无向图模型,称之为Markov Field。CRF 的概率图模型如下所示:在这里插入图片描述

5.1 势函数化简

我们想要得出 P ( Y ∣ X ) P(Y | X) P(YX) 的形式,很可惜在无向图中,我们并不能根据因果关系直接写出来。我们之间讲到过无向图的分解方法,这里再重申一下团的概念,一个图中所有桑点之问都相互相连称之为团。对于 Markov Random Field 做因子分解,对于 x ∈ R p , x \in \mathbb{R}^{p}, xRp, 我们可以令:
P ( X ) = 1 Z ∏ i = 1 k ϕ i ( x c i ) = 1 Z ∏ i = 1 k exp ⁡ { − E i ( x c i ) } P(X)=\frac{1}{Z} \prod_{i=1}^{k} \phi_{i}\left(x_{c_{i}}\right)=\frac{1}{Z} \prod_{i=1}^{k} \exp \left\{-E_{i}\left(x_{c_{i}}\right)\right\} P(X)=Z1i=1kϕi(xci)=Z1i=1kexp{Ei(xci)}
这里的 K 表示有 k k k 个最大团 , c i c_{i} ci 指的是第 i i i 个最大团 , , , ϕ i ( x c i ) \phi_{i}\left(x_{c_{i}}\right) ϕi(xci) 表示第 i i i 个最大团的势函数。 ϕ i ( x c 1 ) \phi_{i}\left(x_{c_{1}}\right) ϕi(xc1) 势函数,必须为正。这里的概念都是来自于统计物理学和热力学的过程。因为,势函数必定为正,我 们可以将势函数表达为 ϕ i ( x c i ) = exp ⁡ { − E i ( x c i ) } \phi_{i}\left(x_{c_{i}}\right)=\exp \left\{-E_{i}\left(x_{c_{i}}\right)\right\} ϕi(xci)=exp{Ei(xci)} 。其中 , E i ( x c i ) , E_{i}\left(x_{c_{i}}\right) ,Ei(xci) 称为 Energy function。实际上用这种 形式表达的 p ( x ) , p(x), p(x), 为 Gibbs Distribution,或者又被称之为 Boltzman Distribution。为了进一步简化, 我们令 − E i ( x c i ) = F i ( x c i ) , -E_{i}\left(x_{c_{i}}\right)=F_{i}\left(x_{c_{i}}\right), Ei(xci)=Fi(xci), 所以就得到了最终的形式:
P ( X ) = 1 Z ∏ i = 1 k exp ⁡ { F i ( x c i ) }       ( 10 ) P(X)=\frac{1}{Z} \prod_{i=1}^{k} \exp \left\{F_{i}\left(x_{c_{i}}\right)\right\} \ \ \ \ \ (10) P(X)=Z1i=1kexp{Fi(xci)}     (10)

5.2 CRF 概率参数结构

如果不加说明,我们认为CRF 为线性链。
在这里插入图片描述
我们可以看到在线性链中,每两个相邻的节点之间形成了一个团,一共4个团,而且总有团的结构都是一样的, 图 10 所例的线性链可以被我们分成 4 个团。每个团都和 y t , y t − 1 y_{t}, y_{t-1} yt,yt1 x 1 : T x_{1: T} x1:T 有关系,所以,
P ( X ) = 1 Z ∏ i = 1 k exp ⁡ { F i ( x c i ) } = 1 Z exp ⁡ ∑ i = 1 T − 1 F t ( y t − 1 , y t , x 1 : T ) P(X)=\frac{1}{Z} \prod_{i=1}^{k} \exp \left\{F_{i}\left(x_{c_{i}}\right)\right\}=\frac{1}{Z} \exp \sum_{i=1}^{T-1} F_{t}\left(y_{t-1}, y_{t}, x_{1: T}\right) P(X)=Z1i=1kexp{Fi(xci)}=Z1expi=1T1Ft(yt1,yt,x1:T)
这个公式的转换,首先将连乘写到指数函数里变成了连加,又因为线性链所有团的结构都是一样的。所 以相当于从第 1 个加到第 T -1 个。由于线性链中所有团的结构都是一样的,我们只考虑其中的一个 团结构。那么,下一步的目标则是考虑, F t ( y t − 1 , y t , x 1 : T ) F_{t}\left(y_{t-1}, y_{t}, x_{1: T}\right) Ft(yt1,yt,x1:T) 怎么表示? 这个结构的得来实际上有一定的 intuitive,我们将它分成两部分,状态函数和转移函数。状态函 数包括 y t y_{t} yt 时刻和 y t − 1 y_{t-1} yt1 时刻和 x 1 : T x_{1: T} x1:T 之间的影响,转移函数包括 y t , y t − 1 y_{t}, y_{t-1} yt,yt1 时刻共同和 x 1 : T x_{1: T} x1:T 之间的影响。 公式表达如下所示:
F t ( y t − 1 , y t , x 1 : T ) = Δ y t − 1 , x 1 : T + Δ y t , x 1 : T ⏟ State Function  + Δ y t − 1 , y t , x 1 : T ⏟ Transfer Function  F_{t}\left(y_{t-1}, y_{t}, x_{1: T}\right)=\underbrace{\Delta_{y_{t-1}, x_{1: T}}+\Delta_{y_{t}, x_{1: T}}}_{\text {State Function }}+\underbrace{\Delta_{y_{t-1}, y_{t}, x_{1: T}}}_{\text {Transfer Function }} Ft(yt1,yt,x1:T)=State Function  Δyt1,x1:T+Δyt,x1:T+Transfer Function  Δyt1,yt,x1:T
这里再次提醒一下,我们代入到标注问题中, x 1 : T x_{1: T} x1:T 为“小明是中国人。”这是我们观测到的值, y t − 1 y_{t-1} yt1 y t y_{t} yt 代表隐变量为词语的词性,名词,动词和形容词等。状态函数中 y t y_{t} yt t t t 时刻的影响已经包含了 y t − 1 y_{t-1} yt1 时刻的影响,我们没有必要再计算两遍,所以在状态函数中我们可以忽略掉 y t − 1 y_{t-1} yt1 。所以,最终结果为;
F t ( y t − 1 , y t , x 1 : T ) = Δ y t , x 1 : T + Δ y t − 1 , y t , x 1 : T F_{t}\left(y_{t-1}, y_{t}, x_{1: T}\right)=\Delta_{y_{t}, x_{1: T}}+\Delta_{y_{t-1}, y_{t}, x_{1: T}} Ft(yt1,yt,x1:T)=Δyt,x1:T+Δyt1,yt,x1:T

我们用一个函数来表达 △ y t , x 1 : T \triangle_{y_{t}, x_{1:T}} yt,x1:T
Δ y t , x 1 : T = ∑ l = 1 L η l g l ( y t , x 1 : T ) \Delta_{y_{t}, x_{1: T}}=\sum_{l=1}^{L} \eta_{l} g_{l}\left(y_{t}, x_{1: T}\right) Δyt,x1:T=l=1Lηlgl(yt,x1:T)
其中 f k f_{k} fk 为特征函数,指示函数,满足某个状态为 1 , 1, 1, 比如:
f k ( y t − 1 =  noun,  y t =  verb,  x 1 : T ) = 1 f k ( y t − 1 =  noun,  y t =  auxiliary  , x 1 : T ) = 0 \begin{array}{c} f_{k}\left(y_{t-1}=\text { noun, } y_{t}=\text { verb, } x_{1: T}\right)=1 \\ f_{k}\left(y_{t-1}=\text { noun, } y_{t}=\text { auxiliary }, x_{1: T}\right)=0 \end{array} fk(yt1= noun, yt= verb, x1:T)=1fk(yt1= noun, yt= auxiliary ,x1:T)=0
λ k \lambda_{k} λk 则是我们需要学习的参数,利用数据通过 Learning 来得到。同样,我们可以用类似的思路来定义 Δ y t − 1 , y t , x 1 : T \Delta_{y_{t-1}, y_{t}, x_{1: T}} Δyt1,yt,x1:T
Δ y t − 1 , y t , x 1 : T = ∑ k = 1 K λ k f k ( y t − 1 , y t , x 1 : T ) \Delta_{y_{t-1}, y_{t}, x_{1: T}}=\sum_{k=1}^{K} \lambda_{k} f_{k}\left(y_{t-1}, y_{t}, x_{1: T}\right) Δyt1,yt,x1:T=k=1Kλkfk(yt1,yt,x1:T)
这里的 f k f_{k} fk g l g_{l} gl 都是给定的特征函数, λ k \lambda_{k} λk η l \eta_{l} ηl 都是需要学习的参数。所以,我们最后就得到了 CRF条件概率的表达形式为:
P ( Y ∣ X ) = 1 Z exp ⁡ { ∑ t = 1 T [ ∑ k = 1 K λ k f k ( y t − 1 , y t , x 1 : T ) + ∑ l = 1 L η l g l ( y t , x 1 : T ) ] } P(Y | X)=\frac{1}{Z} \exp \left\{\sum_{t=1}^{T}\left[\sum_{k=1}^{K} \lambda_{k} f_{k}\left(y_{t-1}, y_{t}, x_{1: T}\right)+\sum_{l=1}^{L} \eta_{l} g_{l}\left(y_{t}, x_{1: T}\right)\right]\right\} P(YX)=Z1exp{t=1T[k=1Kλkfk(yt1,yt,x1:T)+l=1Lηlgl(yt,x1:T)]}

这就是CRF 的概率密度函数,实际上这个得出的过程是比较Intuitive 的,可能大家有点不太好理解。那么,我们来做一个类比,对于学习机器的同学来说,肯定对神经网络非常的熟悉。对于图像识别问题,我们输入一张图片,通过一个网络,得到一个结果。对于这个网络,我们选择怎样的网络结构,是前馈神经网络,CNN 还是RNN,什么样的激活函数,和怎样的激活函数都是一个结构,然后根据我们的结果使用梯度下降来训练得到相应的参数。实际上这里和神经网络的结构是一个的,就像神经网络为什么设置成那个样子,实际上也不能说的很明白,就是这样的结构会make sence 而已。在这里也一样,我的设计出的概率密度函数形式,就是感觉符合CRF 的网络结构,并且会make sence,当然小伙伴有更好的想法,也可以改进这个参数结果。得到结构后,我们就可以通过训练来求得参数了。

5.3 小结

在这一小节中,我们比较intuitive 的得到了CRF 概率密度函数的参数形式,和神经网络一样,这都是我们为了实现目的根据概率图的结构而设计出的一种会make sence 的结构。结构确定之后,通过对数据的训练来求得参数,那么CRF 模型就建立完成了。

6 概率密度函数的向量形式

上一节中,我们讲到了可以将每一个最大团分成两个部分,即为状态函数和转移函数。
P ( Y ∣ X ) = 1 Z exp ⁡ ∑ t = 1 T [ Δ transfer function  + Δ state function  ] = 1 Z exp ⁡ { ∑ t = 1 T [ ∑ k = 1 K λ k f k ( y t − 1 , y t , x 1 : T ) + ∑ l = 1 L η l g l ( y t , x 1 : T ) ] } \begin{aligned} P(Y | X) &=\frac{1}{Z} \exp \sum_{t=1}^{T}\left[\Delta_{\text {transfer function }}+\Delta_{\text {state function }}\right] \\ &=\frac{1}{Z} \exp \left\{\sum_{t=1}^{T}\left[\sum_{k=1}^{K} \lambda_{k} f_{k}\left(y_{t-1}, y_{t}, x_{1: T}\right)+\sum_{l=1}^{L} \eta_{l} g_{l}\left(y_{t}, x_{1: T}\right)\right]\right\} \end{aligned} P(YX)=Z1expt=1T[Δtransfer function +Δstate function ]=Z1exp{t=1T[k=1Kλkfk(yt1,yt,x1:T)+l=1Lηlgl(yt,x1:T)]}
这里的 K 和 L 分别是多少呢?加入对于 y t ∈ S = { noun, verb, aux , ⋯   } y_{t} \in S=\{\text {noun, verb, aux}, \cdots\} ytS={noun, verb, aux,} 一共有 S S S 个状态。我们看看转移图像:在这里插入图片描述
所以,我们看到 有 ∣ S ∣ 2 |S|^2 S2 种可能,所以 K ≤ ∣ S ∣ 2 \mathrm{K} \leq|S|^{2} KS2 。对于归一化因子 Z Z Z 而言,肯定是和 y y y 没有关系的,归一化因子是对 y 进行了积分的。

6.1 概率密度函数的向量形式化简

所以,概率模型被我们写为:
P ( Y = y ∣ X = x ) = 1 Z ( x , λ , η ) exp ⁡ { ∑ t = 1 T [ ∑ k = 1 K λ k f k ( y t − 1 , y t , x 1 : T ) + ∑ l = 1 L η l g l ( y t , x 1 : T ) ] } P(Y=y | X=x)=\frac{1}{Z(x, \lambda, \eta)} \exp \left\{\sum_{t=1}^{T}\left[\sum_{k=1}^{K} \lambda_{k} f_{k}\left(y_{t-1}, y_{t}, x_{1: T}\right)+\sum_{l=1}^{L} \eta_{l} g_{l}\left(y_{t}, x_{1: T}\right)\right]\right\} P(Y=yX=x)=Z(x,λ,η)1exp{t=1T[k=1Kλkfk(yt1,yt,x1:T)+l=1Lηlgl(yt,x1:T)]}
令:
y = [ y 1 y 2 ⋮ y k ] , x = [ x 1 x 2 ⋮ x k ] , λ = [ λ 1 λ 2 ⋮ λ k ] , η = [ η 1 η 2 ⋮ η l ] , f = [ f 1 f 2 ⋮ f k ] = f ( y t − 1 , y t , x 1 : T ) , g = [ g 1 g 2 ⋮ g l ] = g ( y t , x 1 : T ) y=\left[\begin{array}{c} y_{1} \\ y_{2} \\ \vdots \\ y_{k} \end{array}\right], x=\left[\begin{array}{c} x_{1} \\ x_{2} \\ \vdots \\ x_{k} \end{array}\right], \lambda=\left[\begin{array}{c} \lambda_{1} \\ \lambda_{2} \\ \vdots \\ \lambda_{k} \end{array}\right], \eta=\left[\begin{array}{c} \eta_{1} \\ \eta_{2} \\ \vdots \\ \eta_{l} \end{array}\right], f=\left[\begin{array}{c} f_{1} \\ f_{2} \\ \vdots \\ f_{k} \end{array}\right]=f\left(y_{t-1}, y_{t}, x_{1: T}\right), g=\left[\begin{array}{c} g_{1} \\ g_{2} \\ \vdots \\ g_{l} \end{array}\right]=g\left(y_{t}, x_{1: T}\right) y=y1y2yk,x=x1x2xk,λ=λ1λ2λk,η=η1η2ηl,f=f1f2fk=f(yt1,yt,x1:T),g=g1g2gl=g(yt,x1:T)

根据向量的内积方法,我们可以将 ∑ k = 1 K λ k f k ( y t − 1 , y t , x 1 : T ) \sum_{k=1}^{K} \lambda_{k} f_{k}\left(y_{t-1}, y_{t}, x_{1: T}\right) k=1Kλkfk(yt1,yt,x1:T) 改写为 λ T f ( y t − 1 , y t , x 1 : T ) , ∑ l = 1 L η l g l ( y t , x 1 : T ) \lambda^{T} f\left(y_{t-1}, y_{t}, x_{1: T}\right), \sum_{l=1}^{L} \eta_{l} g_{l}\left(y_{t}, x_{1: T}\right) λTf(yt1,yt,x1:T),l=1Lηlgl(yt,x1:T)
改写为 η T g ( y t , x 1 : T ) \eta^{T} g\left(y_{t}, x_{1: T}\right) ηTg(yt,x1:T) 。所以,原式等于:
P ( Y = y ∣ X = x ) = 1 Z ( x , λ , η ) exp ⁡ { ∑ t = 1 T [ λ T f ( y t − 1 , y t , x 1. T ) + η T g ( y t , x 1 : T ) ) ] } = 1 Z ( x , λ , η ) exp ⁡ { [ λ T ∑ t = 1 T f ( y t − 1 , y t , x 1 : T ) + η T ∑ t = 1 T g ( y t , x 1 : T ) ) ] } \begin{aligned} P(Y=y | X=x) &\left.=\frac{1}{Z(x, \lambda, \eta)} \exp \left\{\sum_{t=1}^{T}\left[\lambda^{T} f\left(y_{t-1}, y_{t}, x_{1 . T}\right)+\eta^{T} g\left(y_{t}, x_{1: T}\right)\right)\right]\right\} \\ &\left.=\frac{1}{Z(x, \lambda, \eta)} \exp \left\{\left[\lambda^{T} \sum_{t=1}^{T} f\left(y_{t-1}, y_{t}, x_{1: T}\right)+\eta^{T} \sum_{t=1}^{T} g\left(y_{t}, x_{1: T}\right)\right)\right]\right\} \end{aligned} P(Y=yX=x)=Z(x,λ,η)1exp{t=1T[λTf(yt1,yt,x1.T)+ηTg(yt,x1:T))]}=Z(x,λ,η)1exp{[λTt=1Tf(yt1,yt,x1:T)+ηTt=1Tg(yt,x1:T))]}
我们现在看着还是觉得太复杂还想进行下一步化简,这里的 λ \lambda λ ∑ t = 1 T f ( y t − 1 , y t , x 1 : T ) \sum_{t=1}^{T} f\left(y_{t-1}, y_{t}, x_{1: T}\right) t=1Tf(yt1,yt,x1:T) 都是 k × 1 k \times 1 k×1 的 向量, η \eta η ∑ t = 1 T g ( y t , x 1 : T ) \sum_{t=1}^{T} g\left(y_{t}, x_{1: T}\right) t=1Tg(yt,x1:T) 都是 l × 1 l \times 1 l×1 的向量,相加是在同一个维度相加,并不会破坏矩阵的尺寸。所 以我们可以进行合并。于是令:
θ = [ λ η ] ( k + l ) × 1 , H = [ ∑ t = 1 T f ( y t − 1 , y t , x 1 : T ) ∑ t = 1 T g ( y t , x 1 : T ) ) ] ( k + l ) × 1 \theta=\left[\begin{array}{l} \lambda \\ \eta \end{array}\right]_{(k+l) \times 1}, \quad H=\left[\begin{array}{c} \sum_{t=1}^{T} f\left(y_{t-1}, y_{t}, x_{1: T}\right) \\ \left.\sum_{t=1}^{T} g\left(y_{t}, x_{1: T}\right)\right) \end{array}\right]_{(k+l) \times 1} θ=[λη](k+l)×1,H=[t=1Tf(yt1,yt,x1:T)t=1Tg(yt,x1:T))](k+l)×1
所以,我们得到的形式为:
P ( Y = y ∣ X = x ) = 1 Z ( x , θ ) exp ⁡ { θ T ⋅ H ( y t , y t − 1 , x 1 : T ) } P(Y=y | X=x)=\frac{1}{Z(x, \theta)} \exp \left\{\theta^{T} \cdot H\left(y_{t}, y_{t-1}, x_{1: T}\right)\right\} P(Y=yX=x)=Z(x,θ)1exp{θTH(yt,yt1,x1:T)}
H ( y t , y t − 1 , x 1 : T ) H\left(y_{t}, y_{t-1}, x_{1: T}\right) H(yt,yt1,x1:T) 表示 H H H 矩阵和 y t , y t − 1 , x 1 : T y_{t}, y_{t-1}, x_{1: T} yt,yt1,x1:T 有关。我们可以将 θ T ⋅ H ( y t , y t − 1 , x 1 : T ) \theta^{T} \cdot H\left(y_{t}, y_{t-1}, x_{1: T}\right) θTH(yt,yt1,x1:T)写成向量内积的形式,最终得到最后的形式为:
P ( Y = y ∣ X = x ) = 1 Z ( x , θ ) exp ⁡ ⟨ θ , H ⟩ P(Y=y | X=x)=\frac{1}{Z(x, \theta)} \exp \langle\theta, H\rangle P(Y=yX=x)=Z(x,θ)1expθ,H

6.2 小结

我们最终得到了概率密度函数的向量表达形式为:
P ( Y = y ∣ X = x ) = 1 Z ( x , θ ) exp ⁡ ⟨ θ , H ⟩ P(Y=y | X=x)=\frac{1}{Z(x, \theta)} \exp \langle\theta, H\rangle P(Y=yX=x)=Z(x,θ)1expθ,H
实际上这章非常的简单,都是一些很简单的数学变形而已。我们这样做的目的是什么呢?很简单就是 去掉 ∑ \sum 符号,在 learning 和 Inference 问题中,我们可能遇到大量的求导,把这个 ∑ \sum 去掉是为了简 化运算,带上了 ∑ \sum 不方便进行求导运算。

7 CRF 模型要解决的问题

上一节我们用向量形式来进行表达,为 Learning 和 Inference 问题做好了准备。所谓机器学习中 需要解决的问题,大致被我们分为两类,通过 learning 进行参数估计来得到模型,并利用求得的模型对未知的数据 进行 Inference。

7.1 Learning

也就是 Parameter estimation,利用数据来对模型中的参数进行求解。这么任务可以被描述为:给定一个数据集 { ( x ( i ) , y ( i ) ) } i = 1 N , \left\{\left(x^{(i)}, y^{(i)}\right)\right\}_{i=1}^{N}, {(x(i),y(i))}i=1N, 其中 x , y ∈ R T x, y \in \mathbb{R}^{T} x,yRT 都是 T \mathrm{T} T 维的。
我们可以来举一个简单的例子,比如“小明爱中国”,这个数据的x 由三个部分组成,分别是“小明”,“爱”和“中国”组成的,标注y 则是“名词”,“动词”,“名词”组成的。在我们的CRF 概率图中,不是一个节点是一个样本,而是所有的y 节点合在一起(一个句子)才是一个样本,这里需要强调一下以防同学弄混。所有,我们最终的求解目标为:
θ ^ = a r g m a x ∏ t = 1 T P ( y i ∣ x i , ) \hat{\theta}=arg max\prod_{t=1}^{T}P\left(y_{i}|x_{i},\right) θ^=argmaxt=1TP(yixi,)

7.2 Inference

Inference 通常可以被我们分为 三类问题,即

  • Marginal Probability(边缘概率)
  • Conditional Probability (条件概率)
  • MAP Inference:(Decoding问题)

而CRF是判别模型,所以我们一般不谈Conditional Probability,这个一般是针对生成模型中才会用到的,因为求联合概率,我们通常是使用贝叶斯公式来进行转换的。所以,我 们这里不讨论CRF 的Conditional Probability 的问题。

7.2.1 Marginal Probability

在概率图模型中,我们的建模对象往往都是 join distribution。比如有一个建模对象为 P ( X ) , X = P(X), X= P(X),X= ( x 1 , x 2 , ⋯   , x p ) T \left(x_{1}, x_{2}, \cdots, x_{p}\right)^{T} (x1,x2,,xp)T 。我们要求 P ( x 1 ) , P\left(x_{1}\right), P(x1), 往往都是先求 P ( X ) , P(X), P(X), 然后再对其他变量进行积分米求得 P ( x 1 ) P\left(x_{1}\right) P(x1)
举例,词性标注问题,对于 P ( y 1 = verb ⁡ ∣ X ) , \left(y_{1}=\operatorname{verb} | X\right), (y1=verbX), 也就是给定观察序列,求第 i i i 个词是动词的概率。

7.2.2 Conditional Probability

常用在生成模型,而CRF是判别模型,因此,不过多研究。

7.2.3 MAP Inference: Decoding

Decoding 问题,也就是在给定观察序列的情况下,寻找最大概率可能出现的隐概率状态序列。求 解的是:
Y ^ = arg ⁡ Y = y 1 , ⋯   , y t P ( Y ∣ X ) \hat{Y}=\arg _{Y=y_{1}, \cdots, y_{t}} P(Y | X) Y^=argY=y1,,ytP(YX)

8 Marginal Probability Calculate

下面我们主要针对 CRF 的三个问题进行求解,分别是 1. Marginal Probability; 2. Parameter Estimation; 3. Decoding Problem
在描述这个问题之前,先假设参数是已知的,如果参数是未知的,那么就假设参数 θ \theta θ 是一个常量。 我们的求解目标是,给定 P ( Y = y ∣ X = x ) P(Y=y | X=x) P(Y=yX=x) 的情况下,求 P ( y t = i ∣ x ) P\left(y_{t}=i | x\right) P(yt=ix) 的概率,这里再强调一下,每一个 { x , y } \{x, y\} {x,y} 都是一个时序的样本,比如一个句子,每个样本可以根据时问分成很多段。

8.1 直接进行求解

概率密度函数被定义为:
P ( Y = y ∣ X = x ) = 1 Z ∏ t = 1 T ϕ t ( y t − 1 , y t , x ) P(Y=y | X=x)=\frac{1}{Z} \prod_{t=1}^{T} \phi_{t}\left(y_{t-1}, y_{t}, x\right) P(Y=yX=x)=Z1t=1Tϕt(yt1,yt,x)
实际上就等于最大团的势函数之积。我们要求某个时刻在已知所有的观察变量的情况下隐变量 y t = i y_{t}=i yt=i 的概率,实际上就是将 P ( Y = y ∣ X = x ) P(Y=y | X=x) P(Y=yX=x) 这个联合概率分布在 y y y 的各个维度上积分,就可以得到 y t y_{t} yt 时 刻的条件概率了,而这里都是离散变量,那么就是求和。这个思路和想法很简单,我们来看看它怎么
样?
P ( y t = i ∣ x ) = ∑ y 1 , ⋯   , y t − 1 , y t + 1 , ⋯   , y T P ( y ∣ x ) = ∑ y 1 : t − 1 ∑ y t + 1 : T 1 Z ∏ t ′ = 1 T ϕ t ′ ( y t ′ − 1 , y t ′ , x ) P\left(y_{t}=i | x\right)=\sum_{y_{1}, \cdots, y_{t-1}, y_{t+1}, \cdots, y_{T}} P(y | x)=\sum_{y_{1: t-1}} \sum_{y_{t+1: T}} \frac{1}{Z} \prod_{t^{\prime}=1}^{T} \phi_{t^{\prime}}\left(y_{t^{\prime}-1}, y_{t^{\prime}}, x\right) P(yt=ix)=y1,,yt1,yt+1,,yTP(yx)=y1:t1yt+1:TZ1t=1Tϕt(yt1,yt,x)
由于我们求的是一个概率分布,每一个 y t ∈ S , y_{t} \in \mathcal{S}, ytS, 我们一共要对 T − 1 T-1 T1 y y y 进行积分,每一个 y y y ∣ S ∣ |S| S 种可能,所以在这个求积分的过程中,算法的复杂度是 O( ∣ S ∣ T ) \left.|S|^{T}\right) ST) 的。大家都是学过高等数学的,如果 你理解不了,这就是一个 T-1 重积分,T-1重积分是 T-1 维空间中的体积,因为所有势函数的乘积, 所以每次都需要考虑概率图中所有的依赖关系,计算需要进行 |S| T ^{T} T 次划分。而在求势函数的积的过程 中,需要进行 T 次运算,所以这个算法最后的复杂度是 O ( T ⋅ ∣ S ∣ T ) O(T \cdot |S| \left.^{T}\right) O(TST) 。这个算法的复杂度实在是太高了, 我们根本就没有办法求解,这个想法确实很简单,但是很可惜是 intractable 的。 那么我们有没有什么办法来简化运算呢?

8.2 Variables Elimination 算法复杂度降低分析

这个算法我们之前在HMM 中是讲过的,在这个问题中我们怎么求解呢?上述直接进行求解的办法,因为每一次积分都是对所有的势函数乘积进行积分,所以需要考虑所有的状态,算法复杂度是 O ( ∣ S ∣ T ) , \mathcal{O}\left(|S|^{T}\right), O(ST), 这是暴力求解的思路。

我们发现,在对某一个时刻的变量 y i y_{i} yi 进行求和的时候,和很多的势函数都没有关系。比如在 t = 5 t=5 t=5 时刻,求和只和势函数 ϕ ( y 4 , y 5 , x ) \phi\left(y_{4}, y_{5}, x\right) ϕ(y4,y5,x) 有关。所以,我们可以利用动态规划的思路,将连加号分解开,移 到后面后具体相关的势函数联系起来,这样每次积分时只考虑和势函数相关的变量,不需要考虑所有 的变量。设 m 为单个条伏概率的最大变量数量,我们化简后,只有依赖最多的这个节点会被考虑 次,其他的都会少于 m 次,所以算法复杂度被就降低到了 O ( ∣ S ∣ m ) , \left(|S|^{m}\right), (Sm), m < < T m<<T m<<T 。这就是我们思路的 大致来源。

8.3 Variables Elimination 算法运算过程

由于在第 t t t 时刻, y t y_{t} yt 的状态是已知的。所以,我们将序列从 y t y_{t} yt 时刻分开,分成两个部分,如下图 所示:
⋮ i \vdots i i
在这里插入图片描述
P ( y t = i ∣ x ) = ∑ y 1 : t − 1 ∑ y t + 1 : T 1 Z ∏ t ′ = 1 T ϕ t ′ ( y t ′ − 1 , y t ′ , x ) = 1 Z Δ l o f t ⋅ Δ r i g h t P\left(y_{t}=i | x\right)=\sum_{y_{1: t-1}} \sum_{y_{t+1: T}} \frac{1}{Z} \prod_{t^{\prime}=1}^{T} \phi_{t^{\prime}}\left(y_{t^{\prime}-1}, y_{t^{\prime}}, x\right)=\frac{1}{Z} \Delta_{\mathrm{loft}} \cdot \Delta_{\mathrm{right}} P(yt=ix)=y1:t1yt+1:TZ1t=1Tϕt(yt1,yt,x)=Z1ΔloftΔright
其中:
Δ l o t t = ∑ y 1 : t − 1 ϕ 1 ( y 0 , y 1 , x ) ϕ 2 ( y 1 , y 2 , x ) ⋯ ϕ t − 1 ( y t − 2 , y t − 1 , x ) ϕ t ( y t − 1 , y t = i , x ) Δ r i g h t = ∑ y t + 1 : T ϕ t + 1 ( y t = i , y t + 1 , x ) ϕ t + 2 ( y t + 1 , y t + 2 , x ) ⋯ ϕ T ( y T − 1 , y T , x ) \begin{array}{l} \Delta_{\mathrm{lott}}=\sum_{y_{1: t-1}} \phi_{1}\left(y_{0}, y_{1}, x\right) \phi_{2}\left(y_{1}, y_{2}, x\right) \cdots \phi_{t-1}\left(y_{t-2}, y_{t-1}, x\right) \phi_{t}\left(y_{t-1}, y_{t}=i, x\right) \\ \Delta_{\mathrm{right}}=\sum_{y_{t+1: T}} \phi_{t+1}\left(y_{t}=i, y_{t+1}, x\right) \phi_{t+2}\left(y_{t+1}, y_{t+2}, x\right) \cdots \phi_{T}\left(y_{T-1}, y_{T}, x\right) \end{array} Δlott=y1:t1ϕ1(y0,y1,x)ϕ2(y1,y2,x)ϕt1(yt2,yt1,x)ϕt(yt1,yt=i,x)Δright=yt+1:Tϕt+1(yt=i,yt+1,x)ϕt+2(yt+1,yt+2,x)ϕT(yT1,yT,x)
下一步目标就是想怎么去拆分了,首先来看看每一个势函数究竟和哪些变量有关,示意图如下所示:
在这里插入图片描述
变量消除的过程就是积分的过程,我们需要将累加的变量进行分解,让求和过程只和相关的势函 数进行求和,这样分解避免多个势函数混着一起积分,来减少运算过程,因为这样每次积分我们都只 要考虑单个变量的依赖变量的关系。根据上图所示的,关系依赖图,我们进行如下划分:
Δ left  = ∑ y 1 : t − 1 ϕ 1 ( y 0 , y 1 , x ) ϕ 2 ( y 1 , y 2 , x ) ⋯ ϕ t − 1 ( y t − 2 , y t − 1 , x ) ϕ t ( y t − 1 , y t = i , x ) = ∑ y t − 1 ϕ t ( y t − 1 , y t = i , x ) ( ∑ y t − 2 ϕ t − 1 ( y t − 2 , y t − 1 , x ) ( ⋯ ( ∑ y 1 ϕ 2 ( y 1 , y 2 , x ) ( ∑ y 0 ϕ 1 ( y 0 , y 1 , x ) ) ) ) ) \begin{aligned} \Delta_{\text {left }} &=\sum_{y_{1: t-1}} \phi_{1}\left(y_{0}, y_{1}, x\right) \phi_{2}\left(y_{1}, y_{2}, x\right) \cdots \phi_{t-1}\left(y_{t-2}, y_{t-1}, x\right) \phi_{t}\left(y_{t-1}, y_{t}=i, x\right) \\ &=\sum_{y_{t-1}} \phi_{t}\left(y_{t-1}, y_{t}=i, x\right)\left(\sum_{y_{t-2}} \phi_{t-1}\left(y_{t-2}, y_{t-1}, x\right)\left(\cdots\left(\sum_{y_{1}} \phi_{2}\left(y_{1}, y_{2}, x\right)\left(\sum_{y_{0}} \phi_{1}\left(y_{0}, y_{1}, x\right)\right)\right)\right)\right) \end{aligned} Δleft =y1:t1ϕ1(y0,y1,x)ϕ2(y1,y2,x)ϕt1(yt2,yt1,x)ϕt(yt1,yt=i,x)=yt1ϕt(yt1,yt=i,x)(yt2ϕt1(yt2,yt1,x)((y1ϕ2(y1,y2,x)(y0ϕ1(y0,y1,x)))))

那么这样我们手动的把所有的 ∑ \sum 连加符号,一个个的嵌入到该去的地方,计算复杂度过高的问题已经解决了。实际上写成上式这样的样子就可以了。我们为了进一步简化表达作如下操作。 我们令:
α t ( i ) = ∑ y t − 1 ϕ t ( y t − 1 , y t = i , x ) ( ∑ y t − 2 ϕ t − 1 ( y t − 2 , y t − 1 , x ) ( ⋯ ( ∑ y 1 ϕ 2 ( y 1 , y 2 , x ) ( ∑ y 0 ϕ 1 ( y 0 , y 1 , x ) ) ) ) ) α t − 1 ( j ) = ∑ y t − 2 ϕ t − 1 ( y t − 2 , y t − 1 = j , x ) ( ⋯ ( ∑ y 1 ϕ 2 ( y 1 , y 2 , x ) ( ∑ y 0 ϕ 1 ( y 0 , y 1 , x ) ) ) ) \begin{array}{c} \alpha_{t}(i)=\sum_{y_{t-1}} \phi_{t}\left(y_{t-1}, y_{t}=i, x\right)\left(\sum_{y_{t-2}} \phi_{t-1}\left(y_{t-2}, y_{t-1}, x\right)\left(\cdots\left(\sum_{y_{1}} \phi_{2}\left(y_{1}, y_{2}, x\right)\left(\sum_{y_{0}} \phi_{1}\left(y_{0}, y_{1}, x\right)\right)\right)\right)\right) \\ \alpha_{t-1}(j)=\sum_{y_{t-2}} \phi_{t-1}\left(y_{t-2}, y_{t-1}=j, x\right)\left(\cdots\left(\sum_{y_{1}} \phi_{2}\left(y_{1}, y_{2}, x\right)\left(\sum_{y_{0}} \phi_{1}\left(y_{0}, y_{1}, x\right)\right)\right)\right) \end{array} αt(i)=yt1ϕt(yt1,yt=i,x)(yt2ϕt1(yt2,yt1,x)((y1ϕ2(y1,y2,x)(y0ϕ1(y0,y1,x)))))αt1(j)=yt2ϕt1(yt2,yt1=j,x)((y1ϕ2(y1,y2,x)(y0ϕ1(y0,y1,x))))
那么,很显然我们就可以得出 α \alpha α 函数之间的表达式:
α t ( i ) = ∑ y t − 1 ϕ t ( y t − 1 = j , y t = i , x ) α t − 1 ( j ) \alpha_{t}(i)=\sum_{y_{t-1}} \phi_{t}\left(y_{t-1}=j, y_{t}=i, x\right) \alpha_{t-1}(j) αt(i)=yt1ϕt(yt1=j,yt=i,x)αt1(j)
因为, y t − 1 = j , y_{t-1}=j, yt1=j, j j j共有S个状态,所以我们可以得到等价表达方式:
α t ( i ) = ∑ j ∈ S ϕ t ( y t − 1 = j , y t = i , x ) α t − 1 ( j ) \alpha_{t}(i)=\sum_{j \in S} \phi_{t}\left(y_{t-1}=j, y_{t}=i, x\right) \alpha_{t-1}(j) αt(i)=jSϕt(yt1=j,yt=i,x)αt1(j)
实际上推导到了这里就很简单了,那么 △ left  = α t ( i ) \triangle_{\text {left }}=\alpha_{t}(i) left =αt(i) 。按照同样的方法进行变量提取化简,我们可以得到一样的结论:
Δ right  = ∑ y t + 1 : T ϕ t + 1 ( y t = i , y t + 1 , x ) ϕ t + 2 ( y t + 1 , y t + 2 , x ) ⋯ ϕ T ( y T − 1 , y T , x ) = ∑ y T ϕ T ( y T − 1 , y T , x ) ( ∑ y T − 1 ϕ T − 1 ( y T − 2 , y T − 1 , x ) ( ⋯ ( ∑ y t + 2 ϕ 2 ( y t + 1 , y t + 2 , x ) ( ∑ y t + 1 ϕ 1 ( y t = i , y t + 1 , x ) ) ) ) ) = β t ( i ) \begin{aligned} \Delta_{\text {right }} &=\sum_{y_{t+1: T}} \phi_{t+1}\left(y_{t}=i, y_{t+1}, x\right) \phi_{t+2}\left(y_{t+1}, y_{t+2}, x\right) \cdots \phi_{T}\left(y_{T-1}, y_{T}, x\right) \\ &=\sum_{y_{T}} \phi_{T}\left(y_{T-1}, y_{T}, x\right)\left(\sum_{y_{T-1}} \phi_{T-1}\left(y_{T-2}, y_{T-1}, x\right)\left(\cdots\left(\sum_{y_{t+2}} \phi_{2}\left(y_{t+1}, y_{t+2}, x\right)\left(\sum_{y_{t+1}} \phi_{1}\left(y_{t}=i, y_{t+1}, x\right)\right)\right)\right)\right) \\ &=\beta_{t}(i) \end{aligned} Δright =yt+1:Tϕt+1(yt=i,yt+1,x)ϕt+2(yt+1,yt+2,x)ϕT(yT1,yT,x)=yTϕT(yT1,yT,x)(yT1ϕT1(yT2,yT1,x)((yt+2ϕ2(yt+1,yt+2,x)(yt+1ϕ1(yt=i,yt+1,x)))))=βt(i)
所以,最终得到的最简形式为:
P ( y t = i ∣ x ) = 1 Z α t ( i ) ⋅ β t ( i ) P\left(y_{t}=i | x\right)=\frac{1}{Z} \alpha_{t}(i) \cdot \beta_{t}(i) P(yt=ix)=Z1αt(i)βt(i)

8.4 小结

本小节我们探讨了给定 P ( Y = y ∣ X = x ) P(Y=y | X=x) P(Y=yX=x) 的情况下,求 P ( y t = i ∣ x ) P\left(y_{t}=i | x\right) P(yt=ix) 的概率, x x x y y y 都是时序序列。直接采用积分求和的方法算法复杂度为 O(|S| T ^{T} T ) 的太高了,利用变量消元的方法,准确的分离变量和待求和的维度。成功的将算法复杂度从 O ( ∣ S ∣ T ) O(|S|^T ) O(ST) 降到 O ( ∣ S ∣ m ) O(|S|^m) O(Sm),且m 为单个条件概率的最大变量数量, m < < T m << T m<<T

9 CRF Learning Problem

在这个问题中,问题具体就是用极大似然估计来求CRF 模型的参数,
θ ^ = arg ⁡ max ⁡ θ ∏ i = 1 N P ( y ( i ) ∣ x ( i ) ) \hat{\theta}=\arg \max _{\theta} \prod_{i=1}^{N} P\left(y^{(i)} | x^{(i)}\right) θ^=argθmaxi=1NP(y(i)x(i))
N N N 为训练样本的数量。而 θ \theta θ 实际上包含两个部分,即为 λ , η , \lambda, \eta, λ,η, 所以,目标函数为:
λ ^ , η ^ = arg ⁡ max ⁡ λ , η ∏ i = 1 N P ( y ( i ) ∣ x ( i ) ) \hat{\lambda}, \hat{\eta}=\arg \max _{\lambda, \eta} \prod_{i=1}^{N} P\left(y^{(i)} | x^{(i)}\right) λ^,η^=argλ,ηmaxi=1NP(y(i)x(i))
而我们,在之前求过了,
P ( Y = y ∣ X = x ) = 1 Z ( x , λ , η ) exp ⁡ { ∑ t = 1 T [ λ T f ( y t − 1 , y t , x ) + η T g ( y t , x ) ) ] }       ( 36 ) \left.P(Y=y | X=x)=\frac{1}{Z(x, \lambda, \eta)} \exp \left\{\sum_{t=1}^{T}\left[\lambda^{T} f\left(y_{t-1}, y_{t}, x\right)+\eta^{T} g\left(y_{t}, x\right)\right)\right]\right\} \ \ \ \ \ (36) P(Y=yX=x)=Z(x,λ,η)1exp{t=1T[λTf(yt1,yt,x)+ηTg(yt,x))]}     (36)
所以:
λ ^ , η ^ = arg ⁡ max ⁡ λ , η ∏ i = 1 N P ( y ( i ) ∣ x ( i ) ) = arg ⁡ max ⁡ λ , η ∑ i = 1 N log ⁡ P ( y ( i ) ∣ x ( i ) ) = arg ⁡ max ⁡ λ , η ∑ i = 1 N { − log ⁡ Z ( x ( i ) , λ , η ) + ∑ t = 1 T [ λ T f ( y t − 1 ( i ) , y t ( i ) , x ) + η T g ( y t ( i ) , x ( i ) ) ) ] } = arg ⁡ max ⁡ λ , η L ( λ , η , x ( i ) ) \begin{aligned} \hat{\lambda}, \hat{\eta} &=\arg \max _{\lambda, \eta} \prod_{i=1}^{N} P\left(y^{(i)} | x^{(i)}\right) \\ &=\arg \max _{\lambda, \eta} \sum_{i=1}^{N} \log P\left(y^{(i)} | x^{(i)}\right) \\ &\left.=\arg \max _{\lambda, \eta} \sum_{i=1}^{N}\left\{-\log Z\left(x^{(i)}, \lambda, \eta\right)+\sum_{t=1}^{T}\left[\lambda^{T} f\left(y_{t-1}^{(i)}, y_{t}^{(i)}, x\right)+\eta^{T} g\left(y_{t}^{(i)}, x^{(i)}\right)\right)\right]\right\} \\ &=\arg \max _{\lambda, \eta} L\left(\lambda, \eta, x^{(i)}\right) \end{aligned} λ^,η^=argλ,ηmaxi=1NP(y(i)x(i))=argλ,ηmaxi=1NlogP(y(i)x(i))=argλ,ηmaxi=1N{logZ(x(i),λ,η)+t=1T[λTf(yt1(i),yt(i),x)+ηTg(yt(i),x(i)))]}=argλ,ηmaxL(λ,η,x(i))

9.1 梯度上升法求解极大似然解

∇ λ L = ∑ i = 1 N { ∑ t = 1 T f ( y t − 1 ( i ) , y t ( i ) , x ( i ) ) − ∇ λ log ⁡ Z ( x ( i ) , λ , η ) } \nabla_{\lambda} L=\sum_{i=1}^{N}\left\{\sum_{t=1}^{T} f\left(y_{t-1}^{(i)}, y_{t}^{(i)}, x^{(i)}\right)-\nabla_{\lambda} \log Z\left(x^{(i)}, \lambda, \eta\right)\right\} λL=i=1N{t=1Tf(yt1(i),yt(i),x(i))λlogZ(x(i),λ,η)}
现在问题就是 ∇ λ log ⁡ Z ( x ( i ) , λ , η ) \nabla_{\lambda} \log Z\left(x^{(i)}, \lambda, \eta\right) λlogZ(x(i),λ,η) 怎么来求? 注意观察公式 ( 36 ) , P ( Y = y ∣ X = x ) (36), P(Y=y | X=x) (36),P(Y=yX=x) 实际上是一个指数族分布。而 Z ( x ( i ) , λ , η ) Z\left(x^{(i)}, \lambda, \eta\right) Z(x(i),λ,η) 就是 log ⁡ \log log partition function。我们在指数族分布的第三部分曾经推导出, log ⁡ \log log partition function 的导数为充分统计量的均值。所以, ∇ λ log ⁡ Z ( x ( i ) , λ , η ) \nabla_{\lambda} \log Z\left(x^{(i)}, \lambda, \eta\right) λlogZ(x(i),λ,η) 我们可以直接写出来的。
E [ ∑ i = 1 T f ( y t − 1 , y t , x ( i ) ) ] \mathbb{E}\left[\sum_{i=1}^{T} f\left(y_{t-1}, y_{t}, x^{(i)}\right)\right] E[i=1Tf(yt1,yt,x(i))]
注意这里的 y y y 是自变量而不是样本,所以:
E [ ∑ i = 1 T f ( y t − 1 , y t , x ( i ) ) ] = ∑ y P ( y ∣ x ( i ) ) ⋅ ∑ i = 1 T f ( y t − 1 , y t , x ( i ) ) = ∑ i = 1 T ( ∑ y P ( y ∣ x ( i ) ) ⋅ f ( y t − 1 , y t , x ( i ) ) ) \begin{aligned} \mathbb{E}\left[\sum_{i=1}^{T} f\left(y_{t-1}, y_{t}, x^{(i)}\right)\right] &=\sum_{y} P\left(y | x^{(i)}\right) \cdot \sum_{i=1}^{T} f\left(y_{t-1}, y_{t}, x^{(i)}\right) \\ &=\sum_{i=1}^{T}\left(\sum_{y} P\left(y | x^{(i)}\right) \cdot f\left(y_{t-1}, y_{t}, x^{(i)}\right)\right) \end{aligned} E[i=1Tf(yt1,yt,x(i))]=yP(yx(i))i=1Tf(yt1,yt,x(i))=i=1T(yP(yx(i))f(yt1,yt,x(i)))
因为在 f ( y t − 1 , y t , x ( i ) ) f\left(y_{t-1}, y_{t}, x^{(i)}\right) f(yt1,yt,x(i)) 中,我们是知道具体的值的。所以,我们把其他维度的 y y y 都通过求和消掉。那
么:
∑ i = 1 T ( ∑ y P ( y ∣ x ( i ) ) ⋅ f ( y t − 1 , y t , x ( i ) ) ) = ∑ i = 1 T ( ∑ y 1 : t − 2 ∑ y i − 1 ∑ y t ∑ y i + 1 : T P ( y ∣ x ( i ) ) ⋅ f ( y t − 1 , y t , x ( i ) ) ) = ∑ i = 1 T ∑ y i − 1 ∑ y i ( ∑ y 1 : t − 2 ∑ y i + 1 : T P ( y ∣ x ( i ) ) ⋅ f ( y t − 1 , y t , x ( i ) ) ) = ∑ i = 1 T ∑ y i − 1 ∑ y i ( P ( y i − 1 , y t ∣ x ( i ) ) ⋅ f ( y t − 1 , y t , x ( i ) ) ) \begin{aligned} \sum_{i=1}^{T}\left(\sum_{y} P\left(y | x^{(i)}\right) \cdot f\left(y_{t-1}, y_{t}, x^{(i)}\right)\right) &=\sum_{i=1}^{T}\left(\sum_{y_{1: t-2}} \sum_{y_{i-1}} \sum_{y_{t}} \sum_{y_{i+1: T}} P\left(y | x^{(i)}\right) \cdot f\left(y_{t-1}, y_{t}, x^{(i)}\right)\right) \\ &=\sum_{i=1}^{T} \sum_{y_{i-1}} \sum_{y_{i}}\left(\sum_{y_{1: t-2}} \sum_{y_{i+1: T}} P\left(y | x^{(i)}\right) \cdot f\left(y_{t-1}, y_{t}, x^{(i)}\right)\right) \\ &=\sum_{i=1}^{T} \sum_{y_{i-1}} \sum_{y_{i}}\left(P\left(y_{i-1}, y_{t} | x^{(i)}\right) \cdot f\left(y_{t-1}, y_{t}, x^{(i)}\right)\right) \end{aligned} i=1T(yP(yx(i))f(yt1,yt,x(i)))=i=1T(y1:t2yi1ytyi+1:TP(yx(i))f(yt1,yt,x(i)))=i=1Tyi1yi(y1:t2yi+1:TP(yx(i))f(yt1,yt,x(i)))=i=1Tyi1yi(P(yi1,ytx(i))f(yt1,yt,x(i)))
那么,我们的下一步思路就是如何求解 P ( y t − 1 , y t ∣ x ( i ) ) P\left(y_{t-1}, y_{t} | x^{(i)}\right) P(yt1,ytx(i)) 。这实际上就是一个求解边缘概率的问题。这其 中 y t − 1 , y t y_{t-1}, y_{t} yt1,yt 都是已知的。
P ( y t − 1 = j , y t = i ∣ x ( i ) ) = ∑ y 1 : t − 2 t + 1. T ∏ t ′ = 1 T ϕ t ′ ( y t ′ − 1 , y t ′ , x ) = 1 Z Δ left  ⋅ ϕ ( y t , y t − 1 , x ) ⋅ Δ right  = 1 Z α t − 1 ( j ) ⋅ ϕ ( y t = i , y t − 1 = j , x ) ⋅ β t ( i ) = A ( y t − 1 , y t ) \begin{aligned} P\left(y_{t-1}=j, y_{t}=i | x^{(i)}\right) &=\sum_{y_{1: t-2} t+1 . T} \prod_{t^{\prime}=1}^{T} \phi_{t^{\prime}}\left(y_{t^{\prime}-1}, y_{t^{\prime}}, x\right) \\ &=\frac{1}{Z} \Delta_{\text {left }} \cdot \phi\left(y_{t}, y_{t-1}, x\right) \cdot \Delta_{\text {right }} \\ &=\frac{1}{Z} \alpha_{t-1}(j) \cdot \phi\left(y_{t}=i, y_{t-1}=j, x\right) \cdot \beta_{t}(i) \\ &=A\left(y_{t-1}, y_{t}\right) \end{aligned} P(yt1=j,yt=ix(i))=y1:t2t+1.Tt=1Tϕt(yt1,yt,x)=Z1Δleft ϕ(yt,yt1,x)Δright =Z1αt1(j)ϕ(yt=i,yt1=j,x)βt(i)=A(yt1,yt)
所以,最后我们得到的结论为:
∇ λ L = ∑ i = 1 N ∑ t = 1 T [ f ( y t − 1 ( i ) , y t ( i ) , x ( i ) ) − ∑ y t − 1 ∑ y i A ( y t − 1 , y t ) f ( y t − 1 , y t , x ) ] \nabla_{\lambda} L=\sum_{i=1}^{N} \sum_{t=1}^{T}\left[f\left(y_{t-1}^{(i)}, y_{t}^{(i)}, x^{(i)}\right)-\sum_{y_{t-1}} \sum_{y_{i}} A\left(y_{t-1}, y_{t}\right) f\left(y_{t-1}, y_{t}, x\right)\right] λL=i=1Nt=1T[f(yt1(i),yt(i),x(i))yt1yiA(yt1,yt)f(yt1,yt,x)]
其中, y t ( i ) y_{t}^{(i)} yt(i) 为样本, y t y_{t} yt 为自变量。那我们用类似的方法同样可以求解出:
∇ η L = ∑ i = 1 N ∑ t = 1 T [ f ( y t − 1 ( i ) , y t ( i ) , x ( i ) ) − ∑ y t − 1 ∑ y t A ( y t − 1 , y t ) g ( y t , x ) ] \nabla_{\eta} L=\sum_{i=1}^{N} \sum_{t=1}^{T}\left[f\left(y_{t-1}^{(i)}, y_{t}^{(i)}, x^{(i)}\right)-\sum_{y_{t-1}} \sum_{y_{t}} A\left(y_{t-1}, y_{t}\right) g\left(y_{t}, x\right)\right] ηL=i=1Nt=1T[f(yt1(i),yt(i),x(i))yt1ytA(yt1,yt)g(yt,x)]
最终,梯度上升算法将被我们总结为:
{ λ t + 1 = λ t + step ⁡ ⋅ ∇ λ L ( λ ( t ) , η ( t ) ) η t + 1 = η t + step ⁡ ⋅ ∇ η L ( λ ( t ) , η ( t ) ) \left\{\begin{array}{l} \lambda^{t+1}=\lambda^{t}+\operatorname{step} \cdot \nabla_{\lambda} L\left(\lambda^{(t)}, \eta^{(t)}\right) \\ \eta^{t+1}=\eta^{t}+\operatorname{step} \cdot \nabla_{\eta} L\left(\lambda^{(t)}, \eta^{(t)}\right) \end{array}\right. {λt+1=λt+stepλL(λ(t),η(t))ηt+1=ηt+stepηL(λ(t),η(t))
实际上,这只是一种理论上可行的求解方法。实际求解的过程中,这样做收敛速度太慢了,这里只是给出一种理论的解,还有很多类似的方法,有兴趣的同学可以深入研究。

9.2 MAP Inference

这个问题,仔细观察就知道和HMM 中的Decoding 问题是一样的。HMM 和CRF 没有任何区别。我们想要在已知观测序列的情况下,求隐变量序列的最大的可能状态。实际上就是使用动态规划算法,一步步求得最大的序列,也就是Viterbi 算法,在Hidden Markov Model 的第四节,有详细的描述,这里就不多说。

9.3 小结

这一节中,我们介绍了用极大似然估计算法来求CRF 模型的参数。实际上计算过程都还挺普通的。有一个难点是利用指数族函数log partition function 的导数为充分统计量的均值这个结论来进行求解。实际上这一步明白之后,还是比较简单的。而其中也遇到了求边缘概率的方法,我们用到了之前描述的本章第8 节求Marginal Probability 的方法。MAP Inference 和HMM 中的Decoding 问题是一样的,使用Viterbi 算法求解。

10 Conclusion

本章的思路实际是很流畅的,首先介绍了整个机器学习体系结构。然后,引出了概率图模型在其中的地位。从最简单的概率图模型,Naive Bayes 算法,一步步的改进缺点到HMM,到MEMM,最后演化成了CRF。我个人感觉这个过程是非常重要的,很多教科书一上来就摆了一推的概率和定义,我等凡人真的头疼。非常感谢B 站白板推导系列的up 主。而之后就,定义了CRF 的模型结构,定义完了之后就是如何使用数据来求解这个CRF 模型的参数,求解出来之后就是如何用这个模型来进行inference,整个过程的思维是非常流畅和附有逻辑性的。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值