语言是人与人之间最自然的沟通方式,能帮助我们传递很多重要的信息。斯坦福大学人工智能实验室(SAIL)近日发表博客,介绍了其两篇 ACL 2020 论文。这两项研究立足于近段时间 BERT 等神经语言模型的突破性成果,指出了一个颇具潜力的新方向:使用语言解释来辅助学习 NLP 乃至计算机视觉领域的任务。
想象一下:如果你是一位机器学习从业者并想要解决某个分类问题,比如将彩色方块群分类为 1 或 0。你通常会这样做:收集一个包含大量样本的数据集,标注数据,然后训练一个分类器。
但人类的学习方式却并非如此。对于这个世界,人类有一种非常强大且直观的信息沟通机制:语言!
只需一个短语「at least 2 red squares(至少两个红方块)」,我们就能归纳上面的整个数据集,而且效率要高得多。
语言是人类学习的一大关键媒介:我们使用语言来传递关于这个世界的信念、教育他人以及描述难以直接体验的事物。因此,对监督式机器学习模型而言,语言理应是一种简单且有效的方法。但是,过去基于语言的学习方法都难以扩展到现代深度学习系统致力于解决的一般任务,而这些领域使用的语言形式往往很自由。
今年斯坦福大学 AI 实验室(SAIL)的两篇 ACL 2020 论文在这一研究方向上取得了一些进展:针对自然语言处理(NLP)和计算机视觉领域的多种高难度任务,他们首先用语言解释这些任务,然后使用深度神经网络模型来学习这些语言解释,进而帮助解决这些任务。
ExpBERT: Representation Engineering with Natural Language Explanations
Shaping Visual Representations with Language for Few-shot Classification
难在哪里?
对人类而言,语言是一种教授他人的直观媒介,但为何使用语言来执行机器学习会这么难?
主要的难题也是最基本的问题:在其它输入的语境中理解语言解释。光是构建能够理解丰富和模糊语言的模型就已经很难了,而构建能将语言与周围世界关联起来的模型还要更难。举个例子,给定解释「at least 2 red squares(至少两个红方块)」,模型不仅要理解什么是「red(红)」和「squares(方块)」,还要理解它们如何指代了输入的特定部分(通常很复杂)。
过去一些研究依靠语义解析器来将自然语言陈述(比如 at least 2 red squares)转换为形式化的逻辑表征(比如 Count(Square AND Red) > 2))。如果我们可以轻松地通过执行这些逻辑公式来检查解释是否适用于输入,则可以将解释用作特征来训练模型。但是,语义解析器仅对简单的领域有效,因为简单我们才能人工设计可能见到语言解释的逻辑语法。它们难以处理更丰富和更模糊的语言,也难以扩展用于更复杂的输入,比如图像。
幸运的是,BERT 等现代深度神经语言模型已经显现出解决多项语言理解任务的潜力。因此,SAIL 在这两篇论文中提出使用神经语言模型来缓解这些基本问题。这些神经语言模型或以确定相关领域内语言解释为目标,或使用了可以解读语言解释的通用型「知识」来进行预训练。下面将详细地介绍这些神经语言模型,看它们如何能在更富挑战性的任务设置中学习更丰富且更多样化的语言。
ExpBERT:使用自然语言解释来设计和创建表征
论文地址:https://arxiv.org/abs/2005.01932
第一篇论文研究了如何使用语言解释来构建文本分类器。首先来看一个关系提取任务:模型需要根据一小段文本识别其中提到的两个人是否已经结婚。尽管当前最佳的 NLP 模型有可能仅基于数据来解决这一任务,但人类还能通过语言描述来暗示两人是否已经结婚,比如度蜜月的人通常是已婚的。这样的语言解释能用于训练更好的分类器吗?
对于语言任务,我们可以提取输入 x 的特征(比如是否出现了特定词)来训练模型,而解释还能提供额外的特征。仍以上述任务为例,我们知道「蜜月(honeymoon)」是相关的语言描述,如果我们能创建一个蜜月特征,并使其在段落描述到两人将要度蜜月时激活,则这个信号应该可用于训练更好的模型。
但创建这样的特征需要某种解释解读机制(explanation interpretation mechanism),这样模型才能知道对输入的解释是否为真。语义解析器就是这样一种工具:给定「A 和 B 正在度蜜月」,我们可以将这个解释解析成一种逻辑形式,即当分析一个输入时,如果在提到 A 和 B 时还提到了「蜜月」,则返回 1。但如果解释更模糊呢?比如「A 和 B 很恩爱」。我们如何解析它?
尽管语义解析在领域较小时高效且准确,但扩展性能很差,因为它只能解读遵循固定语法规则集和预定义函数(比如 contains 和 extract_text)的解释。为了解决这些问题,SAIL 的研究者看中了神经语言模型 BERT 的软推理能力。BERT 在文本蕴涵任务上尤其高效,即确定一个句子是否暗含另一个句子或与另一个句子有矛盾。比如「她吃了披萨」暗含「她吃了食物」。
SAIL 提出的 ExpBERT 模型使用了针对文本蕴涵任务训练的 BERT 模型,但研究者为其设定的训练目标是识别任务段落里是否蕴涵一个解释。BERT 在这一过程中输出的特征可替代上述语义解析器提供的指示特征。
BERT 的这种软推理能力能否提升语义解析效果?在上面的婚姻识别任务中,研究者发现相较于仅使用输入特征(无解释)训练得到的分类器,ExpBERT 能带来显著提升。其中重要的一点是:使用语义解析器来解析解释的作用不大,因为一般性的解释(恩爱)难以转换为逻辑形式。
论文还比较了更多基准方法,探索了更大的关系提取任务(如 TACRED),执行了控制变量研究,研究了使用解释相比于添加数据的高效性。此处不再赘述。
使用语言为少次分类任务塑造视觉表征
论文地址:https://arxiv.org/abs/1911.02683
上文描述的研究使用自然语言解释来帮助解决单个任务,比如识别婚姻状况。但是,认知科学领域的研究表明:语言还能让我们获取正确的特征和抽象概念,进而帮助我们解决未来的任务。例如,能说明 A 和 B 已婚的语言解释还能说明其它一些对人类关系而言非常重要的概念:孩子、女儿、蜜月等等。知道这些额外概念不仅有助于识别已婚夫妇,还有助于帮助识别其它关系,比如兄弟姐妹、父母等。
在机器学习中,我们可能会问:如果我们最终希望解决的新任务没有提供语言说明,语言如何为高难度且未指明的领域提供恰当的特征?SAIL 的第二篇论文便探索了这一任务设置,这个任务的难度更大:语言能否提升跨模态(这里是视觉)的表征学习?
具体来说,该研究重点关注的是少次视觉推理任务,比如下面这个来自 ShapeWorld 数据集的例子:
针对一个视觉概念给定一个小型训练样本集,任务目标是确定留出集的测试图像是否表达了同样的概念。现在,如果假设能在训练时间获得相关视觉概念的语言解释,又会如何呢?我们能否使用它们来学习一个更好的模型,即便在测试时没有语言可用?
SAIL 的研究者将该任务放到了一个元学习任务框架中:他们没有在单个任务上训练和测试模型,而是选择了在一组任务上训练模型,其中每个任务都有一个小型训练集和配套的语言描述(元训练集 / meta-train set)。然后,他们在一组未见过任务组成的元测试集(meta-test set)上测试模型的泛化能力,并且该测试集没有可用的语言描述。
首先,如果没有语言描述,我们会如何解决这一任务?一种典型的方法是原型网络(Prototype Network),其策略是学习某个能对训练图像执行嵌入、求平均并将其与测试图像的嵌入进行对比的模型 f_θ(在这里是一个深度卷积神经网络):
在此基础上,为了使用语言,SAIL 提出一种名为语言塑造型学习(Language Shaped Learning/LSL)的方法:如果能在训练时使用语言解释,则可以促使模型学习不仅对分类有用的表征,而且该表征还能用于预测语言解释。SAIL 采用的具体方案是引入一个辅助训练目标(即与最终的目标任务无关),同时训练一个循环神经网络(RNN)解码器来预测对输入图像表征的语言解释。有一点至关重要,即这个解码器的训练过程取决于图像模型 f_θ 的参数,因此该过程应该能促使 f_θ 更好地编码语言中显现的特征和抽象。
从效果上看,可以说这是训练模型在训练期间表征概念时「把想法大声说出来」。在测试阶段,则可以直接抛弃 RNN 解码器,使用这个「经过语言塑造的」图像嵌入按常规方式执行分类即可。
研究者使用真实图像和人类语言,在上述 ShapeWorld 数据集以及更真实的 Birds 数据集上进行了测试:
在这两种情况下,相对于无语言解释的基准模型(Meta)、使用隐含语言的学习(L3)方法,这个辅助训练目标实现了性能提升:
此外,该论文还研究了语言的哪些部分最重要(其实差不多都挺重要),以及 LSL 需要多少语言才能取得优于无语言模型的表现(其实只需一点点)。详情请参阅原论文。
展望未来
正如 NLP 系统理解和生成语言的能力在日益增长一样,机器学习系统基于语言学习解决其它高难度任务的潜力也在增长。SAIL 的这两篇论文表明,在视觉与 NLP 领域的多种不同类型任务上,通过学习语言解释,深度神经语言模型可成功提升泛化能力。
研究者指出,这是训练机器学习模型方面一个激动人心的新途径,而且强化学习等领域已经对一些类似的想法进行了探索。在他们的设想中,未来在解决机器学习任务时,我们无需再收集大量有标注数据集,而是可以通过人与人之间使用了成千上万年的互动方式——「语言」来与模型进行自然且富有表达力的交互。