每日一问6.23

问题:条件随机场是怎么进行学习的?

参考了知乎文章如何轻松愉快地理解条件随机场(CRF)?

模型构建

条件概率:

P(y=yx)=ewF(y,x)yewF(y,x)P(y=y'|x)=\frac{e^{\mathbb{w}\cdot F(y', x)}}{\sum_{y}e^{\mathbb{w}\cdot F(y, x)}}

其中,w=(w1,,wK)\mathbb{w}=(w_1,\cdots, w_K)为待学习的参数组,F=(f1(y,x),,fK(y,x))F=(f_1(y,x), \cdots, f_K(y,x))为特征函数构成的向量,特征函数包含状态特征函数和转移特征函数两类,每类有若干个。

特征函数的例子

x=(x1,,xn),y=(y1,,yn)x=(x_1, \cdots, x_n),y=(y_1, \cdots,y_n)

状态特征函数:

  • f(yi,x,i)=1f(y_i,x,i)=1 如果xix_i以"ly"结尾,yi=y_i=副词 (其他情况为0),此时我们应该想到对应要学习的参数λ\lambda应该大于0,并且值越大表明训练集中的数据越支持"ly"结尾的单词是副词
  • f(yi,x,i)=1f(y_i,x,i)=1 如果xx最后一个字符是"?",i=1,yi=i=1, y_i=动词 (其他情况为0),此时我们应该想到对应要学习的参数λ\lambda应该大于0,并且值越大表明训练集中的数据越支持问句的第一个单词是动词

转移特征函数:

  • g(yi1,yi,x,i)=1g(y_{i-1},y_{i},x,i)=1 如果yi1=,yi=y_{i-1}=名词,y_{i}=动词(其他情况为0),此时我们可以想到对应要学习的参数μ\mu应该大于0,并且值越大表明训练集中的数据越支持名词后面接动词
  • g(yi1,yi,x,i)=1g(y_{i-1},y_{i},x, i)=1 如果如果yi1=,yi=y_{i-1}=动词,y_{i}=动词(其他情况为0),此时我们可以想到对应要学习的参数μ\mu应该小于0,并且值越小表明训练集中的数据越反对动词后面接动词

学习算法

优化目标为:极小化负对数似然
1Ni=1NlogP(y=y(i)x=x(i))-\frac{1}{N}\sum_{i=1}^{N}logP(y=y^{(i)}|x=x^{(i)})

对参数的学习,可以使用梯度下降算法,也可以使用二阶的拟牛顿算法L-BFGS,较常用的是后者。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章