文章目录
无向概率图模型
无向图模型的边没有方向,仅仅代表两个事件有关联。
无向图模型将概率分解为所有最大团上的某种函数之积。
在图论中,最大团指的是满足所有节点相互连接的最大子图。因为最大团需要考虑所有变量,为此,无向图模型定义了一些虚拟的因子节点,每个因子节点只连接部分节点,组成更小的最大团。
蓝色虚线表示最大团,黑色方块表因子节点,圆圈则表示变量节点。
条件随机场
条件随机场( Conditional Random Field, CRF)是一种给定输入随机变量 x,求解条件概率 p(y| x) 的概率无向图模型。用于序列标注时,特例化为线性链( linear chain )条件随机场。此时,输人输出随机变量为等长的两个序列。
线性链条件随机场如下图所示:
每个 Xt 上方有 3 个灰色节点,代表 Xt 的 3 个特征,当然还可以是任意数量的特征,体现了特征的丰富性。黑色方块是因子节点,可以理解为一个特征函数 。其中仅仅利用了 Xt 和 Yt 的特征称作状态特征(s),利用了 Yt-1 的特征则称作转移特征(t)。
**状态特征(s)**是定义在Y节点上的节点特征函数,这类特征函数只和当前节点有关,记为:
s
l
(
y
i
,
x
,
i
)
,
l
=
1
,
2
,
.
.
.
L
s_l(y_i, x,i),\;\; l =1,2,...L
sl(yi,x,i),l=1,2,...L
其中L是定义在该节点的节点特征函数的总个数,ii是当前节点在序列的位置。
**转移特征(t)**是定义在Y上下文的局部特征函数,这类特征函数只和当前节点和上一个节点有关,记为:
t
k
(
y
i
−
1
,
y
i
,
x
,
i
)
,
k
=
1
,
2
,
.
.
.
K
t_k(y_{i-1},y_i, x,i),\;\; k =1,2,...K
tk(yi−1,yi,x,i),k=1,2,...K
其中K是定义在该节点的局部特征函数的总个数,i是当前节点在序列的位置。之所以只有上下文相关的局部特征函数,没有不相邻节点之间的特征函数,是因为我们的linear-CRF满足马尔科夫性。
无论是节点特征函数还是局部特征函数,它们的取值只能是0或者1。即满足特征条件或者不满足特征条件。同时,我们可以为每个特征函数赋予一个权值,用以表达我们对这个特征函数的信任度。假设 t k t_k tk的权重系数是 λ k , s l \lambda_k, s_l λk,sl的权重系数是 μ l \mu_l μl,则linear-CRF由我们所有的 t k , λ k , s , μ l t_k,\lambda_k, s_,\mu_l tk,λk,s,μl共同决定。
此时我们得到了linear-CRF的参数化形式如下:
P
(
y
∣
x
)
=
1
Z
(
x
)
e
x
p
(
∑
i
,
k
λ
k
t
k
(
y
i
−
1
,
y
i
,
x
,
i
)
+
∑
i
,
l
μ
l
s
l
(
y
i
,
x
,
i
)
)
P(y|x) = \frac{1}{Z(x)}exp\Big(\sum\limits_{i,k} \lambda_kt_k(y_{i-1},y_i, x,i) +\sum\limits_{i,l}\mu_ls_l(y_i, x,i)\Big)
P(y∣x)=Z(x)1exp(i,k∑λktk(yi−1,yi,x,i)+i,l∑μlsl(yi,x,i))
其中,Z(x)为规范化因子:
Z
(
x
)
=
∑
y
e
x
p
(
∑
i
,
k
λ
k
t
k
(
y
i
−
1
,
y
i
,
x
,
i
)
+
∑
i
,
l
μ
l
s
l
(
y
i
,
x
,
i
)
)
Z(x) =\sum\limits_{y} exp\Big(\sum\limits_{i,k} \lambda_kt_k(y_{i-1},y_i, x,i) +\sum\limits_{i,l}\mu_ls_l(y_i, x,i)\Big)
Z(x)=y∑exp(i,k∑λktk(yi−1,yi,x,i)+i,l∑μlsl(yi,x,i))
回到特征函数本身,每个特征函数定义了一个linear-CRF的规则,则其系数定义了这个规则的可信度。所有的规则和其可信度一起构成了我们的linear-CRF的最终的条件概率分布。
CRF 实例
这里我们给出一个linear-CRF用于词性标注的实例,为了方便,我们简化了词性的种类。假设输入的都是三个词的句子,即 X = ( X 1 , X 2 , X 3 ) X=(X_1,X_2,X_3) X=(X1,X2,X3),输出为 Y = ( Y 1 , Y 2 , Y 3 ) Y=(Y_1,Y_2,Y_3) Y=(Y1,Y2,Y3),其中, Y ∈ { 1 ( 名 词 ) , 2 ( 动 词 ) } Y \in \{1(名词),2(动词)\} Y∈{1(名词),2(动词)},则Y的可能输出序列 对应的线性链条件随机场结构 如下图所示:
给定取值为1的特征函数如下:
t
1
=
t
1
(
y
i
−
1
=
1
,
y
i
=
2
,
x
,
i
)
,
i
=
2
,
3
,
λ
1
=
1
t
2
=
t
2
(
y
1
=
1
,
y
2
=
1
,
x
,
2
)
λ
2
=
0.5
t
3
=
t
3
(
y
2
=
2
,
y
3
=
1
,
x
,
3
)
λ
3
=
1
t
4
=
t
4
(
y
1
=
2
,
y
2
=
1
,
x
,
2
)
λ
4
=
1
t
5
=
t
5
(
y
2
=
2
,
y
3
=
2
,
x
,
3
)
λ
5
=
0.2
s
1
=
s
1
(
y
1
=
1
,
x
,
1
)
μ
1
=
1
s
2
=
s
2
(
y
i
=
2
,
x
,
i
)
,
i
=
1
,
2
,
μ
2
=
0.5
s
3
=
s
3
(
y
i
=
1
,
x
,
i
)
,
i
=
2
,
3
,
μ
3
=
0.8
s
4
=
s
4
(
y
3
=
2
,
x
,
3
)
μ
4
=
0.5
t_1 =t_1(y_{i-1} = 1, y_i =2,x,i), i =2,3,\;\;\lambda_1=1\\ t_2 =t_2(y_1=1,y_2=1,x,2)\;\;\lambda_2=0.5\\ t_3 =t_3(y_2=2,y_3=1,x,3)\;\;\lambda_3=1\\ t_4 =t_4(y_1=2,y_2=1,x,2)\;\;\lambda_4=1\\ t_5 =t_5(y_2=2,y_3=2,x,3)\;\;\lambda_5=0.2\\ s_1 =s_1(y_1=1,x,1)\;\;\mu_1 =1\\ s_2 =s_2( y_i =2,x,i), i =1,2,\;\;\mu_2=0.5\\ s_3 =s_3( y_i =1,x,i), i =2,3,\;\;\mu_3=0.8\\ s_4 =s_4(y_3=2,x,3)\;\;\mu_4 =0.5
t1=t1(yi−1=1,yi=2,x,i),i=2,3,λ1=1t2=t2(y1=1,y2=1,x,2)λ2=0.5t3=t3(y2=2,y3=1,x,3)λ3=1t4=t4(y1=2,y2=1,x,2)λ4=1t5=t5(y2=2,y3=2,x,3)λ5=0.2s1=s1(y1=1,x,1)μ1=1s2=s2(yi=2,x,i),i=1,2,μ2=0.5s3=s3(yi=1,x,i),i=2,3,μ3=0.8s4=s4(y3=2,x,3)μ4=0.5
目标是求标记序列
(
y
1
=
1
,
y
2
=
2
,
y
3
=
2
)
(y_1=1,y_2=2,y_3=2)
(y1=1,y2=2,y3=2)的非规范化概率。
简单解释上面的特征函数:
t 2 t_2 t2函数表示输入的第一个y必须是 y 1 y_1 y1且等于1,第二个y必须是 y 2 y_2 y2且为1。当输入的两个y满足这两个条件事,函数取值为1,否则取值为0(例如: t 2 ( y 1 = 1 , y 2 = 2 , x , 2 ) = 0 t_2 (y_1=1,y_2=2,x,2)=0 t2(y1=1,y2=2,x,2)=0)。当 t 2 t_2 t2取值为1时, t 2 t_{2} t2对应的置信度为0.5。
t 1 t_1 t1函数表示输入的第一个y是1且第二个y是2时才取1,否则取0。 t 1 t_1 t1取1时,则 t 1 t_1 t1对应的概率为1。
s 1 s_1 s1函数表示输入的y必须是 y 1 y_1 y1且等于1,此时 s 1 s_1 s1的置信度为 μ 1 \mu_1 μ1。
其他的特征函数以此类推。
更具体的理解是:
t函数给定并约束了不同词性之间的转移概率,例如约定名词后接动词的概率为1,名词后面跟名词的概率为0.5;
s函数给定并约束了第i个位置为某个词性的概率,例如第一个字为名词的概率为1,第一个第二个字为动词的概率为0.5;
利用linear-CRF的参数化公式,我们有:
P
(
y
∣
x
)
∝
e
x
p
[
∑
k
=
1
5
λ
k
∑
i
=
2
3
t
k
(
y
i
−
1
,
y
i
,
x
,
i
)
+
∑
l
=
1
4
μ
l
∑
i
=
1
3
s
l
(
y
i
,
x
,
i
)
]
P(y|x) \propto exp\Big[\sum\limits_{k=1}^5\lambda_k\sum\limits_{i=2}^3t_k(y_{i-1},y_i, x,i) + \sum\limits_{l=1}^4\mu_l\sum\limits_{i=1}^3s_l(y_i, x,i) \Big]
P(y∣x)∝exp[k=1∑5λki=2∑3tk(yi−1,yi,x,i)+l=1∑4μli=1∑3sl(yi,x,i)]
注意上面的式子中的
∑
i
=
2
3
\sum\limits_{i=2}^3
i=2∑3和$ \sum\limits_{i=1}^3$,意味着所有的特征函数会遍历每一个可能的点和边。
带入
(
y
1
=
1
,
y
2
=
2
,
y
3
=
2
)
(y_1=1,y_2=2,y_3=2)
(y1=1,y2=2,y3=2)后展开,得到:
P
(
y
1
=
1
,
y
2
=
2
,
y
3
=
2
∣
x
)
∝
e
x
p
(
3.2
)
P(y_1=1,y_2=2,y_3=2|x) \propto exp(3.2)
P(y1=1,y2=2,y3=2∣x)∝exp(3.2)
线性链条件随机场的简化形式
假设我们有 K 1 K_1 K1个转移特征t, K 2 K_2 K2个状态特征s,总共有 K = K 1 + K 2 K=K_1 + K_2 K=K1+K2个特征。并且令:
f
k
(
y
i
−
1
,
y
i
,
x
,
i
)
=
{
t
k
(
y
i
−
1
,
y
i
,
x
,
i
)
,
k
=
1
,
2
,
…
,
K
1
s
l
(
y
i
,
x
,
i
)
,
k
=
K
1
+
l
;
l
=
1
,
2
,
…
,
K
2
f_k(y_{i-1},y_i,x,i)= \begin{cases} t_k(y_{i-1},y_i,x,i),&k=1,2,\dots,K_1\\ s_l(y_i,x,i),&k=K_1+l;l=1,2,\dots,K_2 \end{cases}
fk(yi−1,yi,x,i)={tk(yi−1,yi,x,i),sl(yi,x,i),k=1,2,…,K1k=K1+l;l=1,2,…,K2
然后对两种特征函数在各个位置
i
i
i求和,得到:
f
k
(
y
,
x
)
=
∑
i
=
1
n
f
k
(
y
i
−
1
,
y
i
,
x
,
i
)
,
k
=
1
,
2
,
…
,
K
f_k(y,x)=\sum_{i=1}^nf_k(y_{i-1},y_i,x,i),k=1,2,\dots,K
fk(y,x)=i=1∑nfk(yi−1,yi,x,i),k=1,2,…,K
同时我们也统一
f
k
(
y
i
−
1
,
y
i
,
x
,
i
)
f_k(y_{i-1},y_i, x,i)
fk(yi−1,yi,x,i)对应的权重系数
w
k
w_{k}
wk如下:
w
k
=
{
λ
k
,
k
=
1
,
2
,
…
,
K
1
μ
l
,
k
=
K
1
+
l
;
l
=
1
,
2
,
…
,
K
2
w_k= \begin{cases} \lambda_k,&k=1,2,\dots,K_1\\ \mu_l,&k=K1+l;l=1,2,\dots,K_2 \end{cases}
wk={λk,μl,k=1,2,…,K1k=K1+l;l=1,2,…,K2
于是条件随机场可以表示为
P
(
y
∣
x
)
=
1
Z
(
x
)
exp
∑
k
=
1
K
w
k
f
k
(
y
,
x
)
Z
(
x
)
=
∑
y
exp
∑
k
=
1
K
w
k
f
k
(
y
,
x
)
\begin{aligned} P(y|x)&=\frac{1}{Z(x)}\exp\sum_{k=1}^Kw_kf_k(y,x)\\ Z(x)&=\sum_y\exp\sum_{k=1}^Kw_kf_k(y,x) \end{aligned}
P(y∣x)Z(x)=Z(x)1expk=1∑Kwkfk(y,x)=y∑expk=1∑Kwkfk(y,x)
其中
Z
(
x
)
Z(x)
Z(x)为规范化因子。
若以
w
w
w表示权值向量, 即
w
=
(
w
1
,
w
2
,
…
,
w
K
)
T
w=(w_1,w_2,\dots,w_K)^T
w=(w1,w2,…,wK)T
以
F
F
F表示全局特征向量,即
F
(
y
,
x
)
=
(
f
1
(
y
,
x
)
,
f
2
(
y
,
x
)
,
…
,
f
K
(
y
,
x
)
)
T
F(y,x)=(f_1(y,x),f_2(y,x),\dots,f_K(y,x))^T
F(y,x)=(f1(y,x),f2(y,x),…,fK(y,x))T
条件随机场可以表示成向量内积的形式
P
w
(
y
∣
x
)
=
exp
(
w
⋅
F
(
y
,
x
)
)
Z
w
(
x
)
Z
w
(
x
)
=
∑
y
exp
(
w
⋅
F
(
y
,
x
)
)
\begin{aligned} P_w(y|x)&=\frac{\exp(w\cdot F(y,x))}{Z_w(x)}\\ Z_w(x)&=\sum_y\exp\left(w\cdot F(y,x)\right) \end{aligned}
Pw(y∣x)Zw(x)=Zw(x)exp(w⋅F(y,x))=y∑exp(w⋅F(y,x))
以上便得到了向量形式的表示。
线性链条件随机场的矩阵形式
上面的表示形式还可以再加以整理,变为矩阵的形式。为此定义一个
m
×
m
m\times m
m×m的矩阵M,m为y所有可能状态的个数。M定义如下:
M
i
(
x
)
=
[
M
i
(
y
i
−
1
,
y
i
∣
x
)
]
M
i
(
y
i
−
1
,
y
i
)
=
exp
(
W
i
(
y
i
−
1
,
y
i
∣
x
)
)
W
i
(
y
i
−
1
,
y
i
∣
x
)
=
∑
k
=
1
K
w
k
f
k
(
y
i
−
1
,
y
i
∣
x
)
\begin{aligned} M_i(x)&=\left[M_i(y_{i-1},y_i|x)\right]\\ M_i(y_{i-1},y_i)&=\exp\left(W_i(y_{i-1},y_i|x)\right)\\ W_i(y_{i-1},y_i|x)&=\sum_{k=1}^Kw_kf_k(y_{i-1},y_i|x) \end{aligned}
Mi(x)Mi(yi−1,yi)Wi(yi−1,yi∣x)=[Mi(yi−1,yi∣x)]=exp(Wi(yi−1,yi∣x))=k=1∑Kwkfk(yi−1,yi∣x)
M
i
(
x
)
M_i(x)
Mi(x)是
m
×
m
m\times m
m×m的矩阵,对上文提到的实例而言,M为2x2的矩阵。角标i表示是第i个位置的矩阵。
M i ( y i − 1 , y i ) M_i(y_{i-1},y_i) Mi(yi−1,yi)是构成矩阵 M i ( x ) M_i(x) Mi(x)的元素,其在矩阵中的位置为: ( y i − 1 , y i ) (y_{i-1}, y_i) (yi−1,yi)。例如 ( y i − 1 = 1 , y i = 2 ) (y_{i-1}=1, y_i=2) (yi−1=1,yi=2)表示是矩阵第一行,第二列的位置,且取值为: exp ( W i ( y i − 1 = 1 , y i = 2 ∣ x ) ) \exp\left(W_i(y_{i-1}=1,y_i=2|x)\right) exp(Wi(yi−1=1,yi=2∣x))。
引入起点和终点状态标记
y
0
=
s
t
a
r
t
=
1
,
y
n
+
1
=
e
n
d
=
1
y_0=start=1,y_{n+1}=end=1
y0=start=1,yn+1=end=1, 则有下图所示的状态路径:
这时
P
w
(
y
∣
x
)
P_w(y|x)
Pw(y∣x)可以矩阵形式表示:
P
w
(
y
∣
x
)
=
1
Z
w
(
x
)
∏
i
=
1
n
+
1
M
i
(
y
i
−
1
,
y
i
∣
x
)
Z
w
(
x
)
=
(
M
1
(
x
)
M
2
(
x
)
…
M
n
+
1
(
x
)
)
s
t
a
r
t
,
s
t
o
p
P_w(y|x)=\frac{1}{Z_w(x)}\prod_{i=1}^{n+1}M_i(y_{i-1},y_i|x) \\ Z_w(x)=(M_1(x)M_2(x)\dots M_{n+1}(x))_{start,stop}
Pw(y∣x)=Zw(x)1i=1∏n+1Mi(yi−1,yi∣x)Zw(x)=(M1(x)M2(x)…Mn+1(x))start,stop
其中
Z
w
(
x
)
Z_w(x)
Zw(x)为规范化因子,是n+1个矩阵乘积结果在(start=1,stop=1)位置上的元素,也就是计算结果对应的矩阵在左上角位置的元素值。
为什么是n+1个矩阵?因为从start到stop之间有
n
+
1
=
3
+
1
=
4
n+1=3+1=4
n+1=3+1=4个转移状态:
M
1
(
y
0
,
y
1
)
,
M
2
(
y
1
,
y
2
)
,
M
3
(
y
2
,
y
3
)
,
M
4
(
y
3
,
y
4
)
M_1(y_0,y_1),M_2(y_1,y_2),M_3(y_2,y_3),M_4(y_3,y_4)
M1(y0,y1),M2(y1,y2),M3(y2,y3),M4(y3,y4)
回顾之前做的例题,有观测序列
x
x
x,状态序列
y
,
i
=
1
,
2
,
3
,
n
=
3
y,i=1,2,3, n=3
y,i=1,2,3,n=3,标记
y
i
∈
{
1
,
2
}
y_i\in\{1,2\}
yi∈{1,2},假设
y
0
=
s
t
a
r
t
=
1
,
y
4
=
s
t
o
p
=
1
y_0=start=1,y_4=stop=1
y0=start=1,y4=stop=1,各个位置的随机矩阵(可以理解为状态转移矩阵)为:
M
1
(
x
)
=
[
a
11
a
12
0
0
]
,
M
2
(
x
)
=
[
b
11
b
12
b
21
b
22
]
M
3
(
x
)
=
[
c
11
c
12
c
21
c
22
]
,
M
4
(
x
)
=
[
1
0
1
0
]
\begin{aligned} M_1(x)= \begin{bmatrix} &a_{11}&a_{12}\\ &0&0 \end{bmatrix} &,M_2(x)= \begin{bmatrix} &b_{11}&b_{12}\\ &b_{21}&b_{22} \end{bmatrix} \\ M_3(x)= \begin{bmatrix} &c_{11}&c_{12}\\ &c_{21}&c_{22} \end{bmatrix} &,M_4(x)= \begin{bmatrix} &1&0\\ &1&0 \end{bmatrix} \end{aligned}
M1(x)=[a110a120]M3(x)=[c11c21c12c22],M2(x)=[b11b21b12b22],M4(x)=[1100]
其中:
M
i
(
x
)
=
[
exp
(
∑
k
=
1
K
w
k
f
k
(
y
i
−
1
,
y
i
∣
x
)
)
]
,
i
=
1
,
2
,
…
,
n
+
1
M_i(x)=\left[\exp\left(\sum_{k=1}^Kw_kf_k(y_{i-1},y_i|x)\right)\right], i=1,2,\dots,n+1
Mi(x)=[exp(k=1∑Kwkfk(yi−1,yi∣x))],i=1,2,…,n+1
例如
M
1
(
x
)
M_1(x)
M1(x):
M
1
(
x
)
=
[
a
11
=
exp
(
∑
k
=
1
K
w
k
f
k
(
y
0
=
1
,
y
1
=
1
∣
x
)
)
a
12
=
exp
(
∑
k
=
1
K
w
k
f
k
(
y
0
=
1
,
y
1
=
2
∣
x
)
)
a
21
=
exp
(
∑
k
=
1
K
w
k
f
k
(
y
0
=
2
,
y
1
=
1
∣
x
)
)
a
22
=
exp
(
∑
k
=
1
K
w
k
f
k
(
y
0
=
2
,
y
2
=
1
∣
x
)
)
]
M_1(x)= \begin{bmatrix} &a_{11} =\exp\left(\sum_{k=1}^Kw_kf_k(y_{0}=1,y_1=1|x)\right)&a_{12}=\exp\left(\sum_{k=1}^Kw_kf_k(y_{0}=1,y_1=2|x)\right)\\ &a_{21}=\exp\left(\sum_{k=1}^Kw_kf_k(y_{0}=2,y_1=1|x)\right)&a_{22}=\exp\left(\sum_{k=1}^Kw_kf_k(y_{0}=2,y_2=1|x)\right) \end{bmatrix}
M1(x)=⎣⎡a11=exp(∑k=1Kwkfk(y0=1,y1=1∣x))a21=exp(∑k=1Kwkfk(y0=2,y1=1∣x))a12=exp(∑k=1Kwkfk(y0=1,y1=2∣x))a22=exp(∑k=1Kwkfk(y0=2,y2=1∣x))⎦⎤
显然,
a
21
,
a
22
a_{21}, a_{22}
a21,a22为0。
将上述矩阵相乘:
∏
i
=
1
4
M
i
(
y
i
−
1
,
y
i
∣
x
)
\prod_{i=1}^{4}M_i(y_{i-1},y_i|x)
i=1∏4Mi(yi−1,yi∣x)
可以得到各个路径的非规范化概率为:
a
11
b
11
c
11
,
a
11
b
11
c
12
,
a
11
b
12
c
21
,
a
11
b
12
c
22
,
a
12
b
21
c
11
,
a
12
b
21
c
12
,
a
12
b
22
c
21
,
a
12
b
22
c
22
,
a_{11}b_{11}c_{11},\quad a_{11}b_{11}c_{12},\quad a_{11}b_{12}c_{21},\quad a_{11}b_{12}c_{22},\quad \\ a_{12}b_{21}c_{11},\quad a_{12}b_{21}c_{12},\quad a_{12}b_{22}c_{21},\quad a_{12}b_{22}c_{22},\quad
a11b11c11,a11b11c12,a11b12c21,a11b12c22,a12b21c11,a12b21c12,a12b22c21,a12b22c22,
规范化因子,即最终计算结果左上角的元素,为:
a
11
b
11
c
11
+
a
11
b
11
c
12
+
a
11
b
12
c
21
+
a
11
b
12
c
22
+
a
12
b
21
c
11
+
a
12
b
21
c
12
+
a
12
b
22
c
21
+
a
12
b
22
c
22
a_{11}b_{11}c_{11}+ a_{11}b_{11}c_{12}+ a_{11}b_{12}c_{21}+ a_{11}b_{12}c_{22}+ \\ a_{12}b_{21}c_{11}+ a_{12}b_{21}c_{12}+ a_{12}b_{22}c_{21}+ a_{12}b_{22}c_{22}
a11b11c11+a11b11c12+a11b12c21+a11b12c22+a12b21c11+a12b21c12+a12b22c21+a12b22c22
linear-CRF的三个基本问题
1,概率计算问题
即给定 linear-CRF的条件概率分布P(y|x), 在给定输入序列x和输出序列y时,计算条件概率 P ( y i ∣ x ) P(y_i|x) P(yi∣x)和 P ( y i − 1 , y i ∣ x ) P(y_i−1,y_i|x) P(yi−1,yi∣x)以及对应的期望。
前向后向概率概述
要计算条件概率 P ( y i ∣ x ) P(y_i|x) P(yi∣x)和 P ( y i − 1 , y i ∣ x ) P(y_{i-1},y_i|x) P(yi−1,yi∣x),可以使用前向后向算法来完成。
前向概率
定义 α i ( y i ∣ x ) \alpha_i(y_i|x) αi(yi∣x)表示序列位置i的标记是 y i y_i yi时,在位置i之前的部分标记序列的非规范化概率。
而我们在上面定义了:
M
i
(
y
i
−
1
,
y
i
∣
x
)
=
e
x
p
(
∑
k
=
1
K
w
k
f
k
(
y
i
−
1
,
y
i
,
x
,
i
)
)
M_i(y_{i-1},y_i |x) = exp(\sum\limits_{k=1}^Kw_kf_k(y_{i-1},y_i, x,i))
Mi(yi−1,yi∣x)=exp(k=1∑Kwkfk(yi−1,yi,x,i))
用于计算在给定
y
i
−
1
y_{i-1}
yi−1时,从
y
i
−
1
y_{i-1}
yi−1转移到
y
i
y_i
yi的非规范化概率。
那么在得知在位置
i
+
1
i+1
i+1处标记为
y
i
+
1
y_{i+1}
yi+1时,位置
i
+
1
i+1
i+1之前的标记序列非规范化概率
α
i
+
1
(
y
i
+
1
∣
x
)
\alpha_{i+1}(y_{i+1}|x)
αi+1(yi+1∣x)的递推公式:
α
i
+
1
(
y
i
+
1
∣
x
)
=
α
i
(
y
i
∣
x
)
M
i
+
1
(
y
i
+
1
,
y
i
∣
x
)
i
=
1
,
2
,
.
.
.
,
n
+
1
\alpha_{i+1}(y_{i+1}|x) = \alpha_i(y_i|x)M_{i+1}(y_{i+1},y_i|x) \;\; i=1,2,...,n+1
αi+1(yi+1∣x)=αi(yi∣x)Mi+1(yi+1,yi∣x)i=1,2,...,n+1
特别的,在起点处,我们令:
α
0
(
y
0
∣
x
)
=
{
1
y
0
=
s
t
a
r
t
0
e
l
s
e
\alpha_0(y_0|x)= \begin{cases} 1 & {y_0 =start}\\ 0 & {else} \end{cases}
α0(y0∣x)={10y0=startelse
由于在位置
i
+
1
i+1
i+1处,
y
i
+
1
y_{i+1}
yi+1的可能取值有m种,我们用
α
i
(
x
)
\alpha_i(x)
αi(x)表示这m个可能取值对应的前向向量:
α
i
(
x
)
=
(
α
i
(
y
i
=
1
∣
x
)
,
α
i
(
y
i
=
2
∣
x
)
,
.
.
.
α
i
(
y
i
=
m
∣
x
)
)
T
\alpha_i(x) = (\alpha_i(y_i=1|x), \alpha_i(y_i=2|x), ... \alpha_i(y_i=m|x))^T
αi(x)=(αi(yi=1∣x),αi(yi=2∣x),...αi(yi=m∣x))T
则递推公式可以表示为:
α
i
+
1
T
(
x
)
=
α
i
T
(
x
)
M
i
+
1
(
x
)
\alpha_{i+1}^T(x) = \alpha_i^T(x)M_{i+1}(x)
αi+1T(x)=αiT(x)Mi+1(x)
后向概率
同样定义 β i ( y i ∣ x ) \beta_i(y_i|x) βi(yi∣x)表示序列位置i的标记是 y i y_i yi时,在位置i之后的部分(i+1到n的部分)标记序列的非规范化概率。
那么在得知
i
+
1
i+1
i+1处标记为
y
(
i
+
1
)
y_(i+1)
y(i+1)时,位置i之后的部分标记序列的非规范化概率
β
i
(
y
i
∣
x
)
\beta_i(y_i|x)
βi(yi∣x)的递推公式:
β
i
(
y
i
∣
x
)
=
M
i
+
1
(
y
i
,
y
i
+
1
∣
x
)
β
i
+
1
(
y
i
+
1
∣
x
)
\beta_{i}(y_{i}|x) = M_{i+1}(y_i,y_{i+1}|x)\beta_{i+1}(y_{i+1}|x)
βi(yi∣x)=Mi+1(yi,yi+1∣x)βi+1(yi+1∣x)
特别的,在终点处定义:
β
n
+
1
(
y
n
+
1
∣
x
)
=
{
1
y
n
+
1
=
s
t
o
p
0
e
l
s
e
\beta_{n+1}(y_{n+1}|x)= \begin{cases} 1 & {y_{n+1} =stop}\\ 0 & {else} \end{cases}
βn+1(yn+1∣x)={10yn+1=stopelse
如果用向量表示则有:
β
i
(
x
)
=
M
i
+
1
(
x
)
β
i
+
1
(
x
)
\beta_i(x) = M_{i+1}(x)\beta_{i+1}(x)
βi(x)=Mi+1(x)βi+1(x)
规范化因子
Z
(
x
)
Z(x)
Z(x)的表达式为:
Z
(
x
)
=
∑
c
=
1
m
α
n
(
y
c
∣
x
)
=
∑
c
=
1
m
β
1
(
y
c
∣
x
)
Z(x) = \sum\limits_{c=1}^m\alpha_{n}(y_c|x) = \sum\limits_{c=1}^m\beta_{1}(y_c|x)
Z(x)=c=1∑mαn(yc∣x)=c=1∑mβ1(yc∣x)
向量化的表示为:
Z
(
x
)
=
α
n
T
(
x
)
∙
1
=
1
T
∙
β
1
(
x
)
Z(x) = \alpha_{n}^T(x) \bullet \mathbf{1} = \mathbf{1}^T \bullet \beta_{1}(x)
Z(x)=αnT(x)∙1=1T∙β1(x)
其中,1是m维全1向量。
前向后向概率计算
有了前向后向概率的定义和计算方法,我们就很容易计算序列位置i的标记是
y
i
y_i
yi时的条件概率
P
(
y
i
∣
x
)
P(y_i|x)
P(yi∣x):
P
(
y
i
∣
x
)
=
α
i
T
(
y
i
∣
x
)
β
i
(
y
i
∣
x
)
Z
(
x
)
=
α
i
T
(
y
i
∣
x
)
β
i
(
y
i
∣
x
)
α
n
T
(
x
)
∙
1
P(y_i|x) = \frac{\alpha_i^T(y_i|x)\beta_i(y_i|x)}{Z(x)} = \frac{\alpha_i^T(y_i|x)\beta_i(y_i|x)}{ \alpha_{n}^T(x) \bullet \mathbf{1}}
P(yi∣x)=Z(x)αiT(yi∣x)βi(yi∣x)=αnT(x)∙1αiT(yi∣x)βi(yi∣x)
也容易计算序列位置i的标记是
y
i
y_i
yi,位置
i
−
1
i-1
i−1的标记是
y
i
−
1
y_{i-1}
yi−1时的条件概率
P
(
y
i
−
1
,
y
i
∣
x
)
P(y_{i-1},y_i|x)
P(yi−1,yi∣x):
P
(
y
i
−
1
,
y
i
∣
x
)
=
α
i
−
1
T
(
y
i
−
1
∣
x
)
M
i
(
y
i
−
1
,
y
i
∣
x
)
β
i
(
y
i
∣
x
)
Z
(
x
)
=
α
i
−
1
T
(
y
i
−
1
∣
x
)
M
i
(
y
i
−
1
,
y
i
∣
x
)
β
i
(
y
i
∣
x
)
α
n
T
(
x
)
∙
1
\begin{aligned} P(y_{i-1},y_i|x) &= \frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{Z(x)} \\ &= \frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{ \alpha_{n}^T(x) \bullet \mathbf{1}} \end{aligned}
P(yi−1,yi∣x)=Z(x)αi−1T(yi−1∣x)Mi(yi−1,yi∣x)βi(yi∣x)=αnT(x)∙1αi−1T(yi−1∣x)Mi(yi−1,yi∣x)βi(yi∣x)
linear-CRF的期望计算
有了上一节计算的条件概率,我们也可以很方便的计算联合分布 P ( x , y ) P(x,y) P(x,y)与条件分布 P ( y ∣ x ) P(y|x) P(y∣x)的期望。
特征函数
f
k
(
x
,
y
)
f_k(x,y)
fk(x,y)关于条件分布
P
(
y
∣
x
)
P(y|x)
P(y∣x)的期望表达式是:
E
P
(
y
∣
x
)
[
f
k
]
=
E
P
(
y
∣
x
)
[
f
k
(
y
,
x
)
]
=
∑
i
=
1
n
+
1
∑
y
i
−
1
y
i
P
(
y
i
−
1
,
y
i
∣
x
)
f
k
(
y
i
−
1
,
y
i
,
x
,
i
)
=
∑
i
=
1
n
+
1
∑
y
i
−
1
y
i
f
k
(
y
i
−
1
,
y
i
,
x
,
i
)
α
i
−
1
T
(
y
i
−
1
∣
x
)
M
i
(
y
i
−
1
,
y
i
∣
x
)
β
i
(
y
i
∣
x
)
α
n
T
(
x
)
∙
1
\begin{aligned} E_{P(y|x)}[f_k] & = E_{P(y|x)}[f_k(y,x)] \\ & = \sum\limits_{i=1}^{n+1} \sum\limits_{y_{i-1}\;\;y_i}P(y_{i-1},y_i|x)f_k(y_{i-1},y_i,x, i) \\ & = \sum\limits_{i=1}^{n+1} \sum\limits_{y_{i-1}\;\;y_i}f_k(y_{i-1},y_i,x, i) \frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{ \alpha_{n}^T(x) \bullet \mathbf{1}} \end{aligned}
EP(y∣x)[fk]=EP(y∣x)[fk(y,x)]=i=1∑n+1yi−1yi∑P(yi−1,yi∣x)fk(yi−1,yi,x,i)=i=1∑n+1yi−1yi∑fk(yi−1,yi,x,i)αnT(x)∙1αi−1T(yi−1∣x)Mi(yi−1,yi∣x)βi(yi∣x)
同样可以计算联合分布
P
(
x
,
y
)
P(x,y)
P(x,y)的期望:
E
P
(
x
,
y
)
[
f
k
]
=
∑
x
,
y
P
(
x
,
y
)
∑
i
=
1
n
+
1
f
k
(
y
i
−
1
,
y
i
,
x
,
i
)
=
∑
x
P
‾
(
x
)
∑
y
P
(
y
∣
x
)
∑
i
=
1
n
+
1
f
k
(
y
i
−
1
,
y
i
,
x
,
i
)
=
∑
x
P
‾
(
x
)
∑
i
=
1
n
+
1
∑
y
i
−
1
y
i
f
k
(
y
i
−
1
,
y
i
,
x
,
i
)
α
i
−
1
T
(
y
i
−
1
∣
x
)
M
i
(
y
i
−
1
,
y
i
∣
x
)
β
i
(
y
i
∣
x
)
α
n
T
(
x
)
∙
1
\begin{aligned} E_{P(x,y)}[f_k] & = \sum\limits_{x,y}P(x,y) \sum\limits_{i=1}^{n+1}f_k(y_{i-1},y_i,x, i) \\& = \sum\limits_{x}\overline{P}(x) \sum\limits_{y}P(y|x) \sum\limits_{i=1}^{n+1}f_k(y_{i-1},y_i,x, i) \\& = \sum\limits_{x}\overline{P}(x)\sum\limits_{i=1}^{n+1} \sum\limits_{y_{i-1}\;\;y_i}f_k(y_{i-1},y_i,x, i) \frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{ \alpha_{n}^T(x) \bullet \mathbf{1}} \end{aligned}
EP(x,y)[fk]=x,y∑P(x,y)i=1∑n+1fk(yi−1,yi,x,i)=x∑P(x)y∑P(y∣x)i=1∑n+1fk(yi−1,yi,x,i)=x∑P(x)i=1∑n+1yi−1yi∑fk(yi−1,yi,x,i)αnT(x)∙1αi−1T(yi−1∣x)Mi(yi−1,yi∣x)βi(yi∣x)
假设一共有K个特征函数,则
k
=
1
,
2
,
.
.
.
K
k=1,2,...K
k=1,2,...K。
2,学习问题
在linear-CRF模型参数学习问题中,我们给定训练数据集X和对应的标记序列Y,K个特征函数
f
k
(
x
,
y
)
f_k(x,y)
fk(x,y),需要学习linear-CRF的模型参数
w
k
w_k
wk和条件概率
P
w
(
y
∣
x
)
P_w(y|x)
Pw(y∣x),其中条件概率
P
w
(
y
∣
x
)
P_w(y|x)
Pw(y∣x)和模型参数
w
k
w_k
wk满足以下关系:
P
w
(
y
∣
x
)
=
P
(
y
∣
x
)
=
1
Z
w
(
x
)
e
x
p
∑
k
=
1
K
w
k
f
k
(
x
,
y
)
=
e
x
p
∑
k
=
1
K
w
k
f
k
(
x
,
y
)
∑
y
e
x
p
∑
k
=
1
K
w
k
f
k
(
x
,
y
)
P_w(y|x) = P(y|x) = \frac{1}{Z_w(x)}exp\sum\limits_{k=1}^Kw_kf_k(x,y) = \frac{exp\sum\limits_{k=1}^Kw_kf_k(x,y)}{\sum\limits_{y}exp\sum\limits_{k=1}^Kw_kf_k(x,y)}
Pw(y∣x)=P(y∣x)=Zw(x)1expk=1∑Kwkfk(x,y)=y∑expk=1∑Kwkfk(x,y)expk=1∑Kwkfk(x,y)
所以我们的目标就是求出所有的模型参数
w
k
w_k
wk,这样条件概率
P
w
(
y
∣
x
)
P_w(y|x)
Pw(y∣x)可以从上式计算出来。
梯度下降法
在使用梯度下降法求解模型参数之前,我们需要定义我们的优化函数,一般极大化条件分布
P
w
(
y
∣
x
)
P_w(y|x)
Pw(y∣x)的对数似然函数如下:
L
(
w
)
=
l
o
g
∏
x
,
y
P
w
(
y
∣
x
)
P
‾
(
x
,
y
)
=
∑
x
,
y
P
‾
(
x
,
y
)
l
o
g
P
w
(
y
∣
x
)
L(w)= log\prod_{x,y}P_w(y|x)^{\overline{P}(x,y)} = \sum\limits_{x,y}\overline{P}(x,y)logP_w(y|x)
L(w)=logx,y∏Pw(y∣x)P(x,y)=x,y∑P(x,y)logPw(y∣x)
其中
P
‾
(
x
,
y
)
\overline{P}(x,y)
P(x,y)为经验分布,可以从先验知识和训练集样本中得到,这点和最大熵模型类似。为了使用梯度下降法,我们现在极小化
f
(
w
)
=
−
L
(
P
w
)
f(w) = -L(P_w)
f(w)=−L(Pw)如下:
f
(
w
)
=
−
∑
x
,
y
P
‾
(
x
,
y
)
l
o
g
P
w
(
y
∣
x
)
=
∑
x
,
y
P
‾
(
x
,
y
)
l
o
g
Z
w
(
x
)
−
∑
x
,
y
P
‾
(
x
,
y
)
∑
k
=
1
K
w
k
f
k
(
x
,
y
)
=
∑
x
P
‾
(
x
)
l
o
g
Z
w
(
x
)
−
∑
x
,
y
P
‾
(
x
,
y
)
∑
k
=
1
K
w
k
f
k
(
x
,
y
)
=
∑
x
P
‾
(
x
)
l
o
g
∑
y
e
x
p
∑
k
=
1
K
w
k
f
k
(
x
,
y
)
−
∑
x
,
y
P
‾
(
x
,
y
)
∑
k
=
1
K
w
k
f
k
(
x
,
y
)
\begin{aligned}f(w) & = -\sum\limits_{x,y}\overline{P}(x,y)logP_w(y|x) \\ &= \sum\limits_{x,y}\overline{P}(x,y)logZ_w(x) - \sum\limits_{x,y}\overline{P}(x,y)\sum\limits_{k=1}^Kw_kf_k(x,y) \\& = \sum\limits_{x}\overline{P}(x)logZ_w(x) - \sum\limits_{x,y}\overline{P}(x,y)\sum\limits_{k=1}^Kw_kf_k(x,y) \\& = \sum\limits_{x}\overline{P}(x)log\sum\limits_{y}exp\sum\limits_{k=1}^Kw_kf_k(x,y) - \sum\limits_{x,y}\overline{P}(x,y)\sum\limits_{k=1}^Kw_kf_k(x,y) \end{aligned}
f(w)=−x,y∑P(x,y)logPw(y∣x)=x,y∑P(x,y)logZw(x)−x,y∑P(x,y)k=1∑Kwkfk(x,y)=x∑P(x)logZw(x)−x,y∑P(x,y)k=1∑Kwkfk(x,y)=x∑P(x)logy∑expk=1∑Kwkfk(x,y)−x,y∑P(x,y)k=1∑Kwkfk(x,y)
对w求导可以得到:
∂
f
(
w
)
∂
w
=
∑
x
,
y
P
‾
(
x
)
P
w
(
y
∣
x
)
f
(
x
,
y
)
−
∑
x
,
y
P
‾
(
x
,
y
)
f
(
x
,
y
)
\frac{\partial f(w)}{\partial w} = \sum\limits_{x,y}\overline{P}(x)P_w(y|x)f(x,y) - \sum\limits_{x,y}\overline{P}(x,y)f(x,y)
∂w∂f(w)=x,y∑P(x)Pw(y∣x)f(x,y)−x,y∑P(x,y)f(x,y)
有了w的导数表达式,就可以用梯度下降法来迭代求解最优的w了。注意在迭代过程中,每次更新w后,需要同步更新
P
w
(
x
,
y
)
P_w(x,y)
Pw(x,y)以用于下一次迭代的梯度计算。
拟牛顿法
条件随机场模型的学习通过拟牛顿法进行。
CRF的模型:
P
(
y
∣
x
)
=
1
Z
(
x
)
exp
∑
i
=
1
n
w
i
f
i
(
y
,
x
)
Z
(
x
)
=
∑
y
exp
∑
i
=
1
n
w
i
f
i
(
y
,
x
)
\begin{aligned}P(y|x)&=\frac{1}{Z(x)}\exp\sum_{i=1}^nw_if_i(y,x)\\Z(x)&=\sum_y\exp\sum_{i=1}^nw_if_i(y,x)\end{aligned}
P(y∣x)Z(x)=Z(x)1expi=1∑nwifi(y,x)=y∑expi=1∑nwifi(y,x)
已知训练数据的经验概率分布
P
~
(
x
,
y
)
\widetilde {P}(x,y)
P
(x,y),条件概率分布的对数似然函数表示为:
L
P
~
(
P
w
)
=
l
o
g
∏
x
,
y
P
(
y
∣
x
)
P
~
(
x
,
y
)
=
∑
x
,
y
P
~
(
x
,
y
)
log
P
(
y
∣
x
)
L_{\widetilde {P}}(P_w)=log \prod_{x,y}{P}(y|x)^{\widetilde {P}(x,y)} =\sum \limits_{x,y}\widetilde {P}(x,y)\log{P}(y|x)
LP
(Pw)=logx,y∏P(y∣x)P
(x,y)=x,y∑P
(x,y)logP(y∣x)
所以
L
P
~
(
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
)
P
(
y
∣
x
)
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
)
)
∑
y
P
(
y
∣
x
)
=
∑
x
,
y
P
~
(
x
,
y
)
∑
i
=
1
n
w
i
f
i
(
x
,
y
)
−
∑
x
P
~
(
x
)
log
(
Z
w
(
x
)
)
\begin{aligned}L_{\widetilde {P}}(P_w)&=\sum \limits_{x,y}\widetilde {P}(x,y)\log{P}(y|x)\\&=\sum \limits_{x,y}\widetilde {P}(x,y)\sum \limits_{i=1}^{n}w_if_i(x,y) -\sum \limits_{x,y}\widetilde{P}(x,y)\log{(Z_w(x))}\\&=\sum \limits_{x,y}\widetilde {P}(x,y)\sum \limits_{i=1}^{n}w_if_i(x,y) -\sum \limits_{x,y}\widetilde{P}(x)P(y|x)\log{(Z_w(x))}\\&=\sum \limits_{x,y}\widetilde {P}(x,y)\sum \limits_{i=1}^{n}w_if_i(x,y) -\sum \limits_{x}\widetilde{P}(x)\log{(Z_w(x))}\sum_{y}P(y|x)\\&=\sum \limits_{x,y}\widetilde {P}(x,y)\sum \limits_{i=1}^{n}w_if_i(x,y) -\sum \limits_{x}\widetilde{P}(x)\log{(Z_w(x))}\end{aligned}
LP
(Pw)=x,y∑P
(x,y)logP(y∣x)=x,y∑P
(x,y)i=1∑nwifi(x,y)−x,y∑P
(x,y)log(Zw(x))=x,y∑P
(x,y)i=1∑nwifi(x,y)−x,y∑P
(x)P(y∣x)log(Zw(x))=x,y∑P
(x,y)i=1∑nwifi(x,y)−x∑P
(x)log(Zw(x))y∑P(y∣x)=x,y∑P
(x,y)i=1∑nwifi(x,y)−x∑P
(x)log(Zw(x))
以上推导用到了
∑
y
P
(
y
∣
x
)
=
1
\sum\limits_yP(y|x)=1
y∑P(y∣x)=1
要极大化似然函数,即极小化 − L P ~ ( P w ) -L_{\widetilde {P}}(P_w) −LP (Pw)。
所以学习的优化目标是:
min
w
∈
R
n
f
(
w
)
=
∑
x
P
~
(
x
)
log
∑
y
exp
(
∑
i
=
1
n
w
i
f
i
(
y
,
x
)
)
−
∑
x
,
y
P
~
(
x
,
y
)
∑
i
=
1
n
w
i
f
i
(
x
,
y
)
\min\limits_{w \in \R^n} f(w) =\sum \limits_{x}\widetilde{P}(x)\log{\sum_y\exp \left(\sum_{i=1}^nw_if_i(y,x)\right)} - \sum \limits_{x,y}\widetilde {P}(x,y)\sum \limits_{i=1}^{n}w_if_i(x,y)
w∈Rnminf(w)=x∑P
(x)logy∑exp(i=1∑nwifi(y,x))−x,y∑P
(x,y)i=1∑nwifi(x,y)
其梯度函数是
g
(
w
)
=
(
∂
f
(
w
)
∂
w
1
,
∂
f
(
w
)
∂
w
2
,
…
∂
f
(
w
)
∂
w
n
)
T
g(w) = \left( \frac{\partial f(w)}{\partial w_1},\frac{\partial f(w)}{\partial w_2},\ldots \frac{\partial f(w)}{\partial w_n}\right)^T
g(w)=(∂w1∂f(w),∂w2∂f(w),…∂wn∂f(w))T
其中:
∂
f
(
w
)
∂
w
i
=
∑
x
,
y
P
~
(
x
)
P
w
(
y
∣
x
)
f
i
(
y
,
x
)
−
∑
x
,
y
P
~
(
x
,
y
)
f
i
(
x
,
y
)
\frac{\partial f(w)}{\partial w_i}=\sum \limits_{x,y}\widetilde{P}(x)P_w(y|x)f_i(y,x) - \sum \limits_{x,y}\widetilde {P}(x,y)f_i(x,y)
∂wi∂f(w)=x,y∑P
(x)Pw(y∣x)fi(y,x)−x,y∑P
(x,y)fi(x,y)
向量化:
∂
f
(
w
)
∂
w
=
∑
x
,
y
P
~
(
x
)
P
w
(
y
∣
x
)
f
(
y
,
x
)
−
∑
x
,
y
P
~
(
x
,
y
)
f
(
x
,
y
)
\frac{\partial f(w)}{\partial w}=\sum \limits_{x,y}\widetilde{P}(x)P_w(y|x)f(y,x) - \sum \limits_{x,y}\widetilde {P}(x,y)f(x,y)
∂w∂f(w)=x,y∑P
(x)Pw(y∣x)f(y,x)−x,y∑P
(x,y)f(x,y)
条件随机场学习的BFGS算法:
输入:特征函数 f 1 , f 2 , … , f n f_1,f_2,\ldots,f_n f1,f2,…,fn ;经验分布 P ~ ( x , y ) \widetilde P(x,y) P (x,y);
输出:最优参数 w ^ \hat w w^ ; 最优模型 P w ( y ∣ x ) P_w(y|x) Pw(y∣x) 。
(1)选定初始点 w ( 0 ) w^{(0)} w(0) 取 B 0 \mathbf B_0 B0 为正定对称矩阵, k = 0 k=0 k=0。
(2)计算 g k = g ( w ( k ) ) g_k=g(w^{(k)}) gk=g(w(k)) 。若 g k = 0 g_k=0 gk=0 则停止计算,否则转(3)。
(3)由 B k p k = − g k B_kp_k=-g_k Bkpk=−gk 求出 p k p_k pk
(4)一维搜索:求
λ
k
\lambda_k
λk 使得:
f
(
w
(
k
)
+
λ
k
p
k
)
=
min
λ
≥
0
f
(
w
(
k
)
+
λ
p
k
)
f(w^{(k)}+\lambda_kp_k)= \min\limits_{\lambda \geq 0}f(w^{(k)}+\lambda p_k)
f(w(k)+λkpk)=λ≥0minf(w(k)+λpk)
(5)置
w
(
k
+
1
)
=
w
(
k
)
+
λ
k
p
k
w^{(k+1)} = w^{(k)} + \lambda_k p_k
w(k+1)=w(k)+λkpk
(6)计算
g
k
+
1
=
g
(
w
(
k
+
1
)
)
g_{k+1} = g(w^{(k+1)})
gk+1=g(w(k+1)) ,若
g
k
+
1
=
0
g_{k+1} = 0
gk+1=0 ,则停止计算,否则,按下式更新
B
k
+
1
B_{k+1}
Bk+1:
B
k
+
1
=
B
k
+
y
k
y
k
T
y
k
T
δ
k
−
B
k
δ
k
δ
k
T
B
k
δ
k
T
B
k
δ
k
\mathbf B_{k+1} = \mathbf B_{k}+\frac{y_ky_k^T}{y_k^T\delta_k}-\frac{\mathbf B_k\delta_k \delta_k^T\mathbf B_k}{\delta_k^T\mathbf B_k\delta_k}
Bk+1=Bk+ykTδkykykT−δkTBkδkBkδkδkTBk
其中:
y
k
=
g
k
+
1
−
g
k
,
δ
k
=
w
(
k
+
1
)
−
w
k
y_k = g_{k+1} - g_k, \qquad\delta_k=w^{(k+1)} - w^{k}
yk=gk+1−gk,δk=w(k+1)−wk
(7)置
k
=
k
+
1
k=k+1
k=k+1 , 转(3)
3,预测问题
维特比算法解码思路
预测问题也可以理解为解码问题:给定条件随机场的条件概率 P ( y ∣ x ) P(y|x) P(y∣x)和一个观测序列x,要求出满足 P ( y ∣ x ) P(y|x) P(y∣x)最大的序列y。这个解码算法最常用的还是和HMM解码类似的维特比算法。
对于我们linear-CRF中的维特比算法,我们定义一个局部状态
δ
i
(
l
)
\delta_i(l)
δi(l),表示在位置
i
i
i标记
l
l
l各个可能取值(1,2…m)对应的非规范化概率的最大值。之所以用非规范化概率是,规范化因子
Z
(
x
)
Z(x)
Z(x)不影响最大值的比较。根据
δ
i
(
l
)
\delta_i(l)
δi(l)的定义,我们递推在位置
i
+
1
i+1
i+1标记
l
l
l的表达式为:
δ
i
+
1
(
l
)
=
max
1
≤
j
≤
m
{
δ
i
(
j
)
+
∑
k
=
1
K
w
k
f
k
(
y
i
=
j
,
y
i
+
1
=
l
,
x
,
i
)
}
,
l
=
1
,
2
,
.
.
.
m
\delta_{i+1}(l) = \max_{1 \leq j \leq m}\{\delta_i(j) + \sum\limits_{k=1}^Kw_kf_k(y_{i} =j,y_{i+1} = l,x,i)\}\;, l=1,2,...m
δi+1(l)=1≤j≤mmax{δi(j)+k=1∑Kwkfk(yi=j,yi+1=l,x,i)},l=1,2,...m
我们需要用另一个局部状态
Ψ
i
+
1
(
l
)
\Psi_{i+1}(l)
Ψi+1(l)来记录使
δ
i
+
1
(
l
)
\delta_{i+1}(l)
δi+1(l)达到最大的位置
i
i
i的标记取值,这个值用来最终回溯最优解,
Ψ
i
+
1
(
l
)
\Psi_{i+1}(l)
Ψi+1(l)的递推表达式为:
Ψ
i
+
1
(
l
)
=
a
r
g
max
1
≤
j
≤
m
{
δ
i
(
j
)
+
∑
k
=
1
K
w
k
f
k
(
y
i
=
j
,
y
i
+
1
=
l
,
x
,
i
)
}
,
l
=
1
,
2
,
.
.
.
m
\Psi_{i+1}(l) = arg\;\max_{1 \leq j \leq m}\{\delta_i(j) + \sum\limits_{k=1}^Kw_kf_k(y_{i} =j,y_{i+1} = l,x,i)\}\; ,l=1,2,...m
Ψi+1(l)=arg1≤j≤mmax{δi(j)+k=1∑Kwkfk(yi=j,yi+1=l,x,i)},l=1,2,...m
维特比算法流程
linear-CRF模型维特比算法流程:
输入:模型的K个特征函数,和对应的K个权重。观测序列 x = ( x 1 , x 2 , . . . x n ) x=(x_1,x_2,...x_n) x=(x1,x2,...xn),可能的标记个数m
输出:最优标记序列 y ∗ = ( y 1 ∗ , y 2 ∗ , . . . y n ∗ ) y^* =(y_1^*,y_2^*,...y_n^*) y∗=(y1∗,y2∗,...yn∗)
具体而言:
1,初始化:
δ
1
(
l
)
=
∑
k
=
1
K
w
k
f
k
(
y
0
=
s
t
a
r
t
,
y
1
=
l
,
x
,
i
)
}
,
l
=
1
,
2
,
.
.
.
m
Ψ
1
(
l
)
=
s
t
a
r
t
,
l
=
1
,
2
,
.
.
.
m
\delta_{1}(l) = \sum\limits_{k=1}^Kw_kf_k(y_{0} =start,y_{1} = l,x,i)\}\;, l=1,2,...m \\ \Psi_{1}(l) = start\;, l=1,2,...m
δ1(l)=k=1∑Kwkfk(y0=start,y1=l,x,i)},l=1,2,...mΨ1(l)=start,l=1,2,...m
2,对于
i
=
1
,
2...
n
−
1
i=1,2...n-1
i=1,2...n−1进行递推:
δ
i
+
1
(
l
)
=
max
1
≤
j
≤
m
{
δ
i
(
j
)
+
∑
k
=
1
K
w
k
f
k
(
y
i
=
j
,
y
i
+
1
=
l
,
x
,
i
)
}
,
l
=
1
,
2
,
.
.
.
m
\delta_{i+1}(l) = \max_{1 \leq j \leq m}\{\delta_i(j) + \sum\limits_{k=1}^Kw_kf_k(y_{i} =j,y_{i+1} = l,x,i)\}\;, l=1,2,...m
δi+1(l)=1≤j≤mmax{δi(j)+k=1∑Kwkfk(yi=j,yi+1=l,x,i)},l=1,2,...m
Ψ i + 1 ( l ) = a r g max 1 ≤ j ≤ m { δ i ( j ) + ∑ k = 1 K w k f k ( y i = j , y i + 1 = l , x , i ) } , l = 1 , 2 , . . . m \Psi_{i+1}(l) = arg\;\max_{1 \leq j \leq m}\{\delta_i(j) + \sum\limits_{k=1}^Kw_kf_k(y_{i} =j,y_{i+1} = l,x,i)\}\; ,l=1,2,...m Ψi+1(l)=arg1≤j≤mmax{δi(j)+k=1∑Kwkfk(yi=j,yi+1=l,x,i)},l=1,2,...m
3,
i
i
i迭代到n-1时停止:
y
n
∗
=
a
r
g
max
1
≤
j
≤
m
δ
n
(
j
)
y_n^* = arg\;\max_{1 \leq j \leq m}\delta_n(j)
yn∗=arg1≤j≤mmaxδn(j)
4,回溯:
y
i
∗
=
Ψ
i
+
1
(
y
i
+
1
∗
)
,
i
=
n
−
1
,
n
−
2
,
.
.
.
1
y_i^* = \Psi_{i+1}(y_{i+1}^*)\;, i=n-1,n-2,...1
yi∗=Ψi+1(yi+1∗),i=n−1,n−2,...1
最终得到的标记序列为:
y
∗
=
(
y
1
∗
,
y
2
∗
,
.
.
.
y
n
∗
)
y^* =(y_1^*,y_2^*,...y_n^*)
y∗=(y1∗,y2∗,...yn∗)
linear-CRF模型维特比算法实例
假设输入的都是三个词的句子,即 X = ( X 1 , X 2 , X 3 ) X=(X_1,X_2,X_3) X=(X1,X2,X3),输出的词性标记为 Y = ( Y 1 , Y 2 , Y 3 ) Y=(Y_1,Y_2,Y_3) Y=(Y1,Y2,Y3),其中 Y ∈ { 1 ( 名 词 ) , 2 ( 动 词 ) } Y \in \{1(名词),2(动词)\} Y∈{1(名词),2(动词)}。
这里只标记出取值为1的特征函数如下:
t
1
=
t
1
(
y
i
−
1
=
1
,
y
i
=
2
,
x
,
i
)
,
i
=
2
,
3
,
λ
1
=
1
t
2
=
t
2
(
y
1
=
1
,
y
2
=
1
,
x
,
2
)
λ
2
=
0.6
t
3
=
t
3
(
y
2
=
2
,
y
3
=
1
,
x
,
3
)
λ
3
=
1
t
4
=
t
4
(
y
1
=
2
,
y
2
=
1
,
x
,
2
)
λ
4
=
1
t
5
=
t
5
(
y
2
=
2
,
y
3
=
2
,
x
,
3
)
λ
5
=
0.2
s
1
=
s
1
(
y
1
=
1
,
x
,
1
)
μ
1
=
1
s
2
=
s
2
(
y
i
=
2
,
x
,
i
)
,
i
=
1
,
2
,
μ
2
=
0.5
s
3
=
s
3
(
y
i
=
1
,
x
,
i
)
,
i
=
2
,
3
,
μ
3
=
0.8
s
4
=
s
4
(
y
3
=
2
,
x
,
3
)
μ
4
=
0.5
t_1 =t_1(y_{i-1} = 1, y_i =2,x,i), i =2,3,\;\;\lambda_1=1\\ t_2 =t_2(y_1=1,y_2=1,x,2)\;\;\lambda_2=0.6\\ t_3 =t_3(y_2=2,y_3=1,x,3)\;\;\lambda_3=1\\ t_4 =t_4(y_1=2,y_2=1,x,2)\;\;\lambda_4=1\\ t_5 =t_5(y_2=2,y_3=2,x,3)\;\;\lambda_5=0.2\\ s_1 =s_1(y_1=1,x,1)\;\;\mu_1 =1\\ s_2 =s_2( y_i =2,x,i), i =1,2,\;\;\mu_2=0.5\\ s_3 =s_3( y_i =1,x,i), i =2,3,\;\;\mu_3=0.8\\ s_4 =s_4(y_3=2,x,3)\;\;\mu_4 =0.5
t1=t1(yi−1=1,yi=2,x,i),i=2,3,λ1=1t2=t2(y1=1,y2=1,x,2)λ2=0.6t3=t3(y2=2,y3=1,x,3)λ3=1t4=t4(y1=2,y2=1,x,2)λ4=1t5=t5(y2=2,y3=2,x,3)λ5=0.2s1=s1(y1=1,x,1)μ1=1s2=s2(yi=2,x,i),i=1,2,μ2=0.5s3=s3(yi=1,x,i),i=2,3,μ3=0.8s4=s4(y3=2,x,3)μ4=0.5
求标记(1,2,2)的最可能的标记序列。
首先初始化:
δ
1
(
1
)
=
μ
1
s
1
=
1
δ
1
(
2
)
=
μ
2
s
2
=
0.5
Ψ
1
(
1
)
=
Ψ
1
(
2
)
=
s
t
a
r
t
\delta_1(1) = \mu_1s_1 = 1\;\;\;\delta_1(2) = \mu_2s_2 = 0.5\;\;\;\Psi_{1}(1) =\Psi_{1}(2) = start
δ1(1)=μ1s1=1δ1(2)=μ2s2=0.5Ψ1(1)=Ψ1(2)=start
接下来开始递推,先看位置2的:
δ
2
(
1
)
=
m
a
x
{
δ
1
(
1
)
+
t
2
λ
2
+
μ
3
s
3
,
δ
1
(
2
)
+
t
4
λ
4
+
μ
3
s
3
}
=
m
a
x
{
1
+
0.6
+
0.8
,
0.5
+
1
+
0.8
}
=
2.4
\begin{aligned} \delta_2(1) &= max\{\delta_1(1) + t_2\lambda_2+\mu_3s_3, \delta_1(2) + t_4\lambda_4+\mu_3s_3 \} \\ &= max\{1+0.6+0.8,0.5+1+0.8\} \\ &=2.4\;\;\;\\ \end{aligned}
δ2(1)=max{δ1(1)+t2λ2+μ3s3,δ1(2)+t4λ4+μ3s3}=max{1+0.6+0.8,0.5+1+0.8}=2.4
Ψ 2 ( 1 ) = 1 \Psi_{2}(1) =1 Ψ2(1)=1
δ 2 ( 2 ) = m a x { δ 1 ( 1 ) + t 1 λ 1 + μ 2 s 2 , δ 1 ( 2 ) + μ 2 s 2 } = m a x { 1 + 1 + 0.5 , 0.5 + 0.5 } = 2.5 \begin{aligned} \delta_2(2) &= max\{\delta_1(1) + t_1\lambda_1+\mu_2s_2, \delta_1(2) + \mu_2s_2\}\\& = max\{1+1+0.5,0.5+0.5\} \\&=2.5\;\;\; \end{aligned} δ2(2)=max{δ1(1)+t1λ1+μ2s2,δ1(2)+μ2s2}=max{1+1+0.5,0.5+0.5}=2.5
Ψ 2 ( 2 ) = 1 \Psi_{2}(2) =1 Ψ2(2)=1
再看位置3的:
δ
3
(
1
)
=
m
a
x
{
δ
2
(
1
)
+
μ
3
s
3
,
δ
2
(
2
)
+
t
3
λ
3
+
μ
3
s
3
}
=
m
a
x
{
2.4
+
0.8
,
2.5
+
1
+
0.8
}
=
4.3
\begin{aligned} \delta_3(1) &= max\{\delta_2(1) +\mu_3s_3, \delta_2(2) + t_3\lambda_3+\mu_3s_3\} \\&= max\{2.4+0.8,2.5+1+0.8\} \\&=4.3 \end{aligned}
δ3(1)=max{δ2(1)+μ3s3,δ2(2)+t3λ3+μ3s3}=max{2.4+0.8,2.5+1+0.8}=4.3
Ψ 3 ( 1 ) = 2 \Psi_{3}(1) =2 Ψ3(1)=2
δ 3 ( 2 ) = m a x { δ 2 ( 1 ) + t 1 λ 1 + μ 4 s 4 , δ 2 ( 2 ) + t 5 λ 5 + μ 4 s 4 } = m a x { 2.4 + 1 + 0.5 , 2.5 + 0.2 + 0.5 } = 3.9 \begin{aligned} \delta_3(2) &= max\{\delta_2(1) +t_1\lambda_1 + \mu_4s_4, \delta_2(2) + t_5\lambda_5+\mu_4s_4\} \\&= max\{2.4+1+0.5,2.5+0.2+0.5\} \\&=3.9 \end{aligned} δ3(2)=max{δ2(1)+t1λ1+μ4s4,δ2(2)+t5λ5+μ4s4}=max{2.4+1+0.5,2.5+0.2+0.5}=3.9
Ψ 3 ( 2 ) = 1 \Psi_{3}(2) =1 Ψ3(2)=1
最终得到
y
3
∗
=
arg
m
a
x
{
δ
3
(
1
)
,
δ
3
(
2
)
}
y_3^* =\arg\;max\{\delta_3(1), \delta_3(2)\}
y3∗=argmax{δ3(1),δ3(2)}递推回去,得到:
y
2
∗
=
Ψ
3
(
1
)
=
2
y
1
∗
=
Ψ
2
(
2
)
=
1
y_2^* = \Psi_3(1) =2\;\;y_1^* = \Psi_2(2) =1
y2∗=Ψ3(1)=2y1∗=Ψ2(2)=1
即最终的结果为
(
1
,
2
,
1
)
(1,2,1)
(1,2,1),即标记为(名词,动词,名词)。
参考文章:
《统计学习方法 第二版》