EMNLP 2023 | 大模型对话系统的内功和外功

2023-11-20 13:41 251 阅读 ID:1632
将门
将门

内功和外功,作为诸多武侠小说的两大流派,有着诸多区别。内功主要是内力,外功主要是拳脚功夫,如熟知的降龙十八掌就是外家的顶峰功夫,任何武功若想发挥最大的威力都离不开内功的精深。内功是道,外功是术,道术结合,东方不败。作为一个业余的武侠小说爱好者和刚入门的科研爱好者,这次从内功和外功的两个角度出发,介绍我们我们组在EMNLP 2023中的两个工作,如有不当之处,敬请原谅。

论文标题: 

Cue-CoT: Chain-of-thought Prompting for Responding to In-depth Dialogue Questions with LLMs 

论文链接:

https://arxiv.org/abs/2305.11792 

代码链接: 

https://github.com/ruleGreen/Cue-CoT

论文标题: 

Large Language Models as Source Planner for Personalized Knowledge-grounded Dialogues 

论文链接:

https://arxiv.org/pdf/2310.08840.pdf 

代码链接:

https://github.com/ruleGreen/SAFARI

一、何为内功?

何为内功?按我的理解,要有功法,要运转多少个小周天,大周天,要有真气,真气运转之后要不变的更多,要不变的质量更好。何为功法?唯有LLM是也。何为小周天,大周天?唯有不同的prompt engieering或者说不同path的chain-of-thoughts。何为真气?即为对话历史,也就是当前的输入。对话历史里面蕴藏着很多语义学线索,Mairesse 就研究过从对话历史中识别出来人物性格特点等,比如性子急的讲话就比较急躁,除此之外,其他工作也探索了类似情绪,心理状态等等不同方面的语义学线索,这些语义学线索在生成个性化回复的时候尤为重要。

正如我们人类在进行对话的时候,不可避免的会考虑对方的性格习惯,当下的情绪和心理状态等,LLM在进行对话的时候也需要考虑到这些因素,从而生成更有帮助,更容易被用户接受的回复。而相较于传统的standard prompting而言,LLM直接依赖对话历史进行回复,没有显示的建模刚刚提到的隐藏在对话历史中丰富的用户信息,我们提出一种新的CoT方法,Cue-CoT,把用户回复生成建模成多阶段的推理过程:

O-Cue: One-step inference, 类似于传统的CoT,一步直接生成中间推理过程和最终回复。首先我们要求LLM推理出来当前对话历史里面蕴含的不同维度的用户信息(使用不同的prompts),然后我们让LLM接着生成最终的回复。(相对复杂的指令 和 内容臃肿的输出)

M-Cue: Multi-step inference,我们逐步的生成我们想要LLM输出的内容。和O-Cue一样,这里第一步我们要求LLM推理出来当前对话历史里面蕴含的不同维度的用户信息,然后给定对话上下文和第一步生成的中间结果,我们第二步让LLM接着生成最终的回复。(相对简单的指令 和 内容清晰的输出)

这两种prompting的处理方式不同,带来了 Zero-shot setting和 One-shot setting(受限于LLM input limit 和 对话长度)的差别。


Zero-shot Setting: 在O-Cue中,由于单步指令较复杂(不要要进行推理还要进行回复生成,以及生成的格式要求),单步生成内容过多,导致LLM无法很好的理解指令;生成内容较短,无论是中间推理结果还是最后回复的长度相对于M-Cue都短一点,另外还有一个严重的问题是生成内容无法很好的切分,因为一部分LLM无法按照要求的格式进行输出。

One-shot Setting: 在进行demostration selection的过程中,也有着很大的区别。O-Cue只能依赖单一的input即当前的对话上下文来作为query去demostration pool里面进行选择,而M-Cue在每一步都可以根据不同的input去作为query进行选择。总的来说,M-Cue这种处理方式可以增强整个系统的解释性和控制性,我们对于中间结果可以进行编辑,比如增加对于当前用户的其他渠道的数据,或者过滤掉不好或者不正确的推理结果,其次这种中间结果可以作为demostration selection的一个标准,从而帮助我们更好的选择demostration。

我们在5个中英文LLM,6个数据集(中文:Zhihu,D4,PsyQA;英文:Quora,ED,EMH)上将我们提出的O-Cue和M-Cue与传统的standard prompting进行了对比,这里具体的分析可以参考原文,总体来说我们发现:

  1. 整体来说:大部分情况下Cue-Cot都能够取得比standard prompting更好的效果(win rates超过50%),其中受益于相对简单的指令和多步推理的输出,M-Cue比O-Cue能够实现更高的win rate。此外我们发现中文大模型上acceptability的win rates比helpfulness低,而英文大模型上刚好相反,我们猜测可能是由于中文大模型在根据当前用户的情感,性格等因素生成更容易被用户接受的回复的能力略弱,而仅仅考虑了helpfulness这个维度。
  2. 中文大模型:我们发现ChatGLM在O-Cue的情况下是三个模型当中最差的,然后我们检查了对应的输出,我们发现ChatGLM基本上忽视了给定的指令而直接进行对话;或者没有按照指令要求输出对应的格式,这可能归结为其不同的训练方式。但是在M-Cue的情况下所有的大模型都能很好的跟随指令,这种情况下由于D4的对话上下文是最长的,导致其效果是三个数据集中最差的。
  3. 英文大模型:在O-Cue的情况下Alpaca也出现了类似ChatGLM的问题,即不能很好的跟随指令,此外英文大模型在较长的对话输入等场景下也表现不佳。整体来说ChatGPT和Vicuna的指令跟随能力更强,相较于Alpaca而言都倾向于生成较长的回复。

以上均是方法层面的直接对比,我们额外进行了模型层面的对比。将ChatGPT作为锚点,我们评估了现有模型的相对表现。

我们将中文和英文分别作为两个坐标轴,以ChatGPT为中间点将第一象限分为四个不同的区域,区域一代表中英文均比ChatGPT差;区域二代表英文比ChatGPT好,但是中文较差;区域三代表中文比ChatGPT好,但是英文较差;区域四代表中英文均比ChatGPT好。我们发现目前在区域四还是没有出现任何一个模型,我们设想了三种不同的路径来帮助我们得到区域四的模型。

  • 路径一:直接不断外推现有的ChatGPT的能力,如图中橙色所示,OpenAI可能是这条路线。
  • 路径二:由当前中文模型进一步的在英文语料上进行训练,如ChatGLM或者其他中文模型。
  • 路径三:由当前英文模型进一步的在中文语料上进行训练,如LLaMA系列的中文版本,Vicuna和Alpaca的中文版本。

我们看到其实目前来说路径三里面的模型是最多的,路径一可能是最难的,路径二一方面是现有的中文模型的基座能力还没有达到上限;另一方面其英文能力可能也不是主流大模型玩家在乎的;还有一种可能是英文能力即使拉上去,可能也干不过SOTA :)很多只需要当前的对话历史作为输入,从而得到最终的答案的对话任务,如回复多样性,回复选择,对话信息抽取,对话摘要等等,都属于内功。内功练得好,外功就用的越溜,因为在这个过程中,真气没有流失,要不压缩之后进一步提纯,质量变得更好了,比如从非结构化数据变成结构化数据;要不信息量得到增强,如情感分析等。这两种不同的处理导致的结果都是变的更加适配下游任务了。

二、何为外功?

那何为外功?外功由内力驱使,借助外力,如刀枪剑戟,即为不同的工具。功法,运转路径,真气,也是缺一不可。唯一不同的是这时候需要使用不同的刀法,剑法,即为不同工具的使用方法。那何时,何地使用工具,使用哪一个工具呢?这就是我们另外一个工作SAFARI所要探索的问题。

开放域对话系统往往需要很多的外部知识,比如用户的persona,和wikipedia上的document,以及其他的一些我们设计出来的一些帮助我们生成更好回复的数据库等等。这些不同的外部知识,比如persona和document,其实就是不同的conceptual tool。

很多时候,不是每一轮对话都需要这些外部知识,也不是一下子就需要使用所有的外部知识,更复杂的是有时候这些知识库之间存在依赖,比如我们倾向于见人说人话,见鬼说鬼话,这就是根据不同人的persona使用了不同的document的结果,所以这里的document就是依赖于对话者的persona的。而之前的开放域对话系统大部分都是针对单一知识来源,要不是persona要不是document要不是其他的,也有一部分工作是考虑了多个外部知识的复合作用,但是不加区分的对于对话中的每一轮都使用所有知识,这无疑会带来额外的消耗和不必要的浪费。

在本篇工作中,我们首先构造了一个数据集,建模了persona和document之间的依赖关系,其中persona的维度包括了年龄,性别,民族,爱好等12个维度,基本涵盖了当下个性化对话的大部分需求,然后我们按照不同的persona description提供了对应的document,包括5个不同的knowledge sentences。举个例子,persona description包括有:我今年16岁,那对应的document里面包括的知识可能是 16岁是未成年人,16岁无法喝酒 等等。

一条简单的persona描述背后可能隐藏着非常多的常识知识和世界知识,退一步说,即使persona和document之间没有直接的联系,我们在做document selection的时候其实还是受到persona或者memory等因素隐性的影响,参考《There Are a Thousand Hamlets in a Thousand People’s Eyes: Enhancing Knowledge-grounded Dialogue with Personal Memory》。总的来说,我们首先构建了将近3k多条多轮对话,在一个多轮对话包括三个不同的场景:1)不使用任何外部知识;2)仅使用persona knowledge source;3)既使用persona又使用documents(这里persona和document存在依赖关系)。

为了同时建模这三种场景,我们提出一个框架SAFARI,将外部知识选择和回复生成进行解耦。具体来说我们将整个对话回复生成解耦成三个任务。

  1. Planning:规划是否需要使用知识,何时使用知识,以及多种知识库之间的调用顺序;
  2. Retrieval:使用外部的retriever对上一步规划使用的知识库按顺序抽取对应的Top-n的辅助文档;
  3. Assembling:将对话上下文和中间抽取到的辅助文档拼接在一起进行最终的回复生成。

我们同时研究了在supervised和unsupervised两种设定下SAFARI的实现方式,并且评估了三种不同LLM的表现(BELLE,ChatGLM 和 ChatGPT)。

Supervised SAFARI: 我们将整个过程建模成一个序列生成任务,整体思想类似于ReWOO+ToolkenGPT的结合体,但是限于匿名期,我们没有及时的披露。具体来说,我们将不同的source(不使用任何source视为NULL)作为special tokens加入到大模型的词表里面,然后要求大模型输出一个source序列,代表不同source一个调用顺序,如下图所示,然后我们将对应source的ground-truth辅助文档和对话上下文,输出的source作为输入,要求大模型输出最终的模型,以这种形式,我们只需要将loss加在source训练和最终的回复上即可进行端到端的训练。推理的时候需要进行两步推理,和以上介绍的类似,不再赘述。

Unsupervised SAFARI: 给定一些demostrations,我们直接使用prompt来要求大模型输出我们需要的内容,比如第一步要求大模型直接输出source序列,第二步根据对话上下文和中间辅助文档生成对应的回复。prompt如图所示:

我们详细对比了不同的大模型在两种设定下的表现,首先我们看planning的表现,如下图所示,整体而言经过训练的大模型能够取得比unsupervised更好的效果(LoRA微调),但是在NULL和Persona的效果仍然不是很理想,这可能和我们的数据分布比较相关;在unsupervised的设定下,我们发现zero-shot情况下BELLE和ChatGLM通常表现出过度自信(大部分都选择不使用任何知识),而ChatGPT就好很多,但是也仍然无法理解多个source之间存在dependency的情况,很多cases下仅仅选择使用Documents,In-context learning无法带来明显的增益,这一方面是由于我们使用的是随机选择的3个案例作为demostrations,另一方面in-context learning在解决大模型的uncertainy上似乎也不是一个有效方案。


然后我们看Assmbling的表现,由于这里的Assemling非常依赖上面的planning的结果,所以需要结合起来进行分析。经过训练的模型往往能取得更好的效果,尤其是在BLEU1和RougeL上,然后在unsupervised下,Zero-shot ChatGPT的效果都是最好的,而In-context learning的时候BELLE是最好的,这是由于In-context learning的BELLE在进行planning的时候选择了大量的Persona,所以导致会使用更多的辅助文档,相较于In-context ChatGPT而言,从而取得更好的效果。

其他消融分析和实验结果可以参考原文,我们还对比了不同的source策略的效果,比如无脑选择使用所有source,无脑使用Persona等等。我们相信SAFARI框架还有这巨大的潜力等待挖掘,也可以用来处理现实生活中更加复杂的场景,但受限于时间和benchmark的缺乏,我们没有做更进一步的验证,我们也欢迎感兴趣的同学或者老师一起合作交流。

三、写在最后

本文探讨了一种以一种内外的视角去看待大模型时代下的对话系统,我们也关注内外合并,并做了简单的初步探索,欢迎大家关注我们的下一篇文章。总的来说,我们认为 对话上下文中蕴含的丰富的内部信息 + 外部知识调用 将会是未来LLM-based对话系统的重要研究方向,尤其是在与不同的Source,不同的Task上的交互从而带来的不同应用场景和设计。Stay Tuned!!

Illustration From IconScout By Manypixels Gallery

免责声明:作者保留权利,不代表本站立场。如想了解更多和作者有关的信息可以查看页面右侧作者信息卡片。
反馈
to-top--btn