大模型多跳推理有解啦,北大化繁为简,用30B模型击败百亿模型

我们日常生活中的许多问题都是复杂的多跳问题。比如"《坚如磐石》中饰演黎志田的演员在《三体》中饰演什么角色?"

要回答这个问题,我们得先知道《坚如磐石》中饰演黎志田的演员是谁,还得熟知《三体》的演员表,并将两者的答案对应起来。

这对LLM来说是一个非常大的挑战,要求其能够熟练地将复杂的问题分解成多个子问题,每个子问题的答案还不能出错,最后才能正确回答这个复杂的问题。

再加上LLM容易产生幻觉并且无法获得最新知识,即使是简单的子问题也很有可能犯错,一步错步步错,离正确答案越来越远。

最近,北大团队提出了一种约束问题分解策略,将复杂问题分解转化为"分解-查询"深度优先搜索框架,能够引导大型语言模型在问答任务中有效地利用外部知识,并设置一个可靠的问答库限制幻觉风险。实验表明,D&Q用200个训练示例,以30B的小模型击败了570B规模的大模型,并且在67%的示例上与ChatGPT平分秋色。

论文标题 :

A Step Closer to Comprehensive Answers: Constrained Multi-Stage Question Decomposition with Large Language Models

论文链接 :

https://arxiv.org/pdf/2311.07491.pdf

github链接 :

https://github.com/alkaidpku/DQ-ToolQA

方法

简单来说,作者标注了问题解决的轨迹来微调大模型,所谓问题解决的轨迹就是现将复杂问题分解为简单问题,搜索简单问题的答案。如果LLM在搜索过程中意识到它所追求的路径不正确,它可以回溯到前面的步骤并启动新的搜索。

另外,为减轻模型的幻觉,作者定制了一个高质量的可靠问答库,模型在生成答案前需要查询可靠问答库,当模型的知识与该库发生冲突时,以可靠问答库中的内容为准。

让我们来看看具体是怎么做的吧~

1. 构建可靠的问答库

所谓可靠的问答库,全是优质的问答对,也就是说所有的答案都是无可置疑的。构建流程为:

1.选择问题:从对话数据集中根据问题频率选择前5万个问题作为可靠问答库的基准问题

2.生成答案:由于大型语言模型的预训练数据包含噪声,相同问题的输出结果可能会有所不同。客观事实性的问题通过多次生成投票的方法确定答案;主观意见类问题则比较麻烦,作者设计了一个答案汇总模型来整合不同的观点,具体来说,手动标注5000个答案汇总示例并在LLaMA2-13b上微调。如下图所示,将表达相同意思的观点合并在一起,并总结出简洁清晰涵盖重点的最终观点。

▲答案汇总示例

最终形成的可靠问答库的示例如下所示:

复制代码
    {
        "q": "王者荣耀什么时候出来的",
        "a": "王者荣耀于2015年11月26日正式上线"
    },
    {
        "q": "栓q是什么意思",
        "a": "栓Q是英文短语"thank you"的读音空耳衍生,表示无语对某件事特别讨厌的情绪,该梗出自微博搞笑博主@怨男0的口头禅。"
    },
    {
        "q": "黑咖啡能减肥吗",
        "a": "黑咖啡可以帮助提高新陈代谢,抑制食欲,间接起到减肥作用,但不能完全依赖黑咖啡减肥,需要配合健康饮食和运动。"
    },

2.问题解答轨迹标注

为了训练模型调用外部工具以及学习何时停止调用,需要收集足够的数据对模型进行监督微调。由于ChatGPT和GPT4在数据注释方面表现出色,且GPT-4更强,作者借助这两项工具标注数据。

其标注思路借鉴人类思路,将复杂问题分解为简单问题通过检索答案逐个击破,当检索不到答案时意味着该子问题与原问题不符,返回上一步重新选择子问题检索答案。

4. 自适应约束问题分解

训练阶段

训练数据注释完毕后,本文使用LLaMA2-13b作为基础模型,采用模仿学习的方法,以多轮对话的格式进行,在每一轮训练中,仅保留本轮对话的输出,其余部分被屏蔽。

在训练阶段,所有多回合检索样本都以"Finish"结束,包括"成功"和"失败"两种情况。训练阶段使模型能够学习到基于当前信息判断任务是否终止的能力。下面是一些训练数据示例:

大模型研究测试传送门

GPT-4传送门(免墙,可直接测试,遇浏览器警告点高级/继续访问即可):
http://hujiaoai.cn

检索失败:

复制代码
user:
## 你能够利用多种函数来完成给定的任务。我会给定一个你目前无法直接回答的目标问题,请将给出的目标问题转化为等价的基本问题,并结合基本问题的答案,给出对目标问题可靠的回复。
## 目标问题: 《坚如磐石》中饰演黎志田的演员在《三体》中饰演什么角色?

assistant:
##Analysis: 这是一个复杂问题。调用问题检索器查询子问题。
##Function: QuestionRetriever
##Param: 《坚如磐石》中饰演黎志田的演员是谁?

user:
##Function_Return: ["电影《坚如磐石》的简介","《坚如磐石》影评","《坚如磐石>>上映信息"]

......

assistant:
##Analysis: 查询到多个相关词条,调用答案检索器。
##Function: PageRetriever
##Param: 《三体》美剧

user:
##Function_Return: 《三体》是一部由网飞、三体宇宙及游族集团共同开发制作的英文系列剧集。......

assistant:
##Analysis: 没有检索到相关信息,回溯到上一步骤。
##Function: Finish
##Param: Failed

检索成功:

复制代码
user:
## 你能够利用多种函数来完成给定的任务。我会给定一个你目前无法直接回答的目标问题,请将给出的目标问题转化为等价的基本问题,并结合基本问题的答案,给出对目标问题可靠的回复。
## 目标问题: 《坚如磐石》中饰演黎志田的演员在《三体》中饰演什么角色?

assistant:
##Analysis: 这是一个复杂问题。调用问题检索器查询子问题。
##Function: QuestionRetriever
##Param: 《坚如磐石》中饰演黎志田的演员是谁?

user:
##Function_Return: ["电影《坚如磐石》的简介","《坚如磐石》影评","《坚如磐石>>上映信息"]

......

assistant:
##Analysis: 查询到多个相关词条,调用答案检索器。
##Function: AnswerRetriever
##Param: 《三体》美剧

user:
##Function_Return: 调用AnswerRetriever查询《三体》美剧没有有效信息。

assistant:
##Analysis: 调用答案检索器检索其他词条。
##Function: AnswerRetriever
##Param: 《三体》剧情简介

......

assistant:
##Analysis: 于和伟饰演的角色是史强。结束任务。
##Function: Finish
##Param: Success
推理阶段

从上面的示例中可以看到"####Function"字段,该字段用于选择工具调用,本文设置了三种工具:

  • questionretriver\]:给定一个查询问题,从可信问题数据库中返回与该问题相关的前k个问题。

  • Finish\]:返回值包括成功或失败。如果成功,终止程序;如果失败,则回溯上一步检索另一个候选问题的答案。

实验

为了评估大型语言模型处理复杂和多样化问题的能力,作者除了在学术通用数据集HotPotQA进行实验,还制作了一个更贴近真实场景的数据集ChitChatQA。

1. ChitChatQA数据集

本文制作了一个新的数据集ChitChatQA,用于评估大型语言模型处理复杂和多样化问题的能力。具体来说,从KwaiTalk应用程序的真实场景中收集了单轮对话数据,并利用语法纠错模型过滤得分低的问题,利用意图识别模型筛选了具有模糊意图的问题。该数据集是由真实用户和快手对话模型的真实对话互动组成。

复制代码
# 数据示例
   {
        "q": "17岁上高几",
        "a": "在中国,17岁的学生通常在上高二。"
    },
    {
        "q": "2023年丧尸会爆发吗",
        "a": "作为AI,我不能预测未来。但是,丧尸这种生物设定主要存在于电影、电视剧和小说中,现实生活中并没有确凿证据证明丧尸的存在。虽然有一些病毒和寄生虫可能导致类似的症状,但它们并不具备传染性和意识,因此与丧尸不同。"
    },

作者在该数据集上利用200个训练数据在LLaMA2-13b上进行了多回合对话格式的监督微调。测试集包含100个实例,基线包括快手对话模型KwaiDialog与ChatGPT,分别收集了两个模型的回答与适用本文所提方法D&Q进行对比,评估手段采用人工评估,标记为赢/平/输。从下表结果可以看出,本文提出的方法D&Q的正确响应能力得到了显著提高。

2.HotPotQA

在训练阶段同样使用了200个训练实例,并在LLaMA2-13b上进行了多回合对话格式的监督微调。预测阶段通过调用MediaWiki* API实现三个工具的使用:[artieretriever]用于查询维基百科中的条目,[PageRetriever]用于检索条目对应的页面,[Finish]表示任务终止。结果如下表所示:

  • 回溯增强了模型的检索能力。虽然ReAct方法同样支持迭代地利用搜索和查找工具为LLM提供外部信息,但这种方法是贪婪的。ReAct不会显式地回溯,而是倾向于随机漫步。而D&P允许在检索失败时退回到之前的状态,显著增强了检索能力。

  • 工具调用提升小模型能力。与IRCoT的GPT3 (175B)相比,本文采用LLaMA-13B。这表明较小的模型,通过监督微调来学习工具调用,可以获得与较大模型相当的性能。

3.检索能力

除此之外,作者还测试了D&Q的检索召回率,将检索器返回的最大相关条目数设置为10,每个条目生成5个响应,因此,模型在生成响应时最多可以返回50个条目。通过检索检索50个条目来计算召回率,与基线相比结果从52.3%提高到68.8%。这表明该方法有助于实现更准确的工具调用。

总结

本文提出了"分解和查询"框架(D&Q),通过指导LLM在受限和可靠的上下文中利用外部知识来解决幻觉问题。以D&Q框架微调后的较小模型在多跳问题中展示出竞争力,显著提高了LLM在问答任务中的鲁棒性。

相关推荐
Mintopia30 分钟前
OpenClaw 对软件行业产生的影响
人工智能
陈广亮1 小时前
构建具有长期记忆的 AI Agent:从设计模式到生产实践
人工智能
会写代码的柯基犬1 小时前
DeepSeek vs Kimi vs Qwen —— AI 生成俄罗斯方块代码效果横评
人工智能·llm
Mintopia2 小时前
OpenClaw 是什么?为什么节后热度如此之高?
人工智能
爱可生开源社区2 小时前
DBA 的未来?八位行业先锋的年度圆桌讨论
人工智能·dba
叁两5 小时前
用opencode打造全自动公众号写作流水线,AI 代笔太香了!
前端·人工智能·agent
前端付豪5 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
strayCat232555 小时前
Clawdbot 源码解读 7: 扩展机制
人工智能·开源
王鑫星5 小时前
SWE-bench 首次突破 80%:Claude Opus 4.5 发布,Anthropic 的野心不止于写代码
人工智能