ACTA Scientiarum Naturalium Universitatis Pekinensis
开放域对话系统的抗噪回复生成模型
朱钦佩† 缪庆亮
摘要 为缓解输入语句中噪声对回复生成模型的干扰, 提出一个基于编码–解码框架的抗噪模型。首先,在训练集输入序列中随机加入模拟噪声字符; 然后,在编码端输出层训练噪声字符识别, 提升模型对噪声特征的提取能力; 最后, 在编码端输出层融合预训练语言模型, 扩大模型对噪声的覆盖面。为验证该模型的抗噪效果, 构建首个带真实噪声的单轮开放域闲聊系统抗噪能力测试集。在该测试集上的实验结果表明, 所提出的抗噪模型自动评测和人工评测结果均优于基准模型。关键词 自然语言生成; 预训练语言模型; BERT; Transformer模型
近年来, 人机对话系统广泛地应用于日常生活中, 如智能导航、智能音箱和智能家居等。在实现方法上, 目前主流的对话系统主要分为:基于检索的对话系统和基于文本生成的对话系统。基于检索的对话系统依赖大规模的问答数据, 对数据库中存在的问句可以给出准确的回复, 但对问答库中不存在的问题无法给予有效的回复。基于生成的对话系统不依赖问答数据库, 可以根据用户输入的问题直接生成回复, 从而避免基于检索方法的缺陷。早期的文本生成方法主要基于规则生成文本,需要人工构建大量规则, 成本较高。基于神经网络的文本生成方法直接根据训练数据, 进行端到端
的学习, 不需要过多的人工干预, 受到越来越多的关注。
在交互方法上, 对话系统主要分为语音交互、文本交互和多模态交互的对话系统。语音交互对话系统因方便快捷的使用方式和无屏化操作, 广泛地应用到各个场景中。然而, 在语音交互环境中, 对话系统的输入语句往往含有大量噪声。我们从某语音对话系统中, 连续 7天随机抽取用户请求日志18815 条, 统计噪声语句和通顺语句的占比(表1),发现该系统接收的噪声语句占34.5%。导致这种情况的主要原因是背景噪音、VAD切分错误和ASR识别错误等。为分析回复生成模型的抗噪能力, 我
们从该系统日志的噪声语句中随机抽取1000条作为测试集, 实验表明, 面对上述噪声输入, 目前几个主流的基于神经网络的回复生成模型的回复满意率均不超过30%, 可见目前回复生成模型的抗噪能力较差。为了提高基于生成模型的对话系统在口语环境下的抗噪能力, 本文提出一个基于编码–解码框架的新模型。为验证该模型的抗噪效果, 我们构建一个测试集, 包含从真实对话系统脱敏日志中抽取的1K噪声语句以及10 K人工标注无噪声问答句对。
1 相关工作
早期基于文本生成的对话系统主要通过一系列规则生成语句, 这种基于规则的生成语句通常较为单一, 比较生硬, 人工成本高[1–3]。近年来, 随着深度学习算法在自然语言处理领域的广泛应用, 针对基于文本生成的对话系统的研究也逐渐转移到利用
[4]神经网络算法进行回复生成。Sutskever 等 提出seq2seq, 主要使用两个 LSTMS[5]结构构建编码–解码(encoder-decoder)框架, 其中编码器将输入语句编码为固定维度的向量, 解码器将此向量解码为可变长度的文本序列。这是一个端到端的生成模型框架, 避免了人工编写规则。Bahdanau等[6]指出, 编码–解码框架中将输入语句编码为一个固定维度向量会导致信息损失, 并提出注意力机制(attention mechanism), 在 seq2seq基础上增加注意力机制(即seq2seq+attn), 通过在解码过程中动态地“注意”输入语句的不同部分(即在生成当前时刻的词语时,只“注意”与当前时刻相关的信息), 构造出更具针对性的上下文信息进行解码。实验结果显示, 注意力机制的应用大幅提升了生成语句的质量。
Vaswani 等[7]提出的 Transformer模型放弃基于LSTMS的链式结构, 提出自注意力机制, 并将其扩展为多头自注意力机制, 以此搭建整体网络。通过
自注意力机制, Transformer将任意位置的两个单词的距离转换为1, 有效地解决了自然语言处理(NLP)中棘手的长距离依赖问题, 并在生成式对话任务中表现优异[8–10]。预训练语言模型可以从海量数据中进行无监督训练, 学习到全面而丰富的语言学信息[11]。最近, BERT[12]在自然语言理解方面表现出
[13]强大的能力 。BERT 将 Transformer 作为算法的主要框架, 在更大规模语料基础上, 学习到更加有
[14]效的词特征表示。Sriram 等 在 seq2seq+attn 基础上提出Cold Fusion方法, 在解码端中融入预训练语言模型的序列特征, 提升模型的输出文本质量。
2 实现方法
首先, 在输入序列中, 通过随机添加和替换字符的方式, 引入噪声字符。然后, 在编码端的输出层识别输入序列的所有字符是否为噪声字符, 并使用 Cold Fusion融合预训练语言模型的序列特征, 增强模型对输入语句噪声表示的覆盖性。最后, 使用多任务训练方式, 同时优化噪声预测和回复生成。为了缓解生成语句内容重复的问题, 我们在解码时使用惩罚机制, 降低字符再次生成的概率。模型整体框架见图1。
2.1 抗噪机制(antinoise)
通常训练模型使用的训练集都是语句完整通顺、语义简明的句子, 但这种训练集不能使模型获得处理噪声的经验, 因此我们在输入语句进入模型训练之前自动添加模拟噪声, 然后在编码端输出层区分噪声字符和非噪声字符。
设编码层输入序列为Encodeinput = [w1, w2, …, wn ], N为输入序列长度。我们模拟噪声的方法是,在输入序列的t时刻, 以概率 pnoise随机增加或替换字符。经推导可知, 一个输入序列不带噪声的概率为(1–pnoise)n。假设训练过程中, 不带噪声的输入语句与带噪声的语句数量比为 λ:(1–λ), λ∈[0, 1], 每个输入序列添加的噪声字符最多不超过K个, 训练数据中所有输入语句的平均句长为τ, 则 pnoise 的计算
公式如下:
pnoise 1 。 (1)增加噪声后的输入序列用式(2)表示: Encodeinput [ w 1, w 2, , wm ], (2) noise其中,M为增加噪声后的序列长度。自动标注序列中每个字符是否为噪声, 噪声的训练目标用式(3)表示:
Target [tgt1 , tgt , ..., tgt ], (3) noise 2 M其中,tgtt是噪声的字符标识, t∈[1, M]。当输入序列中 t时刻字符为噪声字符时, tgtt=1, 反之 tgtt=0。网络中对噪声的预测方法是, 编码端输出的状态在每个时刻的特征向量上接入Softmax二分类判别器, 预测当前时刻的字符是否为噪声字符。编码端输出状态为
S=[s1, s2, …, sm], (4)其中, st 为 t 时刻字符编码特征, h为隐藏层维h度。噪声预测函数为Predictnoise≜[p =Softmax(wnoise*s+bnoise) 1, p2, …, pm], (5)其中, Wnoise 和 bnoise 为仿射变换参数。在2h 2计算噪声损失函数前, 先对噪声优化目标 Targetnoise做平滑归一化[15]: Smoothtarget noise [smooth(tgt1 ),smooth(tgt ), , smooth(tgt )] 2 M [stgt1 , stgt , , stgt ], (6) 2 M ( ,1 ), tgt 0, t smooth(tgt ) t (1 , ), tgt 1, t其中, t∈[1, M],ε为平滑超参数。损失函数为交叉熵与 KL 散度之和: Noiseloss stgt log( p ) M t 1 t t stgt stgt log (7) M t , t 1 t pt 训练过程中, 噪声预测训练和回复生成训练同时进行, 使用相同的学习率, 使得 Trans-former 编码层除正常的学习语言特征表示外, 也强化对噪声字符的表示能力。最终, 输入序列在经过编码端的特征表示后参与解码, 使得解码端逐渐学习到面对噪声时的回复策略, 主要表现为只关注非噪声内容,或通过上下文推测噪声内容。2.2 融合机制
为了增强网络对输入序列的编码能力, 使用Cold Fusion融合编码端输出状态和预训练语言模型输出特征, 利用预训练语言模型强大的语言表示能力, 扩大模型对噪声类型的覆盖范围。假设 2.1节中编码端输出状态为S, 预训练语言模型输出序列特征为 L=[l1, l2, …, lm], 其中 lt d 为 t时刻字符的语言模型特征, d为语言模型输出维度。Cold Fusion 融合过程如下: hl RELU( W L bh ), (8) h gl Sigmoid( W [ S ; h ] bg ), (9)
g L output RELU( W [ S ; g h ] be ), (10) E E L L其中, W h d , W , W h 2 h , b , b , be h , 都为h g E h g仿射变换参数, RELU(·)和 Sigmoid(·)为激活函数。最终使用 outpute 代替S作为编码端输出状态, 参与解码。2.3 抗噪+融合将抗噪机制和融合机制联合加入编码–解码框架中, 具体步骤为, 在编码端输出层加入抗噪机制,并使用 Cold Fusion融合编码端输出和语言模型输出。在结构上, 抗噪机制和融合机制没有承接关系,只是共用编码器参数, 各自内部参数的更新互不影响。实验中, 我们在 Transformer的基础上, 同时加入抗噪机制及融合预训练语言模型BERT, 达到最优效果, 二者联合的整体框架见图2。
编码端输出与预训练语言模型输出的融合, 并不影响噪声特征向解码端的传输。事实上, 如果编码层的序列特征中包含噪声特征, 与预训练语言模型的特征序列融合时, Cold Fusion融合模块会自动地调节编码特征与预训练语言模型序列特征的融合比例, 当编码端的噪声特征明显时, Cold Fusion 通过学习, 相应地调高编码端输出的融合比例, 反之亦然。
2.4 惩罚重复解码字符
生成模型的输出语句中经常出现字、词和短句重复。为了减少出现重复字词的情况, 我们通过惩罚策略, 降低解码字符再次出现的概率。解码端 t时刻的输入如下: Decodeinput [token1 , token ,, token 1]。(11) t 2 t
解码端 t时刻的输出状态为Ot , Vocabsize Vocabsize为词典大小。正常情况下, Ot输入 Softmax 层,得到所有字典字符的概率分布Dt, 用于解码。惩罚策略的目的是降低Decodeinputt 中字符在Dt上的概率。惩罚过程为Mask Onehot (Decodeinput , Vocabsize), (12) t t Penalty O Mask , (13) t t t O t Ot Penaltyt, (14) Dt Softmax(ot ), (15)其中, Onehot为独热编码, 编码维度为Vocabsize。δ>0为超参数。最终, D 代替 Dt参与 t 时刻解码。t惩罚重复字符的方法不参与模型训练, 直接在训练完成的模型上使用, 可在一定程度上避免生成无意义重复词句的情况。
3 实验3.1 训练数据和测试数据
训练数据有4个来源: 1) 人工标注闲聊问答语句对740 K, 即根据用户请求语句, 标注人员以智能机器人的口吻写出通顺、合理和有趣的回复; 2)
Dureader[16]语料 300 K, 只使用语料中的问答句对; 3) Weibo[17]语料 2 M, 只使用所有对话中的首轮对话; 4) 收集脱敏日志噪声请求语句10 K, 目标回复语句均设置为“[Saferes]”, 表示这些回复语句应使用安全回复, 比如“抱歉, 这个我还不会”。所有语料问句和回复语句长度均在2~30 之间, 去除问句中的标点符号, 但保留回复语句中的标点符号。将所有数据汇总, 随机抽取100 K作为验证集, 其余用于训练。
在验证一个回复生成模型抗噪能力的同时, 要求该模型在通顺语句中的效果不下降。我们构建的测试集也主要针对这两个方面。测试集以及评测结果可以从Github ①获取, 测试集举例见表2。
QA10K 随机抽取10 K对人工标注闲聊问答句对。这个测试集的所有请求语句和人工标注回复语句均表达清晰, 语句通顺。评测指标为BLEU[18]、distinct-n[19]和平均回复句长。
Hard1k 从日志分析的噪声语句中, 随机抽取 1000 条, 主要测试模型对噪声语句的处理能力。由于人工很难根据此测试集的噪声语句标注回复,更具操作性的评测方法是,当模型生成回复后, 人工评测回复语句的合理性, 评测指标为人工评测、distinct-n 和平均回复句长。
利用项目sacrebleu①计算BLEU值,利用Github②计算 Distinct-1 和Dinstinct-2。平均回复句长由下式计算:
所有回复语句字数总和平均回复句长 。 (16)回复语句个数3位数据标注人员对所有模型的回复语句进行独立标注, 标注过程中屏蔽回复语句和模型的对应关系。每个回复语句标注满意或非满意: 1) 满意,表示回复语句通顺易懂, 并且输入语句和回复语句有合理的承接和逻辑关系; 2) 非满意, 表示回复语句语句不通, 语义不明, 或者“答非所问”。每个回复语句的最终标注结果采用少数服从多数的原则。人工评测结果由下式计算:标注“满意”句子个数。人工评测 (17)所有句子个数
3.2 模型评测
为验证各个机制的性能以及多机制融合方法的有效性, 设置3组对比实验, 分别是基础模型加抗噪机制, 基础模型加语言模型融合机制, 基础模型同时加抗噪机制和融合机制。3组对比实验分别在QA10K和 Hard1k上进行。基线模型选择seq2seq+ attn 和 Transformer, 具体配置如下。
seq2seq+attn 模型工程代码引用项目 Texar③。隐藏层大小(hidden_size)设置为512, 定向搜索(beam search)宽度为10。
Transformer 模型工程代码引用项目 TEXAR。隐藏层大小设置为 512, 编码和解码层数(block_num)设置为 6, 注意力机制头个数为8, 定向搜索宽度为10。
Inputnoise 在 Transformer 的基础上, 只在训练集的输入语句加入噪声, 但不训练噪声。
Antinoise 在 Transformer 的基础上, 加入抗噪机制。训练数据输入语句的平均句长τ=12, 令λ= 0.5, 则噪声概率 pnoise=0.056, 最大噪声数量K为当前句长的1⁄2, 平滑参数ε=0.9。
FUSEBERT 使用 Cold Fusion 融合 Transformer编码输出与BERT输出, 不加抗噪机制。BERT工程代码引用 Google-research 官方代码⑤ , 预训练参数使用110 M中文模型(BERT-BASE, Chinese)。使用训练集所有输入语句对BERT做预训练, 在 BERTBASE的基础上微调925000步, 掩码预测精度为0.72。在训练过程中, 更新BERT参数。
Antinoise+fusebert Transformer 编码端输出层接入抗噪机制, BERT不参与噪声学习, 用Cold Fusion 融合 Transformer 编码输出和BERT 输出, 沿用上述各模型参数的设置。
上述所有模型均不分词, 使用 BERT 自带词典。模型批训练数据大小(batch_size)为2048, 解码目标语句标签平滑归一化参数为0.9, 最大解码长度为 32。惩罚重复字词超参数δ=2.0, 最大 Epoch为 20, 保存验证集上效果最优模型, 用于实验比对。所有模型都可能生成特殊回复语句“[Saferes]”,表示本句采用安全回复, 此特殊回复语句的句长为1, Distinct-1 得分默认为0, 人工评测默认不满意。3位标注人员人工评测的Kappa系数一致率平均值为 0.82, 表明评测结果具有高度一致性。实验结果见表 3。
由表3可以看出, 我们的模型 Antinoise, FUSEBERT和 Antinoise+fusebert, 在各评测指标中超过基线模型 seq2seq+attn 和 Transformer, 且联合模型 Antinoise+fusebert效果最优, 说明我们的模型不仅具有一定的抗噪能力, 对常规通顺语句也保持良好的效果。在QA10K 和 Hard1k 上, Inputnoise各个指标几乎均低于基线模型Transformer, 说明仅仅模拟噪声输入, 并不能有效地提取噪声特征, 反而使模型在训练中陷入困惑。除此之外, 基线模型seq2seq+attn各个指标均低于Transformer模型。
对 Hard1k回复内容进一步分析可以发现, 加入抗噪机制的回复语句使得模型更加关注输入语句的有效部分, 倾向于忽略“不理解”的语义内容, 从而采取比较安全的方式回复用户请求, 这是人工评测指标大幅度提升的关键, 也是 Antinoise效果超过FUSEBERT 的主要原因, 符合我们模型设计的预期。比如, 输入语句“我现在有多少幽闭”, 其中“幽闭”在这里明显不符合正常说法, Transformer 模型生成安全回复标志语句“[Saferes]”; FUSEBERT模型缺少对噪声和非噪声字符的区分, 总是尝试理解输入语句的所有内容, 它结合对“幽闭”理解和输入语句其他部分, 回复为“哈哈, 你想幽闭的话可以自己数一数呀”, 导致回复内容不符合正常说法; Antinoise模型对“幽闭”这个词视而不见, 回复为“你自己数一数就知道了呀”; Antinoise+fusebert同样忽略“幽闭”, 回复为“你看一下就知道啦”。可见加入抗噪机制后, 回复内容并没有提及“幽闭”相关内容,似乎模型知道用户问某样东西有多少, 但模型并不关心是什么东西, 从而生成较为通用的回复, 从用户角度看, 这种回复并非不妥。
另一方面, FUSEBERT对模型语义理解能力的提升也不容忽视。比如, 输入语句“书山有路违纪”, Transformer 模型不理解输入语义, 回复内容照搬输入“书山有路违纪”; Antinoise模型知道输入语句中包含噪声, 但知识覆盖面不足, 回复为“是的呢, 这句诗出自李清照《水浒传》哦”; FUSEBERT 和Antinoise+fusebert 由于语言模型BERT 的存在,从而抓住“书山有路”这个有效且强烈信息, 都回复为“书山有路勤为径, 学海无涯苦作舟”。更多的Hard1k回复举例见表4。
4 结语
在语音交互环境下, 输入对话系统带噪声的语句占整体输入的34.5%, 但主流的回复生成模型抗噪能力不佳。为了提高回复生成模型的抗噪能力,本文基于编码–解码结构, 构建一个新网络, 极大地提升了编码端对噪声特征的表示能力。同时, 本文公开首个中文单轮开放域闲聊系统的抗噪能力测试集, 包含10 K人工标注问答对以及1 K噪声语句,作为带真实噪声的对话数据, 有助于其他研究者针
对汉语语音对话系统的相关研究。在该测试集上的实验结果表明, 抗噪机制和融合BERT方法均优于基准模型, 并且二者联合模型达到最优效果。
在未来工作中, 我们将尝试使用更加逼真的噪声模拟策略, 比如根据语音识别中的语言模型模拟噪声, 同时使用增加、替换、删除和重复等策略模拟噪声。同时, 将尝试在模型不同位置上训练噪声,比如解码输出状态与BERT融合后, 再训练噪声。此外, 还将寻找或研究更加合理的自动评测指标。
参考文献
[1] Collby K M. Artificial paranoia: a computer simulation of paranoid process. New York: Elsevier Science Inc, 1975 [2] Barzilay R, Lee L. Catching the drift: probabilistic content models, with applications to generation and summarization // Proceedings of the Human Language Technology Conference of the North American Chapter of the Association for Computational Linguistics. Boston, 2004: 113–120 [3] Angeli G, Liang P, Klein D. A simple domainindependent probabilistic approach to generation // Proceedings of the 2010 Conference on Empirical Methods in Natural Language Processing. Cambridge, 2010: 502–512 [4] Sutskever I, Vinyals O, Le Q V. Sequence to sequence learning with neural networks // Advances in Neural Information Processing Systems. Montreal: MIT Press, 2014: 3104–3112. [5] Hochreiter S, Schmidhuber J. Long short-term memory. Neural Computation, 1997, 9(8): 1735–1780 [6] Bahdanau D, Cho K, Bengio Y. Neural machine translation by jointly learning to align and translate [EB/OL]. (2016–05–19) [2020–06–01]. https://arxiv. org/abs/1409.0473 [7] Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need. Advances in Neural Information Processing Systems, 2017: 5998–6008 [8] Wolf T, Sanh V, Chaumond J, et al. Transfertransfo: a transfer learning approach for neural network based conversational agents [EB/OL]. (2019–02–04) [2020– 06–01]. https://arxiv.org/abs/1901.08149 [9] Rashkin H, Smith E M, Li M, et al. Towards empathetic open-domain conversation models: a new benchmark and dataset // Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics. Florence, 2019: 5370–5381 [10] Dinan E, Roller S, Shuster K, et al. Wizard of Wikipedia: knowledge-powered conversational agents [EB/OL]. (2019–02–21) [2020–06–01]. https://arxiv. org/abs/1811.01241 [11] Jozefowicz R, Vinyals O, Schuster M, et al. Exploring the limits of language modeling [EB/OL]. (2016–02– 11) [2020–06–01]. https://arxiv.org/abs/1602.02410 [12] Devlin J, Chang M W, Lee K, et al. BERT: pretraining of deep bidirectional transformers for language understanding // Proceedings of NAACL-HLT. Minneapolis, 2019: 4171–4186 [13] Zhu J, Xia Y, Wu L, et al. Incorporating bert into neural machine translation [EB/OL]. (2020–02–17) [2020–06–01]. https://arxiv.org/abs/2002.06823 [14] Sriram A, Jun H, Satheesh S, et al. Cold fusion: training Seq2seq models together with language models [EB/OL]. (2017–08–21) [2020–06–01]. https:// arxiv.org/abs/1708.06426 [15] Szegedy C, Vanhoucke V, Loffe S, et al. Rethinking the inception architecture for computer vision // Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas, 2016: 2818–2826 [16] He W, Liu K, Liu J, et al. Dureader: a Chinese machine reading comprehension dataset from realworld applications // Proceedings of the Workshop on Machine Reading for Question Answering. Melbourne, 2018: 37–46 [17] Zheng Y, Chen G, Huang M, et al. Personalized dialogue generation with diversified traits [EB/OL]. (2020–01–02) [2020–06–01]. https://arxiv.org/abs/1901. 09672 [18] Papineni K, Roukos S, Ward T, et al. BLEU: a method for automatic evaluation of machine translation // Proceedings of the 40th Annual Meeting of the Association for Computational Linguistics. Philadelphia, 2002: 311–318 [19] Li J, Galley M, Brockett C, et al. A diversitypromoting objective function for neural conversation models // Proceeding of NAACL-HLT. San Diego, 2016: 110–119