命名体识别之IDCNN

解决问题

      尽管BiLSTM+CRF被广泛的应用于NER任务中有很好的表现,但是BiLSTM不能很好的利用GPU的并行性,导致模型的性能很差,本文提出了一种替代方案-Iterated Dilated Convolutional Neural Networks(ID-CNNs),相比传统的CNN,ID-CNNs可以捕获更长的上下文信息,并且相比传统的LSTM,可以实现并行性。

DilatedCNN 和 普通CNN

        传统的CNN有明显的计算优势,但是传统的CNN在经过卷积之后,末梢神经元只能得到输入文本的一小部分信息,为了获取上下文信息,需要加入更多的卷积层,导致网络越来越深,参数越来越多,容易发生过拟合。正常CNN的filter,都是作用在输入矩阵一片连续的位置上,不断sliding做卷积,接着通过pooling来整合多尺度的上下文信息,这种方式会损失分辨率。既然网络中加入pooling层会损失信息,降低精度。那么不加pooling层会使感受野变小,学不到全局的特征。如果我们单纯的去掉pooling层、扩大卷积核的话,这样纯粹的扩大卷积核势必导致计算量的增大,此时最好的办法就是Dilated Convolutions(扩张卷积或叫空洞卷积)。

文本中使用Dilated CNN

       膨胀卷积 (Dilated Convolution) 是指卷积核中存在空洞,下图展示了膨胀卷积和传统卷积的区别。

命名体识别之IDCNN_第1张图片

        膨胀卷积通过在卷积核中增加空洞,可以扩大模型的感受野 (即句子中的上下文),从下图可以看到,同样是尺寸为 3 的卷积核,同样是两层卷积层,膨胀卷积的上下文大小为 7,而传统卷积上下文大小为 5。

       

卷积核的膨胀系数 (即空洞的大小) 每一层是不同的,一般可以取 (1, 2, 4, 8, ...),即前一层的两倍。对于尺寸为 3 的传统卷积核,第 L 层的上下文大小为 2L+1;而对于尺寸为 3 的膨胀卷积核,第 L 层上下文的大小是 2^(L+1) -1。因此膨胀卷积的上下文大小和层数是指数相关的,可以通过比较少的卷积层得到更大的上下文。

模型输出

     论文中提出的IDCNN模型是4个结构相同的Dilated CNN 模块拼接在一起,每个模块里边是dilation width为1,1,2的三层DCNN。IDCNN对输入句子的每一个字生成一个logits,这里就和biLSTM模型输出logits之后完全一样,放入CRF Layer,用Viterbi算法解码出标注结果。

     在BiLSTM或者IDCNN这样的深度网络模型后面接上CRF层是一个序列标注很常见的方法。BiLSTM或者IDCNN计算出的是每个词分类的概率而CRF层引入序列的转移概率,最终计算出loss反馈回网络。

模型表现

在CoNLL-2003数据集上的表现:

 模型在OntoNotes 5.0 English中的表现:

代码地址:https://github.com/iesl/dilated-cnn-ner

你可能感兴趣的:(深度学习,cnn,人工智能,神经网络)