中文分词词性和序列标注之BI-LSTM-CRF-1-算法原理

1.1 优势

1.1.1 较少标注语料需求

在之前的CRF模型中,使用人工设置特征模版扫描待训练语料得到特征函数集合。为每个特征函数配置并优化其权重。但所有特征函数均来自标注语料,在工程中,标注语料非常有限,可能会碰到之前未标记特征。而本算法将字向量(或其他待标注向量)单独无监督训练,无需人工标注。减少标记样本需求。只有在后续lstm+crf训练才需要标注语料。

1.1.2 非线性特征

CRF特征模版是线性模型,而深度学习是非线性模型,这增强了特征。

1.2 算法介绍

1.2.1 word2vec

首先使用大量样本训练word2vec模型,得到每个字的嵌入向量,在几何空间上看,每个字由一个向量分布表示,其在上下文中的意义被分布到向量的每个维度上。这么做的目的是将字向量稠密化,这样在标记序列训练中即使未出现所有元素,也可以将网络用于其他字向量。

未找到字向量图,但词向量含义是一样。其含义被向量(嵌入向量往往被规范为单位长度)表达为不同的方向。

1.2.2 bidirecation lstm 序列标注

将待标记序列的字向量组合输入双层LSTM网络(工程中常用GRU,参数更少)。这么做可以利用序列上下问文中所有可能对标记有帮助的信息,且特征非线性,而不是像之前CRF那样靠人工设置模版指定。

lstm输出经过投影层投影到到长度等同序列长度,宽度等同标记类型数量的新向量序列上。这个向量序列的意义等同之前纯CRF模型中的特征函数(未考虑线性链条件随机场,只考虑了之前CRF中的有向场x输入特征评分)。

1.2.3 CRF约束

实际上LSTM网络已经能直接输出序列标记,但此时序列标记未考虑前后依赖,CRF在这里起到的作用和前面的纯CRF线性模型分类完全一样。把前后标记依赖约束考虑进去,直接使用标记状态转换概率(其实是联合概率)作为评分。

\[ \begin{align}
s(x, y) & =b[y1] + \sum_{i=2}^n A[y_{i-1},y_i] + \sum_{i=1}^T f_i(x, y_i) + e(y_T) \\
p(y|x) & =\frac{\exp(s(x,y))}{Z(x)} \\
Z(x) &= \sum_y exp(s(x,y))
\end{align} \]

\( A \) 是标记状态转移矩阵(注意CRF是无向图,这里是前后两个标记共现概率,对图节点连接边建模为联合概率,而不是有向图的条件概率), \( f_i(x, y_i) \)表示在时刻\(i\)时,标记\( y_i \)的分数,此分数就是lstm对应输出值。\( b, e \)分别是对应标签的初始概率和结束概率, 因转换矩阵中计算没有初始概率。

规范因子的计算使用向前/后向算法中文分词词性和序列标注之CRF-3-向前向后算法完成(只计算logZ(x), 目的是避免值超出计算机表示范围), 优化使用最小负对数似然, 解码使用viterbi, 这和之前没什么大区别,不再叙述。

1.2.4 简化

双向LSTM模型由前向和后向两个LSTM组合而成,而在这两个模型中,初始隐向量都是\( 0 \)。也就是说实际上LSTM有能力判断当前时刻是否属于初始/结束状态。因此\( b, e \)初始标记和结束标记概率可以省掉,而省掉后的值由\( f_i(y_i) \)补偿。于是评分模型可简化为:

\[ s(x, y)= \sum_{i=2}^n A[y_{i-1},y_i] + \sum_{i=1}^T f_i(x, y_i) \]

[1] Baidu research, Zhiheng Huang, Wei Xu, Kai Yu :Bidirectional LSTM-CRF Models for Sequence Tagging
[2] Tomas Mikolov,Ilya Sutskever,Kai Chen: Distributed Representations of Words and Phrases
and their Compositionality

Leave a Reply

Your email address will not be published.

Time limit is exhausted. Please reload the CAPTCHA.

Proudly powered by WordPress   Premium Style Theme by www.gopiplus.com