"乌鸦为什么像写字台?"

因为它们都能produce a few notes (鸟叫/笔记),因为乌鸦和写字台都是思想与记忆的象征(北欧神话),又或者因为,这本身就是一句没有道理的话,类比的是人类之间没有道理的情感。

一直以来,从事物中提取抽象的特征,然后建立新的联系都是人类的特权,我们一边试图用机器模拟这一思维过程,一边又批评机器没有学到精髓。可以说,建立通用人工智能 (Artificial General Intelligence, AGI) 的梦想在每个人工智能相关领域研究者都多少会占有一席之地,但是,该如何去实现呢?假如以自然语言处理为起点来考虑这个问题,我认为,组合泛化将是关键。

 

什么是组合泛化?

组合泛化(compositional generalization)是基于复合性(compositionality)衍生出来的一个问题,是分布外泛化的(Out-of-Ditribution generalization)的一个子类。组合泛化的目标是让模型基于已知对象的性质,推断未知对象组合的意义。比如说,已知“猫”和“狗”是较为相似的动物,已知“猫会叫”为真命题,那么我们是否能让模型知道,“狗会叫”也是真命题呢?这就是组合泛化的研究内容。

组合泛化并不是一个新议题,它的重要性经过了多年的斟酌并得到了肯定。只是近年来研究人员发现大模型在组合泛化问题上碰壁严重,才使之成为热点。我在参加ACL 2022和Redmond Mooney 聊天时,他感慨,30年前他研究语义解析(semantic parsing)时已经着重研究了组合泛化,10年前他已经把主要研究精力转而投入到多模态和机器人领域,而现在组合泛化和多模态才成为热点。

为大佬的前瞻性和对未来方向的把控能力惊叹。

 

组合泛化为什么重要?

要理解组合泛化的重要性,首先要回答,机器学习针对的最核心的问题是什么?那就是泛化(generalization)。如果模型缺乏泛化能力,那么模型表现的上限只能是已经见到过的数据。因此,泛化性向来是衡量模型能力的重要指标。

尽管大模型有着惊人的分布内泛化能力,但是分布外泛化仍是这些模型最关键最难以解决的问题。组合泛化是分布外泛化中的重要分支。另一方面,现有的学习模型普遍缺乏推理能力,而组合推理也是推理能力极为重要的一方面。可以说,组合泛化的研究,是针对机器学习中最大的痛点和难点对症下药。

组合推理依赖于常识推理(commonsense reasoning),同时,组合推理和关系推理(relational reasoning)、组合推理和多步推理(multi-hop reasoning)都有着极为密切的关系)。

近年来,随着机器学习在网络结构上的优化进入瓶颈,研究者们不约而同地将目光投向组合泛化。在ACL 2022以“The Next Big Ideas”为主题的演讲中,Heng Ji在强调结构的重要性时,提到使用结构的重要目标之一,就是增强组合泛化能力。Mirella Lapta在讨论故事理解和故事生成的任务时,提到了建模故事结构是可能的解决方案。Dan Roth在关于推理任务的演讲中指出,知识的解构(decompose),重组(compose)和规划(plan)是实现推理的关键步骤。Marco Baroni在关于“machine-to-machine interface”的演讲中,指出组合不同网络是实现这一目标的关键。Hang Li 提出,应当利用符号表达,来提升数值推理的效果。而Yejin Choi直接在她的keynote演讲中,展示了模型组合泛化能力的欠缺,并以此为依据,反驳了在短期内实现通用人工智能的可能性。

▲图片来源于Yejin Choi 在ACL 2022的Keynote演讲

需要指出的是,组合泛化不仅在自然语言处理中十分重要,在计算机视觉/多模态中、在机器人学中也非常重要(例如语言到图像生成模型DALLE中Demo里的例子就是展示生成新的场景组合:宇航员在太空中骑马的图片来表明DALLE的强大能力;同样,机器人理解各种指令组合、各种视觉场景组合也是最关键的课题之一),这也是为什么完成组合泛化是实现AGI的重要一步。

 

自然语言与组合泛化

在NLP的背景下研究组合泛化,对于我而言非常有趣。语言是一种有结构的数据,而结构的规则中又存在相当多的特例和变体。机器学习中最关键问题——领域外泛化对应到语言的结构就是组合泛化。语言在字/词级别和句子级别都有复合性,本文主要关注句子级别的复合性。在这一前提下,语义解析是测试组合泛化能力最合适的任务之一。下面将从两篇我在NAACL 2022中的复合性语义解析(compositional semantic parsing)领域的工作出发,分别谈谈组合泛化的模型和数据两方面。

论文-1

SeqZero: Few-shot Compositional Semantic Parsing with Sequential Prompts and Zero-shot Models

https://arxiv.org/pdf/2205.07381.pdf

论文-2

SUBS: Subtree Substitution for Compositional Semantic Parsing

https://arxiv.org/pdf/2205.01538.pdf

 

如何改进模型以实现更好的组合泛化?

为了增强模型的组合泛化能力,一种直观的思路就是通过例如模块化网络、中间层的离散结构、神经符号系统等方法为模型设置归纳偏置。

我要说的第一篇论文SeqZero中,语义解析的目标是“将自然语言描述解析为SQL语句” [1]。促使我展开研究的契机是,在了解经典数据集和复现模型时,我发现模型如果在训练数据中只见到“多少人住在芝加哥”类型的数据(即每次见到“多少人住在”,后面总是跟着城市名),即使模型在其他训练数据点中见到过“犹他”是“州”的概念,在测试的时候遇到“多少人住在犹他”,也会将SQL 语句中的表格名称预测为“城市”(“FROM City”)而非“州”(“FROM State”)。模型实际上学到的是从“多少人住在xx”句式结构到“城市” 的虚假关系(spurious correlation),而非根据实际的地点名称来判断“州”或者“城市”。

于是,本文提出使用两种方式来进一步合理利用大型预训练语言模型的能力来实现更好的组合泛化:1. 子问题分解,2. 是预训练与精调模型的集成(ensemble)

本文使用了以BART作为backbone的预训练模型,部分结论可能与以GPT3作为的预训练模型有所不同,并且本文采用的是prompt-based fine-tuning [2],而非基于示例prompt的in-context learning [3]。

 

子问题分解:

子问题分解的出发点是把复杂的问题转化为简单的子问题序列,逐步解决。在自然语言到SQL语句解析这个问题中,对应着逐步生成SQL语句的子从句(如“FROM”,“SELECT”,“WHERE”等从句)。对于上面的例子,如果模型可以先解决好“FROM”从句中表格名称(“城市”或“州”)的生成,那么就能更好地预测整句SQL语句。进而,在每一个子问题(子从句)的预测中,可以更好地设计合适的自然语言prompt来帮助挖掘预训练模型中的知识,得到更好的泛化能力。这样的子问题分解和prompt 序列填充的方法在近期预训练模型的推理能力研究(例如本文NAACL的同期或后期工作“Chain of Thought Prompting”等[4]-[6])中,被应用于更广泛的场景。

内容中包含的图片若涉及版权问题,请及时与我们联系删除