1.CRF的预测算法
条件随机场的预测算法是给定条件随机场P(Y|X)和输入序列(观测序列)x,求条件概率最大的输出序列(标记序列)y*,即对观测序列进行标注。条件随机场的预测算法是著名的维特比算法(Vitebi Algorthim)。
维特比算法在隐马尔科夫模型的预测算法中已经详细介绍和Python实现过,详见以前的博客:
【机器学习】【隐马尔可夫模型-4】维特比算法:算法详解+示例讲解+Python实现
2.CRF的预测算法之维特比算法
2.1维特比算法简介
维特比算法实际使用动态规划解CRF条件随机场的预测问题,即用动态规划(Dynamic Programming)求概率最大状态路径(最优路径)。这时一条路径对应一个状态序列。
根据动态规划原理,最优路径具有这样的特性:如果最优路径在时刻t通过节点i*t,那么这一路径从节点i*t到终点i*T的部分路径,对于从i*t到i*T的所有可能的部分来说,必须是最优的。
我们只需要从时刻t=1开始,递推地计算在时刻t状态为i的各条部分路径的最大概率,直至得到时刻t=T状态为i的各条路径的最大概率。时刻t=T的最大概率即为最优路径的概率P*,最优路径的终结点i*T也同时得到。
之后,为了找出最优路径的各个节点,从终结点i*T开始,由后向前逐步求得节点i*T-1,……,i*1,得到最优路径I*=(i*1, i*2, i*3,……,i*T),这就是维特比算法。
2.2CRF预测问题的维特比算法
在条件随机场预测问题中,CRF预测问题就成为了求非规范化概率最大的最优路径问题。
提高效率思想:
在CRF预测问题的维特比算法中,最终结果求得是最优路径,只需要计算非规范化概率,不必计算概率,可以大大提高效率。
条件随机场预测的维特比算法步骤:
输入:模型特征向量F(y, x)和权值向量w, 观测序列x=(x1, x2, ……,xn)
输出:最优路径y*=(y*1, y*2, ……,y*n)
(1)初始化位置1的各个标记j=1,2,……,m的非规范化概率
(2)递推计算,对i=2,3,……,n
(3)终止
(4)返回路径
注意理解:ψ保存每个节点的最大非规范化概率的前导节点,即当前节点的最优前节点,最优路径先已知最优终结点,然后根据最优终结点从ψ里面求出他的最优前前节点,依次求出y*n, y*n-1, ……,y*2, y*1
则Y*=(y*1, y*2, ……,y*n-1, y*n)T就是条件随机场预测问题的最优路径。
3.数学示例展示:CRF的预测算法之维特比算法
设有一标注问题:输入观测序列为X=(X1,X2,X3),输出标记序列为Y=(Y1,Y2,Y3),Y1,Y2,Y3取值于{1,2}.
假设特征t<k>,s<l>的对应的权值为λ<k>