以色列巴伊兰大学教授Yoav Goldberg分享了他对大型语言模型的能力和局限性的看法,以及在语言理解方面的立场。(以下内容经授权后由OneFlow编译发布,译文转载请联系OneFlow获得授权。原文:https://gist.github.com/yoavg/59d174608e92e845c8994ac2e234c8a9)
作者 | Yoav Goldberg OneFlow编译 翻译 | 杨婷、徐佳渝、贾川
2014-2017年左右,基于神经网络的NLP方法兴起,围绕完美语言建模可以达到人类智能程度这一主题,我做了一个半学术半科普讲座。同一时间,在一个学术小组中,有人问:如果有无限算力,且无需担心劳动力成本,你会做什么?当时,我的回答是“我会训练一个超大型语言模型,目的是证明算力并不能解决所有问题”。当然,我知道这种说法已经老掉牙了,但事情真是如此吗?它该如何与我前面提到的“完美语言建模即智能”的故事共存?
我的那场讲座主题“教计算机理解语言”主要围绕Claude Shannon的“猜谜游戏”和语言建模展开。演讲先从AI游戏开始,之后迅速转向Shannon在1951年发明的“另一种游戏(a different kind of game)”,即“猜下一个字母”。游戏操作员在文本中选择一些文本,给出填空处,并隐藏结尾,玩家需要在最少的猜测次数中猜出第一个隐藏字母。
为了更好地进行游戏,我举了几个例子,这些例子来自不同的语言知识,处于不同的语言理解水平(从形态学到不同层次的语法、语义、语用学以及社会语言学)。结果是,在游戏中,人们无需刻意练习就能表现得相当出色,从而导致他们无法再取得任何进步,所以说玩家们认为这个游戏并没有什么了不起。
之后我提到,相较于人类,计算机在游戏中的表现要糟糕得多,但在训练计算机玩游戏的过程中,我们获得了很多隐含的语言知识。虽然在语言建模方面还有很长的路要走,但我们一直在稳步前进,这也是目前机器翻译的工作模式!
我也说过计算机在这方面还不是非常擅长,这是可以理解的。原因在于这个游戏是“人工智能完备(AI-complete)”,真正“以人类水平”玩这个游戏意味着要解决AI面临的全部问题,并展现出类人智能。
为什么这么说?因为游戏涉及完成任意文本前缀,包括很长的前缀、对话,以及每一个可能的对话前缀,可以用人类语言表达的每一种经验描述,还包括任意主题或情况下的每一个问题的每个回答,还包括高数、哲学问题等等。
总之,想要玩好这个游戏,我们需要理解文本,理解文本中描述的情景,要能够设身处地将自己代入到情景之中,并做出回应。这确实就是在模仿人类的经验和思想。(有人可能并不赞同这一说法,认为人类也需要询问有关图像、场景或模型看不到的感知输入问题,但我想你应该明白我的意思。)
这就是Shannon的猜谜游戏(又名“语言建模”),以及为什么在人类智力水平上玩这个游戏需要人类级别的智能。
如果获得完美的语言建模能力需要智能(“人工智能完备”),那为何我还坚持认为构建尽可能大的语言模型并不能“解决所有问题”?我是否想错了?
答案是,我不认为基于当时的技术(RNNs / LSTM或Transformer)构建一个超大型语言模型会让我们接近拥有“完美语言建模”能力。
那么我是否想错了?确实有可能。大型语言模型展现出的能力让我很震惊。事实证明,60B参数和175B参数之间发生了“相变”,这让模型展现出了惊人实力。相比基于文本上训练的RNN / LSTM / Transformers语言模型,大型语言模型能做的事情要多得多,我曾说过“它们不能解决所有问题”,但现在它们已经做到了我当时脑海中所能想到的全部事情。
当前的语言模型(ChatGPT的第一个版本)确实“解决”了当时我所担忧的有关语言理解的所有问题,从这个意义上说,我错了。但从另一种意义上说,我没有错,因为它没有解决全部问题,至少现在还没有。此外,当今语言模型的性能不仅仅是通过我当时所想到的语言建模能力获得的,这一点非常重要,稍后我会加以详细说明。
接下来,我将简要介绍当前语言模型(current-day-LMs)与之前人们理解的语言模型(LM)之间的区别,以及一些在我看来大型语言模型尚未“解决”的问题,我还会提及一些正确但无关紧要、无趣的论点。
“当前语言模型的性能不是通过语言建模获得的”是什么意思?据我所知,大型语言模型(170B参数级别,GPT-3)的首次版本演示是在自然的文本数据上进行训练的,也就是说,训练数据来源于书籍、互联网、社交网络等,后来的系列模型(BLOOM、OPT)也使用了类似数据。这与Shannon的游戏非常接近,同时也是过去几十年大多数人眼中的“语言建模”,这些模型拥有卓越的性能。但ChatGPT与此不同。
ChatGPT有何不同?GPT-3和ChatGPT之间有三个概念步骤:指令、代码、RLHF。在我看来,三个步骤都很有意思。相比起来RLHF要稍显逊色,尽管它受到的关注最多。该解释可能比较随意,也许将来有一天我会把它变成一个更为正式的论点,希望读者能从中获得一些启发。
像“传统语言模型”这样在“纯文本”数据上对模型进行训练,确实有一些明显的理论局限,其中最明显的问题是:这种训练方式无法与“文本外部”的内容产生联系,因此无法获得“意义(meaning)”或“交际意图(communicative intent)”,也就是说这样的模型“不接地(not grounded)”。它们操作的符号就只是符号,虽然可以彼此交互,但它们难以“立足”于现实世界,以“蓝色”这个符号为例,虽然模型知道这个符号,但它们却并不知道与之对应的现实世界中的“蓝色”。
以前,模型只会在“发现的(found)”数据上训练,但在指令精调中,模型训练者(trainers)开始同时在“发现的”数据以及人类创建的特定数据上对模型进行训练(这在机器学习中被称为“监督学习”,例如从注释的例子中进行学习)。比如,人类注释者会写一些类似于“请总结此文本”等内容,后面会附上文本和文本的总结,或者,他们会写“将此文本转换成正式语言”,然后会附上文本,以及文本转换后的正式语言。他们会创建许多类似的指令(比如摘要、翻译等等),随后,这些指令会被添加到模型的训练数据中。
为什么这很重要?本质上,模型仍然在进行语言建模,仅基于文本学习预测下一个单词,但人类注释员向文本里注入了一定程度的接地(grounding)信息。将一些符号(如“总结”“翻译”“正式”)与它们所表示的概念/任务一起使用。
由于总是出现在文本开头,这使得这些符号(或“指令”)在某种意义上独立于其余数据,使得模型能够将人类“摘要(summary)”的概念与产生摘要的行为相关联。换言之,这有助于模型去学习用户在其“指令”中要求“摘要”的交际意图。
有人可能会认为,这样的案例已经自然而然出现在大规模文本集合中,模型已经从中学习了,还能有什么新花样?然而我认为,从直接指令中学习可能比从非指令数据中学习要容易得多(比如直接陈述“这是一条狗”vs 从人们谈论狗的内容中进行推断)。此外,将训练数据的分布转向这些注释用例,可以从根本上改变模型的行为和其所具备的“接地(grounding)”程度。相比之下,使用显式指令数据需要的训练文本要少得多。
另外,最新一代模型还使用编程语言代码数据进行训练,包括自然语言指令(以代码注释的形式)和相应的编程语言代码。这为何重要?这种方式产生了一种非常直接的“接地”形式。
我们在文本流中有两个独立的系统:一个是人类语言,另一个是编程语言。
我们观察这两个系统之间的直接互动:人类语言描述概念(或意图),然后以相应程序的形式实现。这两个系统之间的直接交互其实就是“形式到意义的配对”,相比于“仅从形式中学习”,我们能从这种交互中学到更多东西。(此外,我猜测最新的模型也是通过执行(execution)进行了训练:即程序对和它们的输出。这是一种更强有力的“接地”形式:指称(denotations)。这不“仅仅”是语言建模了。
最后是RLHF(人类反馈的强化学习)。RLHF指模型观察两个人的对话,一个人扮演用户,另一个扮演“AI”,演示AI在不同情境下应该如何回应。这种方法可以帮助模型学习如何进行对话,以及如何跟踪对话状态中的信息(仅从“发现的”数据中学习这一点非常困难)。这些人类指令也是我们从模型中观察到的所有“不恰当的…(It is not appropriate to…)”和其他公式化/模板化响应的来源。这是一种通过示范训练模型“良好行为(behave nicely)”的方法。
上述是ChatGPT的三种能力。当然,该模型可能还有其他能力,这就是为什么我认为它与“传统”语言模型有很大不同,为什么它可能不“遵守”我们(或我)期望语言模型有的一些限制,以及为什么它在许多任务上表现更好:ChatGPT是一种有监督模型,具有访问外部模态的能力,同时也通过演示显式地训练以遵循对话形式给出的指令。
以下是一些关于语言模型的常见争论。这些争论确实存在,但并不具有启发性,或者与我所讨论的不相关:
-
语言模型是不经济的。训练模型的代价很高,而且用起来很贵。
确实,现在看来这些观点是正确的。但随着时间推移,成本会下降。此外,我们要将问题放在更广泛的背景下考虑:虽然环保代价高,但我们并没有训练太多语言模型,而且它们的总能耗相对于人类的其他能耗来说显得微不足道。另外,我也不确定环境问题和“这些东西是否有趣”、“这些东西是否有用”等问题之间有什么关系,这只是一个经济问题。
模型的确存在这些问题。因为模型模拟的是人类语言,而人类本身就带有偏见、存在刻板印象。这意味着我们在将这些模型应用于现实任务时需要谨慎,但从科学的角度来看,这并不会降低模型的有效性、有用性或趣味性。
模型的确并不真正理解语言。那又怎样?我们应该关注模型能做些什么,并对其缺点进行优化。
那又怎么样?模型在某些方面表现得非常出色。我们为什么不去关注那些表现出色的方面?如果你不关心这一点,大可不必关注。那些真正想要深入理解语言的人可能更喜欢从其他途径去探究。对我来说,近似理解已经足够了。
模型不是人类对吧?模型在某些机制上与人类不同,但它们仍然可以告诉我们很多关于语言结构的信息。而对于模型无法提供的信息,我们可以从其他渠道获取。
模型并不仅仅是通过形式进行训练,具体情况请参见前面的部分。
使用统计学方法能够让模型取得这样的成果,不是很令人惊讶吗?大型模型能以非常强大的方式连接单词,此外,根据统计规律,尽管从语料库中连接的单词或短语有许多错误的方式,但模型仍然可以选出“有意义”的连接方式。这非常了不起。
对于任何新的技术或发现,我们都无法预知其可能对社会产生的影响。但这并不意味着我们不应该去发现它们的潜在影响。我们可以尝试以谨慎的态度对其进行研究,这样并不会降低其趣味性、有效性或研究价值。反之,它为我们提供了一个值得研究的角度。
我理解你“想要某些应用有引用功能”的想法,因为不想受到模型的误导。但我认为,这并不是语言模型的核心问题。人们在真正意义上也并不“引用信息来源”,我们很少将知识归因于特定的单一来源,即使这样,我们也往往是出于理性化解释或先查找来源再引用的有意识过程。这种情况是可以复制的。
从应用的角度来看(例如想开发一个搜索系统、论文写作系统或通用问答系统),人们当然可以致力于将表达与来源联系起来,可以通过生成过程或后处理步骤,或者先检索再生成的设置。确实有很多人这样做了,但这与语言理解并不真正相关。我认为更有意义,或者更有建设性的问题是:(1)如何将“语言和推理”的“核心(core)”知识与关于“事情(things)”的特定事实的知识分开;(2)如何实现“知识”的知识(knowledge of knowledge,见下文)。
我列出了当前“大型语言模型”(包括ChatGPT最新版)存在的一些挑战。当然,仅代表个人观点,而且可能不是很完善。这些问题在某种意义上阻碍了它们“完全理解”语言。以下是这些模型仍无法完成,或者至少在完成时表现不佳的一些任务:
-
多文本相互关联。在训练过程中,这些模型将文本看作一个整体或独立信息片段来处理。虽然它们可能会发现文本中的共性模式,但却缺乏如何将文本与现实世界中的“事件(events)”相关联的概念。如果这些模型在多个描述同一事件的新闻报道上进行训练,它们就无法知道这些文本都描述了同一件事,也无法将其与描述相似但不相关事件的多个文本区分开。因此,这些模型不能(或没有能力)从它们所“阅读”的所有文本中真正形成一致、完整的世界观。
-
时间概念。模型在其训练流程中没有关于事件发生的先后顺序概念。除了明确提到的时间,它们实际上并没有时间概念。因此,虽然它们可能学习到一些局部的意义,例如“奥巴马在2009年成为总统”,并能够推断出其他发生在此之前或之后的事件,但是它们无法理解时间流逝的概念。例如,如果模型在不同的文本中读到“奥巴马是美国现任总统”和“奥巴马不再是总统”,它们无法确定这些信息之间的先后关系以及当前的真相。它们可能会同时认为“奥巴马是美国现任总统”、“特朗普是美国现任总统”和“拜登是美国现任总统”这些陈述都是正确的。此外,这些模型实际上也没有实用的方法来解释“X是Y的最新专辑”这类陈述以及它们之间的关系。
-
“知识”的知识。模型不真正“知道自己知道什么”,甚至不知道“知道”的意思。它们所做的一切就是猜测流程中的下一个token,而这个猜测可能基于已经获得的确切知识,或者是纯猜测。模型的训练和训练数据没有明确的机制来区分这两种情况,也没有明确的机制根据这些情况采取不同行动。“自信地编造事实”就是很好的证明。从演示学习(RLHF)中,模型“意识到”有些答案应该谨慎对待。也许模型甚至学会将这种谨慎程度与训练数据中涉及的某些事实、实体或主题的程度以及数据在其内部权重中反映的程度相关联。在这个意义上,它们展现出了某些“知识的知识”。但是当它们克服了拒绝回答的最初阶段,进入“文本生成模式”时,它们会失去所有这些“知识的知识”,并且非常快速地转变为“胡说八道”模式。即使是在它明确表示(在不同阶段)没有相关知识的事情上也是如此。
-
数字和数学。模型非常不适合进行数学计算,它们的基本构建块是“单词片段(word pieces)”,这些片段并不完全对应任何便于计算的数字基数。它们也没有任何适当的方法以有意义和一致的方式学习不同数字之间的关系(如+1或“大于”关系)。虽然大型语言模型在一些涉及数字的问题上表现得不错,但相比我们给予大型语言模型的机制,在表示数字和数学方面有更多更好的方式。因此,这些模型的无所不能真的很让人吃惊。但我认为,如果不进行更显式的建模,它们不会取得很大进展。
-
罕见事件、高召回设置和高覆盖设置。从本质来看,模型专注于常见和可能的案例,所以我对它们从数据中学习罕见事件、回忆罕见事件或回忆所有事件的能力表示怀疑。我不是很确定模型能否做到这一点:它们也许能够做到。但我目前仍持怀疑态度。
-
数据饥饿(Data hunger)。这可能是当前大型语言模型面临的最大的技术问题:模型需要大量数据。为了达到出色的性能,模型需要训练数万亿个单词。“……人类只从其中的一小部分中就可以学习”显然是正确的,但这并没有那么吸引我:那又怎样?模型不必模仿人类就很有用。然而其中还有其他令人担忧的影响因素:大多数人类语言并没有这么多数据,尤其没有那么多有价值的数字形式的数据。
为什么这很重要?因为这意味着,在其他语言上我们很难复制目前所取得的英语理解的成果,比如我的母语希伯来语,或者像德语、法语、阿拉伯语、甚至中文或印地语这样更为常见的语言,更不用说非洲和菲律宾等地的“资源较少(low resource)”的语言。
虽然这些语言也可以获得很多数据,但并不像英语数据那么多。通过“指令训练”技术可能需要的数据更少,但随之而来的是需要创建指令数据,这对我们想要添加的每一种新语言来说都是一项巨大的工作。此外,如果我们相信(而我确实相信)在编码+语言方面进行训练非常重要,那么在实现其他语言的类似模型时这将成为另一个巨大障碍。
那么,翻译能解决这个问题吗?毕竟我们在机器翻译方面也取得了很大进展。我们可以将那些文本翻译成英语,然后用英语运行模型,再将结果翻译回去。我们确实可以这样做,但只能在非常浅显的层面上起作用。地理区域不同,语言也不同。这些区域有自己的文化、规范、故事和事件,与英语地区的文化、规范、故事和事件在各种方面都有差异。即使像“城市”这样的简单概念也会因不同的社群和地理位置而不同,更不用说“礼貌”或“暴力”等概念了。当然还有人、历史事件、重要地点、植物、风俗等方面的“事实”知识,这些都不会反映在英语训练数据中,也不能通过翻译来传递。
因此,如果我们想要在英语以外的语言中使用语言理解和“AI”技术,那么数据饥饿是一个切实存在的问题。
对于我们这些关心社会影响的人来说,将数据饥饿和英语/美国中心化(English/US-centrality)相结合绝对是一个需要考虑的重大问题。
-
模块化:在前面的“常见但平平无奇的争论”中,我提出了一个重要问题:“如何将语言和推理的“核心(core)”知识与关于“事物(things)”的具体事实性知识分开?”该问题能否够解决将在很大程度上影响其他问题的解决方案。如果我们能够将“核心语言理解和推理”组件与“知识”组件进行模块化和分离,可能会更好地解决数据饥饿问题和文化知识鸿沟问题,更好处理和控制偏见和刻板印象,还可以“免费获取”知识的知识。(许多人正在研究“检索增强型语言模型”,不过还无法确认这是否是解决这个问题的正确方法。对此,我往往持怀疑态度,也许存在更根本的解决方法,但历史经验表明我对这些事情的直觉不够敏锐。)
大型语言模型的能力非常惊人。语言建模本身并不足够,但“当前的语言模型”实际上不仅仅是语言模型,它们可以做到很多超出我们预期的事情。然而,如果我们关心“包容性(inclusive)”的语言理解,大型语言模型所能做的还是不够;即便我们不关心这一点,情况也是如此。