本文将介绍英伟达在自然语言生成领域的一些最新进展,主要涵盖两个方面:
在生成式闲聊对话中,目前有两种主流方法:检索式和生成式。检索式方法是从预先准备好的回复库中选择合适的回复,而生成式方法则通过自回归采样生成新的回复。虽然生成式方法具备灵活性,但其生成的内容可能缺乏一致性,甚至出现无意义的回复。
为了提高生成式对话模型的可控性,我们尝试让模型基于某个说话人的历史对话内容生成风格一致的新内容。这种方法不仅提升了对话风格的一致性,还通过增加模型的尺寸提高了对话的自然度。
这项工作主要使用了基于GPT-2的生成式模型进行对话生成。GPT-2采用自回归采样方法,每次生成一个新的Token,然后将其添加到之前的序列中,再输入到模型中生成新的Token。通过这种方法,我们可以生成多轮对话。
为了更好地控制生成对话的风格,我们将目标说话人的历史对话内容作为输入的一部分输入到模型中。这样可以让模型生成与目标说话人风格一致的对话内容。此外,我们还加入了目标说话人之前轮次的回复,以帮助模型更好地理解目标说话人的风格。
模型的输入包括多种不同的嵌入(Embedding)。首先,是目标说话人的历史对话内容的Token,其次是当前的多轮对话内容。此外,我们还使用不同的Token Type来区分Token的来源,例如,哪些Token来自目标说话人,哪些来自其他说话人。最后,我们加入了Position-Embedding来表示Token的顺序信息。
所有实验都使用了Reddit论坛中的网友提问和回复作为对话数据。这些数据可以通过pushshift.io网站下载。我们使用2018年10月至2019年3月的数据进行训练,并使用2009年4月的数据进行测试。
我们采用了两种测试方法,一种是基于困惑度的自动测试,另一种是人工测试。自动测试包括了不同模型结构和大小的对比,而人工测试则从多个维度评估模型生成对话的质量。
基于困惑度的自动测试显示,Decoder-only结构的模型表现最佳。此外,预训练对模型效果有显著的帮助,使用目标说话人历史对话信息的方法也能提高模型的效果。
我们还测试了模型大小对效果的影响。结果显示,随着模型尺寸的增加,困惑度不断下降,表明更大的模型能够生成更自然的对话内容。
人工测试从多个维度评价模型生成对话的质量,结果显示,大模型的效果优于小模型,且参数量最大的模型效果与真人对话非常接近。
深度学习模型的训练高度依赖于标注数据,但标注数据通常稀缺且成本高昂。一种折中的方法是使用半监督学习。然而,对于问答任务而言,合成数据的质量与人工标注的数据仍存在一定差距。
本工作的主要思路是生成问答对数据,然后进行模型微调。具体步骤包括: 1. 构建生成合成数据的Pipeline。 2. 使用Wikipedia等文本资源生成问答数据。 3. 在生成的问答数据集上微调BERT QA模型。 4. 在SQUAD验证集上评估模型效果。
合成数据的Pipeline包含三个部分:答案生成、问题生成和问题过滤。首先生成答案,然后基于答案生成问题,最后筛选出高质量的问题。
我们在SQUAD数据集上进行了实验,使用一半的数据进行训练,另一半用于生成问答对。实验结果显示,使用合成数据训练的模型在EM和F1分数上均优于传统方法。
结果显示,使用合成数据训练的模型在SQUAD验证集上的表现优于传统方法。此外,通过增加SQUAD的真实标注数据,模型的效果进一步提升。
我们测试了不同大小的模型对Pipeline的影响,结果显示,大模型生成的问答对精度更高。
实验表明,生成的问题质量随着模型尺寸的增加而改善。然而,答案生成模块与模型尺寸的关系并不明显。
使用更大模型的问题过滤模块能够提升过滤效果。
A1:目前更多工作集中在增大模型尺寸,观察其对生成任务和问答任务的影响。
A2:我们通常保留每个用户最多八条对话,以适应GPT-2的最大输入长度限制。
A3:生成数据的质量很大程度上取决于生成模型训练时的数据领域。如果需要在不同领域生成数据,可以对生成模型进行风格迁移或使用特定领域的文本。
A4:目前主要应用于生成式任务,尚未应用于分类任务。
A5:需视具体应用场景而定。在某些场景下,半监督学习和迁移学习效果较好,但在问答任务中,数据合成可能更具优势。
A6:确实存在这种情况,但通过数据筛选和清洗,可以尽量保证高质量的历史对话,减少干扰。
A7:主要基于公司内部的GPU集群,每个节点包含8张V100 GPU。
A8:没有添加额外的控制策略,主要是为了研究历史对话对风格控制的影响。在实际应用中,可以结合多种控制策略以获得更好的效果。
通过以上研究,我们发现生成式对话模型可以通过引入目标说话人的历史对话内容,提高对话风格的一致性和自然度。此外,合成数据在问答任务中也表现出色,尤其是在模型尺寸较大时。