标签:完全 为我 tag code 符号表 经典的 了解 方式 掌握
序列标注(Sequence Tagging)是一个比较简单的NLP任务,但也可以称作是最基础的任务。序列标注的涵盖范围是非常广泛的,可用于解决一系列对字符进行分类的问题,如分词、词性标注、命名实体识别、关系抽取等等。
对于分词相信看过之前博客的朋友都不陌生了,实际上网上已经有很多开源的中文分词工具,jieba、pkuseg、pyhanlp...这里都不一一列举了,我们也不再作过多的讨论。接下来都是以实体识别作为示例来讲解,而其他任务的实现都是基本一致,只是标注方式的不同罢了。
对于实体识别任务,我们有一段待标注的序列\(X = \{x_1, x_2,...,x_n\}\),我们需要对该序列的每一个\(x_i\)预测一个对应的Tag,在通常情况下,我们对tag进行如下定义:
常见标签方案通常为三标签或者五标签法:
当然这样的tag并不是固定的,根据任务不同还可以对标签有一系列灵活的变化或扩展。对于分词任务,我们可以用同样的标注方式来标注每一个词的开头、结尾,或单字。如词性标注中,我们可以将标签定义为:n、v、adj...而对于更细类别的命名实体识别任务,我们在定义的标签之后加上一些后缀,如:B-Person、B-Location...这都可以根据你的实际任务来自行选择。
处理序列标注问题的常用模型包括隐马尔可夫模型(HMM)、条件随机场(CRF)、BiLSTM + CRF,由于篇幅的限制,这一节先介绍两个传统的机器学习模型:隐马尔可夫模型和条件随机场
HMM属于经典的机器学习算法,属于有向图模型的一种,主要用于时序数据建模。随着深度学习的发展,HMM在序列标注上用的比较少了,但也是做序列标注的一种基本思路。原理比较简单,已经掌握的同学可以跳过这一段,下面也只进行简单的介绍,想要详细了解的同学可以看看周志华老师的西瓜书,讲的非常详细的了。
HMM模型中的变量可以分为两组:
显然,在序列标注任务中,待标注序列就对应观测变量,标注结果对应状态变量,而我们定义的标签类别就对应状态空间。对应的隐马尔可夫模型结构如下图所示:
上图的箭头表示变量间的依赖关系,即一种马尔可夫链结构,整个模型基于下面的隐马尔可夫假设:
根据上述假设,则我们就可以对所有变量的联合概率分布进行建模:
\[P(x_1, y_1, ..., x_n, y_n)=P(y_1)P(x_1|y_1)\prod^n_{i=2}P(y_i|y_{i-1})P(x_i|y_i)\]
有了上述表达式,如果我们能够学习得到各个状态的初始概率\(P(y_1)\),各个状态之间的转移概率\(P(y_i|y_{i-1})\),以及观测概率\(P(x_i|y_i)\),我们即可对任意序列计算得到我们的联合概率分布,从而选择最大概率的状态变量作为我们的预测结果。因此,HMM的主要有如下三组参数:
通常将其记为\(\lambda=[A, B, \pi]\)则联合概率分布即可化为如下表达式:
\[P(X, Y|\lambda) = \pi_{y_1}b_{y_1, x_1}\prod^n_{i=2}a_{y_{i-1}, y_i}b_{y_i, x_i}\]
概率图模型均存在三个基本问题,这也是我们求解概率图模型的基本步骤:
HMM属于生成式模型,直接对联合分布\(P(X, Y)\)进行建模。CRF在某些方面与HMM有些类似,但属于一种判别式无向图模型,其对条件分布进行建模。具体来说,对于观测序列\(X\)和标记序列\(Y\),CRF的目标就是构建条件概率模型\(P(Y|X)\)。
马尔可夫随机场又称为概率无向图模型,其表示一个联合概率分布。对于一个无向图模型\(G=[V, E]\),\(V\)表示该无向图中的所有节点,\(E\)表示无向图中的所有无向边。如果无向图中各个节点之间的联合概率分布满足马尔可夫性,则称此联合概率分布为马尔可夫随机场或概率无向图模型。
马尔可夫性:任意节点对所有节点的条件概率分布等于其对其相邻节点的条件概率分布
\[P(y_v|Y_{V/{v}})=P(y_v|Y_{n(v)})\]
其中\(Y_{V/{v}}\)表示无向图中除\(y_v\)意外的所有节点,\(Y_{n(v)}\)表示与\(y_v\)相邻的所有节点。简单概括马尔可夫性就是不相邻节点之间条件独立,或每一个节点仅由相邻节点所决定。作为一个无向图模型,其没有HMM模型那样严格的假设
条件随机场为一种特殊的马尔可夫随机场,表示的是给定一组输入,得到的输出满足马尔可夫随机场。
对于我们的序列标注任务,我们所说的CRF通常都指链式CRF,如上图所示,即每个无向图模型为一个线性链模型,每一个节点仅与两个节点相邻,则每一个节点对所有节点的条件概率分布满足:
\[P(y_t|X, Y_{V/{v}}) = P(y_t|X, y_{t-1}, y_{t+1})\]
其中当\(t\)取\(1\)或\(n\)时只考虑单边。
CRF对于条件概率\(P(Y|X)\)的建模是比较复杂的,但仔细看完下面的讲解你很快就能完全掌握了。条件随机场中的参数化形式的条件概率定义如下所示:
\[P(y|x)=\frac{1}{Z}exp(\sum_j\sum_{i=1}^{n-1}\lambda_it_j(y_{i+1}, y_i, x, i)+ \sum_k\sum_{i=1}^{n}\mu_ks_k(y_i, x, i))\]
其中:
在序列标注任务中,通常情况下,我们将其表示为条件随机场的矩阵形式,这更便于我们理解与计算:
对于链式条件随机场,我们首先定义两个特殊节点:\(y_0=<START>\),\(y_{n+1}=<STOP>\)。
对观测序列\(X\)的每一个位置\(i = 1, 2, ..., n+1\),定义一个N阶矩阵(N是隐藏状态的个数),这个矩阵等效于于HMM模型中的状态转移矩阵:
\[M_i(x)=[M_i(y_{i-1}, y_i|x)]\]
\[M_i(y_{i-1}, y_i|x)=exp(W_i(y_{i-1}, y_i|x))\]
\[W_i(y_{i-1}, y_i|x)=\sum_{k=1}^{K} w_kf_k(y_{i-1}, y_i, x, i)\]
其中\(f_k(y_{i-1}, y_i, x, i)\)是将状态转移特征\(t_j(y_{i-1}, y_i, x, i)\)以及状态特征\(s_k(y_i, x, i)\)统一化的符号表示,\(w_k\)为对应特征参数的统一化符号表征(详细的表征方法可以参考李航老师的《统计学习方法》的197页),这样,我们就得到了一个类似于HMM的状态转移矩阵,转移概率可以通过该序列n+1个矩阵适当元素的乘积表示,即\(\prod_{i=1}^{n+1}M_i(y_{i-1}, y_i|x)\)。但需要注意,这个状态转移矩阵\(M\)是非规范化的(所有概率累加不为1),我们可以归一化最后的条件概率为:
\[P_w(Y|X) = \frac{1}{Z_w(x)}\prod_{i=1}^{n+1}M_i(y_{i-1}, y_i|x)\]
其中:\(Z_w(x)=(M_1(x)M_2(x)...M_{n+1})_{start,stop}\)表示从开始状态到终止状态所有路径上的非规范化概率只和,即一个规范化因子,将非规范化概率规范化。
HMM的转移概率是受到约束的,而CRF的转移矩阵可以是任一权重,只需最后进行全局归一化就行了,这使得CRF较HMM显得更加灵活
CRF较HMM更为强大,主要由如下几个原因:
维特比算法用动态规划方法求解最短路径问题,可以用于HMM模型以及CRF模型的解码。
维特比算法需要如下三个元素:
由之前的介绍我们已经了解,这三个概率在HMM模型和CRF模型都为可求的。
算法基于这样一个思想:最优路径的子路径也一定是最优的。
举一个栗子就可以很清楚的明白了,假设我们有一个句子:“我爱北京天安门”。如果我们采用BIO的标注方法进行标注,则每个字的有3种可能的隐藏状态。我们按照以下的方法来求解每一层的条件概率:
参考链接
https://blog.csdn.net/shuibuzhaodeshiren/article/details/85093765
https://www.cnblogs.com/Determined22/p/6750327.html
https://zhuanlan.zhihu.com/p/35620631
https://zhuanlan.zhihu.com/p/56317740
https://www.cnblogs.com/Determined22/p/6915730.html
https://zhuanlan.zhihu.com/p/63087935
标签:完全 为我 tag code 符号表 经典的 了解 方式 掌握
原文地址:https://www.cnblogs.com/sandwichnlp/p/11618530.html