写在前面
前面写完了HMM,比较重点的就是HMM的三个问题,需要好好消化。这篇博客主要介绍条件随机场,相比于HMM,CRF的应用可能会更广。从刚接触CRF开始也很久了,但是由于书上公式非常晦涩难懂,而且网上也有超级多的开源代码实现,所以对CRF的认识也就停留在非常表层的理解。但是就这样的程度让人觉得非常虚,那就拿起小蓝书跟条件随机场来个了断吧~
条件随机场定义
首先给出来自小蓝书的CRF定义:
条件随机场是给定从输入随机变量X条件下,输出随机变量Y的马尔科夫随机场。
那么在这个定义里面,有几个需要我们提前了解的概念:
- 随机场:随机场是由若干个位置组成的整体,当给每一个位置中按照某种分布随机赋予一个值之后,其全体就叫做随机场。
- 马尔科夫随机场:马尔科夫随机场是随机场的特例,它及假设随机场中某个位置的赋值仅仅与和它相邻的位置的赋值有关,与其不相邻的位置的值无关。
- 条件随机场:CRF是马尔科夫随机场的特例,它假设马尔科夫随机场中只有X和Y两种变量,且X一般是给定的输入变量,而Y是我们需要输出的变量(在给定X的条件下)。这样一个马尔科夫随机长就形成了CRF。
线性链条件随机场
在CRF的定义中,并没有要求X和Y具有相同的结构。但是在现实中,我们一般假设X和Y有相同的结构,,如下:
X
=
(
X
1
,
X
2
,
…
X
n
)
,
Y
=
(
Y
1
,
Y
2
,
…
Y
n
)
X=\left(X_{1}, X_{2}, \ldots X_{n}\right), Y=\left(Y_{1}, Y_{2}, \ldots Y_{n}\right)
X=(X1,X2,…Xn),Y=(Y1,Y2,…Yn)
linear-CRF定义:
P
(
Y
i
∣
X
,
Y
1
,
…
,
Y
i
−
1
,
Y
i
+
1
,
…
,
Y
n
)
=
P
(
Y
i
∣
X
,
Y
i
−
1
,
Y
i
+
1
)
,
i
=
1
,
…
,
n
P\left(Y_{i} | X, Y_{1}, \ldots, Y_{i-1}, Y_{i+1}, \ldots, Y_{n}\right)=P\left(Y_{i} | X, Y_{i-1}, Y_{i+1}\right), \quad i=1, \ldots, n
P(Yi∣X,Y1,…,Yi−1,Yi+1,…,Yn)=P(Yi∣X,Yi−1,Yi+1),i=1,…,n
其中当i取1或者n时只考虑单边。
例如,在标注问题中,X表示输入观测序列,Y表示对应的输出标记序列。
linear-CRF参数化形式
那么对于linear-crf,我们如何将其转换成可以学习的机器学习模型呢?这主要是通过特征函数和对应的权重来进行的。
特征函数
- 第一类是状态特征,定义在Y节点上的特征函数,这类特征函数只和当前节点有关,记为:
s
l
(
y
i
,
x
,
i
)
,
l
=
1
,
2
,
…
L
s_{l}\left(y_{i}, x, i\right), l=1,2, \ldots L
sl(yi,x,i),l=1,2,…L
其中L是定义在该节点的节点特征函数的总个数,i是当前节点在序列的位置。
2. 第二类是转移特征,定义在边上(Y上下文)的局特征函数,这类特征函数之和当前节点和上一个节点有关,记为:
t
k
(
y
i
−
1
,
y
i
,
x
,
i
)
,
k
=
1
,
2
,
…
K
t_{k}\left(y_{i-1}, y_{i}, x, i\right), \quad k=1,2, \ldots K
tk(yi−1,yi,x,i),k=1,2,…K
其中K是定义在该节点的局部特征函数的总个数,i是当前节点在序列的位置。
注意, 无论是状态特征函数还是转移特征函数,它们的取值只能是0或者1,即满足特征条件或者不满足特征条件。
权重
对于上面说描述的每一个特征函数,我们都为其设置一个权重,用以表达我们对这个特征函数的信任度。
假设tk的权重系数是λk,sl的权重系数是μl,则linear-CRF由我们所有的tk,λk,sl,μl共同决定。
综上,我们可以得出线性链条件随机场的表达式:
P
(
y
∣
x
)
=
1
Z
(
x
)
exp
(
∑
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 \left(\sum_{i, k} \lambda_{k} t_{k}\left(y_{i-1}, y_{i}, x, i\right)+\sum_{i, l} \mu_{l} s_{l}\left(y_{i}, x, i\right)\right)
P(y∣x)=Z(x)1exp⎝⎛i,k∑λktk(yi−1,yi,x,i)+i,l∑μlsl(yi,x,i)⎠⎞
其中,Z是规范化因子,
Z ( x ) = ∑ y exp ( ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i , l μ l s l ( y i , x , i ) ) Z(x)=\sum_{y} \exp \left(\sum_{i, k} \lambda_{k} t_{k}\left(y_{i-1}, y_{i}, x, i\right)+\sum_{i, l} \mu_{l} s_{l}\left(y_{i}, x, i\right)\right) Z(x)=y∑exp⎝⎛i,k∑λktk(yi−1,yi,x,i)+i,l∑μlsl(yi,x,i)⎠⎞
举个栗子
可以参考小蓝书给出的简单示例,加权求和即可。
CRF简化形式
上一节给出的CRF公式特征函数和权重的参数有点多,显得非常复杂,这里我们可以对其进行整理简化。
假设我们在某一节点我们有K1个转移特征函数和K2个状态特征函数,总共有K=K1+K2个特征函数。我们用一个特征函数fk(yi−1,yi,x,i)来统一表示如下:
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}\left(y_{i-1}, y_{i}, x, i\right)=\left\{\begin{array}{ll}{t_{k}\left(y_{i-1}, y_{i}, x, i\right)} & {k=1,2, \ldots K_{1}} \\ {s_{l}\left(y_{i}, x, i\right)} & {k=K_{1}+l, l=1,2 \ldots, K_{2}}\end{array}\right.
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求和,可得:
f
k
(
y
,
x
)
=
∑
i
=
1
n
f
k
(
y
i
−
1
,
y
i
,
x
,
i
)
f_{k}(y, x)=\sum_{i=1}^{n} f_{k}\left(y_{i-1}, y_{i}, x, i\right)
fk(y,x)=i=1∑nfk(yi−1,yi,x,i)
同时我们也将对应的权重进行相同的处理,
w
k
=
{
λ
k
k
=
1
,
2
,
…
K
1
μ
l
k
=
K
1
+
l
,
l
=
1
,
2
…
,
K
2
w_{k}=\left\{\begin{array}{ll}{\lambda_{k}} & {k=1,2, \ldots K_{1}} \\ {\mu_{l}} & {k=K_{1}+l, l=1,2 \ldots, K_{2}}\end{array}\right.
wk={λkμlk=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
)
P(y | x)=\frac{1}{Z(x)} \exp \sum_{k=1}^{K} w_{k} f_{k}(y, x)
P(y∣x)=Z(x)1expk=1∑Kwkfk(y,x)
其中Z为规范化参数
Z ( x ) = ∑ y exp ∑ k = 1 K w k f k ( y , x ) Z(x)=\sum_{y} \exp \sum_{k=1}^{K} w_{k} f_{k}(y, x) Z(x)=y∑expk=1∑Kwkfk(y,x)
CRF矩阵形式
条件随机场也有矩阵形式,是一种模型按时序展开分步计算的形式。对输入观测序列X中的每一个 x t x_{t} xt:
- 计算出所有的可能情况(根据不同假设y组合情况,计算激活的特征函数与权值乘积的和), 按照一定的顺序组成矩阵;
- 在所有矩阵计算完成之后,利用这些矩阵可以完成最优序列的求解,Z(x)的计算。
为此我们定义一个m x m的矩阵M,m为y所有可能的状态的取值个数:
M
i
(
x
)
=
[
M
i
(
y
i
−
1
,
y
i
∣
x
)
]
=
[
e
x
p
(
W
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(x) = \Big[ M_i(y_{i-1},y_i |x)\Big] = \Big[ exp(W_i(y_{i-1},y_i |x))\Big] = \Big[ exp(\sum\limits_{k=1}^Kw_kf_k(y_{i-1},y_i, x,i))\Big]
Mi(x)=[Mi(yi−1,yi∣x)]=[exp(Wi(yi−1,yi∣x))]=[exp(k=1∑Kwkfk(yi−1,yi,x,i))]
同时引入起点和终点标记
y
0
=
s
t
a
r
t
,
y
n
+
1
=
s
t
o
p
y_0 =start, y_{n+1} = stop
y0=start,yn+1=stop,这样标记序列y的非规范化概率可以通过n+1个矩阵元素的乘积得到:
P
w
(
y
∣
x
)
=
1
Z
w
(
x
)
∏
i
=
1
n
+
1
M
i
(
y
i
−
1
,
y
i
∣
x
)
P_{w}(y | x)=\frac{1}{Z_{w}(x)} \prod_{i=1}^{n+1} M_{i}\left(y_{i-1}, y_{i} | x\right)
Pw(y∣x)=Zw(x)1i=1∏n+1Mi(yi−1,yi∣x)
其中Z(x)为规范化因子。
CRF的三个问题
与HMM类似,CRF也有三个基本问题:
- 计算问题:
给定条件随机场 P(Y|X),输入序列x和输出序列y,计算条件概率 P ( y i ∣ x ) P\left(y_{i} | x\right) P(yi∣x)和 P ( y i − 1 , y i ∣ x ) P\left(y_{i-1},y_{i} | x\right) P(yi−1,yi∣x)以及对应的期望
前向后向算法
- 解码问题
给定条件随机场P(Y|X)和输入序列x,求条件概率最大的输出序列y,即对观测序列进行标注。
维特比算法
- 学习问题
给定训练数据集X和对应的标记序列Y,K个特征函数fk(x,y),需要学习linear-CRF的模型参数wk和条件概率Pw(y|x)
梯度下降法,牛顿法,拟牛顿法,迭代尺度法
其中前两个问题属于inference,第三个问题属于learning。
三个问题的具体解法就放在下篇文章里写吧~
以上~