CRF:条件随机场(Conditional Random Field)
代码实现链接:https://blog.csdn.net/cpluss/article/details/88825748
什么样的问题需要CRF模型
如果我们的数据是一个序列,后面的结果受到前面结果的影响,此时就需要我们使用CRF模型。例如,我们假设把一个人的日常生活拍成照片,而一张张着嘴的照片我们无法判断他是吃饭还是在唱歌(or 其他),但是如果这张照片之前有其他照片显示为餐桌、米饭等,我们则基本可以判定他在吃饭;如果显示为ktv,则基本可以判定他在唱歌。
定义
马尔科夫随机场:随机场中某一位置的赋值仅仅和其相邻的位置相关,而与不相邻的位置无关
CRF是马尔可夫随机场的特例,他假设马尔可夫随机场中只有X和Y两种变量,X是给定的,Y则是给定条件下我们的输出。例如在词性标注中,X是词语,Y是词性。若Y是一个马尔可夫随机场,则P(Y|X)是一个CRF。表示Y中变量仅仅受到X和其相邻变量的影响。
线性链条件随机场 (Linear Chain CRF)
实现的过程中,我们一般要求X和Y有相同的结构,即:
X = ( X 1 , X 2 , . . . X n ) , Y = ( Y 1 , Y 2 , . . . , Y n ) X = (X_1, X_2,...X_n), Y = (Y_1, Y_2, ..., Y_n) X=(X1,X2,...Xn),Y=(Y1,Y2,...,Yn)
由此可以得到CRF的数学定义:
P ( Y i ∣ X , Y 1 , Y 2 , . . Y i − 1 , Y i + 1 , . . . Y n ) = P ( Y i ∣ X , Y i − 1 , Y i + 1 ) P(Y_i|X,Y_1,Y_2,..Y_{i-1},Y_{i+1},...Y_{n}) = P(Y_i|X,Y_{i-1},Y_{i+1}) P(Yi∣X,Y1,Y2,..Yi−1,Yi+1,...Yn)=P(Yi∣X,Yi−1,Yi+1)
Linear-CRF的参数化形式
为了将linear-CRF转化为可以学习的机器学习模型,我们定义了特征函数和权重系数。
第一类:结点特征函数这类特征函数只和当前节点有关,记为:
s l ( y i , x , i ) , l = 1 , 2 , . . . L L 是 当 前 该 节 点 i 的 结 点 特 征 函 数 的 个 数 ( 可 能 不 止 一 个 ) s_l(y_i,x,i),\quad l=1,2,...L\quad L是当前该节点i的结点特征函数的个数(可能不止一个) sl(yi,x,i),l=1,2,...LL是当前该节点i的结点特征函数的个数(可能不止一个)
第二类:转移特征函数,此函数依赖于上下文,记为:
t k ( y i − 1 , y i , x , i ) , k = 1 , 2 , . . . K , K 代 表 结 点 i 转 移 特 征 函 数 的 个 数 ( 可 能 不 止 一 个 ) t_k(y_{i-1},y_{i},x,i),\quad k=1,2,...K,K代表结点i转移特征函数的个数(可能不止一个) tk(yi−1,yi,x,i),k=1,2,...K,K代表结点i转移特征函数的个数(可能不止一个)
以上两种特征函数,都只能取值为0或者1,因此其特点就在于他们的权重了,权重越大,说明这个函数的重要性越大。
从而得到其参数化形式:在给定x的条件下,输出y(而不是y中某一个单词)的概率
P ( y ∣ x ) = 1 Z ( x ) e x p ( ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i