1. 引言
随着新媒体和大数据时代的到来,互联网每天都会产生海量的文本信息,其中的文本质量良莠不齐,随之而来的文本校对任务也越来越繁重,由于传统的人工校对方法效率低下,研究快速高效的自动校对方法逐渐成为热点问题。
目前国内在中文文本自动校正领域的研究方法主要有以下3种:1) 基于语言学和规则的方法,针对具体的错误类型,制定相应的规则进行文本纠错,该类方法的纠错准确性依赖于规则的质量且只能修改特定的错误种类,可扩展性较差 [1];2) 基于概率统计的方法,利用字词的文本特征,对语言进行N-gram建模,并选取合适的统计模型纠错,但该类方法对于未知词组预测能力低,存在数据稀疏性问题 [2];3) 基于深度学习的方法 [3],将文字通过编码转换为词向量,构建深度学习网络,无需考虑具体错误类型,完成端到端的文本纠错。常用的模型包括LSTM [4] 或CNN神经机器翻译模型 [5],但其存在共同的局限性,即认为语句中的每个字词具有相同的重要性,无法有选择性地进行关注。
因此,为了提高模型的并行计算能力以及选择性特征提取能力,本文采用基于多头注意力机制的Transformer模型作为纠错模型,并提出一种新的动态残差结构,增强模型语义特征提取能力。同时为了加快模型生成速度和收敛速度,在训练数据中找到更好的局部最小值,本文在训练纠错模型时引入课程学习策略。通过实验,结合本文提出的两种方法,模型在准确率、召回率、纠错F0.5值上均有更好的表现。
2. 基于动态残差结构的Transformer模型
2.1. Transformer模型及实现
Transformer是Vaswani等人 [6] 在2017年提出的一个新框架,作者采用多头注意力机制(Multi-Headed Attention)解决在提取长距离语义信息时,所存在的语义信息丢失问题,其核心结构如图1所示。
1) Word Embedding文字可通过Word2Vec、Glove 等词嵌入方法将词语投射到特定长度的向量空间,其中语义越接近的词语,词向量间的距离越近。
2) Positional Encoding通过增加关于特征的相对、绝对位置提升模型的有序性。
Transformer模型所采用的不同于RNN,所以通过使用Positional Encoding确定单词在序列中的位置。
3) Multi-Head Attention相当于将n个self-attention相结合,使得模型能够关注到不同子空间的语义信息,本文中n取8。
4) Encoder and Decoder Transformer模型沿用了Encoder-Decoder架构,本文中Encoder和Decoder模块均由6个相同神经元模块堆叠而成,每一层中包含Multi-Head Attention子层和Feed Forward子层,子层之间通过残差和归一化相连接。
Figure 1. Transformer model structure
图1. Transformer模型结构图
2.2. 动态残差结构
传统Transformer模型中的神经模块可简化为图2,每个模块的输出如式(1):
,
(1)
其中,A为多头注意力层,A&N为归一化函数,F为前馈层的线性变换,对
式(1)求导得式(2)。
,
,
(2)
通过分析可得,求导后的
中由于乘法因子
的作用,在模块不断叠加的过程中,存在累乘效应,存在梯度消失的风险。
为了解决上述问题,本文对Transformer模型进行改进,在编码器和解码器端分别采用动态残差结构,如图3所示,可以更充分地结合高层和低层神经模块的语义信息,具体计算如式(3)。
(3)
3. 课程学习策略
课程学习的概念在2009年由Yoshua Bengio [7] 等人提出,与人类学习机制类似,即先学习简单的技能,再学习困难的技能。如果训练数据以特定的顺序输入,先从简单的数据开始学,等到模型有一定的能力后再去学习难的数据,这样即符合人类的直觉;同时,从机器学习的角度去看,这种方法也可以避免过早陷入不好的局部最优解。
课程学习策略的特点包括:1) 提高模型生成速度和加快收敛速度;2) 在非凸训练数据中找到更好的局部极小值。利用课程学习策略的方法可大致分为两类:一是控制训练数据,如每k个训练步骤就增加p%的数据、将数据分为m个批次,每k个训练步骤就增加一个批次等;二是控制训练数据被采样的概率,如定义一个与训练步骤相关的平滑函数等。本文采用类型一的课程学习策略应用于纠错任务中,框架概念如图4所示:
本文所应用的课程学习策略方法有两个重要概念:Difficulty和Competence。其中Difficulty代表某个训练样本的难度值,由样本句子长度和单词相对词频共同决定,计算公式如式(4):
(4)
其中,si为第i个样本句子,Ni为样本句子长度,
为样本第k个词语的相对词频,词频计算公式如式(5):
(5)
其中,M为样本总数,a为条件函数,满足条件为1反之为0。
另一个概念Competence表示模型的训练进度,定义模型训练状态的一个函数,介于0和1之间。该方法将模型在t时刻的能力c(t)定义为t时刻允许使用的训练数据比例。训练样本根据难度进行排序,模型只允许在时刻 t使用相应顶部部分数据。 Linear 形式的c(t)计算公式如式(6):
(6)
其中
为初始值,T为时间步阈值,当超过该阈值时,认为模型具有能力,t为时间步。
本论文的Competence 除了上述提到的Linear形式,还提出了一种依据loss选择训练数据的方法。因为模型的能力强弱除了可以间接地使用训练步骤彰显,最直观的反映模型能力强弱的便是模型的loss,其c(t)计算如式(7):
(7)
基于以上两个概念,本文将课程学习策略应用于中文纠错任务中,以达到提升性能的目的。首先对语料中的语句分别计算Difficulty值,并计算难度分数的累计密度函数,使其分布在0到1之间,在模型训练时,根据不同的训练阶段计算获取模型当前的Competence分数,根据当前分数从数据集中均匀采样符合Difficulty值条件的数据进行训练,最终输出模型。本文设计的课程学习策略算法如表1所示:
Table 1. Curriculum learning strategy algorithm
表1. 课程学习策略算法
4. 实验与分析
4.1. 数据预处理
本文所使用的数据为NLPCC 2018 GEC数据,其中包含717,302条平行语料,本文选取700,000条作为训练集,17,302条作为测试集。预处理过程为:
加载语料数据,使用opencc工具包将繁体转化为简体;去除数据中的空格,将语料数据格式转化为平行句子对;删除源端重复和目标端重复,删除长度小于5和大于80的平行句子对;最后,使用jieba分词工具对平行句子进行分词。
4.2. 模型参数设置
本文使用模型的超参数具体为:词嵌入矩阵选用512维词表,模型结构中采用各含6个神经模块的编解码器 ,注意力头数量采用8个。在训练时选用Adam优化器,学习率初始时设置为1 × 10−7,经过5000个batch的训练之后增长为1 × 10−5,后续逐步下降。
4.3. 评价指标
本此实验采用M2算法评估校对模型,M2算法通过对比模型输出和源句子之间短语级别的编辑和标准输出之间的差别完成评估。评价指标包括准确率P、召回率R、纠错值F0.5。
设标准句子对原句子的编辑集为
和模型输出对原句子的编辑集为
,相关指标如式(8):
,
,
(8)
其中,
。
4.4. 实验设置及结果
本文实验基线模型使用传统的Transformer模型进行文本纠错;第二组实验将提出的动态残差结构加在模型的编码器端;第三组实验将动态残差结构加在模型的解码器端;第四组在编码器和解码器端均加入动态残差结构;第五组是在第一组实验的基础上,在模型训练时采用课程学习策略;第六组是在第三组实验的基础上,在模型训练时采用课程学习策略。实验结果如表2所示:
Table 2. Effects of different improvements on model performance
表2. 不同改进对模型性能的影响
前四组实验结果显示,在Transformer基线模型的基础上,在解码器端添加动态残差结构可增强模型性能。第五组实验反映出在训练传统Transformer模型的基础上使用课程学习策略可提高纠错性能,第六组实验将二者综合,使模型性能达到最优。
5. 总结
本文将Transformer模型应用于中文文本校正领域,并提出一种动态残差结构有效应用于解码器端,用以增强捕获语句信息的能力。同时在训练模型时采用课程学习策略,加快模型收敛速度。最终在NLPCC 2018 GEC公开数据集上完成实验,在纠错准确率、召回率、F0.5值方面得到提升。