文章目录
公式输入请参考: 在线Latex公式
起源(HMM vs CRF)
可以看到下图中横向变化,和纵向的对比(有向图和无向图)。

求有向图和无向图联合概率

有向图的联合概率等于各个节点的条件概率的乘积,当然,
x
4
,
x
5
x_4,x_5
x4,x5由于没有入度,所以不用条件。
注意,在计算条件概率的时候,只需要考虑局部的取值类型即可,例如:
p
(
x
2
∣
x
3
)
p(x_2|x_3)
p(x2∣x3),只用考虑
x
3
x_3
x3的取值(假设它是离散型),如果有两种值,就只用考虑两种情况。
无向图相对而言麻烦点:

这里要引入factor/feature function,这里引入这个东西就是要把上面的无向图进行拆分。拆分的结果就是上图中的绿色圈圈,三个三个一组。这样的一组也叫做clique(可以一个点做一个clique,可以两个点做一个clique,当然也可以三个做一个clique,但是必须是两两相互关联的。)拆分好后,联合概率就可以写为:
p
(
x
1
,
x
2
,
x
3
,
x
4
,
x
5
)
=
ϕ
1
(
x
1
,
x
2
,
x
3
)
ϕ
2
(
x
2
,
x
3
,
x
5
)
ϕ
3
(
x
3
,
x
4
,
x
5
)
p(x_1,x_2,x_3,x_4,x_5)=\phi_1(x_1,x_2,x_3)\phi_2(x_2,x_3,x_5)\phi_3(x_3,x_4,x_5)
p(x1,x2,x3,x4,x5)=ϕ1(x1,x2,x3)ϕ2(x2,x3,x5)ϕ3(x3,x4,x5)
ϕ
\phi
ϕ就是feature function
由于联合概率也是概率,为了保证概率的值域是[0,1],我们需要对上面的式子进行归一化,除以一个normalization term
z
(
x
)
z(x)
z(x),也叫做partition function:
p
(
x
1
,
x
2
,
x
3
,
x
4
,
x
5
)
=
ϕ
1
(
x
1
,
x
2
,
x
3
)
ϕ
2
(
x
2
,
x
3
,
x
5
)
ϕ
3
(
x
3
,
x
4
,
x
5
)
z
(
x
)
p(x_1,x_2,x_3,x_4,x_5)=\cfrac{\phi_1(x_1,x_2,x_3)\phi_2(x_2,x_3,x_5)\phi_3(x_3,x_4,x_5)}{z(x)}
p(x1,x2,x3,x4,x5)=z(x)ϕ1(x1,x2,x3)ϕ2(x2,x3,x5)ϕ3(x3,x4,x5)
partition function不好求。。。因为它是依赖于全局的变量(有向图是局部依赖)。
Log-Linear Model
逻辑回归和CRF都属于Log-Linear Model的一个特例,因此我们先来看看Log-Linear Model是什么。
p
(
y
∣
x
;
w
)
=
e
x
p
∑
j
=
1
J
w
j
F
j
(
x
,
y
)
Z
(
x
,
w
)
p(y|x;w)=\cfrac{exp\sum_{j=1}^Jw_jF_j(x,y)}{Z(x,w)}
p(y∣x;w)=Z(x,w)exp∑j=1JwjFj(x,y)
其中:
左边是条件概率,是一个判别模型。
F
j
(
x
,
y
)
F_j(x,y)
Fj(x,y)是feature function(通常是手工设置,给定数据集后,这项相当与已知条件),
w
j
w_j
wj是模型参数,
Z
(
x
,
w
)
Z(x,w)
Z(x,w)是normalization term。
Multinomial Logistic Regression
给出feature function的定义:
F
j
(
x
,
y
)
=
x
i
⋅
I
(
y
=
c
)
F_j(x,y)=x_i\cdot I(y=c)
Fj(x,y)=xi⋅I(y=c)
x是d维的特征向量
y是分类,取值范围:
{
1
,
2
,
.
.
.
,
c
}
\{1,2,...,c\}
{1,2,...,c}。
I是indicator function,意思是当函数中的条件满足的时候函数取值为1,否则取值为0.
假设现在
c
=
3
c=3
c=3,那么特征函数的维度是
3
×
d
3\times d
3×d也就是
j
∈
1
,
2
,
3
,
.
.
.
,
3
d
j\in1,2,3,...,3d
j∈1,2,3,...,3d,同样的参数
w
w
w的维度也是
3
×
d
3\times d
3×d
下面是不同的分类的时候,特征函数的取值情况如下:
当
y
=
1
y=1
y=1时
F
1
(
x
,
y
)
=
x
1
F
2
(
x
,
y
)
=
x
2
⋮
F
d
(
x
,
y
)
=
x
d
F
d
+
1
(
x
,
y
)
=
0
⋮
F
2
d
(
x
,
y
)
=
0
⋮
F
3
d
(
x
,
y
)
=
0
\begin{matrix} F_1(x,y)=x_1 \\ F_2(x,y)=x_2 \\ \vdots\\ F_d(x,y)=x_d \\ F_{d+1}(x,y)=0 \\ \vdots\\ F_{2d}(x,y)=0\\ \vdots\\ F_{3d}(x,y)=0 \end{matrix}
F1(x,y)=x1F2(x,y)=x2⋮Fd(x,y)=xdFd+1(x,y)=0⋮F2d(x,y)=0⋮F3d(x,y)=0
当
y
=
2
y=2
y=2时
F
1
(
x
,
y
)
=
0
F
2
(
x
,
y
)
=
0
⋮
F
d
(
x
,
y
)
=
0
F
d
+
1
(
x
,
y
)
=
x
1
F
d
+
2
(
x
,
y
)
=
x
2
⋮
F
2
d
(
x
,
y
)
=
x
d
F
2
d
+
1
(
x
,
y
)
=
0
⋮
F
3
d
(
x
,
y
)
=
0
\begin{matrix} F_1(x,y)=0 \\ F_2(x,y)=0 \\ \vdots\\ F_d(x,y)=0 \\ F_{d+1}(x,y)=x_1 \\ F_{d+2}(x,y)=x_2 \\ \vdots\\ F_{2d}(x,y)=x_d\\ F_{2d+1}(x,y)=0\\ \vdots\\ F_{3d}(x,y)=0 \end{matrix}
F1(x,y)=0F2(x,y)=0⋮Fd(x,y)=0Fd+1(x,y)=x1Fd+2(x,y)=x2⋮F2d(x,y)=xdF2d+1(x,y)=0⋮F3d(x,y)=0
当
y
=
3
y=3
y=3时
F
1
(
x
,
y
)
=
0
F
2
(
x
,
y
)
=
0
⋮
F
d
(
x
,
y
)
=
0
F
d
+
1
(
x
,
y
)
=
0
F
d
+
2
(
x
,
y
)
=
0
⋮
F
2
d
(
x
,
y
)
=
0
F
2
d
+
1
(
x
,
y
)
=
x
1
F
2
d
+
2
(
x
,
y
)
=
x
2
⋮
F
3
d
(
x
,
y
)
=
x
d
\begin{matrix} F_1(x,y)=0 \\ F_2(x,y)=0 \\ \vdots\\ F_d(x,y)=0 \\ F_{d+1}(x,y)=0 \\ F_{d+2}(x,y)=0\\ \vdots\\ F_{2d}(x,y)=0\\ F_{2d+1}(x,y)=x_1\\ F_{2d+2}(x,y)=x_2\\ \vdots\\ F_{3d}(x,y)=x_d \end{matrix}
F1(x,y)=0F2(x,y)=0⋮Fd(x,y)=0Fd+1(x,y)=0Fd+2(x,y)=0⋮F2d(x,y)=0F2d+1(x,y)=x1F2d+2(x,y)=x2⋮F3d(x,y)=xd
总共有3d个feature function等式。
下面来看看当分类为1的时候模型概率的计算(2d~3d的项都去掉了,因为都为0):
p
(
y
=
1
∣
x
;
w
)
=
exp
∑
j
=
1
3
d
w
j
F
j
(
x
,
y
)
Z
(
x
,
w
)
=
exp
∑
j
=
1
d
w
j
x
j
Z
(
x
,
w
)
p(y=1|x;w)=\cfrac{\exp\sum_{j=1}^{3d}w_jF_j(x,y)}{Z(x,w)}=\cfrac{\exp\sum_{j=1}^{d}w_jx_j}{Z(x,w)}
p(y=1∣x;w)=Z(x,w)exp∑j=13dwjFj(x,y)=Z(x,w)exp∑j=1dwjxj
下面来看看当分类为2的时候模型概率的计算:
p
(
y
=
2
∣
x
;
w
)
=
exp
∑
j
=
1
3
d
w
j
F
j
(
x
,
y
)
Z
(
x
,
w
)
=
exp
∑
j
=
d
+
1
2
d
w
j
x
j
−
d
Z
(
x
,
w
)
p(y=2|x;w)=\cfrac{\exp\sum_{j=1}^{3d}w_jF_j(x,y)}{Z(x,w)}=\cfrac{\exp\sum_{j=d+1}^{2d}w_jx_{j-d}}{Z(x,w)}
p(y=2∣x;w)=Z(x,w)exp∑j=13dwjFj(x,y)=Z(x,w)exp∑j=d+12dwjxj−d
注意这里的x的下标是j-d,因为x的下标范围是1-d,但是j是从d+1到2d,所以这里要减去一个d,避免数组越界。
下面来看看当分类为3的时候模型概率的计算:
p
(
y
=
3
∣
x
;
w
)
=
exp
∑
j
=
1
3
d
w
j
F
j
(
x
,
y
)
Z
(
x
,
w
)
=
exp
∑
j
=
2
d
+
1
3
d
w
j
x
j
−
2
d
Z
(
x
,
w
)
p(y=3|x;w)=\cfrac{\exp\sum_{j=1}^{3d}w_jF_j(x,y)}{Z(x,w)}=\cfrac{\exp\sum_{j=2d+1}^{3d}w_jx_{j-2d}}{Z(x,w)}
p(y=3∣x;w)=Z(x,w)exp∑j=13dwjFj(x,y)=Z(x,w)exp∑j=2d+13dwjxj−2d
为了进一步展开,我们把参数写开:
w
=
(
w
1
,
w
2
,
.
.
.
,
w
d
,
w
d
+
1
,
.
.
.
,
w
2
d
,
w
2
d
+
1
,
.
.
.
,
w
3
d
)
T
w=(w_1,w_2,...,w_d,w_{d+1},...,w_{2d},w_{2d+1},...,w_{3d})^T
w=(w1,w2,...,wd,wd+1,...,w2d,w2d+1,...,w3d)T
把它每d个分一个段,写成:
w
=
(
w
(
1
)
,
w
(
2
)
,
w
(
3
)
)
T
w=(w^{(1)},w^{(2)},w^{(3)})^T
w=(w(1),w(2),w(3))T
那么,上面的分类的模型概率计算可以写为:
p
(
y
=
1
∣
x
;
w
)
=
exp
(
w
(
1
)
T
⋅
x
)
Z
(
x
,
w
)
p(y=1|x;w)=\cfrac{\exp(w^{(1)T}\cdot x)}{Z(x,w)}
p(y=1∣x;w)=Z(x,w)exp(w(1)T⋅x)
p
(
y
=
2
∣
x
;
w
)
=
exp
(
w
(
2
)
T
⋅
x
)
Z
(
x
,
w
)
p(y=2|x;w)=\cfrac{\exp(w^{(2)T}\cdot x)}{Z(x,w)}
p(y=2∣x;w)=Z(x,w)exp(w(2)T⋅x)
p
(
y
=
3
∣
x
;
w
)
=
exp
(
w
(
3
)
T
⋅
x
)
Z
(
x
,
w
)
p(y=3|x;w)=\cfrac{\exp(w^{(3)T}\cdot x)}{Z(x,w)}
p(y=3∣x;w)=Z(x,w)exp(w(3)T⋅x)
normalization term
z
(
x
,
w
)
z(x,w)
z(x,w)可以写成:
Z
(
x
,
w
)
=
exp
(
w
(
1
)
T
⋅
x
)
+
exp
(
w
(
2
)
T
⋅
x
)
+
exp
(
w
(
3
)
T
⋅
x
)
Z(x,w)=\exp(w^{(1)T}\cdot x)+\exp(w^{(2)T}\cdot x)+\exp(w^{(3)T}\cdot x)
Z(x,w)=exp(w(1)T⋅x)+exp(w(2)T⋅x)+exp(w(3)T⋅x)
模型概率写成:
p
(
y
=
1
∣
x
;
w
)
=
e
w
(
1
)
T
⋅
x
∑
i
=
1
3
e
w
(
i
)
T
⋅
x
p(y=1|x;w)=\cfrac{e^{w^{(1)T\cdot x}}}{\sum_{i=1}^3e^{w^{(i)T\cdot x}}}
p(y=1∣x;w)=∑i=13ew(i)T⋅xew(1)T⋅x
p
(
y
=
2
∣
x
;
w
)
=
e
w
(
2
)
T
⋅
x
∑
i
=
1
3
e
w
(
i
)
T
⋅
x
p(y=2|x;w)=\cfrac{e^{w^{(2)T\cdot x}}}{\sum_{i=1}^3e^{w^{(i)T\cdot x}}}
p(y=2∣x;w)=∑i=13ew(i)T⋅xew(2)T⋅x
p
(
y
=
2
∣
x
;
w
)
=
e
w
(
3
)
T
⋅
x
∑
i
=
1
3
e
w
(
i
)
T
⋅
x
p(y=2|x;w)=\cfrac{e^{w^{(3)T\cdot x}}}{\sum_{i=1}^3e^{w^{(i)T\cdot x}}}
p(y=2∣x;w)=∑i=13ew(i)T⋅xew(3)T⋅x
以上实际上就是多元逻辑回归(Multinomial Logistic Regression)的形式。
Feature function
上面定义的feature function是:
F
j
(
x
,
y
)
=
x
i
⋅
I
(
y
=
c
)
F_j(x,y)=x_i\cdot I(y=c)
Fj(x,y)=xi⋅I(y=c)
实际上,我们的feature function通常可以定义为(把上面的点乘左右分别看成AB):
F
j
(
x
,
y
)
=
A
a
(
x
)
B
b
(
y
)
F_j(x,y)=A_a(x)B_b(y)
Fj(x,y)=Aa(x)Bb(y)
其中:
B
b
(
y
)
B_b(y)
Bb(y)是标签。
A
a
(
x
)
A_a(x)
Aa(x)是特征,例如:
A
1
(
x
)
A_1(x)
A1(x):单词x是大写或小写
A
2
(
x
)
A_2(x)
A2(x):单词x的长度
A
3
(
x
)
A_3(x)
A3(x):单词x的前缀是否是xx
不同的feature function得到的模型也不一样。
CRF:Log-Linear Model for Sequential Data
CRF其实就是Log-Linear Model处理时序数据的特例,因此,我们把Log-Linear Model的条件概率模型写出来,然后假设数据x是一个序列,来进行推导。原型
p
(
y
∣
x
;
w
)
=
1
Z
(
x
,
w
)
e
x
p
∑
j
=
1
J
w
j
F
j
(
x
,
y
)
p(y|x;w)=\cfrac{1}{Z(x,w)}exp\sum_{j=1}^Jw_jF_j(x,y)
p(y∣x;w)=Z(x,w)1expj=1∑JwjFj(x,y)
我们假设:
x
ˉ
\bar x
xˉ是观测到的时序数据,类似一句话。
相应的有:
y
ˉ
\bar y
yˉ是观测到的时序数据对应的标签。
新的模型:
p
(
y
ˉ
∣
x
ˉ
;
w
)
=
1
Z
(
x
,
w
)
e
x
p
∑
j
=
1
J
w
j
F
j
(
x
ˉ
,
y
ˉ
)
p(\bar y|\bar x;w)=\cfrac{1}{Z(x,w)}exp\sum_{j=1}^Jw_jF_j(\bar x,\bar y)
p(yˉ∣xˉ;w)=Z(x,w)1expj=1∑JwjFj(xˉ,yˉ)
由于不同的
F
j
(
x
ˉ
,
y
ˉ
)
F_j(\bar x,\bar y)
Fj(xˉ,yˉ)可以得到不同类型的模型,因此我们先从最简单的CRF来开始推。
linear chain CRF,考虑到时序数据的特征,对特征函数做相应的定义:
p
(
y
ˉ
∣
x
ˉ
;
w
)
=
1
Z
(
x
,
w
)
e
x
p
∑
j
=
1
J
w
j
F
j
(
x
ˉ
,
y
ˉ
)
=
1
Z
(
x
,
w
)
e
x
p
∑
j
=
1
J
w
j
∑
i
=
2
n
f
j
(
y
i
−
1
,
y
i
,
x
ˉ
,
i
)
p(\bar y|\bar x;w)=\cfrac{1}{Z(x,w)}exp\sum_{j=1}^Jw_jF_j(\bar x,\bar y)\\ =\cfrac{1}{Z(x,w)}exp\sum_{j=1}^Jw_j\sum_{i=2}^nf_j(y_{i-1},y_i,\bar x,i)
p(yˉ∣xˉ;w)=Z(x,w)1expj=1∑JwjFj(xˉ,yˉ)=Z(x,w)1expj=1∑Jwji=2∑nfj(yi−1,yi,xˉ,i)
相当于把第j个特征函数看做是一个和时序有关的特征,然后把这个时序展开,并和
x
ˉ
\bar x
xˉ组成之前说过的factor,这里的i是时间步

说人话就是本来是整个序列
y
ˉ
\bar y
yˉ和
x
ˉ
\bar x
xˉ的特征,现在把
y
ˉ
\bar y
yˉ拆分成
y
1
,
y
2
,
⋯
,
y
n
y_1,y_2,\cdots,y_n
y1,y2,⋯,yn,然后分别将拆分后的y和
x
ˉ
\bar x
xˉ设置feature function。这里怎么拆也是超参数,上图是两个y一组(
y
i
−
1
,
y
i
y_{i-1},y_i
yi−1,yi)。拆出来的y和
x
ˉ
\bar x
xˉ计算出来的特征做加权求和,得到整个序列
y
ˉ
\bar y
yˉ和
x
ˉ
\bar x
xˉ的特征
接下来看linear chain CRF两个重要问题:inference和参数估计
Inference Problem
问题描述:给定
w
,
x
ˉ
w,\bar x
w,xˉ,求
y
ˉ
\bar y
yˉ:
y
^
=
a
r
g
max
y
ˉ
p
(
y
ˉ
∣
x
ˉ
;
w
)
=
a
r
g
max
y
ˉ
∑
j
=
1
J
w
j
F
j
(
x
ˉ
,
y
ˉ
)
\hat y=arg\underset{\bar y}{\max}p(\bar y|\bar x;w)=arg\underset{\bar y}{\max}\sum_{j=1}^Jw_jF_j(\bar x,\bar y)
y^=argyˉmaxp(yˉ∣xˉ;w)=argyˉmaxj=1∑JwjFj(xˉ,yˉ)
这里省略掉了normalization term,因为求极值的时候这个可以看做常量。继续写:
y
^
=
a
r
g
max
y
ˉ
∑
j
=
1
J
w
j
∑
i
=
2
n
f
j
(
y
i
−
1
,
y
i
,
x
ˉ
,
i
)
\hat y=arg\underset{\bar y}{\max}\sum_{j=1}^Jw_j\sum_{i=2}^nf_j(y_{i-1},y_i,\bar x,i)
y^=argyˉmaxj=1∑Jwji=2∑nfj(yi−1,yi,xˉ,i)
我们定义:
g
i
(
y
i
−
1
,
y
i
)
=
∑
j
=
1
J
w
j
f
j
(
y
i
−
1
,
y
i
,
x
ˉ
,
i
)
g_i(y_{i-1},y_i)=\sum_{j=1}^Jw_jf_j(y_{i-1},y_i,\bar x,i)
gi(yi−1,yi)=j=1∑Jwjfj(yi−1,yi,xˉ,i)
因此:
y
^
=
a
r
g
max
y
ˉ
∑
i
=
2
n
g
i
(
y
i
−
1
,
y
i
)
\hat y=arg\underset{\bar y}{\max}\sum_{i=2}^ng_i(y_{i-1},y_i)
y^=argyˉmaxi=2∑ngi(yi−1,yi)
这里借鉴上节HMM中维特比算法,求当前点的最优解,是在前一个时刻的最优解的基础上进行求极值即可:


写成数学表达:
u
(
k
,
v
)
=
max
y
1
,
.
.
.
,
y
k
−
1
∑
i
=
1
k
−
1
g
i
(
y
i
−
1
,
y
i
)
+
g
k
(
y
k
−
1
,
v
)
u(k,v)=\underset{y_1,...,y_{k-1}}{\max}\sum_{i=1}^{k-1}g_i(y_{i-1},y_i)+g_k(y_{k-1},v)
u(k,v)=y1,...,yk−1maxi=1∑k−1gi(yi−1,yi)+gk(yk−1,v)
把
y
k
−
1
y_{k-1}
yk−1单独拿出来,中括号里面就是上面的子问题。
u
(
k
,
v
)
=
max
y
k
−
1
[
max
y
1
,
.
.
.
,
y
k
−
2
∑
i
=
1
k
−
2
g
i
(
y
i
−
1
,
y
i
)
+
g
k
−
1
(
y
k
−
2
,
y
k
−
1
)
]
+
g
k
(
y
k
−
1
,
v
)
u(k,v)=\underset{y_{k-1}}{\max}\left[\underset{y_1,...,y_{k-2}}{\max}\sum_{i=1}^{k-2}g_i(y_{i-1},y_i)+g_{k-1}(y_{k-2},y_{k-1})\right]+g_k(y_{k-1},v)
u(k,v)=yk−1max[y1,...,yk−2maxi=1∑k−2gi(yi−1,yi)+gk−1(yk−2,yk−1)]+gk(yk−1,v)
根据函数u的定义,上面可以写成(上面的中括号里面是子问题):
u
(
k
,
v
)
=
max
u
[
u
(
k
−
1
,
u
)
+
g
k
(
u
,
v
)
]
u(k,v)=\underset{u}{\max}\left[u(k-1,u)+g_k(u,v)\right]
u(k,v)=umax[u(k−1,u)+gk(u,v)]
所以整个u就可以做是一个序列的动态规划求解,填充以下矩阵:

估计参数w
大概思路是第一步先看按log-linear 模型如何来求w,然后第二步再看特例CRF的w怎么求。
先写出公式:
p
(
y
∣
x
;
w
)
=
1
Z
(
x
,
w
)
e
x
p
∑
j
=
1
J
w
j
F
j
(
x
,
y
)
(1)
p(y|x;w)=\cfrac{1}{Z(x,w)}exp\sum_{j=1}^Jw_jF_j(x,y)\tag1
p(y∣x;w)=Z(x,w)1expj=1∑JwjFj(x,y)(1)
按梯度下降的思想来求w,实际上要计算梯度(条件概率p对
w
j
w_j
wj的偏导)
∂
log
p
(
y
∣
x
;
w
)
∂
w
j
(2)
\cfrac{\partial{\text{log}p(y|x;w)}}{\partial{w_j}}\tag2
∂wj∂logp(y∣x;w)(2)
这里加一个log对求梯度没有影响,方便去掉后面e。
把公式1带入公式2:
(
2
)
=
∂
∂
w
j
log
p
(
y
∣
x
;
w
)
=
∂
∂
w
j
[
∑
j
=
1
J
w
j
F
j
(
x
,
y
)
−
log
Z
(
x
,
w
)
]
(2)=\cfrac{\partial}{\partial{w_j}}\text{log}p(y|x;w)=\cfrac{\partial}{\partial{w_j}}\left[\sum_{j=1}^Jw_jF_j(x,y)-\text{log}Z(x,w)\right]
(2)=∂wj∂logp(y∣x;w)=∂wj∂[j=1∑JwjFj(x,y)−logZ(x,w)]
然后中括号每项分别对w求导
(
2
)
=
F
j
(
x
,
y
)
−
1
Z
(
x
,
w
)
⋅
∂
∂
w
j
Z
(
x
,
w
)
(3)
(2)=F_j(x,y)-\cfrac{1}{Z(x,w)}\cdot\cfrac{\partial}{\partial{w_j}}Z(x,w)\tag3
(2)=Fj(x,y)−Z(x,w)1⋅∂wj∂Z(x,w)(3)
之前说过,Z是一个归一化项,因此可以按类别求和后,把它写出来
Z
(
x
,
w
)
=
∑
y
′
exp
∑
j
=
1
J
w
j
F
j
(
x
,
y
′
)
(4)
Z(x,w)=\sum_{y'}\exp\sum_{j=1}^Jw_jF_j(x,y')\tag4
Z(x,w)=y′∑expj=1∑JwjFj(x,y′)(4)
然后我们根据公式4来对
Z
(
x
,
w
)
Z(x,w)
Z(x,w)求w的偏导。
∂
∂
w
j
Z
(
x
,
w
)
=
∂
∂
w
j
∑
y
′
exp
∑
j
=
1
J
w
j
F
j
(
x
,
y
′
)
\cfrac{\partial}{\partial{w_j}}Z(x,w)=\cfrac{\partial}{\partial{w_j}}\sum_{y'}\exp\sum_{j=1}^Jw_jF_j(x,y')
∂wj∂Z(x,w)=∂wj∂y′∑expj=1∑JwjFj(x,y′)
上面的
y
′
y'
y′与求偏导的对象无关,可以挪到前面,并且为了和前面的
j
j
j区分,这里把求和的
j
j
j写成
j
′
j'
j′:
=
∑
y
′
∂
∂
w
j
exp
∑
j
′
w
j
′
F
j
′
(
x
,
y
′
)
=
∑
y
′
exp
∑
j
′
w
j
′
F
j
′
(
x
,
y
′
)
∂
∂
w
j
∑
j
′
w
j
′
F
j
′
(
x
,
y
′
)
=\sum_{y'}\cfrac{\partial}{\partial{w_j}}\exp\sum_{j'}w_{j'}F_{j'}(x,y')\\ =\sum_{y'}\exp\sum_{j'}w_{j'}F_{j'}(x,y')\cfrac{\partial}{\partial{w_j}}\sum_{j'}w_{j'}F_{j'}(x,y')
=y′∑∂wj∂expj′∑wj′Fj′(x,y′)=y′∑expj′∑wj′Fj′(x,y′)∂wj∂j′∑wj′Fj′(x,y′)
这里,因为
∂
∂
w
j
∑
j
′
w
j
′
F
j
′
(
x
,
y
′
)
\cfrac{\partial}{\partial{w_j}}\sum_{j'}w_{j'}F_{j'}(x,y')
∂wj∂∑j′wj′Fj′(x,y′)求导过程中,只对第j个有结果,其他项对
w
j
w_j
wj求导都变0了,所以上面:
=
∑
y
′
[
exp
∑
j
′
w
j
′
F
j
′
(
x
,
y
′
)
]
F
j
(
x
,
y
′
)
(5)
=\sum_{y'}\left[\exp\sum_{j'}w_{j'}F_{j'}(x,y')\right]F_{j}(x,y')\tag5
=y′∑⎣⎡expj′∑wj′Fj′(x,y′)⎦⎤Fj(x,y′)(5)
把公式5带入3:
=
F
j
(
x
,
y
)
−
1
Z
(
x
,
w
)
∑
y
′
[
exp
∑
j
′
w
j
′
F
j
′
(
x
,
y
′
)
]
F
j
(
x
,
y
′
)
=
F
j
(
x
,
y
)
−
∑
y
′
F
j
(
x
,
y
′
)
exp
∑
j
′
w
j
′
F
j
′
(
x
,
y
′
)
Z
(
x
,
w
)
=F_j(x,y)-\cfrac{1}{Z(x,w)}\sum_{y'}\left[\exp\sum_{j'}w_{j'}F_{j'}(x,y')\right]F_{j}(x,y')\\ =F_j(x,y)-\sum_{y'}F_{j}(x,y')\cfrac{\exp\sum_{j'}w_{j'}F_{j'}(x,y')}{Z(x,w)}
=Fj(x,y)−Z(x,w)1y′∑⎣⎡expj′∑wj′Fj′(x,y′)⎦⎤Fj(x,y′)=Fj(x,y)−y′∑Fj(x,y′)Z(x,w)exp∑j′wj′Fj′(x,y′)
根据Log-Linear Model条件概率的定义最后一个分式可以写为
p
(
y
′
∣
x
;
w
)
p(y'|x;w)
p(y′∣x;w),因此上式写成:
=
F
j
(
x
,
y
)
−
∑
y
′
F
j
(
x
,
y
′
)
p
(
y
′
∣
x
;
w
)
=F_j(x,y)-\sum_{y'}F_{j}(x,y')p(y'|x;w)
=Fj(x,y)−y′∑Fj(x,y′)p(y′∣x;w)
后面这项是考虑了
y
′
y'
y′的各个可能,按期望的概念,可以写为:
=
F
j
(
x
,
y
)
−
E
y
′
∼
p
(
y
′
∣
x
;
w
)
{
F
j
(
x
,
y
′
)
}
(6)
=F_j(x,y)-\underset{y'\sim p(y'|x;w)}{E}\left\{F_{j}(x,y')\right\}\tag6
=Fj(x,y)−y′∼p(y′∣x;w)E{Fj(x,y′)}(6)
把这个结论先记下来。
在来看如何计算
Z
(
x
ˉ
,
w
)
Z(\bar x,w)
Z(xˉ,w),这个后面要用到。把它写为考虑所有的
y
ˉ
\bar y
yˉ的情况(这个上面有推过):
Z
(
x
ˉ
,
w
)
=
∑
y
ˉ
exp
∑
j
=
1
J
w
j
F
j
(
x
ˉ
,
y
ˉ
)
=
∑
y
ˉ
exp
∑
j
=
1
J
w
j
∑
i
=
2
n
f
j
(
y
i
−
1
,
y
i
,
x
ˉ
,
i
)
=
∑
y
ˉ
exp
∑
i
=
2
n
g
i
(
y
i
−
1
,
y
i
)
+
\begin{aligned} Z(\bar x,w)&=\sum_{\bar y}\exp\sum_{j=1}^Jw_jF_j(\bar x,\bar y)\\ &=\sum_{\bar y}\exp\sum_{j=1}^Jw_j\sum_{i=2}^nf_j(y_{i-1},y_i,\bar x,i)\\ &=\sum_{\bar y}\exp\sum_{i=2}^ng_i(y_{i-1},y_i)+ \end{aligned}
Z(xˉ,w)=yˉ∑expj=1∑JwjFj(xˉ,yˉ)=yˉ∑expj=1∑Jwji=2∑nfj(yi−1,yi,xˉ,i)=yˉ∑expi=2∑ngi(yi−1,yi)+
要解这个,一种考虑所有的组合:
O
(
m
n
)
O(m^n)
O(mn),其中n是序列的长度,m是状态个数
另外一种是用HMM里面的FB算法。
Forward algorithm:先定义
α
(
k
+
1
,
v
)
=
∑
y
1
,
.
.
.
,
y
k
exp
[
∑
i
=
2
k
g
i
(
y
i
−
1
,
y
i
)
+
g
k
+
1
(
y
k
,
v
)
]
\alpha(k+1,v)=\sum_{y_1,...,y_k}\exp[\sum_{i=2}^kg_i(y_{i-1},y_i)+g_{k+1}(y_{k},v)]
α(k+1,v)=y1,...,yk∑exp[i=2∑kgi(yi−1,yi)+gk+1(yk,v)]
意思是序列总长度为n,只考虑1到k+1的子序列,前面是1到k,后面一项是k+1项,我们把这项设置为v

再把
y
k
y_k
yk分出来,变成
y
1
,
.
.
.
,
y
k
−
1
y_1,...,y_{k-1}
y1,...,yk−1和
y
k
y_k
yk,
y
k
y_k
yk设置为u:
α
(
k
+
1
,
v
)
=
∑
u
∑
y
1
,
.
.
.
,
y
k
−
1
exp
[
∑
i
=
2
k
−
1
g
i
(
y
i
−
1
,
y
i
)
]
exp
[
g
k
(
y
k
−
1
,
u
)
]
exp
[
g
k
+
1
(
u
,
v
)
]
\alpha(k+1,v)=\sum_u\sum_{y_1,...,y_{k-1}}\exp\left[\sum_{i=2}^{k-1}g_i(y_{i-1},y_i)\right]\exp\left[g_{k}(y_{k-1},u)\right]\exp\left[g_{k+1}(u,v)\right]
α(k+1,v)=u∑y1,...,yk−1∑exp[i=2∑k−1gi(yi−1,yi)]exp[gk(yk−1,u)]exp[gk+1(u,v)]
上式中:
∑
y
1
,
.
.
.
,
y
k
−
1
exp
[
∑
i
=
2
k
−
1
g
i
(
y
i
−
1
,
y
i
)
]
exp
[
g
k
(
y
k
−
1
,
u
)
]
\sum_{y_1,...,y_{k-1}}\exp\left[\sum_{i=2}^{k-1}g_i(y_{i-1},y_i)\right]\exp[g_{k}(y_{k-1},u)]
∑y1,...,yk−1exp[∑i=2k−1gi(yi−1,yi)]exp[gk(yk−1,u)]实际上是
α
(
k
+
1
,
v
)
\alpha(k+1,v)
α(k+1,v)的子问题。因此:
α
(
k
+
1
,
v
)
=
∑
u
α
(
k
,
u
)
exp
[
g
k
+
1
(
u
,
v
)
]
\alpha(k+1,v)=\sum_u\alpha(k,u)\exp[g_{k+1}(u,v)]
α(k+1,v)=u∑α(k,u)exp[gk+1(u,v)]
类似的,Backward algorithm可以定义:
β
(
u
,
k
)
=
∑
v
[
exp
g
k
+
1
(
u
,
v
)
]
β
(
v
,
k
+
1
)
\beta(u,k)=\sum_v[\exp g_{k+1}(u,v)]\beta(v,k+1)
β(u,k)=v∑[expgk+1(u,v)]β(v,k+1)

最后:
Z
(
x
ˉ
,
w
)
=
∑
u
α
(
k
,
u
)
β
(
u
,
k
)
Z(\bar x,w)=\sum_u\alpha(k,u)\beta(u,k)
Z(xˉ,w)=u∑α(k,u)β(u,k)
这里是考虑离散型变量的序列的估计,如果是连续型,要使用蒙特卡洛方法进行估计。
有了上面的结论,我们可以很容易的计算出类似HMM某一个时刻隐变量的条件概率:
p
(
y
k
=
u
∣
x
ˉ
;
w
)
=
α
(
k
,
u
)
β
(
u
,
k
)
Z
(
x
ˉ
,
w
)
p(y_k=u|\bar x;w)=\cfrac{\alpha(k,u)\beta(u,k)}{Z(\bar x,w)}
p(yk=u∣xˉ;w)=Z(xˉ,w)α(k,u)β(u,k)
类似的,HMM中状态转移的条件概率可以表示为:
p
(
y
k
=
u
,
y
k
+
1
=
v
∣
x
ˉ
;
w
)
=
α
(
k
,
u
)
[
exp
g
k
+
1
(
u
,
v
)
]
β
(
v
,
k
+
1
)
Z
(
x
ˉ
,
w
)
p(y_k=u,y_{k+1}=v|\bar x;w)=\cfrac{\alpha(k,u)[\exp g_{k+1}(u,v)]\beta(v,k+1)}{Z(\bar x,w)}
p(yk=u,yk+1=v∣xˉ;w)=Z(xˉ,w)α(k,u)[expgk+1(u,v)]β(v,k+1)
下面可以开始解决公式6
∂
∂
w
j
log
p
(
y
ˉ
∣
x
ˉ
;
w
)
=
F
j
(
x
ˉ
,
y
ˉ
)
−
E
y
′
∼
p
(
y
′
∣
x
ˉ
;
w
)
{
F
j
(
x
ˉ
,
y
′
)
}
=
F
j
(
x
ˉ
,
y
ˉ
)
−
E
y
ˉ
[
∑
i
=
2
n
f
j
(
y
i
−
1
,
y
i
,
x
ˉ
,
i
)
]
=
F
j
(
x
ˉ
,
y
ˉ
)
−
∑
i
=
2
n
E
y
ˉ
[
f
j
(
y
i
−
1
,
y
i
,
x
ˉ
,
i
)
]
\begin{aligned}\cfrac{\partial}{\partial{w_j}}\text{log}p(\bar y|\bar x;w)&=F_j(\bar x,\bar y)-\underset{y'\sim p(y'|\bar x;w)}{E}\{F_{j}(\bar x,y')\}\\ &=F_j(\bar x,\bar y)-\underset{\bar y}{E}\left[\sum_{i=2}^nf_j(y_{i-1},y_i,\bar x,i)\right]\\ &=F_j(\bar x,\bar y)-\sum_{i=2}^n\underset{\bar y}{E}[f_j(y_{i-1},y_i,\bar x,i)]\end{aligned}
∂wj∂logp(yˉ∣xˉ;w)=Fj(xˉ,yˉ)−y′∼p(y′∣xˉ;w)E{Fj(xˉ,y′)}=Fj(xˉ,yˉ)−yˉE[i=2∑nfj(yi−1,yi,xˉ,i)]=Fj(xˉ,yˉ)−i=2∑nyˉE[fj(yi−1,yi,xˉ,i)]
这里有个trick,期望本来是对于所有的y,也就是
y
ˉ
\bar y
yˉ,但是这里的期望只依赖于
y
i
−
1
,
y
i
y_{i-1},y_i
yi−1,yi,所以上面可以写为:
=
F
j
(
x
ˉ
,
y
ˉ
)
−
∑
i
=
2
n
E
y
i
−
1
,
y
i
[
f
j
(
y
i
−
1
,
y
i
,
x
ˉ
,
i
)
]
=F_j(\bar x,\bar y)-\sum_{i=2}^n\underset{ y_{i-1},y_i}{E}[f_j(y_{i-1},y_i,\bar x,i)]
=Fj(xˉ,yˉ)−i=2∑nyi−1,yiE[fj(yi−1,yi,xˉ,i)]
按期望展开:
=
F
j
(
x
ˉ
,
y
ˉ
)
−
∑
i
=
2
n
∑
y
i
−
1
∑
y
i
f
j
(
y
i
−
1
,
y
i
,
x
ˉ
,
i
)
⋅
p
(
y
i
,
y
i
−
1
∣
x
ˉ
;
w
)
=F_j(\bar x,\bar y)-\sum_{i=2}^n\sum_{y_{i-1}}\sum_{y_i}f_j(y_{i-1},y_i,\bar x,i)\cdot p(y_i,y_{i-1}|\bar x;w)
=Fj(xˉ,yˉ)−i=2∑nyi−1∑yi∑fj(yi−1,yi,xˉ,i)⋅p(yi,yi−1∣xˉ;w)
最后吧上面的
p
(
y
k
=
u
,
y
k
+
1
=
v
∣
x
ˉ
;
w
)
p(y_k=u,y_{k+1}=v|\bar x;w)
p(yk=u,yk+1=v∣xˉ;w)带进来:
∂
∂
w
j
log
p
(
y
ˉ
∣
x
ˉ
;
w
)
=
F
j
(
x
ˉ
,
y
ˉ
)
−
∑
i
=
2
n
∑
y
i
−
1
∑
y
i
f
j
(
y
i
−
1
,
y
i
,
x
ˉ
,
i
)
⋅
α
(
i
−
1
,
y
i
−
1
)
[
e
x
p
g
i
(
y
i
−
1
,
y
i
)
]
β
(
y
i
,
i
)
Z
(
x
ˉ
,
w
)
\cfrac{\partial}{\partial{w_j}}\text{log}p(\bar y|\bar x;w)=F_j(\bar x,\bar y)-\sum_{i=2}^n\sum_{y_{i-1}}\sum_{y_i}f_j(y_{i-1},y_i,\bar x,i)\cdot \cfrac{\alpha(i-1,y_{i-1})[expg_{i}(y_{i-1},y_i)]\beta(y_i,i)}{Z(\bar x,w)}
∂wj∂logp(yˉ∣xˉ;w)=Fj(xˉ,yˉ)−i=2∑nyi−1∑yi∑fj(yi−1,yi,xˉ,i)⋅Z(xˉ,w)α(i−1,yi−1)[expgi(yi−1,yi)]β(yi,i)
有了上面的结果,我们就可以计算梯度:
w
j
t
+
1
=
w
j
t
−
η
t
∂
∂
w
j
log
p
(
y
ˉ
∣
x
ˉ
;
w
)
w_j^{t+1}=w_j^t-\eta_t\cfrac{\partial}{\partial{w_j}}\text{log}p(\bar y|\bar x;w)
wjt+1=wjt−ηt∂wj∂logp(yˉ∣xˉ;w)
然后利用梯度下降来求参数w。
CRF与HMM对比解析
本文深入探讨了条件随机场(CRF)与隐马尔科夫模型(HMM)的区别,详细讲解了CRF在处理时序数据上的优势,包括线性链CRF的推导过程、参数估计与推断问题的解决方案。
4733

被折叠的 条评论
为什么被折叠?



