[paper阅读]使用深度Bi-GRU-CRF网络进行中文词法分析-2

模型

这个部分将会详细地介绍深度Bi-GRU-CRF模型. 图1展示了完整的网络.


1 2层层叠Bi-GRUsBi-GRU-CRF网络说明

RNN对于序列模型而言是非常重要的工具, 并且已经被运用在了许多自然语言处理的任务中. 不像前馈神经网络, RNN可以对元素序列之间的依赖进行建模. 作为两个RNN的主要变种–GRULSTM目标在于在长序列中对长期的依赖进行建模. 之前的研究表明: GRU的模型效果是可以与LSTM相比的, 如何在特定的任务中选择门单元主要依赖于数据集而定. 实验结果表明: GRU的效果优于LSTM.

Bi-GRU(双向GRU)是GRU的一个扩展, 并且事实表明: 在输入为完整的句子时, GRU是非常适用于语义分析任务的. 因此, 有下文的编码以及历史的编码是非常重要的. 特别地, 一个翻转方向的 GRU 与一个前向的 GRU放在一起形成了一个 Bi-GRU 层. 这两个GRU 的输入相同, 但是训练的方向不同. 然后将它们的结果作为输出. 深度/层级神经网络在表示一些函数和对变长的依赖中是非常高效的. 因此, 堆叠多个 Bi-GRUs形成一个深度网络 变成一个对于 提高表示能力来说 必然的选择. 在本文中, 我们将其称为两个 Bi-GRUs.

GRU结构之上, 作者们使用了一个条件随机场(CRF)层来对最后的标签序列一起进行建模. 它的输入是一个全连接层, 将最上面的 Bi-GRUs 层输出到一个 L 维的向量. L是一个所有可能标签的数目. 此外, 作者们也试图通过在解码过程中应用强约束来强调输出标签之间的依赖. 特别地, 模型不接受任何与IOB2不兼容的序列, 例如, LOC-B后面接一个TIME-I.

模型是进行压缩的, 只会占用少于100MRAM, 包括字符嵌入查找表.

层叠Bi-GRUs

使用神经网络处理符号化数据的第一步是使用一个分散向量来表示它们, 也被称为embeddings. 在这里, 模型将原始的句子作为输入(一般是单词序列而不用任何人工处理的特征). 给定一个字符序列 {c_1, c_2,…,c_T} , 字典 V 中的每个字符 c_i 通过一个查找表都被映射到实值向量 e(c_i).

然后, 作者们还构建了一个深度GRU神经网络来使用字符嵌入作为输入, 学习到一个给定句子的结构信息. GRU 的定义如下:

u_t = \sigma_g(W_{ux}x_t+ W_{uh}h_{t-1}+b_u)
r_t=\sigma_g(W_{rx}x_t+W_{rh}h_{t-1}+b_r)
\tilde{h_t}=\sigma_c(W_{cx}x_t+W_{ch}(r_t\bigodot h_{t-1}+b_c)
h_t=(1-u_t)\bigodot h_{t-1} + u_t \bigodot \tilde{h_t}

其中, \tilde是元素级别的向量积. \simga_g是更新门 u_t和重置门 r_t 的激活函数. \sigma_c 是候选隐层状态的激活函数.

在相同输入序列中向两个不同方向进行训练的两个GRUs组成了一个Bi-GRU层. 多个Bi-GRU层相互之间堆叠在一起, 将低层次的Bi-GRU层的输出作为高层次Bi-GRU的出入.

带限制解码的CRF

CRF层学习条件概率: p(y|h). 其中, h={h_1, h_2, …, h_T} 为最顶层Bi-GRU层生成的表示序列, 而 y={y_1, y_2, …, y_t} 为标签序列.

在给定h 的情况下, 用于学习线性链式CRF的概率模型在所有可能的标签序列 y 上定义了一系列条件概率 p(y|h;t,s):

p(y|h;t,s)=\frac{\prod_{i=1}^{T}\psi_i(y_{i-1},y_i,h)}{\sum_{y’\in y(h)}{\prod_{i=1}^{T}}\psi_i(y’_{i-1},y’_i,h)}

其中. \psi(y_{i-1},y_i,h) = \exp (\sum_{i=1}^Tt(y_{i-1,y_i, h}+s(y_i,h)))y(h) 表示所有可能的标签序列(即使是那些与IOB2格式不兼容的格式). t 表示给定输入序列 h 的条件下从 y_{i-1} 转移到 y_i 的转移概率. s 是全连接层线性函数的输出, 将最顶层的Bi-RNN的输出在时间木走i转化为一个输出的分数 y_i.

在这里, 作者们使用了最大条件概率估计来训练CRF层, 使用了一个根似然估计:

L(t,s)=\sum_i {log{p(y|h;t,s)}}

为了解码, 对于每一个序列, 简单使用一个Viterbi算法通过 y(h) 搜索来最大化条件概率 P(y|h), 例如:

y^*=\arg \max _{y\in y(h)} p(y|h)

正如上面提到的, 在解码阶段, 作者们进行了强制要求来保证结果能够与 IOB2的形式兼容. 不满足下面两种条件的标签序列将会被丢弃:

  • 输入句子的第一个字符标签无法标记为I标签
  • 每个I标签的前一个标间只能是一个B标签或者是相同类型的I标签, 例如LOC-I标签之前的标签只能为LOC-B标签或者LOC-I标签

注意: 这些限制只会影响解码, 因此, 它不会影响到训练速度.

这周主要介绍了模型部分, 下周我们将会介绍相应的实验及拓展.

打赏

mickey

记录生活,写给几十年后的自己。

发表评论

电子邮件地址不会被公开。 必填项已用*标注