周浩轩,周筠昌,孙晶萌,陈珂
(广东石油化工学院 计算机学院,广东 茂名 525000)
机器问答(QA)是借助自然语言处理(NLP)技术,使计算机可以了解和回复人们用自然语言所提交的问题[1]。传统机器问答系统依靠关键字和网页超链接为基础来实现。随着时代和技术的发展,使用该方式的传统搜索引擎难以满足用户的需求,为了准确回答用户提出的问题,采用了自然语言搜索为主要方式,并且带来了更快的处理速度,让自然语言搜索技术研究渐渐成为自然语言处理领域的热门研究[2]。随着NLP技术的发展,深度神经网络模型开始应用到各种自然语言处理任务中[3]。在机器问答任务中使用深度神经网络模型则不需要再进行额外的特征提取,在数据预处理后,即可以训练出语义信息丰富的词向量,用来代替人工对词向量进行标注[4]。因此,基于深度神经网络的机器问答模型在性能上远远优于传统模型。
目前,在大量研究中采用深度神经网络作为编码器来提取句子的特征,并用向量表示,进一步减少人工提取特征的步骤[5]。Wang等[6]对句子进行词汇语义的分解和组合,计算每个单词的语义匹配向量进行相似度学习。Chen 等[7]提出了一个协作对抗网络(CAN),通过使用一个生成器和鉴别器对两个句子之间的共同特征进行建模,也检测了两个句子中的对齐词并吸收其上下文,进一步对递归神经网络(RNN)的隐藏状态建模。Rzayev等[8]提出了一种集成的方法,将细粒度的问题分类与为答案选择任务设计的深度学习模型相集成。受到上述研究和Bert(bidirectional encoder representations from transformers)模型的启发,本文提出了一种基于Bert模型的答案选择型机器问答方法。
基于Bert的问答模型不同于传统模型,在不需要其他模块的情况下可以直接向用户输出答案。该模型包括预处理模块、预训练模块和答案选择模块。预处理模块主要处理输入的问题和回答,进行分词、删除停止词、低频词、非正式文本以及词性替换的内容,分词模块采用了jieba中文词库进行分词,在数据清洗后将处理后的句子传递给下一部分。预处理后,句子被送入预训练模型中,进行特征提取操作,该方法可以有效地让机器通过矩阵权重理解自然语言,随后输出的特征向量将带有深层语义信息;语义特征向量通过进入预训练Bert微调模型解码模块输出,送入答案分类模型,得到候选答案。模型架构如图1 所示。
图1 基于Bert模型的机器问答结构
Bert的核心是一个Transformer模型,具有可变数量的编码层和自我注意力模型。当 Bert 模型进行预训练形成语言表示模型后,只需要对模型进行迁移学习网络训练,即可应用于下游特定性语言处理任务,对字级、句级、句对级的自然语言处理任务均适用。 Bert的两个主要步骤是预训练和微调。预训练的目的是先在未标记数据上进行训练;而微调则是预训练会对其参数进行初始化,再用下游任务训练后产生的标记数据对Bert模型所有参数进行微调[9]。
在Bert模型预训练主要有两个任务,分别是掩码语言模型(MLM)和下一句预测(NSP)。MLM任务使用了Mask(面具)对15%已分类的单词进行屏蔽,然后通过Bert模型进行预测,并利用最终的损失函数计算被遮盖住的标记,该任务的目的是关注语料集中的每个词语,从而得到更准确的上下文的语义信息。NSP的目的是让模型理解句子间的关联性,可在任何一个级别语料库进行训练,对句子对A和B,B有一半的概率是紧随A的实际下一句(IsNext),另一半概率则是语料库中的随机句子(NotNext)。将这个句子对进行拼接时在句首添加标识[CLS],A、B间则用标识[SEP]分隔开来,并对[CLS]做一个二分类任务。
长短记忆网络(LSTM)是循环神经网络的一种改进,通过加入细胞状态、记忆门、遗忘门、输出门等结构[10],使网络更适合学习长距离依赖关系。
在Devlin等[10]所提方法的基础上加以改进,将1.1节得到的[CLS]向量作为输入向量送入全连接神经网络模型(FC模型)中进行分类(见图2)。全连接的隐藏层大小为1024,输入一维向量,长度为768,输出层大小为2。经过Softmax函数后,以概率形式进行输出。对数据进行清洗过程,此时文本数据格式进行转换,其表示为Input=Bertpro(Q,A);Bert模型输入为(ECLS,E1,…,EN)=Bert(Input);FC模型的relu激活函数为HL=relu(Wh1ECLS+bh1);归一化指数函数为f(Q,A)=Softmax(Wh2HL+bh2)。其中,Wh1∈R768×1024、Wh2∈R1024×2为FC输出层参数矩阵;bh1∈R1024、bh2∈R2为偏置函数。
图2 预训练Bert模型+FC模型结构
模型的输出由双向LSTM模型中隐藏层输出拼接而成,输入向量在Bert模型中不同层中对预测结果会产生不同影响,因此,提取出Transformer模型和Bert模型中不同层的输出向量,对这些向量合成拼接,送入BiLSTM中进行训练,最终作为全连接神经网络输入执行分类操作,模型结构如图3所示。
提取Transformer层问答对的token向量,其输出向量表示为Tokenlayer=Bertlayer(Input)。
对不同Transformer层问答对的token向量进行合成拼接操作,表示为Econcat=fconcat(Tokenlayer1,…,Tokenlayern)
图3 预训练Bert+BiLSTM模型结构
将合成拼接后的向量输入至BiLSTM网络模型进行训练,得到h=BiLSTM(Econcat)。
最后,进行最大池化操作,此时有h0=fpool(h)。
本文采用的数据集是由腾讯实验室提出的中文多轮话题驱动的对话数据集Natural-Conv,它是一个针对多轮话题驱动的情景对话的中文对话数据集,适用于模拟多轮自然对话中的话题互动,该数据集的语料库中的数据是以对话为基础的,基于新闻文章的内容展开特定的话题进行交流。与常见的数据集有所不同:首先,此次对话的参与者可以谈论除话题外他们想要交流的任何事情,并且在话题间转换十分自然;其次,该语料集的两位参与者在进行对话任务时是遵循正常逻辑的;最后,该语料集允许在谈话中进行闲聊和问候。该数据集包含了约40万条预料和19.9万个对话,涉及多个领域,平均对话回合约20。
本实验采用的是Google开放域机器问答竞赛项目的金牌项目解决方案,模型为Bert-large ,使用与论文中头数相同的4个注意力头数的Transformer,全连接网络宽度为512,输入输出均为512。
本文将Bert+FC模型在Google 的GPU上经过50次的迭代训练,平均训练时间为680 min。设置的Epoch为50,但模型运行时,发现迭代次数为38次时产生了最优模型,再训练无法更加优化随即停止。此时,该模型在训练集和测试集上,损失值与训练迭代次数的关系如图4所示,训练集和测试集上的准确率与迭代次数的关系如图5所示。
图4 损失函数与迭代次数的关系 图5 迭代次数与准确率的提升
由图4、图5可知,当训练次数约为38次时,所得损失函数及准确率趋于稳定。
为了比较模型在不同数据集上的表现,本文又采用了NLPCC-ICCPOL DBQA数据集。所选用的NLPCC-ICCPOL DBQA同样是中文数据集,由人工对其进行标注,训练集和测试集分类如表1所示。该数据集中提供的问题,需要模型从一系列候选答案中找出正确的答案语句,每条数据由三个部分组成:问题、答案和标签,具体与Natural-Conv数据集差距不大。 在两个数据集上,对Bert+FC模型和Bert+BiLSTM模型进行验证,其结果如表2所示。
表1 训练集和测试集数据量训练集测试集Doc-Tech2394112120Doc-Edu112332232Doc-Health1226132
由表2可知,两个模型在不同的数据集上都取得了较为优异的成果,针对Bert+BiLSTM模型,在Natural-Conv数据集上的MRR和MAP指标相对NLPCC-ICCPOL DBQA高出约1%,而ACC@1指标高出约2.8%。整体而言,Bert+BiLSTM模型比Bert+FC模型表现更优秀;且Bert+BiLSTM模型和Bert+FC模型在NLPCC-ICCPOL DBQA上的结果不如Natural-Conv数据集。其主要是Natural-Conv数据集训练数据为181882条,而NLPCC-ICCPOL DBQA训练数据为53417条,由此可知,训练数据对结果产生影响十分深远。
表2 采用不同数据集实验结果模型Natural-Conv数据集MRRMAPACC@1NLPCC-ICCPOLDBQA数据集MRRMAPACC@1Bert+FC0.8140.7750.7900.80050.80090.7139Bert+BiLSTM0.8380.8250.8490.81020.81100.7204
对比2020年Github公布在Natural-Conv数据集上最新的任务评测数据,其结果如表3所示。
由表3可看出,本文提出的答案选择模型效果相比其他大部分模型较为有效。Bert+FC模型在MRR、MAP、ACC@1三个评价指标上较为优异,这证明相比没采用预训练Bert微调模型的其他模型,本文模型在数据处理时有更大优势;Bert+BiLSTM模型在MRR、MAP、ACC@1三个评价指标中与Bert+FC模型相比,不分伯仲,这证明了本文采用的基于预训练Bert模型微调策略的有效性。表3中的模型大多单一采用BiLSTM模型和Transformer模型作为学习模型,相比而言,本文的基于预训练Bert微调模型在获取文本语义、上下文信息方面有着更为显著的优势。
表3 Natural-Conv数据集评测任务模型MRRMAPACC@1BiMPM0.85920.85960.7906Transformer0.82690.82630.7395BiLSTM0.81200.81110.7385LSTM+Attention0.75390.75880.6373模型MRRMAPACC@1CNN0.75260.75190.6390LSTM0.74280.74220.6287Bert+FC0.81400.77500.7900Bert+BiLTSM0.83800.82500.8490
本文研究了基于Bert模型的机器问答技术,采用了预训练Bert模型的使用方式和微调方式,使用FC模型和BiLSTM模型与其相结合构建出新的模型。并在Natural-Conv数据集和NLPCC-ICCPOL DBQA数据集上,对本文采用的方法和模型都做出了实验验证。结果表明,相对传统的深度学习模型来说,基于预训练Bert模型的答案选择模型性能有着明显的提高。在实验过程中发现Bert预训练模型对数据量大小也十分敏感,但由于在微调阶段参数过多,需要多次调试才能达到最佳性能。