本篇延续我们上篇文章《大模型对话系统的内功与外功》(链接见文末),以一个回顾和展望的视角出发,试图回答大模型对话系统的过去,现在和未来等一系列相关问题。
我们知道对话系统是自然语言处理领域经久不衰的热门研究方向之一。在大模型,特别是ChatGPT和GPT4等,横空出世之后,几乎所有的自然语言处理任务都可以通过对话这一外在表现形式进行处理,在这个的一个时间点上,我们认为有必要对对话系统的演变和进化进行一个整体性的回顾,对话系统是如何从最早期的简单的基于规则的,领域单一,任务单一,语言单一的形式进化到现在这种基于大模型的,可以处理几乎所有领域,所有任务,语言丰富的系统?
论文链接:
https://arxiv.org/pdf/2311.16789.pdf
代码链接:
https://github.com/ruleGreen/Survey-Evolution-DS
对话系统的进化,离不开底层语言模型的进化,每一次语言模型的更新,都代表一次计算架构和学习范式的迭代,给对话系统的发展与演变带来了深刻的影响。从 NLM(e.g., LSTM, GRU)到 PLM(e.g., BERT, GPT),再到如今几乎统治一切自然语言处理任务的LLM,每一次语言模型的进化都对对话系统的研究方向和研究重心产生了一定的影响。我们按照这几次重大的语言模型的突破(Seq2seq, PLM and LLM)将整个对话系统的演变分为四个不同的阶段:
- 早期阶段(Early Stage — 2015年之前): 早期的对话系统几乎全是任务型对话(Task-oriented Dialogue System),以完成某一个具体的任务比如订机票,订餐厅等为最终目标,一开始的任务型对话系统单一任务,单一领域,单一语言等,所涉及到技术主要是基于统计的机器学习,或者规则类的对话系统,以Eliza,GUS, ALICE为代表。
- 独立发展阶段(2015-2019, NLM): 一方面,2015年Seq2seq的出现,让开放域对话系统 (Open-domain Dialogue System)进入到了大家的视野,开放域对话不以完成某一个具体的任务为目标,主打一个随心所欲,想聊啥聊啥,天然的适配seq2seq这样的一套框架,很多研究人员开始使用seq2seq去解决开放域对话的问题;另一方面,随着LSTM, GRU等RNN的提出,任务型对话也开始使用相应的NLM去建模上下文从而在不同的子任务上取得更好的效果。
- 融合阶段(2019-2022, PLM): BERT, GPT 等Pre-trained Language Model (PLM)的出现带来了新一轮的范式 — pre-train-then-finetune。受益于大规模的预训练,PLM的参数自带很多有用的信息比如世界知识,常识知识等,这些知识作为底层能力,可以被应用在大量的任务和领域上,从来给对话系统带来了任务,领域,语言等多个不同层面的融合。需要注意的是融合趋势仍在继续,并未停止,也许永远不会停止。
- 基于大模型的对话系统(2022-Now, LLM): 大模型的出现就是融合,进化的产物。随着数据越来越多,模型就变得越来越大,能力就越来越好,这就是我们熟悉的scaling law。当我们把大模型对话系统在现实场景下进行应用的时候,新的问题和挑战也随之出现。参考《大模型对话系统的内功与外功》。
1st Stage:Early Stage
对话系统最早可以追溯到传统的基于规则和模板的对话系统,比如Eliza就是MIT 于 1966 年提出的,早于 20 世纪 90 年代 SLM 的兴起,它允许人与机器之间进行简单的对话。随后,一系列对话系统被构建出来,包括帮助客户简单返回加利福尼亚州单个城市的旅行社 —- GUS,和配置有角色的基于规则的聊天机器人,采用启发式模式匹配规则 解决有关年龄、爱好、兴趣等的询问 —- ALICE。
除了学术上的努力,越来越多的公司关注对话系统领域并开发了自己的产品。例如,IBM 开发了WATSON,Apple 开发了Siri,微软开发了 XiaoIce。这些早期的虚拟助手功能有限,遵循严格的流程,主要帮助用户完成单一且简单的任务,例如安排约会、设置提醒以及提供简单问题的基本答案。在这个阶段,大多数对话系统都是面向任务的,采用基于模块化的方法或基于SLM的机器学习方法。
2nd Stage:Independent Development
缺乏语言的灵活性和上下文理解能力。随着Sequence-to-sequence框架的提出以及NLM的发展,尤其是RNN的出现,比如LSTM和GRU,使得上下文建模能力得到极大的提高,带来了两个重要的改变:
- 开放域对话开始受到关注,早期的开放域对话几乎都是对话上下文直接映射到对话回复,完美匹配seq2seq的框架;
- 基本上所有的任务都使用RNN再回炉重造了一遍,这个过程我们还会再经历一次 :)
如上图所示,CNN, LSRM, GRU 在这个阶段是绝对的主流语言模型,大家尝试不同的模型结构,不同的训练目标,去解决相较于上一个阶段更加复杂的任务和场景,比如多领域,交叉领域,低资源等等。但是NLM有一个显著的缺点,他的参数本身不带有任何的额外信息,从而在这个阶段,各个任务,领域之间的壁垒还是比较明显的,往往需要高度精细化的模型架构设计,才能取得比较不错的效果。
3rd Stage:Fusion betw
2018、2019年左右相继出现的GPT和BERT,作为预训练语言模型(Pre-trained Language Model;PLM)的开山之作,引领着一个新的范式的出现,那就是先在大规模的预料上进行预训练,然后再在垂直领域或者任务上进行少量微调(pre-train and then finetune)。受益于预训练,PLM的参数本身就含有大量的知识,从而使得仅仅只需要少量简单的微调就能够在不同的下游任务上取得不错的效果。由于这种共识越来越多的被社区认可,带来了不同粒度的融合:任务,数据,甚至模型。尤其在对话系统这个子任务多,数据多,模型多的复杂任务上,这种融合趋势就更为明显。
首先让我们从对话系统中暂时抽离出来,思考一下我们一般如何着手解决一个具体的问题。如下图所示,一般来说,我们需要先从模态出发,先确定是一个什么模态的任务,CV 还是 NLP?然后如果是NLP,第一个要确定的就是语言问题,做哪一种语言,然后是领域,任务,数据,到最后选择用什么样的模型等等,以上大概是一个NLP问题所涉及到的所有层次。
在这个过程中,我们说PLM的出现带来的本质改变是啥?其实是不同层次之间的壁垒被消融了,领域,任务,数据,模型等等,这些之前不同问题的天堑鸿沟现在变得触手可达了,PLM基本无视了领域,任务,数据,模型之间的差异,这点我们从BERT, GPT几乎被用来解决所有问题就能观察到。另外这时候语言的鸿沟还是存在的,所以出现很多中文化的BERT, GPT等一系列工作。那么接下来我们先介绍在对话系统里面任务,数据,模型之间的隔阂是如何消失的,或者正在消失的。
3.1 任务型对话系统内部的融合 (任务)
首先我们观察到原来的任务型对话之间的任务(NLU, DST, DPL, NLG)开始进行融合,从而以一个端到端的视角(End-to-end)去解决任务型对话的问题,其实早在NLM的时候就已经有早期的E2E TOD的出现,但是中间间隔了几年,这个领域都没有得到一个更好的发展,一直到PLM的出现,涌现了一批以SimpleTOD,SOLOIST为代表的E2E TOD。
如上表所示,从传统的任务型对话的四个子任务分析,除了NLG之外,其他的三个子任务都不是必不可少的,一方面这和每个模型使用的数据不同有关;另一方面NLG也的确是重中之重,我们看到后面大家其实也更加关注以NLG这个形式去统一所有的其他任务。根据各个任务在不同方法中出现的频率,顺序关系为NLG > DST > DPL > NLU。除了 NLG 之外,追踪对话期间状态的 DST 变得更加重要,因为面向任务的对话包括许多具有特定目标的交互。此外,除了传统TOD中的四个关键子任务之外,我们可以发现越来越多的附加任务与上述关键子任务同时进行优化,包括但不限于 MLM, Span Prediction,Belief Consistency等等,这些不同的任务设计往往都是由于为了利用大量的无标注数据。
面向任务的端到端对话系统的发展以数据的扩充、不同任务的统一、面向现实场景的建模为标志。随着数据规模和模型规模的扩大,语言模型的理解和生成能力不断提高,未来有望出现更通用、更有效的面向任务的对话系统,能够理解和响应不同领域,不同任务,不同语言的用户需求。
更多关于E2E TOD可以参考近期发布的Survey:End-to-end Task-oriented Dialogue: A Survey of Tasks, Methods, and Future Directions。
3.2 任务型对话与开放域对话的融合 (数据)
随着大家开始使用End-to-end的方式去融合任务型对话,天然的一个想法就是E2E TOD能不能和开放域对话进行融合,因为这两者现在基本都是基于sequence-to-sequence的底层框架。这里其实两个有殊途同归的路径:
- 任务型对话往开放域对话融合:举个例子,Q-TOD,其实是一种把TOD往ODD靠的想法,直接将传统的TOD建模成用一个对话上下文改写后的query去相应的database进行抽取相关知识,从而进行回复的任务;
- 开放域对话往任务型对话融合:这里面也有一些很有意思的工作,比如UniDS和Q-TOD恰恰相反,是将ODD按照TOD的不同子任务需求,标注对应的对话状态,从而建立起一个统一的schema,来进行学习。
在预训练或者微调阶段加入了不同任务的数据,从而能够以一个统一的视角解决多个不同的任务。从上面的Table3中我们可以观察到,已经有很多其他任务的数据,不仅仅是开放域对话,还有问答,对话推荐,甚至对话摘要等等,都开始被加入到整体的训练当中。在这个阶段,大家基本都采用End-to-end的方式,将各种不同数据进行各种各样的融合,从而产生非常多的底层能力,举几个例子:
- 技能。来自HKUST的Madotto 等人提出了 Adapter-Bot,使用 DialGPT 进行训练然后通过不同的适配器,按需触发不同的对话技能,例如共情回复、天气信息、电影推荐等等,而Smith等人尝试将多种技能融合到一个对话会话中,其中知识、情感和个性化技能在同一个多轮对话中一起展示。
- 任务。DuClarifyDial的任务除了任务型对话,还包含闲聊(chit-chat)、以知识为基础的闲聊(knowledge-grounded chit-chat),而 GODEL通过利用开放领域目标导向语料库的扎根预训练新阶段,专门针对以知识为基础的目标导向对话。最新的工作是DialogStudio,它进一步包含了来自自然语言理解、对话推荐和对话摘要的数据。
- 知识源。之前的大部分工作要么依赖于本地的数据库(TOD ),要么依赖于网络上的资讯( ODD ),最近的工作也越来越多的建模各种不同的知识来源,同时包括数据库、互联网和预训练语言模型本身蕴含的大量知识。更多分析可以在文中的5.2节中找到。
3.3 对话模型和大模型的融合(模型)
传统的pre-train then finetune带来了下游任务的极大提升,当我们不断的往预训练阶段塞各种不同任务的数据的时候,语言模型的大小越来越大的时候,进一步finetune带来的增益其实对于某些任务而言是被削弱的,比如说我们看到很多的大模型,没有经过下游任务的微调其实也能表现出来不错的效果。因此,对话模型和语言模型之间的界限似乎在慢慢的消失,当然也不仅仅是对话模型,还有推荐模型,翻译模型,等等。
我们这里将近期发布的大模型以一个时间顺序进行排列,基本上大部分的大模型在发布之初就会同时放出相应的Chat版本,而这些关注Chat的对话模型,其实最重要的可能不是有没有在对话任务上进行进一步微调过,而是有没有经历过instruction tuning和更重要的与人类价值观对齐的训练,比如RLHF或者RLAIF。从Table 4上,我们也可以发现这里有一些模型层面的共识,比如训练的数据大小在越来越大,发布时间越来越快,上下文窗口越大越大,发布的模型大小基本都是6B-13B之间等等。
4th Stage:LLM-based Dialogue System
在数据,任务甚至模型层面都进行了不同程度的融合之后,下一步基于大模型的对话系统又该怎么发展呢?其实还是融合,因为现在的融合趋势还处在比较早期的阶段,粒度,层次都有着进一步加深的趋势。LLM带来了几个显著的优势就是:
- 提示工程(Prompt Engineering):通过不同的提示,大模型也已经可以在一些任务上取得不俗的表现,大量的工作关注于怎么通过提示去从当前的对话获取更多的信息;
- 大模型的泛化能力极强,几乎能够解决所有任务。这就为我们去构建LLM-Based Dialogue System提供了一种新的视角,如Figure 4所示。
有三种不同的对话流(conversational flow):1)基于内部推理和对话上下文进行回复;2)基于外部知识和对话上下文进行回复;3)基于内部推理,外部知识以及对话上下文进行回复。
- 内部推理 Internal Reasoning (Prompts): 通过prompting的方式去让大模型推理出来对话上下文中蕴含的各种信息,包括但不限于:对话状态(dialogue state tracking),用户状态(用户情绪,心理,性格特征等),和各种语义信息(natural language understanding)等等。下面的表格中统计了现在通过prompting的方式去解决对话系统里面各个不同任务的最新进展,比如说利用LLM去做TOD的IT-LLM和SGP-TOD等等,还有相应的情感对话,心理对话。
- 外部交互 External Acting (Interactions): 对话系统不仅要考虑到在对话上下文中用户的意图和需求,还需要和外部的环境进行交互,比如多个不同的知识源,不同模态的信息甚至不同的工具等等,来提供及时,准确,可信的回复。
- 内部推理加外部交互 (Reasoning + Acting): 这时候的对话系统其实更加的拟人化了,或者说更加的类似于language agent的概念,不仅要及时的推理对话上下文中蕴含的信息,还要和外部环境进行一系列的交互,从而获取更多的信息,最终生成更加完美的回复。我们在综述中都列举了相关的工作,欢迎大家阅读,补充。
Future Work
按照过去的演变规律,我们认为融合仍然是一个不变的趋势,不同粒度的融合仍会加强,甚至可能跨越任务,数据和模型,上升到自然语言处理最顶层的语言这一层次(多语言),突破单一模态的限制(多模态),这些融合也正在发生。
大语言模型其实已经在解决语言这个层面的问题了,从chatgpt的中英文能力都很强就能管中窥豹,而且最近流行的大视觉模型似乎也在朝着多模态发生冲锋的号角,但是我们仍然有着大量的机会,不同的融合粒度,不同的排列组合,往往就是现实生活中一个非常棘手的问题。
此外,对话系统的安全和底层基座大模型的幻想问题也仍然是需要解决的长期目标。随着技术的不断进步,我们可以期待对话系统能够成为未来AGI的发展中扮演更加重要的角色。
对话系统的研究浩如烟海,如有不当错漏之处,可通过github repo提issue推荐相关工作,本篇综述将持续更新相关论文,欢迎star!
注:
github repo:
https://github.com/ruleGreen/Survey-Evolution-DS
《大模型对话系统的内功与外功》链接:
https://candle-walker-56d.notion.site/fc279c95733742008aa662bfa8788ee6
Illustration From IconScout By Delesign Graphics
-The End-