对数线性模型与线性链条件随机场
对数线性模型
我们从书本上知道线性链条件随机场就是对数线性模型,逻辑回归也是对数线性模型。对数线性模型的一般形式如下所示:
[p(y|x;w)=dfrac{expsum_{j=1}^Jw_jF_j(x, y)}{Z(x, w)}
]
其中(x,y)分别是输入和标签,都是序列。(F_j(x,y)) 是特征函数,(w_j)为可学习参数,是一个实数,控制着特征函数的影响程度,特征函数都是需要提前定义好的。(Z(x,w)) 是归一化因子,其计算如下所示:
[Z(x,w) = sum_{y'in Y}expsum_{j=1}^Jw_jF_j(x,y')
]
模型的预测即给出使得(p(y|x;w))最大的对应(y),更加数学化的表达为:
[hat{y} = argmax_yp(y|x;w)=argmax_ysum_{j=1}^Jw_jF_j(x,y)
]
特征函数
像分词这种结构化预测任务,仅仅考虑当前位置本身往往是不够的,相邻标签的影响也需要考虑进去,因此必须设计有效的特征函数。为了同时考虑到变长序列和相邻位置的信息,(F_j(x,y))被定义为如下
[F_j(x,y) = sum_{i=1}^nf_j(y_{i-1},y_i,x,i)
]
(f_j)是low-level的特征函数,上面这个公式解释了为什么CRF可以利用整个序列的信息,而HMM不能够。为了更好的处理边界,一般会令(y_0=mbox{START},y_{n+1}=mbox{STOP})
线性链条件随机场的解码
解码即预测序列的标记结果,上文提及
[egin{split}
hat{y}&=argmax_yp(y|x;w)\
&= argmax_ydfrac{1}{Z(x,w)}expsum_{j=1}^Jw_jF_j(x,y)\
&=argmax_ysum_{j=1}^Jw_jF_j(x,y)\
&=argmax_ysum_{j=1}^Jw_jsum_{i=1}^nf_j(y_{i-1},y_i,x,i)\
&=argmax_ysum_{i=1}^nsum_{j=1}^Jw_jf_j(y_{i-1},y_i,x,i)\
&=argmax_ysum_{i=1}^ng_i(y_{i-1},y_i)
end{split}
]
我们令(U(k,v))为位置(1)到位置(k)的最优序列的得分,其中第(k)个位置的标记为(v),根据定义我们有
[egin{split}
U(k,v) &= max_{y_1,dots,y_{k-1}}sum_{i=1}^{k-1} g_i(y_{i-1},y_i)+g_k(y_{k-1},v)\
&= max_u [U(k-1,u) + g_k(u,v)]
end{split}
]
在计算得到最优序列的分数后,可以按如下方式,回溯解码出对应的标记
[hat{y}_{k-1}=argmax_u[U(k-1,u) + g_k(u,hat{y}_k)]
]
整个解码过程其实就是动态规划的具体应用,时间复杂度为(O(m^2nJ+m^2n))。
前向后向算法
由$$hat{y}=argmax_ysum_{i=1}^ng_i(y_{i-1},y_i)$$可以知道
[Z(x,w) = sum_yexpsum_{i=1}^ng_i(y_{i-1},y_i)
]
我们令
[egin{split}
alpha(k,v) &= sum_{y_1, cdots, y_{k-1}}exp[sum_{i=1}^{k-1}g_i(y_{i-1},y_i)+g_k(y_{k-1},v)]\
&= sum_{y_1, cdots, y_{k-1}}exp[sum_{i=1}^{k-1}g_i(y_{i-1},y_i)]exp [g_k(y_{k-1},v)]
end{split}
]
所以有
[alpha(k+1,v) = sum_ualpha (k,u)exp [g_{k+1}(u,v)]
]
上面是从前向推,同样我们可以后向推,得到
[eta (u,k) = sum_v[exp g_{k+1}(u,v)]eta (v, k+1)
]
这样,我们有
[Z(x,w) = sum_ualpha(k,u)eta(u,k)
]
同样
[p(y_k=u|x;w) = dfrac{alpha(k,u)eta(u,k)}{Z(x,w)}=dfrac{alpha(k,u)eta(u,k)}{sum_ualpha(k,u)eta(u,k)}
]
[p(y_k=u,y_{k+1}=v|x;w) = dfrac{alpha(k,u)exp (g_{k+1}(u,v))eta(v,k+1)}{Z(x,w)}
]
线性链条件随机场的参数学习
线性链的条件随机场的参数学习使用梯度下降就可以了,优化目标是使得(p(y|x;w))最大。具体的推导如下:
[egin{split}
dfrac{partial log p(y|x;w)}{partial w_j} &= dfrac{partial }{partial w_j}log left(dfrac{expsum_{j=1}^Jw_jF_j(x,y)}{Z(x,w)}
ight)\
&= dfrac{partial }{partial w_j}sum_{j=1}^Jw_jF_j(x,y)-log Z(x,w)\
&= F_j(x,y) - dfrac{partial }{partial w_j}log Z(x,w)\
&= F_j(x,y) - dfrac{1}{Z(x,w)}dfrac{partial }{partial w_j}Z(x,w)
end{split}
]
[egin{split}
dfrac{partial }{partial w_j}Z(x,w) &= dfrac{partial }{partial w_j}sum_{y'}[expsum_j^Jw_jF_j(x,y')]\
&= sum_{y'}dfrac{partial }{partial w_j}[expsum_j^Jw_jF_j(x,y')]\
&= sum_{y'}[expsum_j^Jw_jF_j(x,y')]dfrac{partial }{partial w_j}[sum_j^Jw_jF_j(x,y')]\
&= sum_{y'}[expsum_j^Jw_jF_j(x,y')]F_j(x,y')
end{split}
]
所以有
[egin{split}
dfrac{partial log p(y|x;w)}{partial w_j} &= F_j(x,y) - dfrac{1}{Z(x,w)}sum_{y'}[expsum_j^Jw_jF_j(x,y')]F_j(x,y')\
&= F_j(x,y) -sum_{y'}F_j(x,y')dfrac{expsum_j^Jw_jF_j(x,y')}{Z(x,w)}\
&= F_j(x,y) -sum_{y'}F_j(x,y')p(y'|x;w)\
&= F_j(x,y) - E_{y'sim p(y'|x;w)}F_j(x,y')
end{split}
]
我们现在分析下(E_{y'sim p(y'|x;w)}F_j(x,y'))该怎么求:
[egin{split}
E_{y'sim p(y'|x;w)}F_j(x,y') &= sum_{i=1}^nE_{y_{i-1},y_i}[f_j(y_{i-1},y_i,x,i)]\
&= sum_{i=1}^nsum_{y_{i-1}}sum_{y_i}p(y_{i-1},y_i|x;w)f_j(y_{i-1},y_i,x,i)\
&=sum_{i=1}^nsum_{y_{i-1}}sum_{y_i}f_j(y_{i-1},y_i,x,i)dfrac{alpha(i-1,y_{i-1})[exp g_i(y_{i-1},y_i)]eta (y_i, i)}{Z(x,w)}
end{split}
]
其计算的时间复杂度为(O(nm^2))
CRF 与 HMM 的区别
- HMM是生成模型,CRF是判别模型
- HMM是概率有向图,CRF是概率无向图
- HMM求解过程可能是局部最优,CRF可以全局最优
- CRF概率归一化较合理,HMM则会导致label bias 问题
CRF 与 HMM 的优缺点比较
- 与HMM比较。CRF没有HMM那样严格的独立性假设条件,因而可以容纳任意的上下文信息。特征设计灵活(与ME一样)
- 与MEMM比较。由于CRF计算全局最优输出节点的条件概率,它还克服了最大熵马尔可夫模型标记偏置(Label-bias)的缺点。
- 与ME比较。CRF是在给定需要标记的观察序列的条件下,计算整个标记序列的联合概率分布,而不是在给定当前状态条件下,定义下一个状态的状态分布。