对数线性模型与线性链条件随机场

对数线性模型与线性链条件随机场

对数线性模型

我们从书本上知道线性链条件随机场就是对数线性模型,逻辑回归也是对数线性模型。对数线性模型的一般形式如下所示:
\[ p(y|x;w)=\dfrac{\exp\sum_{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}\exp\sum_{j=1}^Jw_jF_j(x,y') \]

模型的预测即给出使得\(p(y|x;w)\)最大的对应\(y\),更加数学化的表达为:
\[ \hat{y} = \arg\max_yp(y|x;w)=\arg\max_y\sum_{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}\)

线性链条件随机场的解码

解码即预测序列的标记结果,上文提及
\[ \begin{split} \hat{y}&=\arg\max_yp(y|x;w)\\ &= \arg\max_y\dfrac{1}{Z(x,w)}\exp\sum_{j=1}^Jw_jF_j(x,y)\\ &=\arg\max_y\sum_{j=1}^Jw_jF_j(x,y)\\ &=\arg\max_y\sum_{j=1}^Jw_j\sum_{i=1}^nf_j(y_{i-1},y_i,x,i)\\ &=\arg\max_y\sum_{i=1}^n\sum_{j=1}^Jw_jf_j(y_{i-1},y_i,x,i)\\ &=\arg\max_y\sum_{i=1}^ng_i(y_{i-1},y_i) \end{split} \]

我们令\(U(k,v)\)为位置\(1\)到位置\(k\)的最优序列的得分,其中第\(k\)个位置的标记为\(v\),根据定义我们有
\[ \begin{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}=\arg\max_u[U(k-1,u) + g_k(u,\hat{y}_k)] \]
整个解码过程其实就是动态规划的具体应用,时间复杂度为\(O(m^2nJ+m^2n)\)

前向后向算法

\[\hat{y}=\arg\max_y\sum_{i=1}^ng_i(y_{i-1},y_i)\]可以知道
\[ Z(x,w) = \sum_y\exp\sum_{i=1}^ng_i(y_{i-1},y_i) \]
我们令
\[ \begin{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_u\alpha (k,u)\exp [g_{k+1}(u,v)] \]
上面是从前向推,同样我们可以后向推,得到
\[ \beta (u,k) = \sum_v[\exp g_{k+1}(u,v)]\beta (v, k+1) \]
这样,我们有
\[ Z(x,w) = \sum_u\alpha(k,u)\beta(u,k) \]
同样
\[ p(y_k=u|x;w) = \dfrac{\alpha(k,u)\beta(u,k)}{Z(x,w)}=\dfrac{\alpha(k,u)\beta(u,k)}{\sum_u\alpha(k,u)\beta(u,k)} \]
\[ p(y_k=u,y_{k+1}=v|x;w) = \dfrac{\alpha(k,u)\exp (g_{k+1}(u,v))\beta(v,k+1)}{Z(x,w)} \]

线性链条件随机场的参数学习

线性链的条件随机场的参数学习使用梯度下降就可以了,优化目标是使得\(p(y|x;w)\)最大。具体的推导如下:
\[ \begin{split} \dfrac{\partial \log p(y|x;w)}{\partial w_j} &= \dfrac{\partial }{\partial w_j}\log \left(\dfrac{\exp\sum_{j=1}^Jw_jF_j(x,y)}{Z(x,w)}\right)\\ &= \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} \]
\[ \begin{split} \dfrac{\partial }{\partial w_j}Z(x,w) &= \dfrac{\partial }{\partial w_j}\sum_{y'}[\exp\sum_j^Jw_jF_j(x,y')]\\ &= \sum_{y'}\dfrac{\partial }{\partial w_j}[\exp\sum_j^Jw_jF_j(x,y')]\\ &= \sum_{y'}[\exp\sum_j^Jw_jF_j(x,y')]\dfrac{\partial }{\partial w_j}[\sum_j^Jw_jF_j(x,y')]\\ &= \sum_{y'}[\exp\sum_j^Jw_jF_j(x,y')]F_j(x,y') \end{split} \]
所以有
\[ \begin{split} \dfrac{\partial \log p(y|x;w)}{\partial w_j} &= F_j(x,y) - \dfrac{1}{Z(x,w)}\sum_{y'}[\exp\sum_j^Jw_jF_j(x,y')]F_j(x,y')\\ &= F_j(x,y) -\sum_{y'}F_j(x,y')\dfrac{\exp\sum_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')\)该怎么求:
\[ \begin{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}^n\sum_{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}^n\sum_{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)]\beta (y_i, i)}{Z(x,w)} \end{split} \]

其计算的时间复杂度为\(O(nm^2)\)

CRF 与 HMM 的区别

  1. HMM是生成模型,CRF是判别模型
  2. HMM是概率有向图,CRF是概率无向图
  3. HMM求解过程可能是局部最优,CRF可以全局最优
  4. CRF概率归一化较合理,HMM则会导致label bias 问题

CRF 与 HMM 的优缺点比较

  1. 与HMM比较。CRF没有HMM那样严格的独立性假设条件,因而可以容纳任意的上下文信息。特征设计灵活(与ME一样)
  2. 与MEMM比较。由于CRF计算全局最优输出节点的条件概率,它还克服了最大熵马尔可夫模型标记偏置(Label-bias)的缺点。
  3. 与ME比较。CRF是在给定需要标记的观察序列的条件下,计算整个标记序列的联合概率分布,而不是在给定当前状态条件下,定义下一个状态的状态分布。

转载于:https://www.cnblogs.com/crackpotisback/p/9909480.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值