1.CRF简化表示
先回顾一下线性链CRF参数化形式
和
都可以表示为随机变量
的函数,因此,可以将
和
统一成
其中,是转移特征
的个数,
是状态特征
的个数。特征函数所代表的特征集合一共有K个值,
。
用来表示特征
的权重,
是
和
的集合,k=1,2,3,…,K。
所以,CRF的形式可简化为
对转移特征和状态特征在各位置i求和
将权重集合组合成向量w,将特征函数包含的所有特征
表示为全局向量
,
可表示为w和F(y,x)的内积w∙F(y,x)
其中
这里,刚开始有点懵的是,前一篇举例计算条件概率时,Y序列有5个节点,2个取值,转移特征一共有16个,状态特征有9个,条件概率的分子一共有9项相加(转移特征5-1项,状态特征5项),而这里,w∙F(y,x)一共有K项,相当于例子中的16+9项,这就对不上了呀!
后来终于注意到
而
不满足条件的项就是0,而对于,那种和当前状态不满足的,可能权重会变得接近于0.这样一来,两个计算方式就不冲突了。
2. CRF矩阵表示
CRF计算公式也可表示为
令
则
令
表示序列第i-1,i位置的所有可能可能标注的概率矩阵,如果Y有m个取值,那么
是m阶方阵。
CRF可表示为
这里序列取n+1个,实际上是给序列添加了start和stop标志后,序列结点个数实际上上n+2,从0到n+1。
Z(x)表示从start到stop整个序列的所有路径的概率和,p(y│x)表示从start到stop某条路径的概率(看到这里才理解p(y│x)所表示的含义)。Z(x)为规范化因子。
依然用上一篇的例子,
图1
的取值为y={S,O},那么添加start和stop之后,start到stop的全部路径为下图中所有路径
图2
而表示红色路径的概率。
3.概率的计算方式
从
由于序列的递推关系,从前往后推,到位置i,i位置为关于位置i-1为
的条件概率为
同时,从图1可以看出,Y的各节点之间是无向的,也就是不仅依赖
,同时也依赖
,要确定
,那么
和
也需要确定(个人理解)。
因此,引入前向后-后向算法,前向算法计算对
的依赖,后面算法计算
对
的依赖。
以标注序列为例,p(y|x)是整个序列的概率,而实际标注过程中,每个位置上Y的可能取值的概率才是决定每个位置该标注为哪一个值的关键。我们的计算目标更多在于。
而根据前面的依赖关系,要计算位置i为的概率,需要先计算位置i-1和i+1各可能标注值的概率,所以,还需要计算
(将此公式中i替换为i+1就是
)
在前向算法中,定义
对每个指标i=0,1,2,…,n+1定义前向向量:
递推公式
又可表示为
表示在位置i的标记为
并且i前面的位置确定的非规范概率,
表示位置i上Y的所有可能取值的概率,可看做是一个矩阵,如果Y的取值个数为m,那么它是m维向量。
同样,定义后向向量为:
又可表示为
根据土递推关系,start和stop之间所有路径的概率和,实际上就是从start往stop推,第n位置的所有取值的概率和,因为序列最后一个包含全部可能取值,那么前面位置的所有可能全部包含在内,同理,也等同于从stop往后推,推到start,位置1的所有可能取值的概率和等同于start和stop之间的所有路径概率和。因此
计算位置i-1和i的条件概率为
4.期望计算
在学习参数时,需要用到转移特征的期望和状态特征的期望,前面已经把转移和状态两特征函数统一成特征函数,所以,除了计算概率,还得计算特征函数的期望。
特征函数f_k关于条件分布P(Y|X)的数学期望是
假设经验分布为 ,特征函数
关于联合分布P(Y,X)的数学期望是
其中
最重要的计算公式是第i和i-1位置的条件概率计算和特征函数的两个期望计算,前者在学习和预测时都要用到,后者主要用在学习参数。在学习参数,计算梯度时,需用实际的和
来替换
。
参考资料
《统计学习方法》
《统计自然语言处理》