基于强化学习的对抗预训练语言建模方法

2022-06-17 09:09颜俊琦孙水发吴义熔董方敏
中文信息学报 2022年4期
关键词:掩码字符语义

颜俊琦,孙水发,吴义熔,裴 伟,董方敏

(1. 三峡大学 智慧医疗宜昌市重点实验室,湖北 宜昌 443002;2. 三峡大学 计算机与信息学院,湖北 宜昌 443002)

0 引言

当前,自然语言文本表示模型大多采用预训练加微调的架构,即先使用深度网络进行无监督学习(预训练),学习到自然语言中的复杂语义信息之后,再针对不同的下游任务进行特定的有监督训练(微调)。预训练是下游任务学习通用表征中的重要一环,它决定了下游任务模型的泛化能力。BERT[1]和GPT[2]是其中的代表性模型,在各项自然语言处理任务中都表现优异,显示出预训练模型对文本语义的良好表征能力。它们分别采用自编码语言模型任务和自回归语言模型任务作为预训练任务,两者都可以视为通过隐藏部分训练语料,利用未隐藏的部分还原隐藏的部分,模型任务的目标是最大化文本序列的联合概率密度。相较于BERT,GPT的缺点是只用到单向的上下文信息,而实际上文本蕴涵的信息总是与上下文内容都相关。

然而,使用最大似然估计导出的目标函数进行模型训练存在损失函数和评测指标不匹配(Loss mismatch)[3]、负例多样性被忽视(Negative diversity ignorance)[4]等问题。损失函数和评测指标不匹配是指在语言模型任务中,采用最大似然估计导出的交叉熵损失函数进行训练,模型的评价标准则采用困惑度或者模型在其他自然语言任务中的性能指标,但优化损失函数不意味着最终的评测指标会相应地提高。为此,本文提出采用对抗训练方式,生成器的训练目标是生成更真实的文本而不是最大化文本序列的联合概率密度,使得训练目标与评测指标相统一。另外,本文借鉴强化学习(Reinforcement Learning,RL)的基本思想,将语言模型任务看作一个马尔可夫决策过程,词的上下文信息是当前时刻的状态S,对词的预测是策略π,生成的文本真实性是奖励函数p,提出结合强化学习的预训练语言建模方法。引入强化学习可以使得生成器探索可供替代但不会使得概率最大化的“选项”,使得生成的结果更具多样性;同时对于不同错误预测,奖励值r也会不同,有助于解决负例多样性被忽视的问题。由于语言模型任务属于无监督任务,不存在强化学习中的奖励机制,因此本文提出利用Actor-Critic算法[5]进行强化学习训练模型,将用于语言模型任务的神经网络视作Actor网络,训练一个额外的Critic网络对预测的字符进行“评分”。语言模型任务上,采用XLNet[6]提出的排列语言模型任务。排列语言模型任务不仅同掩码语言模型任务一样,利用双向信息进行字符预测,还保留了自回归语言模型任务逐词预测的形式,与马尔可夫决策过程相匹配。对于Critic网络,其训练任务为判断输入的文本序列的每个字符是否为真实字符,并给出概率值,从而提供有效的反馈信号,指导Actor网络生成更真实、更难以被Critic网络辨识出的文本。

本文的主要贡献如下:

(1) 提出了基于对抗网络预训练语言建模方法,通过对抗网络生成器和判别器的相互促进作用,强化生成器对语义的理解,提高了模型的学习能力。

(2) 利用强化学习方式,有效克服了生成器训练过程中损失无法直接进行回传的问题,并通过设置奖励函数增强了文本语义特征表达。

上述改进使得所提方法在GLUE Benchmark任务集上取得了很好的成绩,在六个任务中排名第1;在SQuAD 1.1任务上也取得了较好成绩。

1 相关研究

预训练方法被广泛应用于文本的上下文表征学习中,而预训练任务决定了模型在各项任务中的泛化能力和性能[7]。BERT采用掩码语言模型任务作为预训练任务,在多项任务中取得显著成果。由于生成任务的训练过程与掩码语言模型任务的训练过程不一致,BERT不适合直接用于文本生成。为解决这个问题,MASS[8]采用序列到序列(Seq2Seq)结构[9],在预训练时利用编码器对随机掩码的语句进行编码,利用解码器预测掩码字符。UNILM[10]则利用注意力掩码矩阵实现在同一网络结构下完成双向语言模型任务、单向语言模型任务和序列到序列语言模型任务。类似地,XLNet提出排列语言模型任务,利用注意力掩码矩阵实现以随机顺序进行自回归形式下的文本生成[6]。另外该方法也不需要像BERT那样引入[MASK]特殊字符,缓解了预训练阶段与微调阶段的训练差异。

文本生成类任务通常采用Seq2Seq模型,优点是不限制输入文本和生成文本的长度,缺点是在文本生成过程中只考虑当前语境,忽视了对未来文本的影响。通过强化学习方法引入人工定义的奖惩机制,使得模型能够更重视远期影响,提升文本整体的质量。在对话生成任务中,容易出现无意义的回复以及死循环对话,Li等[11]提出新的奖励值计算方法,通过调节奖励值来鼓励生成更容易被响应、语义连贯性更强的语句,生成区分度更大的对话。Ranzato等[12]提出MIXER训练算法,将强化学习和一般的Cross-Entropy训练相混合,使用BLEU分数[13]作为模型的训练指标训练模型。类似地,Bahdanau等[14]基于Actor-Critic算法,使用Critic网络输出的与具体任务相关的期望分数作为训练指标。由于在完整的句子生成后再利用Critic网络进行判别,容易出现模式下降(Mode Dropping)[15],使得生成的句子具有高度相似性。对此,Fedus等[16]提出在词级别上进行判别,训练Actor网络还原被随机掩盖部分词的原句子,训练Critic网络判断输出的词是否正确,判断正确与否作为Actor网络的训练指标。

生成对抗网络GAN(Generative Adversarial Network)常用于图像生成[17],在文本生成领域由于在文本生成的过程中存在采样的过程,导致最终的损失无法直行回传,训练无法进行。Zhang等[18]提出以LSTM作为GAN的生成器,以CNN作为GAN的判别器,并使用光滑近似的思想逼近生成器LSTM的输出,从而解决离散导致的梯度不可导问题。Yu等[19]提出SeqGAN模型,使用策略梯度算法训练生成器,使用判别器对策略进行打分。

强化学习方法和生成对抗网络有效提高了文本生成类任务的性能,而排列语言模型任务能够天然拟合生成类任务。因此本文希望将强化学习方法和生成对抗网络引入到模型训练中,强化语义的理解,提高文本的表征能力。

2 结合强化学习的语言模型预训练

GPT和BERT都有各自的优缺点[6]:

(1) 独立性假设: BERT没有考虑到掩码之间的相关性,是对语言模型任务联合概率的有偏估计。

(2) 输入噪声: BERT预训练阶段的特殊字符[MASK]并不会出现在微调阶段,会造成两阶段不匹配问题。

(3) 上下文依赖: GPT仅能利用单向的上下文信息,而BERT用到了文本的双向信息。

为了能同时保留两种语言模型的优点, XLNet的目标是从输入文本的所有重排列方式中抽取一种,将排列后序列中部分字符作为预测目标,训练模型利用其他字符以及目标的位置信息进行逐个词的预测。这样既不会引入特殊字符,不会有独立性假设和输入噪声问题,同时由于改变了排列顺序,预测词的上文部分不仅有原始文本中的该词的上文信息,同时包含了下文信息,这使得在预测时能用到上下文信息。

本文采用对抗训练方式,生成器(Actor网络)完成排列语言模型任务,预测选定字符;训练判别器(Critic网络)预测生成词是否正确。判别器通过对现有样本进行语义学习,基于强化学习方法,指导生成器的语言建模,提高生成器对语义的理解和表达能力。

2.1基于双流注意机制的Actor网络

Actor网络完成与XLNet相同的排列语言模型任务,基于注意力掩码矩阵确定文本序列中需要预测的词以及预测时能利用到的上下文信息,对预测词给出可能的概率分布。网络结构如图1所示。

图1 Actor网络结构图

假设z是输入序列的一种随机排列方式,xzt为该种排列下的第t个字符,而xz

图2 在某种重排列方式下的注意力掩码矩阵

(1)

(2)

全连接层Linear将Transformer-XL层提取到的特征输出映射到一个维度和词表大小相同的向量上,再通过Softmax层将得到的特征向量转化为此表中每个单词的概率。为了增加Actor网络生成的多样性,对概率最大的10个词按照概率大小进行随机采样,将采样到的词作为x′t,生成该词的概率作为pt。

2.2 共享Transformer-XL层参数的Critic网络和Baseline网络

Critic网络使用Transformer-XL作为特征提取器,将Actor网络生成的文本序列转化为特征向量,通过全连接层进行分类任务,判断序列中字符是否正确,输出字符正确的概率值,得到概率列表ρ。网络结构如图3所示。

图3 Critic网络与Baseline网络结构图两个网络共享Transformer-XL层

Baseline网络用于计算基准线b,它仅仅与状态s有关,与动作无关。由于Critic网络也通过分析状态(已经生成的上下文)得到近似的动作-价值函数,两者都有对状态的信息提取过程。因此为了加快训练过程,减少训练量,Baseline网络与Critic网络共享Transformer-XL层参数。通过全连接层,特征向量转化为一维序列向量基准线b。

2.3 Actor-Critic算法在语言模型预训练的实现

我们采用类似于生成对抗网络的训练方式进行模型训练,Actor网络尽可能正确预测选定的字符,Critic网络则尽可能找到文本序列中由Actor生成的错误字符。令Actor网络G、Critic网络D、Baseline网络B的网络参数分别表示为θ、φ、τ。在Actor-Critic算法中,Actor网络的训练目标是找到最佳策略π,使得累积奖励最大,优化方式是计算策略梯度∇θJ(θ)来更新参数θ,如式(3)、式(4)所示。

其中,πθ(s,a)表示策略函数,在状态s下采取动作a的概率;Q(s,a)为状态-动作值函数,表示在状态s下采取动作a得到的系统奖励;α为学习率。可以发现,在θ的更新过程中,高价值动作出现的概率增多,低价值动作出现的概率减少。

本文使用Actor网络作为决策器,状态s由上下文信息xz

(5)

Gθ(x′t)表示Actor网络生成x′t的概率。

使用Critic网络作为打分器,状态s由xz

(6)

由于使用了深度神经网络模拟参数化的策略函数πθ(s,a)与参数化的状态-动作值函数Qφ(s,a),是真实策略梯度的近似,会引入偏差,导致最后无法收敛到一个合适的策略。同时,由于采用判别器对生成字符为正确的概率作为强化学习中的奖励部分,始终是非负的。这一方面使得奖励的区分度不够大,难以对生成器产生的不佳结果进行惩罚,另一方面变相鼓励了生成器生成更长而不是更合适的文本,容易导致模式崩溃(model collapse),生成某类单一的结果。因此,给状态值函数添加基准线b,则策略梯度表示如式(7)所示。

(7)

为了保证不改变梯度本身,基准线b仅仅与状态s有关,与动作无关,这里用Baseline网络计算得到。Baseline网络的损失值,如式(8)所示。

(8)

(9)

我们希望Critic网络对于正确的字符给出高概率值(更大的奖励),对于错误的字符给出低概率值(更小的奖励),同时对于不同的错误字符给出差异化的概率值以鼓励多样化的字符生成。训练按照如图4所示的算法进行,网络的参数初始化符合特定分布,数据预处理后进入网络训练,设置小批量更新网络的权重和偏差。训练过程中,各模型参数需要分别进行更新,以免影响语义表示的学习。

算法1: Actor-Critic算法训练算法数据: 语料集输入: 短文本S1 初始化Actor网络G、Critic网络D、Baseline网络B的网络参数θ、φ、τfor epoch=0→Max_Iters do2 for each mini-batch {S←DataSet} do3 构造注意力掩码矩阵WC,WQ;4 S,P←G(S);5 ρ←D(S);6 b←B(S);7 由式(9)计算Critic网络D的损失值LD;8 反向计算Critic网络的超参数梯度,并更新参数φ;9 由式(7)计算Actor网络G的策略梯度,并更新参数θ;10 由式(8)计算Baseline网络的损失值LB;11 反向计算Baseline网络的超参数梯度,并更新参数τ;12 end13 end

Actor网络在输出文本序列时对于没有被选定预测的词,使用初始的词,只将选定预测的词替换为Actor网络预测的词,这样在Critic网络中对每个词的真实性进行判断时,根据的是真实的上下文信息,能提供正确的指导信息帮助Actor网络优化。

由于排列语言模型任务相较于判别任务难度更大,使得Actor网络初始生成的文本质量较差,Critic网络能很容易发现更改词,甚至将输入全部判定为错误词。这将导致Actor网络得到的奖励极小,发生梯度消失,Actor网络得不到训练。对此,Actor网络先进行基于最大似然估计的排列语言模型训练。

为了避免Critic网络的损失很快收敛为零,从而没有足够强的梯度路径可以继续更新生成器,在训练时采用软标签[20]的训练技巧,令真样本的标签为0.9,假样本的标签为0.1。这样的方法有助于使判别器的分类边界变得平滑,从而阻止判别器过于自信,为生成器提供较差的梯度。

有研究表明[21],BERT编码了丰富的语言学层次信息: 底层网络主要捕捉简单的短语级别结构信息,中间层网络主要捕捉句法信息特征,语义信息特征在高层网络。我们希望Critic网络多从语义信息中找出更改词,使用Actor网络中Transformer-XL层的高层网络部分初始化Critic网络的Transformer-XL层。初始化后对模型中的三个网络采用交替训练的方式,当一个在训练时,冻结其他网络的参数。

3 实验结果及分析

为了验证基于强化学习的对抗预训练语言建模方法可以进一步提高预训练模型的性能,将本模型与BERT模型和XLNet模型进行比较,采用通用语言理解评估基准(GLUE Benchmark)[22]和斯坦福问答任务(SQuAD 1.1)[23]。GLUE包含九项NLU任务,分别是CoLA文本语法可接受性分类、SST-2电影评论情感分类、MRPC语义等效性分类、STS-B语义相似性分类、QQP语义等效性分类、MNLI句子对关系分类、QNLI句子对蕴涵关系分类、RTE句子对蕴涵关系分类、WNLI句子对代词消解判断。其中WNLI数据集数量较少且训练集与测试集分布不同,因此在本实验中不作为评价指标。模型代码与测试代码都基于预训练模型库Transformers开发编写。

3.1 评价指标

对于CoLA任务,由于正负样本分布不均衡,使用Matthews相关系数作为评价指标。计算如式(10)所示。

MCC=

(10)

其中,TP表示真正例,TN表示真反例,FP表示假正例,FN表示假反例。Matthews相关系数用于衡量二分类任务中真实类别和预测类别之间的相关系数,值介于-1和1之间。-1表示预测类别与真实类别完全相反,1表示完全正确预测。Matthews相关系数越大,表明模型分类效果越好。其他任务均采用准确率作为指标。

对于STS-B任务,由于该任务为回归任务,使用Spearman相关系数作为评价指标,用于衡量模型与真实分布之间的差异,取值范围为[-1,1],绝对值越大相关性越强。计算如式(11)所示。

(11)

其中,假设句子对集合{Si},对于每对句子之间的相似度,人工评价得分为集合{Xi},模型评价得分为集合{Yi}。构造新集合{xi}、{yi},xi为Xi在集合{Xi}按序排列时的等级值,yi为Yi在集合{Yi}按序排列时的等级值。

对于斯坦福问答任务,模型需要根据问题在原文中找到答案的范围,采用完全匹配率(Exact Match,EM)和F1值。完全匹配率表示在所有问题中,模型回答与标准答案完全匹配的问题所占比例。F1值的计算如式(12)所示。

(12)

其中,TP表示模型回答与标准答案匹配的字符数,FP表示只出现在模型回答中的字符数,FN表示只出现在标准答案中的字符数。

其他任务均采用准确率作为指标。

3.2 实验设置

考虑到算法性能比较需要及运算资源有限,训练语料集分别采用大语料数据集BooksCorpus[24]、英文Wikipedia(训练到4轮截止)和小语料数据集WikiText-103[25](训练到40轮截止)。实验中BERT、XLNet、RL-XLNet三个模型基本使用相同的超参数,模型隐藏节点数为768,全连接层隐藏节点数为3 072,自注意力头数为12,输入文本最大长度为256。区别在于Transformer-XL层数,BERT与XLNet使用12层的Transformer-XL网络,RL-XLNet的Actor模块使用10层的Transformer-XL网络,Critic模块与Baseline模块使用2层的Transformer-XL网络,同时这两个模块共享Transformer-XL层参数。

BERT模型与XLNet模型均采用原始论文中的训练方式进行预训练。RL-XLNet先采用与XLNet模型同样的排列语言模型任务对Actor模块进行两轮训练,再训练Critic模块至模型精度基本稳定,然后以Actor模块、Critic模块、Baseline模块的顺序完成训练(视作一轮),再轮流训练至结束。

3.3 实验结果

表1和表2为模型在大语料集上的训练结果。其中加粗表明性能最优的结果,下划线表示性能次优结果(后续同)。BERT-4表示经过4轮训练后的BERT模型,RL-XLNet-2.5表示经过2.5轮训练后的RL-XLNet模型,其他以此类推。

表1 大语料集下GLUE任务集上实验结果统计

表2 大语料集下SQuAD 1.1任务集上实验结果统计

从表1可以看出,在CoLA任务上RL-XLNet表现不佳,可能是由于CoLA中某些负例(不合语法的句子)错误并不严重,仍能正确地表达语义信息。而RL-XLNet在完成语言任务时更倾向于生成多样化的词,因此不适宜严谨的语法判断。RL-XLNet在RTE和QNLI上取得各模型中的最佳效果而在MNLI任务集上却取得较差的结果。对比这三类任务,它们同为自然语言推断任务,不同的是在MNLI任务集中为三分类任务,标签分别为中立、矛盾、蕴涵,而在RTE任务集中将中立和矛盾归为一类,QNLI中也仅有蕴含和不蕴含两类。据此推测可能是由于RL-XLNet对词的语义刻画精确性不强,在基于需要准确语义进行推理的任务上不能很好地分辨语义的区别,使得RL-XLNet在中立和矛盾标签上的分类并不准确。

模型在SQuAD 1.1上的效果如表2所示,RL-XLNet在EM项上排名第二,在F1项上排名第一。EM指标表征模型精确查找答案的能力,而F1指标则更侧重模型的整体性能。这表明RL-XLNet可能更擅长根据问题在原文中找到关键信息,而对修饰补充性的信息则不容易把握其重要性,使得在确认答案位置时往往遗漏边缘词,在EM指标上没能得到第一。

表3、表4显示了模型训练40轮的结果。在与其他工作原文相同的训练轮数的情况下,RL-XLNet仍在多项任务指标中取得第一。

表3 小语料集下GLUE任务集上实验结果统计

表4 小语料集下SQuAD 1.1任务集上实验结果统计

综合表1~表4,RL-XLNet的性能普遍好于BERT模型与XLNet模型。由表1可以看出,RL-XLNet分别在3 epoch和3.5 epoch的时间步时就在大部分项目上超过了训练完整4轮的BERT模型与XLNet模型,训练轮数更少。在GLUE的8个任务中,有六个任务排名第1,一个任务排名第2。而在SQuAD 1.1数据集上,F1指标取得第1。

BERT的缺点是在训练过程中引入的特殊字符[MASK],并不会出现在微调阶段,使得预训练阶段与微调阶段不一致。XLNet与RL-XLNet采用双流自注意力机制,避免了特殊字符的引入,因此在多项任务中优于BERT。相较于XLNet,本模型采用强化学习,在完成语言模型任务中有更多样的预测结果,使得语义相近的词在模型中有更接近的表征,因此在各项任务中性能均有显著提升,显示了强化学习方法对模型的提升作用。

在模型大小方面,我们仅使用Actor模块作为特征提取器运用在微调阶段以及下游任务中,由表5可以看出,参数量只有93.6M,小于BERT (110M)和XLNet(117M)。

表5 各模型参数量

4 总结

本文提出了一种基于强化学习的预训练语言模型RL-XLNet。为构建该模型,根据Actor-Critic算法构建了三个神经网络模块,用作近似强化学习中的策略函数、动作价值函数、基准函数,并采用生成对抗网络形式训练模型。

通过这种方法为生成器完成语言模型任务提供了更多的信息指导,有助于预训练模型掌握语料中的知识与信息。最后,利用通用语言理解评估基准数据(GLUE Benchmark)和斯坦福问答任务(SQuAD 1.1)进行了实验,结果显示,本模型取得了较为理想的效果,证明了基于强化学习的对抗预训练语言建模方法可以有效地推动预训练模型性能提升。未来可以考虑利用其他强化学习算法如MuZero[26]等对现有模型做进一步改进。另外,本文构造了一个鉴别器作为强化学习的打分器,未来可以考虑利用其他指标更好地衡量生成效果。

猜你喜欢
掩码字符语义
真实场景水下语义分割方法及数据集
AES高阶掩码方案抗功耗攻击
旁路功耗分析中不同平台的差异化研究*
论高级用字阶段汉字系统选择字符的几个原则
什么是IPv6的前缀长度
字符代表几
一种USB接口字符液晶控制器设计
图片轻松变身ASCⅡ艺术画
“吃+NP”的语义生成机制研究
《计算机网络技术》的几个重点课题的教学分析