Skip to content

Latest commit

 

History

History
153 lines (100 loc) · 13.6 KB

README_zh.md

File metadata and controls

153 lines (100 loc) · 13.6 KB

作者:李一鸣 张兆

对话式多文档问答旨在根据检索到的文档以及上下文对话来回答特定问题。 在本文中,我们介绍了 WSDM Cup 2024 中 “对话式多文档问答” 挑战赛的获胜方法,该方法利用了大语言模型 (LLM) 卓越的自然语言理解和生成能力。在方案中,首先根据竞赛特点、数据格式设计了提示模板及训练方式对LLM进行微调,并对多种基座大模型进行对比,然后设计一种混合训练策略,充分利用领域内的未标记数据。 此外,采用文本嵌入模型来过滤掉潜在的不相关文档,并设计和比较了几种为生成任务特殊调整的模型集成方法。 凭借所有这些技术,我们的解决方案最终在 WSDM Cup 2024 挑战赛中超过了来自华为 2012 实验室、网易等公司的近300支参赛队伍,最终位列第一,并在各个评价指标上均大幅领先第二名,我们也通过多个对比、消融实验验证了我们所提技术的有效性。

关键词: 问答;大语言模型;文本嵌入模型;混合训练

Github 开源地址:https://github.com/zhangzhao219/WSDM-Cup-2024

论文地址:https://arxiv.org/abs/2402.18385

方案简介

对话式问答旨在根据对话中识别的用户意图生成正确且有意义的答案,在现代搜索引擎和对话系统中发挥着至关重要的作用。 然而,这仍然具有挑战性,特别是对于当前正在流行的话题,因为在语言模型在训练阶段无法获得当下的知识。 尽管可以通过检索增强的方式为模型提供多个相关文档作为上下文信息,但模型仍然面临着无法从长文本中获取有效信息,被大量无关信息输入误导的风险。 基于来自小红书的真实文本数据,WSDM Cup 2024 发起了 “对话式多文档问答” 挑战赛,以鼓励对该问题的进一步探索。

最近,ChatGPT 等大语言模型在多项自然语言处理任务上表现出了 SOTA 性能,我们希望通过利用大模型的理解和推理能力来探索这一问题。 然而,包括训练模式的设计、不相关文档的存在在内的许多因素仍然阻碍了 LLM 生成质量的进一步提高。

在这项工作中,为了充分挖掘 LLM 的能力,我们首先通过提示及掩码设计,将任务表述为 LLM 的多轮条件生成问题。 然后,进行多阶段混合训练方法,将未标记的评估集合并为额外的训练语料。为了删除潜在的不相关信息,我们实施了一些策略,包括使用文本嵌入模型计算输入和文档之间的相似度得分等。 最后,为了选择多个模型产生的候选问答作为(模型集成的)最优答案,我们考虑了几种方法来近似评估各种大模型生成答案的质量。

对话式多文档问答挑战赛 Conversational Multi-Doc QA

赛题任务

每个月有数以亿计的用户在小红书上分享和发现生活的美好,并在小红书海量笔记中获取相关信息和实用的生活经验。小红书利用先进的 AI 技术,如深度学习及时下流行的大语言模型等,提升用户个性化的互动体验,更好地满足他们对高效、准确信息获取的需求。

在多轮对话场景中,为用户的查询提供准确且全面的回答是一项充满挑战的任务,本次比赛将模拟真实的多轮对话场景,提供对话历史、当前查询 query、以及搜索系统检索到的相关笔记。参赛者的系统被要求依据这些输入信息,理解用户查询意图并输出面向查询 query 的文本回答。我们将评估回答的准确性与完善性。通过这个挑战,期待能探索和提高对话系统在面对多轮上下文和多样化搜索结果时,生成更准确,完善回答的能力,更好地理解和满足用户的需求,获取更加高效、准确的信息。

数据集

数据集包括训练(12557 条数据)/验证(1794 条数据,用于第一阶段评测)/测试数据(3588 条数据,用于第二阶段评测,作为最终比赛结果),每个都将以 json 格式给出,每个样本包含以下字段:

  • uuid:字符串,每个示例的唯一标识符
  • history:字符串元组列表,顺序历史问答对
  • documents:字符串列表,最多5个参考文档
  • question:字符串,用户问题
  • answer:字符串,参考答案(未在评估/测试数据中给出)
  • keywords:字符串列表,最好在参考答案中提及的参考关键字(训练/评估/测试集中均未给出)

数据样例如下:

{
    "uuid": "xxxxx",
    "history": [
        {
            "question": "xxx",
            "history": "xxx"
        },
        {
            "question": "xxx",
            "history": "xxx"
        },
        ...
    ],
    "documents": [
        "Jun 17th through Fri the 21st, 2024 at the Seattle Convention Center, Vancouver Convention Center.",
        "Workshops within a “track” will take place in the same room (or be co-located), and workshop organizers will be asked to work closely with others in their track ...", 
        ...
    ],
    "question": "Where will CVPR 2024 happen?",
    "answer": "CVPR 2024 will happen at the Seattle Convention Center, Vancouver.",
    "keywords": # Will not be given.
    [
        "Vancouver",
        "CVPR 2024",
        "Seattle Convention Center"
    ]
}

评估指标

指标:

  • 关键词召回(Keywords Recall):答案是否包含事实以及精确匹配的特定关键词。
  • 字符级(Char-Level) ROUGE-L :通过模糊字符级匹配,答案是否与参考答案相似。
  • 单词级(Word-Level) ROUGE-L :通过模糊单词级匹配,答案是否与参考答案相似。

方案思路

基于 LLMs 实现多文档问答

为了使 LLM 适应这项任务,我们仔细设计了输入格式,并按以下顺序将每个文本部分连接在一起: $$u={q_{1}}{a_{1}}{q_{2}}{a_{2}}...{q_{n}}{a_{n}}{q}{d_{1}}{d_{2}}...{d_{n}}{a}$$

上式中, $q_i$ 代表历史对话中第 $i$ 个问题, $a_{i}$ 代表历史对话中第 $i$ 个回答, $q$ 代表最终问题, $d_{i}$ 代表第 $i$ 个参考答案, $a$ 代表最终答案。此外,请注意,我们在上式中省略了 LLM 的 special tokens(例如 <s>、[INST]),它们通常被用来划分各个来源的输入。

然后,可以通过最大化整个序列的对数似然来训练模型 $\theta$ :

$$ L_{gen}=-\sum_{i=1}^{|u|} m_{i} log p(u_i |, u_{< i} ; \theta ) $$

其中 $p(u_i |, u_{&lt; i} ; \theta )$ 代表在第 $i$ 步选择来自于 $u&lt; i$ 之前字符 $u_{i}$ 的概率, $m_{i}$ 代表针对第 $i$ 个字符的 loss mask。有两种训练模式,

  1. 单轮模式:当且仅当 $u_{i}$ 属于最终答案 ${a}$ 时, $m_{i}=1$
  2. 多轮模式:当 $u_{i}$ 属于最终答案 ${a}$ 或者历史问题答案 $a_i$ 时, $m_{i}=1$

我们基于 Llama2-13B-base 进行实验,发现多轮模式会带来更好的性能,如下表所示,我们猜测多轮模式可以使 LLM 更加关注上下文信息,帮助解决最终问题中可能存在的指代消解,

在决定输入格式和掩码模式后,我们比较了许多目前流行的 LLM。 如表 2 所示,SOLAR-10.7B-Instruct 模型在评估数据集上远远超过了同类模型,该模型使用 depth up-scaling 来 upscale LLM,并针对指令跟随能力进行了微调。 因此,在后续的实验中选择它作为我们的backbone。

混合训练

来自相似分布的有标签文本可能极大促进大模型生成性能的提升。 在比赛第二阶段,我们建议利用微调好的性能较优模型为评估数据集生成(伪)答案,然后将它们添加到原始训练集,并从头开始微调新模型。 上述混合训练策略的出发点有两个,一方面,它可以被视为对域内无标签数据的知识蒸馏(教师模型为 well-trained model)过程,另一方面,因为我们只为最终答案 $a$ 生成伪标签,历史问题的答案 ${a_i}$ 仍然是官方注释的,这有利于多轮对话的训练。 请注意,我们不会进一步加入(第二阶段)测试数据集的伪标签,因为它可能会过度校正模型,从而降低最终测试的模型性能,这也通过我们的实验进行了验证。

噪音文档过滤

毫无疑问,高质量的参考文档不仅可以帮助减轻幻觉现象,还可以提高大模型的推理质量。 仔细观察整个数据集后,我们发现主要有两种类型的噪声文档,如图 1所示,

在这里插入图片描述

  • 文档几乎重新表述了该问题,该问题与文档具有极高的相关分数;

  • 文档包含了不相关的信息,因此它们与问题或历史问答的相关分数极低;

因此,在不存在真实答案的情况下量化相关性就显得至关重要。 从语义和词汇的角度来看,我们提出以下两个指标作为段落相似度度量:

  • 嵌入级表示的余弦相似度,我们采用目前先进的文本嵌入模型 Nomic Embed 来计算文档与相应问题(或与对话历史问答一起)之间的余弦相似度。
  • 单词或字符级的 ROUGE-L 如前所述,ROUGE-L 分数可以被视为词汇相关性标准。

在实际操作上,我们对每个指标分别设置较高的阈值 $\tau_{h}$ 和较低的阈值 $\tau_{l}$,然后筛选出参考文档,其对应分数 ≥ $\tau_{h}$ 或 ≤ $\tau_{l}$ 的文档,并人工地再对这些文档进行检查。最终,我们在第二阶段过滤掉了 193 个噪声文档。

此外,之前的工作表明,将重要的信息放在大模型的开头或结尾处有利于其更好地利用有效信息,因此,我们也尝试了对输入数据的参考文档进行顺序调整。 然而,我们发现原数据中参考文档的索引(即其出现顺序)和官方注释答案中其出现的相对顺序之间存在很强的相关性,相关实验也表明,对参考文档重新排序可能会导致严重的性能下降,这也被其它参赛队伍所印证。

模型融合

模型集成已被证明在判别任务中是有效的,但是,很少有工作在生成任务上对其进行探索。 在这项工作中,我们希望找到一种方法可以近似评估不同模型生成答案的质量,然后从中选择选择最好的一个作为最终结果。我们想象这样一个现实场景,假设有 N 位候选者都提出了自己的方案,那么最终的方案应该是获得赞成最多的方案。因此,我们最终选择的答案应该是与最多候选模型达成一致的代表。 具体地,假设给定一个测试样本,我们有 $M$ 个候选答案进行集成,对于每个候选 $r_{i}$ ,我们计算 $r_{i}$$r_{j}$ 之间的相关性分数 $s(r_{i} ,r_{j} )(j=1,...,M,j\neq i)$ ,将它们加在一起 $(q_{i}=\sum_{j}s(r_{i},r_{j}))$ 作为 $r_{i}$ 的质量分数 $q_{i}$ 。 类似地,相关性量化的方法可以是上文提到的嵌入级表示的余弦相似度(记为 emb_a_s)、单词级 ROUGE-L(记为 word_a_f)和字符级 ROUGE-L(记为 char_a_f)。

方案实验

实验设置

训练代码使用 modelscope 的 swift,超参数设置如下:

实验结果

表 3 列出了本次比赛的最终结果。 如图所示,我们的解决方案集成了 8 个不同模型的结果,与第二名相比,单词级别 ROUGE-L、字符级别 ROUGE-L 和关键词召回(KR)的绝对性能分别提高了 1.6%、0.9% 和 2.3%。 此外,值得注意的是,我们的单模型也可以相较于其他参赛队伍产生更好的性能,这表明我们的方法足够有效。

在这里插入图片描述

消融实验

关于文档过滤的消融实验,表 4 展示了我们的单模型在使用和不使用噪声文档过滤的情况下推断的实验结果。 我们发现它略微提高了最终分数,因为提供的参赛是由组织者从搜索引擎直接获取的,信息密度较高,此外,大模型也可以在一定程度上区分潜在的干扰因素。

混合训练策略的消融实验,我们在表 5 中验证了所提出的混合训练策略的效果。如图所示,将评估集伪标签加入可以很大程度上提高生成质量,特别是对于关键字召回分数。 但进一步加入测试集的伪标签几乎没有什么效果,这验证了我们的选择。

模型融合的消融实验,我们首先比较了不同的集成方法(即使用不同的段落相似性度量指标),如图 2 (a) 所示。 尽管上述方法在 ROUGE 分数上都具有竞争力,但 emb_a_s (即以嵌入级表示的余弦相似度作为指标)在关键字召回方面带来了更多提升,因此被选为我们最终的集成方法。 然后,对集成候选数量进行参数分析,从图 2 (b) 中可以看出,更多的候选答案通常会带来更好的性能。 由于时间和预算有限,我们最终将数量定为8。