NLP还能做什么?北航、ETH、港科大、中科院等多机构联合发布百页论文,系统阐述后ChatGPT技术链
机器之心 2023-06-05 13:18 发表于北京
机器之心专栏
机器之心编辑部
一切都要从 ChatGPT 的横空出世说起......
曾经一片祥和的 NLP 社区,被这个突如其来的 “怪物” 吓到了!一夜之间,整个 NLP 圈发生了巨大的变化,工业界迅速跟进,资本 “狂飙”,开始了复刻 ChatGPT 之路;学术界突然陷入了一片迷茫的状态......大家慢慢开始相信 “NLP is solved!”
然而,从最近依然活跃的 NLP 学术圈和层出不穷的优秀工作来看,事实并非如此,甚至可以说 “NLP just got real!”
这几个月,北航、Mila、香港科技大学、苏黎世联邦理工学院(ETH)、滑铁卢大学、达特茅斯学院、谢菲尔德大学、中科院等多家机构,经过系统、全面的调研之后,打磨出一篇 110 页的论文,系统阐述了后 ChatGPT 时代的技术链:交互。
与传统的 “人在环路(HITL)”、“写作助手” 等类型的交互不同,本文所讨论的交互,有着更高、更全面的视角:
- 对工业界:如果大模型有事实性、时效性等难以解决的问题,那 ChatGPT+X 能否解决呢?甚至就像 ChatGPT Plugins 那样,让它和工具交互帮我们一步到位订票、订餐、画图!也就是说,我们可以通过一些系统化的技术框架缓解当下大模型的一些局限。
- 对学术界:什么是真正的 AGI?其实早在 2020 年,深度学习三巨头、图灵奖获得者 Yoshua Bengio 就描绘了交互型语言模型的蓝图 [1]:一个可以和环境交互,甚至可以和其他智能体进行社会交互的语言模型,才能有最为全面的语言语义表示。在某种程度上,与环境、与人的交互造就了人类智慧。
因此,让语言模型(LM)与外部实体以及自我进行交互,不仅仅可以帮助弥合大模型的固有缺陷,还可能是通往 AGI 的终极理想的一个重要的里程碑!
什么是交互?
其实 “交互” 的概念并不是作者们臆想的。自从 ChatGPT 问世之后,诞生了很多关于 NLP 界新问题的论文,比如:
- Tool Learning with Foundation Models 阐述了让语言模型使用工具进行推理或者执行现实操作 [2];
- Foundation Models for Decision Making: Problems, Methods, and Opportunities 阐述了如何使用语言模型执行决策任务 (decision making)[3];
- ChatGPT for Robotics: Design Principles and Model Abilities 阐述了如何使用 ChatGPT 赋能机器人 [4];
- Augmented Language Models: a Survey 阐述了如何使用思维链 (Chain of Thought)、工具使用(Tool-use)等增强语言模型,并指出了语言模型使用工具可以给外部世界产生实际的影响(即 act)[5];
- Sparks of Artificial General Intelligence: Early experiments with GPT-4 阐述了如何使用 GPT-4 执行各种类型的任务,其中包括了与人、环境、工具等交互的案例 [6]。
可见,NLP 学界的关注点,逐渐从 “怎么打造模型”,过渡到了 “怎么打造框架”,也就是将更多的实体纳入到语言模型训练、推理的过程当中。最为典型的例子就是大家所熟知的 Reinforcement Learning from Human Feedback (RLHF), 基本原理就是让语言模型从与人的交互(反馈)中进行学习 [7],这一思想成为了 ChatGPT 画龙点睛的一笔。
因此可以说,“交互” 这个特性,是 ChatGPT 之后,NLP 最为主流的技术发展路径之一!作者们的论文首次定义并系统解构了 “交互式 NLP”,并主要基于交互对象的维度,尽可能全面地讨论了各种技术方案的优劣以及应用上的考虑,包括:
- LM 与人类交互,以更好地理解和满足用户需求,个性化回应,与人类价值观对齐 (alignment),并改善整体用户体验;
- LM 与知识库交互,以丰富语言表达的事实知识,增强回应的知识背景相关性,并动态利用外部信息生成更准确的回应;
- LM 与模型和工具交互,以有效分解和解决复杂推理任务,利用特定知识处理特定子任务,并促进智能体社会行为的涌现;
- LM 与环境交互,以学习基于语言的实体表征(language grounding),并有效地处理类似推理、规划和决策等与环境观察相关的具身任务(embodied tasks)。
因此,在交互的框架下,语言模型不再是语言模型本身,而是一个可以 “看”(observe)、可以 “动作”(act)、可以 “获取反馈”(feedback) 的基于语言的智能体。
与某个对象进行交互,作者们称之为 “XXX-in-the-loop”, 表示这个对象参与了语言模型训练或者推理的过程,并且是以一种级联、循环、反馈、或者迭代的形式参与其中的。
与人交互
让语言模型与人交互可以分为三种方式:
- 使用提示进行交流
- 使用反馈进行学习
- 使用配置进行调节
另外,为了保证可规模化的部署,往往采用模型或者程序模拟人类的行为或者偏好,即从人类模拟中学习。
总的来说,与人交互要解决的核心问题是对齐问题 (alignment), 也就是如何让语言模型的响应更加符合用户的需要,更加有帮助、无害且有理有据,能让用户有更好的使用体验等。
“使用提示进行交流” 主要着重于交互的实时性和持续性,也就是强调连续性质的多轮对话。这一点和 Conversational AI [8] 的思想是一脉相承的。也就是,通过多轮对话的方式,让用户连续地问下去,让语言模型的响应在对话中慢慢地对齐于用户偏好。这种方式通常在交互中不需要模型参数的调整。
“使用反馈进行学习” 是当前进行 alignment 的主要方式,也就是让用户给语言模型的响应一个反馈,这种反馈可以是描述偏好的 “好 / 坏” 的标注,也可以是自然语言形式的更为详细的反馈。模型需要被训练,以让这些反馈尽可能地高。比较典型的例子就是 InstructGPT 所使用的 RLHF [7],首先使用用户标注的对模型响应的偏好反馈数据训练奖励模型,然后使用这个奖励模型以某种 RL 算法训练语言模型以最大化奖励(如下图)。
Training language models to follow instructions with human feedback [7]
“使用配置进行调节” 是一种比较特殊的交互方式,允许用户直接调整语言模型的超参数(比如 temperature)、或者语言模型的级联方式等。典型的例子比如谷歌的 AI Chains [9], 带有不同预设 prompt 的语言模型互相连接构成了一个用于处理流程化任务的推理链条,用户可以通过一个 UI 拖拽调整这个链条的节点连接方式。
“从人类模拟中学习” 可以促进上述三种方式的规模化部署,因为尤其在训练过程,使用真实的用户是不现实的。比如 RLHF 通常需要使用一个 reward model 来模拟用户的偏好。另一个例子是微软研究院的 ITG [10], 通过一个 oracle model 来模拟用户的编辑行为。
最近,斯坦福 Percy Liang 教授等人构建了一个非常系统化的 Human-LM 交互的评测方案:Evaluating Human-Language Model Interaction [11], 感兴趣的读者可以参考本论文或者原文。
与知识库交互
语言模型与知识库交互存在三个步骤:
- 确定补充知识的来源:Knowledge Source
- 检索知识:Knowledge Retrieval
- 使用知识进行增强:详细请参阅本论文 Interaction Message Fusion 部分,这里不多做介绍。
总的来说,与知识库进行交互可以减轻语言模型的 “幻觉” 现象 (hallucination), 即提升其输出的事实性、准确性等,还能帮助改善语言模型的时效性问题,帮助补充语言模型的知识能力(如下图)等。
MineDojo [16]:当一个语言模型智能体遇到不会的任务,可以从知识库中查找学习资料,然后在资料的帮助下,完成这个任务。
“Knowledge Source” 分为两种,一种是封闭的语料知识 (Corpus Knowledge), 如 WikiText 等 [15];另一种是开放的网络知识 (Internet Knowledge), 比如使用搜索引擎可以得到的知识 [14]。
“Knowledge Retrieval” 分为四种方式:
- 基于语言的稀疏表示以及 lexical matching 的稀疏检索 (sparse retrieval):如 n-gram 匹配,BM25 等。
- 基于语言的稠密表示以及 semantic matching 的稠密检索 (dense retrieval):如使用单塔或者双塔模型作为检索器等。
- 基于生成式检索器:属于比较新的方式,代表工作是谷歌 Tay Yi 等人的 Differentiable Search Index [12], 将知识都保存在语言模型的参数当中,给一个 query 后,直接输出对应知识的 doc id 或者 doc content. 因为语言模型,就是知识库 [13]!
- 基于强化学习:也是比较前沿的方式,代表工作比如 OpenAI 的 WebGPT [14],使用 human feedback 训练模型,以进行正确知识的检索。
与模型或者工具交互
语言模型与模型或者工具交互,主要的目的是进行复杂任务的分解,比如将复杂的推理任务分解为若干子任务,这也是 Chain of Thought [17] 的核心思想。不同的子任务可以使用具有不同能力的模型或者工具解决,比如计算任务可以使用计算器解决,检索任务可以使用检索模型解决。因此,这种类型的交互不仅可以提升语言模型的推理 (reasoning)、规划 (planning)、决策 (decision making) 能力,还能减轻语言模型的 “幻觉” (hallucination)、不准确输出等局限。特别地,当使用工具执行某种特定的子任务时,可能会对外部世界产生一定影响,比如使用 WeChat API 发了一条朋友圈等,称为 “面向工具的学习”(Tool-Oriented Learning) [2].
另外,有时候显式地分解一个复杂的任务是很困难的,这种时候,可以为不同的语言模型赋予不同的角色或者技能,然后让这些语言模型在互相协作、沟通的过程当中,隐式、自动地形成某种分工方案 (division of labor),进行任务的分解。这种类型的交互不仅仅可以简化复杂任务的解决流程,还可以对人类社会进行模拟,构造某种形式的智能体社会。
作者们将模型和工具放在一起,主要是因为模型和工具不一定是分开的两个范畴,比如一个搜索引擎工具和一个 retriever model 并没有本质的不同。这种本质,作者们使用 “任务分解后,怎样的子任务由怎样的对象来承担” 进行界定。
语言模型与模型或者工具交互时,有三种类型的操作:
- Thinking: 模型与自己本身进行交互,进行任务的分解以及推理等;
- Acting:模型调用其他的模型,或者外部工具等,帮助进行推理,或者对外部世界产生实际作用;
- Collaborating: 多个语言模型智能体互相沟通、协作,完成特定的任务,或者模拟人类的社会行为。
注意:Thinking 主要论及的是 “多阶段思维链” (Multi-Stage Chain-of-Thought),即:不同的推理步骤,对应着语言模型不同的调用 (multiple model run),而不是像 Vanilla CoT [17] 那样,跑一次模型同时输出 thought+answer (single model run).
这里部分承袭的是 ReAct [18] 的表述方式。
Thinking 的典型工作包括了 ReAct [18], Least-to-Most Prompting [19], Self-Ask [20] 等。例如,Least-to-Most Prompting [19] 首先将一个复杂问题分解为若干简单的模块子问题,然后迭代式地调用语言模型逐个击破。
Acting 的典型工作包括了 ReAct [18], HuggingGPT [21], Toolformer [22] 等。例如,Toolformer [22] 将语言模型的预训练语料处理成了带有 tool-use prompt 的形式,因此,经过训练后的语言模型,可以在生成文本的时候,自动地在正确的时机调用正确的外部工具(如搜索引擎、翻译工具、时间工具、计算器等)解决特定的子问题。
Collaborating 主要包括:
- 闭环交互:比如 Socratic Models [23] 等,通过大型语言模型、视觉语言模型、音频语言模型的闭环交互,完成特定于视觉环境的某些复杂 QA 任务。
- 心智理论 (Theory of Mind): 旨在让一个智能体能够理解并预测另一个智能体的状态,以促进彼此的高效交互。例如 EMNLP 2021 的 Outstanding Paper, MindCraft [24], 给两个不同的语言模型赋予了不同但互补的技能,让他们在交流的过程中协作完成 MineCraft 世界中的特定任务。著名教授 Graham Neubig 最近也非常关注这一条研究方向,如 [25].
- 沟通式代理 (Communicative Agents): 旨在让多个智能体能够进行彼此交流协作。最为典型的例子就是斯坦福大学最近震惊世界的 Generative Agents [26]:搭建一个沙盒环境,让好多个由大模型注入 “灵魂” 的智能体在其中自由活动,它们竟然可以自发地呈现一些类人的社会行为,比如聊天打招呼等,颇有一种 “西部世界” 的味道(如下图)。除此之外,比较出名的工作还有 DeepGCN 作者的新工作 CAMEL [27],让两个大模型赋能的智能体在彼此沟通的过程当中开发游戏,甚至炒股,而不需要人类的过多干预。作者在文章中明确提出了 “大模型社会” (LLM Society) 的概念。
Generative Agents: Interactive Simulacra of Human Behavior, https://arxiv.org/pdf/2304.03442.pdf