文章目录
1. 背景介绍
1.1 简述
条件随机场的英文简称为(conditional-random-field),它是一个无向图模型,本文主要讲解的条件随机场历史进行研究和分析,主要按照如下顺序讲解
- 条件随机场的背景介绍
- HMM VS MEMM
- MEMM VS CRF
- CRF 概率密度函数的参数形式
- 概率密度函数的向量形式
- CRF 模型要解决的问题
- 边缘概率密度计算 marginal-probability-calculate
- CRF 参数学习问题
条件随机场CRF在图像处理和标注问题中表现突出,模型中结合了隐马尔可夫模型HMM和最大熵原理等相关知识,所以为了后续分析了顺畅性,需要提前了解相关知识。
1.2 思维导图
在机器学习过程中,我们遇到的很多问题基本都是围绕分类问题进行展开的,我们可以根据输出的类型是二分类0,1问题的为硬分类问题,对于输出的类型是多分类问题中预测输出是属于某一类的概率问题称为软分类问题。
1.3硬分类
硬分类主要是通过输入特征来表示,输出的结果直接告诉你这个样本到底属于哪一个类。常见的硬分类包含如下
1.3.1 SVM 支持向量机
SVM的全称叫"Support-Vector-Machine",中文名“支持向量机”,支持向量机就是通过几何上的间隔进行分类的,数学模型如下:详见支持向量机
min 1 2 W T W (1) \mathop {\min} \frac{1}{2}W^TW \tag 1 min21WTW(1)
s . t : y i ( W T X i + b ) ≥ 1 , i = 1 , 2 , . . . , N (2) s.t: y_i(W^TX_i+b)\geq 1,i=1,2,...,N\tag 2 s.t:yi(WTXi+b)≥1,i=1,2,...,N(2)
1.3.2 PLA 支持向量机
多层感知机的主要思想是运用了误差驱动的思想来确定的。模型的数学如下:
f
(
W
)
=
s
i
g
n
(
W
T
X
)
(3)
f(W)=sign(W^TX)\tag 3
f(W)=sign(WTX)(3)
1.3.3 LDA 线性判别分析
线性判别分析(linear-discriminate-analysis)的主要思想是保证数据的类间大,类内小的特性,详见线性判别分析
1.4 软分类
什么是软分类呢?其实软分类具体来说就是对于多个具体的类别来说,我们用概率的形式进行对样本进行分类,输出的是每一种可能性的概率。所以软分类最终求得的是一个概率分布,我们可以通过设定一个阀值来具体判断这个样本到底属于哪一个类别。对于软分类来说我们可以分为两类,第一类为概率判别模型;第二类为概率生成模型
1.4.1 概率判别模型
我们知道概率判别模型有很多种,具体来说是对P(Y|X)进行建模,只需要判断Y的结果,中间省略了很多信息,对于某些特定的应用来说比较方便,不需要进行复杂的计算。常见的概率判别模型中比较基本的算法为逻辑回归(Logistics-Regression),我们在指数族分布中学过最大熵模型中得到一个结论,即:在给定已知数据和事实的情况下,具有最大熵原理的模型分布为指数族分布,详见指数族分布,特例如下,对于我们给定均值和方差的情况下,满足最大熵原理的模型分布为高斯分布。
1.4.2 概率生成模型
概率生成模型主要是对P(X,Y)进行建模,我们求解的是联合概率分布P(X,Y),当我们得到一组新的数据时候,我们可以通过贝叶斯公式近似的得到P(Y|X)~P(X,Y),概率生成模型主要是分析结果是如何得到的,所具备的信息十分的全,但缺点是需要大量的数据样本和大量的计算。
-
Naive-Bayes 算法:朴素贝叶斯算法就是一个概率生成模型,此模型满足贝叶斯假设:
P ( X ∣ Y = 1 / 0 ) = ∏ i = 1 p P ( x i ∣ Y = 1 / 0 ) (4) P(X|Y=1/0)=\prod_{i=1}^{p} P(x_i|Y=1/0)\tag{4} P(X∣Y=1/0)=i=1∏pP(xi∣Y=1/0)(4) -
注:在给定 Y 的条件下,样本 X i X_i Xi与 X j X_j Xj之间相互独立;概率图模型如下:
-
X i ⊥ X j ∣ Y ( i ≠ j ) ; 即 : 在 给 定 Y 的 条 件 下 , X i 独 立 于 X j X_i ⊥X_j| Y(i≠j);即:在给定 Y 的条件下,X_i独立于 X_j Xi⊥Xj∣Y(i=j);即:在给定Y的条件下,Xi独立于Xj
P ( y ∣ x ) = p ( x ∣ y ) ⋅ p ( y ) p ( x ) = p ( x , y ) p ( x ) ∝ p ( x , y ) ; 注 : p ( x ) 为 已 知 ; (5) P(y|x)=\frac{p(x|y)·p(y)}{p(x)}=\frac{p(x,y)}{p(x)} \propto p(x,y);注:p(x)为已知;\tag{5} P(y∣x)=p(x)p(x∣y)⋅p(y)=p(x)p(x,y)∝p(x,y);注:p(x)为已知;(5)
朴素贝叶斯的假设实在是太强了,假设每个样本之间相互独立,这个假设虽然极大的方便了计算,但在现实基本无法实现,所以这个假设不合理。当我们的结果有 y ∈ { 0 , 1 } y \in \{0,1\} y∈{0,1}变成多分类序列后,就引出了隐马尔可夫模型HMM. -
高斯混合模型
高斯混合模型概率图如下所示:
-
对于高斯混合模型来说,隐变量 Z 属于离散型随机变量,Z决定了我们是选择哪一个高斯分布,所以我们可以得出在给定随机变量 Z 的情况下 ,X|Z 服从高斯分布,即:
P ( X ∣ Z ) ∼ N ( μ , Σ ) (6) P(X|Z)\sim N(\mu,\Sigma)\tag{6} P(X∣Z)∼N(μ,Σ)(6)
H M M = 高 斯 混 合 模 型 + 时 间 (7) HMM = 高斯混合模型+时间\tag{7} HMM=高斯混合模型+时间(7) -
HMM隐马尔可夫模型(hidden-markov-model)概率图模型如下:
-
隐马尔可夫模型
隐马尔可夫模型要求的是隐变量Z是离散型分布,对于观测变量来说可以随意,详见隐马尔可夫模型,
概率图如下:
HMM中有两个重要的假设:
- 齐次马尔科夫假设[无后效性]
P ( i t + 1 ∣ i t , i t + 1 , . . . , i 1 , o t , o t − 1 , . . . , o 1 ) = P ( i t + 1 ∣ i t ) (8) P(i_{t+1}|i_t,i_{t+1},...,i_1,o_t,o_{t-1},...,o_1)=P(i_{t+1}|i_t)\tag 8 P(it+1∣it,it+1,...,i1,ot,ot−1,...,o1)=P(it+1∣it)(8)
注:在给定当前时刻的时候,未来只依赖于现在,与过去无关。即英雄不问出处,未来只取决于现在 - 观测独立性假设
P ( o t ∣ i t , i t − 1 . . . , o t − 1 , . . . , o 1 ) = P ( o t ∣ i t ) (9) P(o_t|i_t,i_{t-1}...,o_{t-1},...,o_1)=P(o_t|i_t)\tag 9 P(ot∣it,it−1...,ot−1,...,o1)=P(ot∣it)(9)
但是在现实过程中,我们希望的是模型中尽可能的减少假设的存在,研究人员希望打破HMM中的观测独立性假设来更好的理解模型,从而得出了MEMM模型
1.5 MEMM (最大熵马尔可夫模型)
最大熵马尔可夫模型是最大熵模型和马尔可夫模型的结合,MEMM严格意义上来说是一个概率判别模型,是对P(Y|X)进行建模,MEMM全称"maximum-entropy-markov-model",它打破了HMM模型中的观测独立性假设;
-
MEMM 图结构
-
分析:
由上图可以看出,MEMM的输入可以分为两个部分,一部分为global-input,另外一部分为local-input;这样做十分的合理,因为一个变量Y不仅仅跟自身的样本 X i X_i Xi有关,还与全局有关,所以将输入分成两个部分是十分合理的,上图是为了跟HMM模型进行区分才写成两个部分的,其实只需要输入写成 X 1 : T X_{1:T} X1:T即可,因为 X 1 : T X_{1:T} X1:T中也包含了 X i X_i Xi; -
优点:
对于 MEMM模型来说,它是一个概率判别式模型,也就是说对P(Y|X)进行了建模,那么就避免了求解P(X,Y)再通过贝叶斯公式求解P(Y|X),这样大大简化了计算
MEMM模型丢弃了观测独立性假设,使得模型在计算的时候考虑了很多其他样本的影响,这样更加贴近现实,所以相对于HMM模型来说,MEMM模型更加的合理。它不仅考虑了对它有影响的样本,还考虑到了全局样本的影响。 -
缺点:
对于MEMM模型来说,有一个缺点就是引起了标注偏移的问题,造成这个现象的具体原因是因为我们需要进行局部归一化,从而导致label-bias-problem; -
原因:
如上图绿框所示,我们需要求解概率 P ( y 2 ∣ y 1 , x 1 ) P(y_2|y_1,x_1) P(y2∣y1,x1)时,需要对其进行归一化处理得如下:
ϕ ( y 1 , x 1 , y 2 ) ∑ ϕ ( y 1 , . . . . ) (10) \frac{\phi(y_1,x_1,y_2)}{\sum \phi(y_1,....)}\tag {10} ∑ϕ(y1,....)ϕ(y1,x1,y2)(10)
由于进行了归一化处理,导致此时的能量波动,从而对后续的概率产生影响,为了解决上述标记偏移问题,我们提出了把MEMM算法模型的有向图改成无向图来解决局部归一化问题,因为无向图天然的是全局归一化,所以我们现在就引出了一个新的模型,它是一个无向图的结构,也是我们后续为了解决此类问题的新的模型,即条件随机场模型(Conditional-Random-Field)。
2.HMM VS MEMM
2.1 HMM 隐马尔可夫模型
HMM全称为"hidden-markov-model",具体详见隐马尔可夫模型HMM,HMM模型是由两部分组成的,是高斯混合模型加上时间序列而成。
- HMM模型结构图如下:
我们定义HMM模型的初始参数如下:
λ = ( π , A , B ) (11) \lambda=(\pi,A,B)\tag{11} λ=(π,A,B)(11) - π \pi π:初始的概率分布 init-prob-dist
- 状态转移矩阵 A = [ a i j ] , a i j = P ( y t + 1 = q j ∣ y t = q i ) A=[a_{ij}],a_{ij}=P(y_{t+1}=q_j|y_t=q_i) A=[aij],aij=P(yt+1=qj∣yt=qi)
- 发射矩阵 B = [ b j ( k ) ] = P ( x t = v k ∣ y t = q j ) B=[b_j(k)]=P(x_t=v_k|y_t=q_j) B=[bj(k)]=P(xt=vk∣yt=qj)
HMM的两个假设:
- 齐次马尔可夫假设
- 观测独立性假设
HMM的建模对象:
P
(
X
,
Y
∣
λ
)
=
∏
i
=
1
T
p
(
x
t
,
y
t
∣
λ
)
=
∏
i
=
1
T
p
(
y
t
∣
y
t
−
1
,
λ
)
⋅
p
(
x
t
∣
y
t
,
λ
)
(12)
P(X,Y|\lambda)=\prod_{i=1}^{T}p(x_t,y_t|\lambda)=\prod_{i=1}^{T}p(y_t|y_{t-1},\lambda)·p(x_t|y_t,\lambda)\tag{12}
P(X,Y∣λ)=i=1∏Tp(xt,yt∣λ)=i=1∏Tp(yt∣yt−1,λ)⋅p(xt∣yt,λ)(12)
为了解决上述公式12不好求解的问题,我们需要采用前向算法,或者后向算法之类的,详见HMM这章即可。其实,我们用朴素贝叶斯的时候也是有一个假设,即在给定y的条件下,样本X之间相互独立,这个假设实在是太强了,对比于观测独立假设,也是为了后续计算的简化来形成的一个假设,但是我们后续发现,为了计算的简单,我们反而失去了整个数据的关系完整性。
2.2 MEMM 最大熵马尔可夫模型
- MEMM模型概率图如下所示:
由上图我们看出来两个区别:
- X与Y 的方向变换了,在MEMM模型中是X指向Y,即 X -> Y
- 输入由两个方面组成,一部分是全局输入,另一部分是局部输入
- 数学建模如下:
P ( Y ∣ X , λ ) = ∏ i = 1 P p ( y t ∣ y t − 1 , x 1 : T , λ ) (13) P(Y|X,\lambda)=\prod_{i=1}^{P}p(y_t|y_{t-1},x_{1:T},\lambda)\tag{13} P(Y∣X,λ)=i=1∏Pp(yt∣yt−1,x1:T,λ)(13) - 注: MEMM 打破了观测独立性假设,使得其模型更加的合理。相对于HMM模型为概率生成式模型来说,MEMM的概率判别式模型更加的合理,因为对于这种链式结构来说,我们更关心的是在给定模型的观测值X情况下的标注问题.比如在词性标注过程中,我们更关心的是一句话的标注问题,而不是关心所有的概率值,我们没必要对知道联合概率,只需要知道条件概率即可,故MEMM模型在某些场景里面更加的合理。
3. MEMM VS CRF
3.1 标注偏移定性问题
现在我们来分析下MEMM的缺点,即 造成标注偏差问题(label-bias-problem),这个问题就是直接导致MEMM不流行的原因。关于这个问题可以参考下 John-Lafferty 的论文里面有详细的描述。
我们可以把上图里面圈出来的部分看作为一个逻辑回归(Logistics-Regression),因为对于MEMM模型来说,我们用的是最大熵模型,而逻辑回归也是最大熵模型中的一个特例,所以我们可以将由
y
t
−
1
,
y
t
,
x
t
y_{t-1},y_t,x_t
yt−1,yt,xt组成的局部 mass-score 看作成一个逻辑回归。
- mass-score: 我们把关于 y t − 1 , y t , x t y_{t-1},y_t,x_t yt−1,yt,xt组成的函数当作mass-score,由数学建模我们看出,由这三个变量组成的小单体实际上是一个概率分布,而概率分布就必须归一化处理。而就是因为归一化处理,导致后续的波动;
- 举例:我们把由 y 1 , y 2 , . . . , y T y_1,y_2,...,y_T y1,y2,...,yT组成的链条当作成一个绳子,如果我们在 t 时刻抖动一下,那么就很自然的知道,在绳子粗细一样时,距离 t 时刻越近的绳子抖动幅度越大,这样在 t 时刻产生的能量就发散出去了。但是当我们在后续某一个 i 时刻进行了归一化处理,那么我们就相当于把第 i 时刻点的绳子的粗细改变了,根据自身第 i 时刻的振幅变大或者变小,这样就改变了原来能量传递的连贯性,所以就造成了标注偏移问题
3.2 John-Lafferty 例子
在上图中,我们定义将0-1-2-3-4-5 看作成tag标记,将数据r,i,b 或 r,o,b看作观测变量
- 当 t = 1 时刻时,我们观测到 r 的概率都为0.5,从第 0 标记到 1,或则 4 时的概率一样
- 当 t = 2 时刻时,我们从 1 - > 2 时概率为1 ,我们根本没有其他路径可选,此时就出现了即使系统给了我们输入i 时,我们也不需要关心输入到底是什么,就直接到达了2,同理 4 -> 5 一样;
P ( 2 ∣ 1 , i ) = 1 = P ( 2 ∣ 1 ) (14) P(2|1,i)= 1 = P(2|1)\tag{14} P(2∣1,i)=1=P(2∣1)(14)
P ( 5 ∣ 4 , i ) = 1 = P ( 5 ∣ 4 ) (15) P(5|4,i)= 1 = P(5|4)\tag{15} P(5∣4,i)=1=P(5∣4)(15)
重点:这个时候就发现模型根本没有考虑过观测变量 i 或 o - 举例:在我们做词性分析的过程中,我们发现,当我们需要对下面一句话进行标注时候:
比如我们先分析出,"小明"为名词,"爱"为动词,我们只有在看到"中国"后才会分析出"中国"为名词,但是用MEMM模型时候,它通过训练学习,通过历史数据直接不用看输入 “中国”,直接推断 "中国"为名词,这样显然是不合理的。局部归一化就是不考虑观测量,直接给出"中国"的词性,这样后续肯定会出问题的。 - 我们重新来分析John-Lafferty 例子:
假设我们的训练样本中有四个样本,即 3个rob ,1个rib,那么我们在训练的过程中就得到如下公式:
P
(
1
∣
0
,
r
)
=
0.25
;
P
(
4
∣
0
,
r
)
=
0.75
;
(16)
P(1|0,r)=0.25;P(4|0,r)=0.75;\tag{16}
P(1∣0,r)=0.25;P(4∣0,r)=0.75;(16)
我们通过viterbi算法进行解析,可以通过观测数据(3个rob ,1个rib)求得,当给定我们数据"rib"时,我们的最大概率情况下的序列:
y
^
=
arg
max
y
1
,
y
2
,
y
3
{
y
1
,
y
2
,
y
3
∣
r
,
i
,
b
}
=
m
a
x
{
0.75
∗
1
∗
1
,
0.25
∗
1
∗
1
}
(17)
\hat{y}=\mathop{\arg\max}\limits_{y_1,y_2,y_3}\{y_1,y_2,y_3|r,i,b\}=max\{0.75*1*1,0.25*1*1\}\tag{17}
y^=y1,y2,y3argmax{y1,y2,y3∣r,i,b}=max{0.75∗1∗1,0.25∗1∗1}(17)
最后发现在我们给定 "rib"时,我们解析出来的结果居然是 0-4-5-3,居然是rob,这结果跟我们预想的不一致,所以发现MEMM在局部归一化处理的时候根本没有在某一时刻上关注到输入的观测变量。
3.3 总结
- 小结<一>
在上一个例子中,我们发现,当我们把一个路径(1->2)之间的概率变成了1,也就是熵为0时,那么在局部归一化处理的时候,系统是不再关心输入的观测值的,从而引起了标注偏移问题;我们希望一个较好的模型能够满足对于已知的问题,我们的预测越来越好,对于未知的问题最大可能性的保持泛化处理,而不是直接去忽略它,就像自动驾驶中,如果我们在自动驾驶中当前的场景是在训练过程中遇见过,那么我们就可以做出最准确的判断,但是总有没有见过的场景,那么我们就需要进行泛化处理,一般性处理,而不是直接忽略场景; - 小结<二>
MEMM模型的最大的问题是局部归一化处理导致对于熵比较低的场景会忽略观测变量而直接得到结果,就是对于不确定的部分,不能更好的泛化处理;为了解决这个问题,我们希望模型中不要出现局部归一化处理,那么我们就想到了全局归一化处理的结果,我们将MEMM模型中的有向图模型变成无向图模型,那么就打破了HMM模型中的齐次马尔可夫假设,这样就让模型更加的通用,从而引出了条件随机场模型CRF,使得原始数据得到更好的利用
4.概率密度函数的参数形式
4.1 背景介绍
前面通过讲解来引出条件随机场的合理性,也从理论上概述相关知识,具体思路如下:
H
M
M
−
>
M
E
M
M
−
>
C
R
F
(
合
理
性
)
(18)
HMM ->MEMM ->CRF(合理性)\tag{18}
HMM−>MEMM−>CRF(合理性)(18)
条件随机场由如下两部分组成:
- 条件: 判别式模型;我们关心的是条件概率 P ( Y ∣ X ) P(Y|X) P(Y∣X)
- 随机场 :无向图图模型或马尔可夫随机场
条件随机场的概率图模型如下:
现在我们主要的目的是定量了描述CRF的概率密度函数是什么样子。因为CRF是一个无向图模型,所以我们不能用有向图模型的方式去进行因子分解。我们需要通过最大团的思想进行分类解析;我们定义团为一个图中所有的节点都相互相连。那么无向图公式如下:
P
(
Y
∣
X
)
=
1
Z
∏
i
=
1
K
ϕ
i
(
X
c
i
)
=
1
Z
∏
i
=
1
K
e
x
p
{
−
E
i
(
X
c
i
)
}
(19)
P(Y|X)=\frac{1}{Z}\prod_{i=1}^{K}\phi_i(X_{ci})=\frac{1}{Z}\prod_{i=1}^{K}exp\{-E_i(X_{ci})\}\tag{19}
P(Y∣X)=Z1i=1∏Kϕi(Xci)=Z1i=1∏Kexp{−Ei(Xci)}(19)
- Z:归一化因子
- K:表示无向图中有K个最大团
- i:表示第 i 个最大团
- ϕ i ( X c i ) \phi_i(X_{ci}) ϕi(Xci):表示势函数,展开为: ϕ i ( X c i ) = e x p { − E i ( X c i ) } \phi_i(X_{ci})=exp\{-E_i(X_{ci})\} ϕi(Xci)=exp{−Ei(Xci)},要求势函数大于0
我们令:
−
E
i
(
X
c
i
)
=
F
i
(
X
c
i
)
-E_i(X_{ci})=F_i(X_{ci})
−Ei(Xci)=Fi(Xci),化简后可得如下:
P
(
Y
∣
X
)
=
1
Z
∏
i
=
1
K
e
x
p
{
F
i
(
X
c
i
)
}
(20)
P(Y|X)=\frac{1}{Z}\prod_{i=1}^{K}exp\{F_i(X_{ci})\}\tag{20}
P(Y∣X)=Z1i=1∏Kexp{Fi(Xci)}(20)
4.2 CRF的函数表达
在这里,我们如果不加说明,就表示CRF条件随机场里面的链式无向图。且CRF链式结构中每一个相邻的节点组成一个团(节点 i ,与 节点 i+1);举例,假设链式结构中有4个节点,那么最大团的个数为3;如下图所示:
那么CRF无向图可以表示如下:
P
(
Y
∣
X
)
=
1
Z
e
x
p
{
∑
t
=
1
T
F
t
(
y
t
−
1
,
y
t
,
x
1
:
T
)
}
(21)
P(Y|X)=\frac{1}{Z}exp\{\sum_{t=1}^{T}F_t(y_{t-1},y_t,x_{1:T})\}\tag{21}
P(Y∣X)=Z1exp{t=1∑TFt(yt−1,yt,x1:T)}(21)
- 为了数学表达式的完整,我们假设链节点从 y 0 y_0 y0开始。
现在我们最困难的是分解
F
t
(
y
t
−
1
,
y
t
,
x
1
:
T
)
F_t(y_{t-1},y_t,x_{1:T})
Ft(yt−1,yt,x1:T)函数,我们假设函数可以分解成三部分,如下所示:
F
t
(
y
t
−
1
,
y
t
,
x
1
:
T
)
=
△
y
t
−
1
,
x
1
:
T
+
△
y
t
,
x
1
:
T
⏟
s
t
a
t
e
−
f
u
n
c
t
i
o
n
+
△
y
t
−
1
,
y
t
,
x
1
:
T
⏟
t
r
a
n
s
f
o
r
m
e
r
−
f
u
n
c
t
i
o
n
(22)
F_t(y_{t-1},y_t,x_{1:T})=\underbrace{\triangle_{y_{t-1},x_{1:T}}+\triangle_{y_t,x_{1:T}}}_{state-function}\quad+\underbrace{\triangle_{y_{t-1},y_{t},x_{1:T}}}_{transformer-function}\tag{22}
Ft(yt−1,yt,x1:T)=state−function
△yt−1,x1:T+△yt,x1:T+transformer−function
△yt−1,yt,x1:T(22)
- 注:因为去学习的时候是整体进行归一化处理的,所以我们可以将
△
y
t
−
1
,
x
1
:
T
,
△
y
t
,
x
1
:
T
\triangle_{y_{t-1},x_{1:T}},\triangle_{y_t,x_{1:T}}
△yt−1,x1:T,△yt,x1:T进行合并为一个,因为两个等效的,只是 t 时刻 和 t-1 时刻的差别,所以上式可以表示如下:
F t ( y t − 1 , y t , x 1 : T ) = △ y t , x 1 : T + △ y t − 1 , y t , x 1 : T (23) F_t(y_{t-1},y_t,x_{1:T})=\triangle_{y_t,x_{1:T}}+\triangle_{y_{t-1},y_{t},x_{1:T}}\tag{23} Ft(yt−1,yt,x1:T)=△yt,x1:T+△yt−1,yt,x1:T(23)
接下来我们来分解上面两个式子:
△
y
t
−
1
,
y
t
,
x
1
:
T
=
∑
k
=
1
K
λ
k
⋅
f
k
(
y
t
−
1
,
y
t
,
x
1
:
T
)
(24)
\triangle_{y_{t-1},y_{t},x_{1:T}}=\sum_{k=1}^{K}\lambda_k·f_k(y_{t-1},y_{t},x_{1:T})\tag{24}
△yt−1,yt,x1:T=k=1∑Kλk⋅fk(yt−1,yt,x1:T)(24)
△
y
t
,
x
1
:
T
=
∑
l
=
1
L
η
l
⋅
g
l
(
y
t
,
x
1
:
T
)
(25)
\triangle_{y_{t},x_{1:T}}=\sum_{l=1}^{L}\eta_l·g_l(y_{t},x_{1:T})\tag{25}
△yt,x1:T=l=1∑Lηl⋅gl(yt,x1:T)(25)
- λ k , η l : \lambda_k,\eta_l: λk,ηl:我们要学习的参数
- f k , g l : f_k,g_l: fk,gl: 特征函数,这里也叫指示函数;
举例在词性标注中特征函数表示如下:
f
k
(
y
t
−
1
=
名
词
,
y
t
=
动
词
,
x
1
:
T
)
=
1
(26)
f_k(y_{t-1}=名词,y_t=动词,x_{1:T})=1\tag{26}
fk(yt−1=名词,yt=动词,x1:T)=1(26)
f
k
(
y
t
−
1
=
名
词
,
y
t
=
助
词
,
x
1
:
T
)
=
1
(27)
f_k(y_{t-1}=名词,y_t=助词,x_{1:T})=1\tag{27}
fk(yt−1=名词,yt=助词,x1:T)=1(27)
那么CRF的概率密度函数可以表示如下:
P
(
Y
∣
X
)
=
1
Z
e
x
p
{
∑
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
)
)
}
(28)
P(Y|X)=\frac{1}{Z}exp\{\sum_{t=1}^{T}(\sum_{k=1}^{K}\lambda_k·f_k(y_{t-1},y_{t},x_{1:T})+\sum_{l=1}^{L}\eta_l·g_l(y_{t},x_{1:T}))\}\tag{28}
P(Y∣X)=Z1exp{t=1∑T(k=1∑Kλk⋅fk(yt−1,yt,x1:T)+l=1∑Lηl⋅gl(yt,x1:T))}(28)
以上为条件随机场的概率密度函数,这个结构其实本质上是我们构造出来的,具体为什么要做成这个结构,具体还是不是很清楚,但我们知道,如果用这种结构来表示条件随机场,那么就更有意义,就向神经网络一样,对于输入输出来说,里面有一个黑盒子,至于黑盒子里面填写什么结构,比如RNN,CNN之类的,这个可以根据具体的场景进行选择,具体只要你选择的结构能够得出很好的效果即可。
4.3 小结
现在我们已经得到了关于条件随机场CRF相关的概率密度函数了,现在我们就需要根据数据学习出相关的参数即可得到对于特定场景的模型了。
5.概率密度函数的向量表示
我们已经知道了概率密度函数的表达式如下:
P
(
Y
∣
X
)
=
1
Z
e
x
p
{
∑
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
)
)
}
(29)
P(Y|X)=\frac{1}{Z}exp\{\sum_{t=1}^{T}(\sum_{k=1}^{K}\lambda_k·f_k(y_{t-1},y_{t},x_{1:T})+\sum_{l=1}^{L}\eta_l·g_l(y_{t},x_{1:T}))\}\tag{29}
P(Y∣X)=Z1exp{t=1∑T(k=1∑Kλk⋅fk(yt−1,yt,x1:T)+l=1∑Lηl⋅gl(yt,x1:T))}(29)
- K,L:是给定的个数,相当于常数。
例如,对于词性标注来说,对于任意 t 时刻来说,
y
t
∈
S
y_t \in S
yt∈S,用 |S|表示集合的大小。
y
t
∈
{
动
词
,
名
词
,
副
词
,
助
词
,
.
.
.
}
(30)
y_t \in \{动词,名词,副词,助词,...\}\tag{30}
yt∈{动词,名词,副词,助词,...}(30)
如下图所示:可得 :
K
≤
∣
S
∣
2
K\leq |S|^2
K≤∣S∣2
我们将上述概率密度函数进行分析:
P
(
Y
=
y
∣
X
=
x
)
=
1
Z
(
x
,
λ
,
η
)
e
x
p
{
∑
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
)
)
}
(30)
P(Y=y|X=x)=\frac{1}{Z(x,\lambda,\eta)}exp\{\sum_{t=1}^{T}(\sum_{k=1}^{K}\lambda_k·f_k(y_{t-1},y_{t},x_{1:T})+\sum_{l=1}^{L}\eta_l·g_l(y_{t},x_{1:T}))\}\tag{30}
P(Y=y∣X=x)=Z(x,λ,η)1exp{t=1∑T(k=1∑Kλk⋅fk(yt−1,yt,x1:T)+l=1∑Lηl⋅gl(yt,x1:T))}(30)
- Z ( x , λ , η ) Z(x,\lambda,\eta) Z(x,λ,η):为归一化因子,跟Y无关
为了化简上述公式,我们定义如下变量:
λ
=
(
λ
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
)
;
(31)
\lambda=\begin{pmatrix} \lambda_1\\\lambda_2\\\vdots\\\lambda_k \end{pmatrix};\eta=\begin{pmatrix} \eta_1\\\eta_2\\\vdots\\\eta_l \end{pmatrix};f=\begin{pmatrix} f_1\\f_2\\\vdots\\f_k \end{pmatrix}=f(y_{t-1},y_t,x_{1:T});g=\begin{pmatrix} g_1\\g_2\\\vdots\\g_l \end{pmatrix}=g(y_t,x_{1:T});\tag{31}
λ=⎝⎜⎜⎜⎛λ1λ2⋮λk⎠⎟⎟⎟⎞;η=⎝⎜⎜⎜⎛η1η2⋮ηl⎠⎟⎟⎟⎞;f=⎝⎜⎜⎜⎛f1f2⋮fk⎠⎟⎟⎟⎞=f(yt−1,yt,x1:T);g=⎝⎜⎜⎜⎛g1g2⋮gl⎠⎟⎟⎟⎞=g(yt,x1:T);(31)
为了以后计算的求导,我们更希望函数以向量形式进行表示,则概率密度函数可化简如下:
P
(
Y
=
y
∣
X
=
x
)
=
1
Z
(
x
,
λ
,
η
)
e
x
p
{
∑
t
=
1
T
λ
T
⋅
f
(
y
t
−
1
,
y
t
,
x
1
:
T
)
+
∑
t
=
1
T
η
T
⋅
g
(
y
t
,
x
1
:
T
)
}
(32)
P(Y=y|X=x)=\frac{1}{Z(x,\lambda,\eta)}exp\{\sum_{t=1}^{T}\lambda^T·f(y_{t-1},y_{t},x_{1:T})+\sum_{t=1}^{T}\eta^T·g(y_{t},x_{1:T})\}\tag{32}
P(Y=y∣X=x)=Z(x,λ,η)1exp{t=1∑TλT⋅f(yt−1,yt,x1:T)+t=1∑TηT⋅g(yt,x1:T)}(32)
为了进一步进行化简,可以定义如下变量:
θ
=
(
λ
η
)
(
k
+
l
)
∗
1
;
H
(
y
t
−
1
,
y
t
,
x
1
:
T
)
=
(
∑
t
=
1
T
f
(
y
t
−
1
,
y
t
,
x
1
:
T
)
∑
t
=
1
T
g
(
y
t
,
x
1
:
T
)
)
(
k
+
l
)
∗
1
(33)
\theta=\begin{pmatrix}\lambda\\\\\eta \end{pmatrix}_{(k+l)*1};H(y_{t-1},y_t,x_{1:T})=\begin{pmatrix}\sum_{t=1}^{T}f(y_{t-1},y_{t},x_{1:T})\\\\\sum_{t=1}^{T}g(y_{t},x_{1:T}) \end{pmatrix}_{(k+l)*1}\tag{33}
θ=⎝⎛λη⎠⎞(k+l)∗1;H(yt−1,yt,x1:T)=⎝⎛∑t=1Tf(yt−1,yt,x1:T)∑t=1Tg(yt,x1:T)⎠⎞(k+l)∗1(33)
则上述公式可以化简如下:
P
(
Y
=
y
∣
X
=
x
)
=
1
Z
(
x
,
θ
)
e
x
p
{
θ
T
⋅
H
(
y
t
−
1
,
y
t
,
x
1
:
T
)
}
=
1
Z
(
x
,
θ
)
e
x
p
<
θ
,
H
>
(34)
P(Y=y|X=x)=\frac{1}{Z(x,\theta)}exp\{\theta^T·H(y_{t-1},y_t,x_{1:T})\}=\frac{1}{Z(x,\theta)}exp<\theta,H>\tag{34}
P(Y=y∣X=x)=Z(x,θ)1exp{θT⋅H(yt−1,yt,x1:T)}=Z(x,θ)1exp<θ,H>(34)
则最终的结果的矩阵表示完成。
6. 模型要解决的问题
一般概率图模型分为两大类,第一类是 Learning 问题,第二类是 Inference 问题.
6.1 Learning 问题
对于条件随机场来说,所谓的 learning 问题就是为了求解相关参数
θ
\theta
θ ,即,假设我们得到了训练数据data:
d
a
t
a
:
{
(
x
(
i
)
,
y
(
i
)
)
}
i
=
1
N
;
x
,
y
∈
R
p
(35)
data:\{(x^{(i)},y^{(i)})\}_{i=1}^N;x,y \in \mathop{R}^{p}\tag{35}
data:{(x(i),y(i))}i=1N;x,y∈Rp(35)
- N :表示 N 个样本;一个样本 y ( i ) = { y 1 , y 2 , . . . , y T } y^{(i)}=\{y_1,y_2,...,y_T\} y(i)={y1,y2,...,yT},在词性标注中,是一个句子为一个样本。
- x,y属于 P 维空间
举例:对于词性标注来说,我们有一句话:“我爱中国”,其中 “我”,“爱”,“中国”,这三个组成一个样本x,而对于y 就是指"动词",“名词”,“助词”,我们应该把所有的节点连起来作为一个样本,而不是单个节点当作一个样本。
即对于 CRF 来说,Learning 问题表示如下:
θ
^
=
arg
max
θ
∏
i
=
1
N
P
(
y
(
i
)
∣
x
(
i
)
)
(36)
\hat{\theta}=\mathop{\arg\max}\limits_{\theta}\prod_{i=1}^{N}P(y^{(i)}|x^{(i)})\tag{36}
θ^=θargmaxi=1∏NP(y(i)∣x(i))(36)
6.2 Marginal prob 问题
我们还是以词性标注为例说明边缘概率问题,比如我们有一句话"我爱我的祖国",其实求解
P
(
y
t
∣
X
)
P(y_t|X)
P(yt∣X),就相当于求解"爱"在这句"我爱我的祖国"中是动词的概率。
P
(
y
t
∣
X
)
=
P
(
"
爱
"
=
"
动
词
"
∣
"
我
爱
我
的
祖
国
"
)
(37)
P(y_t|X)=P("爱"="动词"|"我爱我的祖国")\tag{37}
P(yt∣X)=P("爱"="动词"∣"我爱我的祖国")(37)
6.3 Conditional prob 问题
条件概率指的是生成模型,而我们的条件随机场是判别式模型,所以在 CRF 里面求这个没什么意义。
6.4 MAP Inferece 问题
在条件随机场 CRF 问题中,MAP Inferece问题就相当于解码decoding问题,就是求解隐变量的序列;
y
^
=
arg
max
y
=
y
1
,
y
2
,
.
.
.
,
y
T
P
(
y
∣
x
)
(38)
\hat{y}=\mathop{\arg\max}\limits_{y=y_1,y_2,...,y_T} P(y|x)\tag{38}
y^=y=y1,y2,...,yTargmaxP(y∣x)(38)
7.边缘概率计算
7.1 目标
对于求解边缘概率,我们是这样描述的:
已
知
P
(
Y
=
y
∣
X
=
x
)
的
情
况
下
,
求
解
P
(
y
t
=
i
∣
x
)
的
大
小
?
(39)
已知 P(Y=y|X=x)的情况下,求解 P(y_t=i|x)的大小?\tag{39}
已知P(Y=y∣X=x)的情况下,求解P(yt=i∣x)的大小?(39)
- 注:此时假设参数 θ \theta θ 为已知量,如果为未知,在此处我们假设参数 θ \theta θ 为常量。
- 注:在词性标注中,每一个样本就是一句话。
7.2 模型建立
由之前的学习,我们已经得到了概率密度函数如下:
P
(
Y
=
y
∣
X
=
x
)
=
1
Z
∏
t
=
1
T
ϕ
(
y
t
−
1
,
y
t
,
x
)
(40)
P(Y=y|X=x)=\frac{1}{Z}\prod_{t=1}^{T}\phi(y_{t-1},y_t,x)\tag{40}
P(Y=y∣X=x)=Z1t=1∏Tϕ(yt−1,yt,x)(40)
为了求解
P
(
y
t
=
i
∣
x
)
P(y_t=i|x)
P(yt=i∣x),我们只需要将其他项目积分掉即可。
P
(
y
t
=
i
∣
x
)
=
∫
y
1
:
t
−
1
∫
y
t
+
1
:
T
P
(
Y
=
y
∣
X
=
x
)
=
∫
y
1
:
t
−
1
∫
y
t
+
1
:
T
1
Z
∏
t
=
1
T
ϕ
(
y
t
−
1
,
y
t
,
x
)
(41)
P(y_t=i|x)=\int_{y_{1:t-1}}\int_{y_{t+1:T}}P(Y=y|X=x)=\int_{y_{1:t-1}}\int_{y_{t+1:T}}\frac{1}{Z}\prod_{t=1}^{T}\phi(y_{t-1},y_t,x)\tag{41}
P(yt=i∣x)=∫y1:t−1∫yt+1:TP(Y=y∣X=x)=∫y1:t−1∫yt+1:TZ1t=1∏Tϕ(yt−1,yt,x)(41)
- 注: ∫ y 1 : t − 1 = ∫ y 1 ∫ y 2 ⋅ ⋅ ⋅ ∫ y t − 1 ; ∫ y t + 1 : T = ∫ y t + 1 ∫ y t + 2 ⋅ ⋅ ⋅ ∫ y T \int_{y_{1:t-1}}=\int_{y_1}\int_{y_2}···\int_{y_{t-1}};\int_{y_{t+1:T}}=\int_{y_{t+1}}\int_{y_{t+2}}···\int_{y_T} ∫y1:t−1=∫y1∫y2⋅⋅⋅∫yt−1;∫yt+1:T=∫yt+1∫yt+2⋅⋅⋅∫yT
因为条件随机场中经常遇到的是离散型随机变量,所以需要将积分改成求和处理:
P
(
y
t
=
i
∣
x
)
=
∑
y
<
1
:
t
−
1
>
∑
y
<
t
+
1
:
T
>
1
Z
∏
t
′
=
1
T
ϕ
(
y
t
′
−
1
,
y
t
′
,
x
)
(42)
P(y_t=i|x)=\sum_{y_{<1:t-1>}}\sum_{y_{<t+1:T>}}\frac{1}{Z}\prod_{t'=1}^{T}\phi(y_{t'-1},y_{t'},x)\tag{42}
P(yt=i∣x)=y<1:t−1>∑y<t+1:T>∑Z1t′=1∏Tϕ(yt′−1,yt′,x)(42)
- 注:我们看到了由 T-1 个连加,且每个 y t ∈ S y_t\in S yt∈S,则, y t ≤ ∣ S ∣ y_t\leq |S| yt≤∣S∣,那么复杂度为 O ( ∣ S ∣ T ) O(|S|^T) O(∣S∣T),如果我们按照这种方式进行求解,那么对于计算机来说计算量就十分巨大了,为了解决上述问题,我们引入变量消除的方式进行计算求解。
7.3 变量消除法
我们展开公式42,为了方便起见,我们将分成两个部分:
P
(
y
t
=
i
∣
x
)
=
1
Z
△
l
e
f
t
⋅
△
r
i
g
h
t
(43)
P(y_t=i|x)=\frac{1}{Z}\triangle_{left}·\triangle_{right}\tag{43}
P(yt=i∣x)=Z1△left⋅△right(43)
△
l
e
f
t
=
∑
y
<
1
:
t
−
1
>
ϕ
1
(
y
0
,
y
1
,
x
)
⋅
ϕ
2
(
y
1
,
y
2
,
x
)
⋅
⋅
⋅
ϕ
t
(
y
t
−
1
,
y
t
=
i
,
x
)
(44)
\triangle_{left}=\sum_{y<1:t-1>}\phi_1(y_0,y_1,x)·\phi_2(y_1,y_2,x)···\phi_{t}(y_{t-1},y_t=i,x)\tag{44}
△left=y<1:t−1>∑ϕ1(y0,y1,x)⋅ϕ2(y1,y2,x)⋅⋅⋅ϕt(yt−1,yt=i,x)(44)
△
r
i
g
h
t
=
∑
y
<
1
+
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
)
(45)
\triangle_{right}=\sum_{y<1+1:T>}\phi_{t+1}(y_t=i,y_{t+1},x)·\phi_{t+2}(y_{t+1},y_{t+2},x)···\phi_{T}(y_{T-1},y_{T},x)\tag{45}
△right=y<1+1:T>∑ϕt+1(yt=i,yt+1,x)⋅ϕt+2(yt+1,yt+2,x)⋅⋅⋅ϕT(yT−1,yT,x)(45)
现在我们用变量消除法来将连加部分进行代入。
△
l
e
f
t
=
∑
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
)
(46)
\triangle_{left}=\sum_{y_{t-1}}\phi_t(y_{t-1},y_t=i,x)·\sum_{y_{t-2}}\phi_{t-1}(y_{t-2},y_{t-1},x)···\sum_{y_1}\phi_2(y_1,y_2,x)·\sum_{y_0}\phi_1(y_0,y_1.x)\tag{46}
△left=yt−1∑ϕt(yt−1,yt=i,x)⋅yt−2∑ϕt−1(yt−2,yt−1,x)⋅⋅⋅y1∑ϕ2(y1,y2,x)⋅y0∑ϕ1(y0,y1.x)(46)
思路如下:
为了解决上述问题,我们引入以下变量:
α t ( i ) = ∑ y < 1 : t − 1 > ϕ 1 ( y 0 , y 1 , x ) ⋅ ϕ 2 ( y 1 , y 2 , x ) ⋅ ⋅ ⋅ ϕ t ( y t − 1 , y t = i , x ) (47) \alpha_t(i)=\sum_{y<1:t-1>}\phi_1(y_0,y_1,x)·\phi_2(y_1,y_2,x)···\phi_{t}(y_{t-1},y_t=i,x)\tag{47} αt(i)=y<1:t−1>∑ϕ1(y0,y1,x)⋅ϕ2(y1,y2,x)⋅⋅⋅ϕt(yt−1,yt=i,x)(47)
α
t
−
1
(
i
)
=
∑
y
<
1
:
t
−
2
>
ϕ
1
(
y
0
,
y
1
,
x
)
⋅
ϕ
2
(
y
1
,
y
2
,
x
)
⋅
⋅
⋅
ϕ
t
−
1
(
y
t
−
2
,
y
t
−
1
,
x
)
(48)
\alpha_{t-1}(i)=\sum_{y<1:t-2>}\phi_1(y_0,y_1,x)·\phi_2(y_1,y_2,x)···\phi_{t-1}(y_{t-2},y_{t-1},x)\tag{48}
αt−1(i)=y<1:t−2>∑ϕ1(y0,y1,x)⋅ϕ2(y1,y2,x)⋅⋅⋅ϕt−1(yt−2,yt−1,x)(48)
α
t
(
i
)
=
∑
y
t
−
1
ϕ
t
(
y
t
−
1
,
y
t
=
i
,
x
)
⋅
α
t
−
1
(
i
)
\alpha_t(i)=\sum_{y_{t-1}}\phi_t(y_{t-1},y_t=i,x)·\alpha_{t-1}(i)
αt(i)=yt−1∑ϕt(yt−1,yt=i,x)⋅αt−1(i)
- 注:我们定义第 t-1 时刻的数为 j ;即:
y
t
−
1
=
j
;
相
对
应
的
集
合
:
j
∈
S
y_{t-1}=j;相对应的集合:j \in S
yt−1=j;相对应的集合:j∈S;则上式可变为:
α t ( i ) = ∑ j ∈ S ϕ t ( y t − 1 = j , y t = i , x ) ⋅ α t − 1 ( i ) (49) \alpha_t(i)=\sum_{j\in S}\phi_t(y_{t-1}=j,y_t=i,x)·\alpha_{t-1}(i)\tag{49} αt(i)=j∈S∑ϕt(yt−1=j,yt=i,x)⋅αt−1(i)(49)
综上所示:
△ l e f t = α t ( i ) (50) \triangle_{left}=\alpha_t(i)\tag{50} △left=αt(i)(50)
同理可得:
△ r i g h t = β t ( i ) (51) \triangle_{right}=\beta_t(i)\tag{51} △right=βt(i)(51)
7.4 结论
P
(
y
t
=
i
∣
x
)
=
1
Z
⋅
α
t
(
i
)
⋅
β
t
(
i
)
(52)
P(y_t=i|x)=\frac{1}{Z}·\alpha_t(i)·\beta_t(i)\tag{52}
P(yt=i∣x)=Z1⋅αt(i)⋅βt(i)(52)
以上方法我们是运用了概率图模型中的推断方法,此方法为精确推断的变量消除法。变量消除法进一步衍生为"sum+product",也叫Belief Propagation信念传播。
8.条件随机场的 Learning 问题
8.1 目标
条件随机场的 learning 问题就是求解参数
θ
\theta
θ,即:
θ
^
=
arg
max
λ
,
η
∏
i
=
1
N
P
(
y
(
i
)
∣
x
(
i
)
)
(53)
\hat{\theta}=\mathop{\arg \max}\limits_{\lambda,\eta} \prod_{i=1}^{N} P(y^{(i)}|x^{(i)})\tag{53}
θ^=λ,ηargmaxi=1∏NP(y(i)∣x(i))(53)
- 取对数不影响结果:
θ ^ = < λ ^ , η ^ > = arg max λ , η ∑ i = 1 N log P ( y ( i ) ∣ x ( i ) ) (54) \hat{\theta}=<\hat{\lambda},\hat{\eta}>=\mathop{\arg \max}\limits_{\lambda,\eta} \sum_{i=1}^{N} \log P(y^{(i)}|x^{(i)})\tag{54} θ^=<λ^,η^>=λ,ηargmaxi=1∑NlogP(y(i)∣x(i))(54) - 注: N 为样本的个数 ,要通过样本求解模型的参数 λ , η . \lambda,\eta. λ,η.
展开可得如下:
<
λ
^
,
η
^
>
=
arg
max
λ
,
η
∑
i
=
1
N
{
−
log
Z
(
x
(
i
)
,
λ
,
η
)
+
∑
t
=
1
T
[
λ
T
⋅
f
(
y
t
−
1
,
y
t
,
x
(
i
)
)
+
η
T
⋅
g
(
y
t
,
x
(
i
)
)
]
}
(55)
<\hat{\lambda},\hat{\eta}>=\mathop{\arg \max}\limits_{\lambda,\eta} \sum_{i=1}^{N} \{-\log Z(x^{(i)},\lambda,\eta)+\sum_{t=1}^{T}[\lambda^T·f(y_{t-1},y_t,x^{(i)})+\eta^T·g(y_t,x^{(i)})]\}\tag{55}
<λ^,η^>=λ,ηargmaxi=1∑N{−logZ(x(i),λ,η)+t=1∑T[λT⋅f(yt−1,yt,x(i))+ηT⋅g(yt,x(i))]}(55)
以上问题为极大似然估计问题,为了方便起见,我们定义如下函数。
arg
max
λ
,
η
L
(
λ
,
η
,
x
(
i
)
)
=
arg
max
λ
,
η
∑
i
=
1
N
{
−
log
Z
(
x
(
i
)
,
λ
,
η
)
+
∑
t
=
1
T
[
λ
T
⋅
f
(
y
t
−
1
,
y
t
,
x
(
i
)
)
+
η
T
⋅
g
(
y
t
,
x
(
i
)
)
]
}
(56)
\mathop{\arg \max}\limits_{\lambda,\eta} L(\lambda,\eta,x^{(i)})=\mathop{\arg \max}\limits_{\lambda,\eta} \sum_{i=1}^{N} \{-\log Z(x^{(i)},\lambda,\eta)+\sum_{t=1}^{T}[\lambda^T·f(y_{t-1},y_t,x^{(i)})+\eta^T·g(y_t,x^{(i)})]\}\tag{56}
λ,ηargmaxL(λ,η,x(i))=λ,ηargmaxi=1∑N{−logZ(x(i),λ,η)+t=1∑T[λT⋅f(yt−1,yt,x(i))+ηT⋅g(yt,x(i))]}(56)
8.2 化简
现在我们就用梯度上升法求解上述公式,即:对 L 函数分别用
λ
,
η
\lambda,\eta
λ,η 进行求偏导
▽
λ
L
=
∂
L
∂
λ
=
0
;
▽
η
L
=
∂
L
∂
η
=
0
;
(57)
\bigtriangledown_{\lambda} L=\frac{\partial L}{\partial \lambda}=0;\bigtriangledown_{\eta} L=\frac{\partial L}{\partial \eta}=0;\tag{57}
▽λL=∂λ∂L=0;▽ηL=∂η∂L=0;(57)
- 求
λ
\lambda
λ的偏导:
▽ λ L = ∑ i = 1 N { ∑ t = 1 T f ( y t − 1 ( i ) , y t ( i ) , x ( i ) ) − ▽ λ log Z ( x ( i ) , λ , η ) } (58) \bigtriangledown_{\lambda} L=\sum_{i=1}^{N}\{\sum_{t=1}^Tf(y_{t-1}^{(i)},y_t^{(i)},x^{(i)})-\bigtriangledown_{\lambda}{\log{Z(x^{(i)},\lambda,\eta)}}\}\tag{58} ▽λL=i=1∑N{t=1∑Tf(yt−1(i),yt(i),x(i))−▽λlogZ(x(i),λ,η)}(58)
现在我们集中的问题是如何求解: ▽ λ log Z ( x ( i ) , λ , η ) \bigtriangledown_{\lambda}{\log{Z(x^{(i)},\lambda,\eta)}} ▽λlogZ(x(i),λ,η)
为了解决上述公式,我们可以分析下:
∑
t
=
1
T
λ
T
⋅
f
(
y
t
−
1
,
y
t
,
x
(
i
)
)
\sum_{t=1}^T\lambda^T·f(y_{t-1},y_t,x^{(i)})
∑t=1TλT⋅f(yt−1,yt,x(i))
1
Z
(
x
(
i
)
,
λ
,
η
)
e
x
p
{
λ
T
∑
t
=
1
T
f
(
y
t
−
1
,
y
t
,
x
(
i
)
)
}
(59)
\frac{1}{Z(x^{(i)},\lambda,\eta)}exp\{\lambda^T\sum_{t=1}^Tf(y_{t-1},y_t,x^{(i)})\}\tag{59}
Z(x(i),λ,η)1exp{λTt=1∑Tf(yt−1,yt,x(i))}(59)
其实这个就是以前讲过的指数族分布,详见可参考指数族分布
我们对照指数族分布可得,对数配分函数关系式如下:
log
Z
(
x
(
i
)
,
λ
,
η
)
=
A
(
η
)
(60)
\log Z(x^{(i)},\lambda,\eta) = A(\eta) \tag{60}
logZ(x(i),λ,η)=A(η)(60)
由指数族分布那章可得如下:
A
′
(
η
)
=
E
x
∼
P
(
x
∣
η
)
[
ϕ
(
x
)
]
(61)
A'(\eta)=E_{x\sim P(x|\eta)}[\phi(x)]\tag{61}
A′(η)=Ex∼P(x∣η)[ϕ(x)](61)
对照CRF可得:
▽
λ
log
Z
(
x
(
i
)
,
λ
,
η
)
=
E
y
∼
P
(
y
∣
x
(
i
)
)
[
∑
t
=
1
T
f
(
y
t
−
1
,
y
t
,
x
(
i
)
)
]
=
∑
y
{
P
(
y
∣
x
(
i
)
)
⋅
∑
t
=
1
T
f
(
y
t
−
1
,
y
t
,
x
(
i
)
)
}
(62)
\bigtriangledown_{\lambda}{\log{Z(x^{(i)},\lambda,\eta)}}=E_{y\sim P(y|x^{(i)})}[\sum_{t=1}^Tf(y_{t-1},y_t,x^{(i)})]=\sum_y\{ P(y|x^{(i)})·\sum_{t=1}^Tf(y_{t-1},y_t,x^{(i)})\}\tag{62}
▽λlogZ(x(i),λ,η)=Ey∼P(y∣x(i))[t=1∑Tf(yt−1,yt,x(i))]=y∑{P(y∣x(i))⋅t=1∑Tf(yt−1,yt,x(i))}(62)
-
化简上式,将 ∑ t = 1 T \sum_{t=1}^T ∑t=1T提出来:
▽ λ log Z ( x ( i ) , λ , η ) = ∑ t = 1 T ∑ y { P ( y ∣ x ( i ) ) ⋅ f ( y t − 1 , y t , x ( i ) ) } (63) \bigtriangledown_{\lambda}{\log{Z(x^{(i)},\lambda,\eta)}}=\sum_{t=1}^T\sum_y\{ P(y|x^{(i)})·f(y_{t-1},y_t,x^{(i)})\}\tag{63} ▽λlogZ(x(i),λ,η)=t=1∑Ty∑{P(y∣x(i))⋅f(yt−1,yt,x(i))}(63) -
分解 ∑ y = ∑ y 1 y 2 . . . y T = ∑ y < 1 : t − 2 > ⋅ ∑ y t − 1 ⋅ ∑ y t ⋅ ∑ y < t + 1 : T > \sum y=\sum y_1y_2...y_T=\sum y_{<1:t-2>}·\sum y_{t-1}·\sum y_t·\sum y_{<t+1:T>} ∑y=∑y1y2...yT=∑y<1:t−2>⋅∑yt−1⋅∑yt⋅∑y<t+1:T>
▽ λ log Z ( x ( i ) , λ , η ) = ∑ t = 1 T ∑ y < 1 : t − 2 > ⋅ ∑ y t − 1 ⋅ ∑ y t ⋅ ∑ y < t + 1 : T > { P ( y ∣ x ( i ) ) ⋅ f ( y t − 1 , y t , x ( i ) ) } (64) \bigtriangledown_{\lambda}{\log{Z(x^{(i)},\lambda,\eta)}}=\sum_{t=1}^T\sum_{y_{<1:t-2>}}·\sum_{y_{t-1}}·\sum_{y_t}·\sum_{y_{<t+1:T>}}\{ P(y|x^{(i)})·f(y_{t-1},y_t,x^{(i)})\}\tag{64} ▽λlogZ(x(i),λ,η)=t=1∑Ty<1:t−2>∑⋅yt−1∑⋅yt∑⋅y<t+1:T>∑{P(y∣x(i))⋅f(yt−1,yt,x(i))}(64) -
再次组合上式:
▽ λ log Z ( x ( i ) , λ , η ) = ∑ t = 1 T ∑ y < 1 : t − 2 > ⋅ ∑ y t − 1 ⋅ ∑ y t ⋅ ∑ y < t + 1 : T > { P ( y ∣ x ( i ) ) ⋅ f ( y t − 1 , y t , x ( i ) ) } (65) \bigtriangledown_{\lambda}{\log{Z(x^{(i)},\lambda,\eta)}}=\sum_{t=1}^T\sum_{y_{<1:t-2>}}·\sum_{y_{t-1}}·\sum_{y_t}·\sum_{y_{<t+1:T>}}\{ P(y|x^{(i)})·f(y_{t-1},y_t,x^{(i)})\}\tag{65} ▽λlogZ(x(i),λ,η)=t=1∑Ty<1:t−2>∑⋅yt−1∑⋅yt∑⋅y<t+1:T>∑{P(y∣x(i))⋅f(yt−1,yt,x(i))}(65) -
因为 ∑ y < 1 : t − 2 > ∑ y < t + 1 : T > P ( y ∣ x ( i ) ) = P ( y t − 1 , y t ∣ x ( i ) ) \sum_{y_{<1:t-2>}} \sum_{y_{<t+1:T>}}P(y|x^{(i)})=P(y_{t-1},y_t|x^{(i)}) ∑y<1:t−2>∑y<t+1:T>P(y∣x(i))=P(yt−1,yt∣x(i))
▽ λ log Z ( x ( i ) , λ , η ) = ∑ t = 1 T { ∑ y t − 1 ⋅ ∑ y t { P ( y t − 1 , y t ∣ x ( i ) ) ⋅ f ( y t − 1 , y t , x ( i ) ) } } (66) \bigtriangledown_{\lambda}{\log{Z(x^{(i)},\lambda,\eta)}}=\sum_{t=1}^T\{\sum_{y_{t-1}}·\sum_{y_t}\{ P(y_{t-1},y_t|x^{(i)})·f(y_{t-1},y_t,x^{(i)})\}\}\tag{66} ▽λlogZ(x(i),λ,η)=t=1∑T{yt−1∑⋅yt∑{P(yt−1,yt∣x(i))⋅f(yt−1,yt,x(i))}}(66) -
重要:
我们发现
P
(
y
t
−
1
,
y
t
∣
x
(
i
)
)
P(y_{t-1},y_t|x^{(i)})
P(yt−1,yt∣x(i))其实就是我们上面求解边缘概率的衍生,只不过是两项,之前求解的是一项,求解的是
P
(
y
t
∣
x
(
i
)
)
P(y_t|x^{(i)})
P(yt∣x(i)),类比可得如下:
P
(
y
t
−
1
=
j
,
y
t
=
i
∣
x
(
i
)
)
=
∑
y
<
1
:
t
−
2
>
∑
y
<
t
+
1
:
T
>
∏
t
′
=
1
T
ϕ
t
′
(
y
t
′
−
1
,
y
t
′
,
x
)
(67)
P(y_{t-1}=j,y_t=i|x^{(i)})=\sum_{y_{<1:t-2>}}\sum_{y_{<t+1:T>}}\prod_{t'=1}^{T}\phi _{t'}(y_{t'-1},y_{t'},x)\tag{67}
P(yt−1=j,yt=i∣x(i))=y<1:t−2>∑y<t+1:T>∑t′=1∏Tϕt′(yt′−1,yt′,x)(67)
=
1
Z
△
l
e
f
t
⋅
ϕ
(
y
t
−
1
,
y
t
,
x
)
⋅
△
r
i
g
h
t
=\frac{1}{Z}\triangle_{left}·{\phi({y_{t-1},y_t,x})·\triangle_{right}}
=Z1△left⋅ϕ(yt−1,yt,x)⋅△right
=
1
Z
α
t
−
1
(
j
)
⋅
ϕ
(
y
t
−
1
=
j
,
y
t
=
i
,
x
)
⋅
β
t
(
i
)
=\frac{1}{Z}\alpha_{t-1}(j)·\phi({y_{t-1}=j,y_t=i,x})·\beta_t(i)
=Z1αt−1(j)⋅ϕ(yt−1=j,yt=i,x)⋅βt(i)
P
(
y
t
−
1
=
j
,
y
t
=
i
∣
x
(
i
)
)
=
1
Z
α
t
−
1
(
j
)
⋅
ϕ
(
y
t
−
1
=
j
,
y
t
=
i
,
x
)
⋅
β
t
(
i
)
=
A
(
y
t
−
1
,
y
t
)
(68)
P(y_{t-1}=j,y_t=i|x^{(i)})=\frac{1}{Z}\alpha_{t-1}(j)·\phi({y_{t-1}=j,y_t=i,x})·\beta_t(i)=A(y_{t-1},y_t)\tag{68}
P(yt−1=j,yt=i∣x(i))=Z1αt−1(j)⋅ϕ(yt−1=j,yt=i,x)⋅βt(i)=A(yt−1,yt)(68)
则最终可得如下:
▽
λ
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
)
⋅
f
(
y
t
−
1
,
y
t
,
x
(
i
)
)
}
(69)
\bigtriangledown_{\lambda}{L}=\sum_{i=1}^N\sum_{t=1}^T\{f(y_{t-1}^{(i)},y_t^{(i)},x^{(i)})-\sum_{y_{t-1}}·\sum_{y_t}A(y_{t-1},y_t)·f(y_{t-1},y_t,x^{(i)})\}\tag{69}
▽λL=i=1∑Nt=1∑T{f(yt−1(i),yt(i),x(i))−yt−1∑⋅yt∑A(yt−1,yt)⋅f(yt−1,yt,x(i))}(69)
同理可得:
▽
η
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
(
i
)
)
}
(70)
\bigtriangledown_{\eta}{L}=\sum_{i=1}^N\sum_{t=1}^T\{f(y_{t-1}^{(i)},y_t^{(i)},x^{(i)})-\sum_{y_{t-1}}·\sum_{y_t}A(y_{t-1},y_t)·g(y_t,x^{(i)})\}\tag{70}
▽ηL=i=1∑Nt=1∑T{f(yt−1(i),yt(i),x(i))−yt−1∑⋅yt∑A(yt−1,yt)⋅g(yt,x(i))}(70)
综上所述,我们可以得到关于梯度上升算法的公式如下:
λ
(
t
+
1
)
=
λ
(
t
)
+
s
t
e
p
⋅
▽
λ
L
(
λ
(
t
)
,
η
(
t
)
)
(71)
\lambda^{(t+1)}=\lambda^{(t)}+step·\bigtriangledown_{\lambda}{L(\lambda^{(t)},\eta^{(t)})}\tag{71}
λ(t+1)=λ(t)+step⋅▽λL(λ(t),η(t))(71)
η
(
t
+
1
)
=
η
(
t
)
+
s
t
e
p
⋅
▽
η
L
(
λ
(
t
)
,
η
(
t
)
)
(71)
\eta^{(t+1)}=\eta^{(t)}+step·\bigtriangledown_{\eta}{L(\lambda^{(t)},\eta^{(t)})}\tag{71}
η(t+1)=η(t)+step⋅▽ηL(λ(t),η(t))(71)
注:以上只是在理论上进行求解得出来的可行性解析方法,但是不幸的是,这种方法在实际求解的过程中收敛速度太慢,实在不能满足实际的生产效率。但伟大的研究人员已经在此基础上进行变种算法研究,得出了新的变种算法,满足实际的收敛速度,详细还请查看相关文献。
8.3 decoding 问题
我们知道 HMM 模型中计算 decoding 问题用的是 Viterbi 算法,实际上就是动态规划问题。其实对于此类问题来说,HMM 与 CRF 的问题是没有任何区别的。
完 结 撒 花 完结撒花 完结撒花