Adversarial Transfer Learning for Chinese Named Entity Recognition with Self-Attention Mechanism论文笔记
我的毕设课题是关于微博上的 Named Entity Recognition(NER)技术的研究与实现,在偶然间我翻阅到了这篇论文,并对其中的观点深感认同,在此对作者的研究成果表示敬意,并简单介绍其主要内容。
论文链接:https://www.aclweb.org/anthology/D18-1017(ACL2018)
code:https://github.com/CPF-NLPR/AT4ChineseNER
核心思想
这篇文章做的最核心的事情就是标题中提到的这几个事儿:
- Adversial:对抗
文章采用了多任务学习的架构设计,并非全新的体系架构。其框架仍然基于经典的BiLSTM+CRF模型这一前提下进行了优化与创新。具体而言, 该方法仅需共享一个BiLSTM模型即可实现分词与实体识别的并行训练, 并将两者安排在一左一右的位置进行处理, 这种安排使得系统能够更加高效地完成两项核心任务。在此基础之上, 通过对抗训练机制优化模型以减少分词带来的错误影响, 这种策略有助于提升整体系统的性能表现
- Transfer:迁移
该文章专注于中文微博上的命名实体识别问题。由于所使用的数据集规模较小,在未采用迁移学习策略(即传统意义上的多任务学习)的情况下,单纯基于当前任务的数据进行训练,则难以取得显著效果。
- Self-attention:自注意力
大家最熟悉的NER结构即为BiLSTM+CRF体系,在NLP领域有着广泛的应用且表现稳定。研究表明,在捕捉长距离依赖关系方面的能力较弱的情况下自注意力机制能够显著提高模型对前后文信息的敏感度从而在实际应用中展现出更好的性能表现
这就是我对文章的主要观点进行的整理;如果想快速浏览一下的话就可以结束了;下面是详细的笔记。
Motivation
任何一篇提出的文章必然都面临着需要解决的问题。问题往往种类繁多;例如,在我的看法中:
- 当前模型未充分利用的信息点;
- 研究现有存在的不足;
- 无论是什么原因,
- 他总能找到至少一个或更多存在的缺陷。(甚至更多)
那这篇文章的动机是什么呢?
本文专注于微博领域的 Named Entity Recognition(NER)任务。已有研究表明,在多任务学习框架下进行NER相关研究已取得一定进展。鉴于此,本文认为:多分类学习中我们采用的是中文分词与命名实体识别两个子任务;其主要目标在于通过分词过程获取词语边界信息,并为后续的NER建模提供支持;需要注意的是,在实际应用中这种信息的准确性可能存在差异。例如,在具体实现时,我们采用了基于LSTM的联合模型进行实验验证。

显然,在将分词信息整合后会对NER的效果产生一定影响。在分词过程中,“休斯顿机场”会被断开处理;然而,在NER识别阶段,“休士顿机场”作为一个整体概念不会被分割。“因此”,“休斯顿机场”的位置特征需要被准确提取出来。“为此”,“自注意力机制”的引入为捕捉文本中的深层语义关系提供了新的可能性。另外,“任何字符”的重要性不容忽视,“自注意力机制”的引入为捕捉文本中的深层语义关系提供了新的可能性。
Model
模型当然要有图,所以先上图:

模型结构看起来复杂多变但整体设计思路清晰其中embedding层是基础组件其中不同的任务是单独对应的任务类型例如NER专用或者CWS专用系统分别采用不同的路径进行处理其中NER相关的嵌入会被输入到对应的BiLSTM结构中同样地分词过程也会采用共享BiLSTM架构以实现统一处理机制经过AtrousConv1d后会连接一个self-attention模块以便捕捉长距离依赖关系随后系统进入解码阶段通过CRF层实现最终分类目标即完成NER或CWS任务在此过程中共享层承担着实现对抗学习的关键功能因此后续连接部分会产生一个对抗损失函数用于优化训练过程经过max pooling后进行梯度反转操作(对于不了解这一技术的读者建议查阅相关资料以更好地理解其作用)随后应用softmax函数对结果进行概率分布预测其中softmax层的作用是判断当前处理的是命名实体识别还是词边界划分任务(两者在训练时被独立优化)
之后我们对每一部分进行介绍。
Embedding
两个分离的embedding分别应用于各自对应的特定领域,在同一个position上会呈现不同含义的特征向量描述方法下进行区分学习。同一个character出现在两个不同的embedding中,并无特别之处
BiLSTM
在这里,模型中包含三个不同的 BiLSTM 单元:其中一个是同时处理 NER(命名实体识别)和 CWS(词边界识别)的任务;另一个是共享权重设计的 BiLSTM 单元。对于熟悉 CWS 以及 NER 或者序列标注任务的人来说,了解这个经典的架构是必要的。无论是在 NER 任务还是 CWS 任务中使用的 BiLSTM 单元,在计算方式上都保持一致。

一个前向,一个后向,最后做一个拼接,这也没什么好说的。
值得注意的是共享的BiLSTM模型,在这两个任务都涉及的情况下,并且在训练阶段NER与CWS并非同时被处理。因此,在公式推导方面会呈现出这样的特征:

k指代的是当前的任务,范围就是{NER,CWS},最后一项代表当前网络的参数。
Self-attention
在引入了BiLSTM模型之后,则需要将注意力机制应用于后续处理。在之前的讨论中提到过,在序列数据处理中关注长期依赖关系是一个关键点。值得注意的是,在序列数据中关注长期依赖关系是一个关键点,在传统的RNN结构中虽然也存在这样的能力(如BiLSTM等),然而经过大量时间步的训练后会面临信息丢失的问题(即使是为了增强记忆而设计的网络结构),导致无法有效回忆较早时刻的数据特征)。相比之下,BiLSTM难以实现这一目标。需要注意的是,在计算过程中需要特别注意公式的准确性: ...

在注意力机制中,Q、K、V分别代表查询、键和值这三个关键组成部分。其中Q和K为输入(它们来自经过线性变换的BiLSTM层),而V则为输出部分。这里需要注意的是,d代表当前维度数。为了计算注意力权重矩阵, 需要将K进行转置操作, 这样就可以得到最终的注意力输出结果了
具体到这个网络中,计算公式如下:

这是作者对输入所实施的一种处理方式。具体而言,在这一操作中首先令Q等于K,并通过对这些变量执行一次线性变换以获得中间值后进行注意力分数的计算(由于此处采用了多头注意力机制因此会导致需要重复计算这一过程);随后将各头输出按顺序连接起来接着经过一次线性变换从而得到最终结果
CRF
完成序列标注任务时通常会采用CRF这一技术手段。在这里面每一个具体的任务都会有自己独有的特定CRF模型用于在该特定任务的训练过程中进行解码操作。随后将上一层处理后的结果进行拼接整合以便为后续环节提供数据支持

将本任务的BiLSTM模型输出与共享BiLSTM模型的结果融合为一,并随后将它们输入到CRF模型中进行处理

W和b被定义为可训练参数(即表示为矩阵形式)。o被设定为初始概率分布,o则代表状态转移概率分布,而yi则对应第i个词的标记结果。随后,我们选择使式(11)值最大的y值,即得分最高的标记结果,通过维特比算法进行解码,从而完成整个标注任务
那么这一部分的 loss 是如何计算的呢 这里采用了负对数似然作为损失函数 公式如下


在当前NER或CWS任务的训练过程中,给定输入文本x及其对应的标注y。计算损失时,先求已知输入x下标注y的概率p(y|x),然后取其自然对数并取负值。已知输入序列x及其标注序列y的概率p(y|x),可以理解为在给定输入序列x的情况下生成标注序列y的概率。所有候选结果中只有一个真实标签序列y*与输入序列x匹配,在这种情况下多个候选结果(i从1到T)中只会有一个是正确的。当正确标签序列概率p(y*|x)=1时损失为0;否则错误标签序列概率越低(即p越小),其对数负值越大(loss越大)。正确的概率为1,则损失为0;否则损失越大错误结果越不可能出现。
Task discriminator
阐述了诸多内容后仍未提及对抗学习相关内容。具体而言,在这一部分实现是通过引入对抗学习技术得以实现的。其目的在于保证在多任务学习过程中不会让各任务特性干扰共享网络的学习效果。该部分涉及到的关键计算公式如下:

第一步将经过atten作用后的输出结果执行max pooling操作;随后将其输入到softmax层中,并乘以预设权重后再加一个偏置项以完成分类任务;具体来说,在这一模块中我们旨在识别输入的句子来自哪个特定的任务。

x代表当前输入的文本信息;其中E代表特征提取器模块(由BiLSTM和注意力机制组成);D为上文中所提及的Softmax激活函数;通过最大化任务判别器的作用度参数max;同时最小化共享参数层中的BiLSTM和注意力机制参数min;这一过程即实现了对抗学习的目标。
Training
目前所讲述的是NER和CWS相关的损失。然而,在整个系统中,总的损失由对抗损失与之前提到的部分组成。


在本研究中所使用的指示函数为I(x),其作用是判断当前任务是否在训练中。在训练过程中采用交替学习策略,在此期间系统会持续更新模型参数以优化性能
Experiments
实验数据如下:

关于超参数设置的部分就略过了吧。对于那些通晓英语的人来说理解起来应该不成问题。没什么好说的吧?毕竟这算是炼丹术的一种延伸吧?而embedding技术源自于百度百科及微博文本上的Word2Vec预训练模型构建。这也是当前NLP领域中广泛采用的做法。
Results

相比于之前weibo数据集上的实验,这篇文章的提升还是非常明显的(4.67%)。
作者也对微博数据集进行了更新,并展开了实验。目前效果尚可,但还有待提升。未能达到现有研究的水平。

作者在SighanNER上也进行了实验,并选择了一个使用词边界信息(分词)作为对比实验的基础段落进行测试,并且取得了约1个点的提升。

随后作者进行了实验分析,并将各个组件逐一拆解以便于阐明各组件的功能表现。基于此设置了多个基准模型包括基础的BiLSTM-Tagger-CRF体系以及其在不同方面的拓展优化版本如引入分词机制对抗训练机制以及自注意力机制等

从观察结果来看, 实验数据能够很好地反映实际情况; 分词过程对NER任务仍然具有重要意义, 即使不采用对抗学习, 单纯依靠自注意力机制也能取得显著效果, 而当引入对抗学习方法后能够更准确地识别边界特征, 去除部分干扰因素后依然能保持较高的准确性; 当然最好
样例学习

作者列举了两个具体实例作为支撑论据:其一基于词边界信息引入的方法;其二是采用了自注意力机制的技术方案。值得注意的是该研究亦未展开后续实验以验证这一结论(鉴于神经网络解码难度的问题)因此此结论尚具争议性)。如对这一研究方向感兴趣可进一步深入探讨
