当前位置:   article > 正文

【NLP】命名实体识别——IDCNN-CRF论文阅读与总结

idcnn

背景

之前写过使用Bi-LSTM-CRF模型进行NER任务,但在实际工程中当要考虑速度时还会考虑这个模型——IDCNN-CRF模型。因为我们知道,LSTM模型序列化模型,即后面的输入依赖于前面的结果,无法做到并行化,无论是模型训练还是模型推理,在速度上IDCNN都有很大的优势,并且这两个模型的效果非常接近。IDCNN论文地址:Fast and Accurate Entity Recognition with Iterated Dilated Convolutions. 原论文不详细介绍了,就对该论文做一个总结吧。

IDCNN与传统CNN比较

我们知道CNN运用于文本处理,有一个劣势,就是经过卷积之后,末层神经元可能只是得到了原始输入数据中一小部分的信息。所以为了获取上下文信息,可能就需要加入更多的卷积层,导致网络原来越深,参数越来越多,而模型越大越容易导致过拟合问题,所以就需要引入Dropout之类的正则化,带来更多的超参数,整个网络变得庞大冗杂难以训练。

通常CNN的filter是作用在输入矩阵一片连续的位置上,不断sliding做卷积,接着通过pooling来整合多尺度的上下文信息,由于pooling的使用就会损失分辨率。既然网络中加入pooling层会损失信息,降低精度。那么不加pooling层会使感受野变小,学不到全局的特征。如果单纯的去掉pooling层、扩大卷积核的话,这样纯粹的扩大卷积核势必导致计算量的增大,此时最好的办法就是Dilated Convolutions(扩张卷积或叫空洞卷积)。

github上有一个介绍cnn的动图仓库:https://github.com/vdumoulin/conv_arithmetic。我们看图理解一下,下图是增加pad后,stride为1的cnn卷积计算过程。增加pad是为了保持输入与输出数据维度的一致性。
在这里插入图片描述
下图是空洞卷积计算过程:

在这里插入图片描述
这里就比较好理解空洞卷积是如何计算的了。
在论文:Multi-Scale Context Aggregation by Dilated Convolutions我们可以看到:
在这里插入图片描述
系统扩张支持感受野指数级扩张,而不丧失分辨率或覆盖范围。在IDCNN中,是没有池化操作的,并且没有步长参数,默认是1,增加了膨胀系数参数,这个可以在后面论文代码复现中可以看到。

IDCNN-CRF在NER中的使用

之所以称为IDCNN,主要是还是源于:Iterated Dilated Convolutions。我们知道对NER来讲,整个输入句子中每个字都有可能对当前位置的标注产生影响,即所谓的长距离依赖问题,BiLSTM由于其擅长处理序列化数据,能够处理。在IDCNN中对于长距离依赖的处理则是这个样子的。
在这里插入图片描述
从上图能够很清晰地看出:IDCNN对输入句子的每一个token生成一个logits,这里就和biLSTM模型输出logits完全一样,加入CRF层,用Viterbi算法解码出标注结果。如何使用CRF,可以参考我在BiLSTM-CRF进行NER的那篇文章的介绍。如果还不清晰的话,网上还有这些结构图供参考理解:
在这里插入图片描述
以及下图:
在这里插入图片描述

论文中提出的IDCNN模型是4个结构相同的Dilated CNN block拼接在一起,每个block里面是dilation width为1,1,2的三层IDCNN。

总结

总体来说,IDCNN模型结构相对简单。但是在GPU算力时代,如果模型效果能达到一定要求后,速度快则是一大优势,IDCNN则有这一特点。不过根据自己在实际工程上的实践,IDCNN在效果上还是略差于BiLSTM,不过速度确实是比BiLSTM快不少。当然,如果想要更高的识别效果,直接上Bert吧,关于Bert相关内容,则会在后面的文章中逐一介绍。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号