title: “Adversarial Transfer Learning for Chinese Named Entity Recognition with Self-Attention Mechanism, Pengfei Cao 2018 【ner+adversarial+self-attention】”
subtitle: “”
date: 2021-1-5
author: “xuqiurong”
摘要:中文命名实体识别(Chinese NER)和中文分词(Chinses word segmentation,CWS)具有相似的单词边界。
目前的方法要么不利用CWS的单词边界信息,要么不能过滤CWS的特殊信息。
本文提出对抗转移学习框架来充分利用任务共享的边界信息,并阻止CWS的特定任务特征。因为在预测实体类型的时候,任意字符都可以提供重要的线索,利用自注意来明确捕获两个字符之间长期依赖。
实验在weibo dataset和sighan dataset上做实验。
NER
以往的NER任务的方法有:SVMs, HMMs, CRFs 这些方法太依赖特征工程。 Zhou(2013)将中文NER制定为联合识别和分类任务。2016年将神经网络用于NER任务,Huang(2015)利用BiLSTM抽取特征,然后将其喂入CRF解码器。之后BiLSTM-CRF模型通常作为baseline。Lample(2016)使用字符LSTM表示拼写特征。Wang(2017)提出一个gated convolutional neural network(GCNN)模型。Peng(2016)提出联合训练NER任务和CWS任务。但是,CWS任务的特定特征可能会降低中文NER任务的性能。
Adversarial Training
对抗学习在NLP中用于领域适应(domain adaption),跨语言迁移学习,多任务学习和众包学习。Bousmalis(2016)在域分离中提出shared-private模型。本文利用对抗网络联合训练中文NER任务和CWS任务,目的是抽取来自CWS的任务共享的字词边界信息。
Self-Attention
self-attention在机器翻译中用于捕获输入和输出的全局依赖。Shenet(2017)利用self-attention学习长期依赖。Tan(2017)应用self-attention到语义角色标记任务。本文将self-attention用于中文NER任务。
The model
Embedding Layer
第一层是对中文NER数据集合中文CWS数据集中的句子训练词向量。使用的是word2vec。
Shared-Private Feature Extractor
第二层是抽取特征,使用的是BiLSTM。
为了整合序列两边的信息,文中采用BiLSTM抽取特征。(BiLSTM的结构略)。文中提出了一个shared-private特征提取器,private BiLSTM层用来抽取特定任务的特征,share BiLSTM层被用于学习任务共享的词边界。
private BiLSTM各自训练两组参数,shared BiLSTM共享同一组参数。
Self-Attention
第三层用self-attention精确学习句子中任意两个字之间的依赖关系,并且捕获句子中信息的内部结构。文中采用多头自注意机制。
附上一位博主写的self-attention的讲解:
Attention is All You Need 1 transformer结构
Attention is All You Need 2 编码器
Attention is All You Need 3 解码器
H={h1, h2, …, hN}, 表示private BiLSTM的输出,S={s1, s2, …, sN}表示shared BiLSTM的输出。文中Q=K=V=H。multi-head attention首先用用不同的线性映射函数映射queries,keys,values h次,然后h个映射平行地执行缩放点乘,最后,这些attention的结果做concatenated运算得到新的表示。正式的,多头注意力可以表示为:
Task-Specific CRF
对于来自task k的数据集中的句子,我们通过连接来自private space和shared space经过self-attention layer之后的表达式,得到最终的表达式。
我们介绍一种特殊的CRF,给定一个句子x={c1, c2, …, cN},而且它的预测标签序列为y={y1, y2, …, yN},CRF的标记过程可以如下形式化:
训练的时候,我们使用负对数似然函数作为loss function,真实的label序列的计算公式为:
给定T个训练样本,loss函数为:
使用gradient back-propagation方法最小化loss函数。
Task Discriminator
这部分是添加在shared BiLSTM中,使用过对抗神经网络之后,作为下一层self-attention的输入。
受到对抗神经网络(adversarial network)的启发,我们整合对抗训练到shared space来保证任务的特殊特征不会存在于shared space,我们提出一个任务判别器来评估句子是来自于哪个任务,正式地,任务判别器可以表示为如下:
除了task loss
L
T
a
s
k
L_Task
LTask 之外,我们介绍了一个adversarial loss
L
A
d
v
L_Adv
LAdv 来预防CWS的特殊特征嵌入shared space,adversarial loss训练shared model产生shared features,导致任务判别器不能可靠的识别句子来自于哪个任务。
我们在softmax层下面添加了梯度翻转层,gradient reversal layer,来处理minimax优化问题,在训练阶段,我们最小化任务判别器错误率,通过梯度逆转层我们的梯度将变成对立符号,对抗鼓励共享特征抽取器来学习任务共享单词边界信息,训练结束后,共享特征抽取器和任务判别器达到一个点,在该点判别器无法根据从共享特征提取器中学习的表示来区分任务。
Training
此时,训练的loss函数可以写成:
实验
我们使用的数据集是Weibo NER dataset(WeiboNER),SIGHAN2006 NER dataset(SighanNER),MSR dataset(from SIGHAN2005)for CWS task。
WeiboNER数据集有四种实体分类:person, location, organization and geopolitical. 包括named entites and nominal mentions. WeiboNER使用的是同样的训练集,开发集,测试集。
SighanNER数据集有三种实体分类:person, location, organization.SighanNER使用其中10%作为开发集。
用MSR数据集提升中文NER任务的性能。
我们使用Percision§, Recall®, F1分数作为衡量标准.
我们将embedding size d e d_e de设置100, LSTM隐藏层的维度 d h d_h dh设置为120,初始学习率0.001,loss权重系数 λ \lambda λ 0.06, dropout 0.3, 映射层数8层,batch size of SighanNER and WeiboNER is 64 and 20, respectively.
训练参数初始化,使用xavier initializer, character embeddings are pre-trained on Baidu Encyclopedia corpus and Weibo corpus by using word2vec tookit.
这是在WeiboNER and SighanNER上的实验结果,和一些论文中的实验结果的对比。
这是模型在两个数据集上和一些baseline的对比。
实验结果表明,迁移学习,CWS的词语边界信息对于中文NER任务非常有效。
对抗学习,可以防止CWS任务的特殊特征潜入shared space。
错误率分析:从实验结果可以看出,在WeiboNER数据集上的性能相对较低,一个原因是WeiboNER数据集的训练数据相比于SighanNER较少。另一个原因是在社交媒体中的表达是非正式的,所以降低了WeiboNER的性能。