对数线性模型与线性链条件随机场
对数线性模型
我们从书本上知道线性链条件随机场就是对数线性模型,逻辑回归也是对数线性模型。对数线性模型的一般形式如下所示:
\[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 的区别
- HMM是生成模型,CRF是判别模型
- HMM是概率有向图,CRF是概率无向图
- HMM求解过程可能是局部最优,CRF可以全局最优
- CRF概率归一化较合理,HMM则会导致label bias 问题
CRF 与 HMM 的优缺点比较
- 与HMM比较。CRF没有HMM那样严格的独立性假设条件,因而可以容纳任意的上下文信息。特征设计灵活(与ME一样)
- 与MEMM比较。由于CRF计算全局最优输出节点的条件概率,它还克服了最大熵马尔可夫模型标记偏置(Label-bias)的缺点。
- 与ME比较。CRF是在给定需要标记的观察序列的条件下,计算整个标记序列的联合概率分布,而不是在给定当前状态条件下,定义下一个状态的状态分布。