4 CRFs
我们现在转向条件随机场。为了方便,我们使用表示输入序列
,
表示状态序列
,
表示所有可能状态的集合,
表示所有可能的状态序列的集合。
在条件随机场里,我们依然是为条件概率
建立模型。CRFs的第一个关键思想是定义一个特征向量
该函数将整个输入序列和与其配对的整个状态序列
映射到某个
维特征向量。我们很快就会给出一个
的具体定义。但是现在我们假设函数已经定义好了,我们经常将
成为全局特征向量(之所以被称为全局,是因为它将整个状态序列纳入其中)。
这样我们就有了一个巨型的对数线性模型,
该线性模型之所以称为巨型,是因为:
1)所有可能的状态序列,也就是
非常大。
2)归一化常数包括对集合求和,一眼看去,仿佛这会引起非常复杂的计算问题,但是很快我们将看到,在合理的假设下,我们可以非常有效的训练和解码该模型。
第二个问题是我们怎么定义函数,答案是
这里的和MEMMs定义的特征向量是一样的。以另一种方式来说,就是我们假设第
个全局特征是
,所以
通过累加状态序列
的每个状态转移上的局部特征
而得到的。
现在我们来解决CRFs的两个关键问题,第一个是解码,第二个是参数估计。
解码CRFs CRFs的解码问题如下:给定一个输入序列,我们要找到模型下最可能的状态序列,也就是,
我们可以将表达式向如下这么简化
所以在模型下寻找最有可能的序列等价于寻找满足
的序列。这个问题有个直观的解释,每个从状态到
的转移有一个分数
这个分数可以是真的也可以是负的。直觉的,如果状态转移很有可能则分数相对较高。解码问题就是找到使转移分数之和最高的那个状态序列。
我们可以使用一个维特比算法来解决这个问题。
- 初始化,对所有
这里是一个特殊的初始状态。
- 对
,所有
:
最后我们可以得到
然后利用回指,我们可以得到最高分的状态序列,这个算法具有时间复杂度,所以解码算法是很高效的。
估计CRFs的参数。假设我们有一个打好标签的样本集,每个
是一个输入序列
,每个
是一个状态序列
。我们可以用对数线性空间参数估计一样的方法来估计CRFs的参数。正则化的对数似然函数是
CRFs的参数估计就是
我们使用基于梯度的最优化方式求解,偏导数是
第一项是很容易计算的,因为
只需要对所有训练样本集
,对每个样本所有位置
求和即可。
第二项就复杂多了,需要对巨大的集合求和,但是注意观察,这里可以使用动态规划的方法有效的计算。
其中如果能有效的计算
,也就可以有效的计算这个偏导数,
有个直观的解释,它是第
个训练样本位置
具有状态a和位置
具有状态b的概率。
一个关键的结论是对于给定的,所有
项可以一起计算,具有时间复杂度
。这是另一个动态规划问题,也可以使用维特比算法求解。