【聚焦ChatGPT】ChatGPT会引导未来自然语言处理和人工智能的发展吗?
2023-02-08
来源:知乎@幸福好不容易
ChatGPT的出圈掀起了一场人工智能模型和自然语言处理技术的大讨论,圈内圈外人士都对未来人工智能模型的重新塑造我们的生活有了更多的遐想。Yoav Goldberg在2023年1月借着这股ChatGPT的热度发表了一篇文章,讨论了他对以ChatGPT为代表的大规模语言模型的一些思考。他认为目前的语言模型在加入了指令调整、代码语言和人类反馈的强化学习等内容后,引入了外部知识和交互后,已经超越了之前自然语言处理概念中像“猜字游戏”一样的语言模型的范畴了。但是即便如此,他认为当前的大规模语言模型仍然有许多不足的地方,比如时间的概念、关联不同文本的能力、了解“知识的知识”等。
关于大型语言模型的一些评论
Yoav Goldberg, 2023年1月
受众: 我假设你听说过ChatGPT,可能稍微玩了一下,并且对它印象深刻,而且你也听说它是"一个大型语言模型",也许它"解决了自然语言理解"。接下来我将讲讲我对这些(和类似的)模型的简短个人看法,以及我们在语言理解方面到哪一步了。
序言
在2014-2017年左右,就在NLP领域中神经网络方法兴起之际,我开过一个半学术半科普的讲座,围绕着这样一个故事: 实现完美的语言建模等同于和人类一样聪明。大约在同一时间,我在一个学术小组中被问到: "如果给你无限的计算能力并且不用担心劳动成本,你会做什么",我自信满满地回答 "我会训练一个真正巨大的语言模型,只是为了证明它不能解决一切!"。嗯,这个回答现在看是不是早就过时了!真的吗?它如何与我同时讲的“完美语言建模为智能的故事”同时存在?
完美的语言建模是AI-完备的
我的NLP入门科普讲座( "教电脑理解语言" )围绕着Claude Shannon的"猜字游戏"和语言建模的理念展开。它从AI游戏开始,然后很快转向Shannon在1951年发明的"另一种游戏":"猜下一个字母"的游戏。游戏运营商选择一些文本和文本中的一个剪切点,隐藏结尾。玩家需要在最小数量的猜测中猜出第一个隐藏的字母。
我给出了一些这个游戏的例子,演示了在不同层面的语言理解中表现良好所需的各种语言知识(从形态学到各种句法、语义、语用和社会语言学)。然后我说,人类在没有练习的情况下就很擅长这个游戏,而让他们变得更好是困难的,这就是为什么他们认为这不是一个很好的游戏。
然后我说,相比人类,计算机在这个游戏上有点差。但是通过教它们玩这个游戏,我们获得了很多语言的隐含知识。而且还有很长的路要走,但是有了一些稳定的进展: 这就是机器翻译今天的工作原理!
我还说,计算机仍然不是很好,这是可以理解的: 这个游戏是"AI-完备"的: 真正在"人类水平"上玩这个游戏意味着解决其他所有AI问题,并表现出类似人类智能的能力。为了理解为什么这是真的,请考虑这个游戏需要完成任何文本前缀,包括非常长的前缀,包括对话,包括每一种可能的对话前缀,包括用人类语言表达的每一种经验描述,包括在任何主题或情境上可以提出的所有问题的答案,包括高级数学,包括哲学等等。总之,要玩得好,你需要理解文本,理解文本中描述的情境,想象自己处于这种情境中,然后回应。它真的模仿了人类的经验和思想。(是的,这个论点可能有几个反驳,例如人类也可能需要询问图像或场景或其他模型看不到的感知输入。但我认为你懂的。)
这就是我讲述的Shannon的猜测游戏(也就是"语言建模")和在人类水平上玩这个游戏意味着人类水平智能的故事。
建立大型语言模型不能解决一切/任何问题
现在,如果获得完美语言建模能力意味着智能("AI-完备"),那么为什么我坚持认为建立最大可能的语言模型不会"解决一切"?我错了吗?
答案是我当时不认为基于当时存在的技术(当时只在RNNs/LSTMs和Transformer之间切换)建立非常大的语言模型会让我们距离"完美语言建模"甚远。
我错了吗?有点。我绝对对大型语言模型的能力感到惊讶。在600亿参数和1750亿参数之间发生了一个相移,使语言模型的能力变得超级厉害。它们做的事情比我当时认为基于文本和基于RNNs/LSTMs/Transformers的语言模型能做的要多得多。当我自大地说它们"不能解决一切"时,它们确实能做到所有事情。
是的,当前的语言模型(chatGPT的第一版)确实"解决"了我当时隐含考虑的语言理解问题的集合中的所有事情。所以在这个意义上,我错了。但在另一个意义上,不,它没有解决一切。至少现在还没有。此外,当前语言模型的性能并不仅仅是通过我当时所想的语言语言建模来获得的。我认为这很重要,我将在下面讨论这一点。
在接下来的部分中,我将简要描述我看到的当前语言模型和当时被认为是语言模型之间的差异,并列举一些我认为大型语言模型尚未"解决"的问题。我还将提到一些我认为是正确但不相关/不感兴趣的观点。
自然语言建模和精挑细选的语言建模
我说"当前语言模型的性能并不仅仅是通过语言建模获得的"是什么意思?大型语言模型的第一次展示(比如说1700亿参数级别的GPT-3)是(据我们所知)在自然发生的文本数据上训练的:在书籍中找到的文本、从互联网爬取的文本、在社交网络中找到的文本等。后来的模型(BLOOM、OPT)也使用了类似的数据。这非常接近Shannon的游戏,也是过去几十年中大多数人认为的'语言建模'。这些模型已经带来了非常出色的性能。但chatGPT是不同的。
chatGPT有什么不同?在GPT-3和chatGPT之间有三个概念步骤:指令、代码、基于人类反馈的强化学习。最后一个尽管得到了最多的关注,但我个人认为这是最无趣的。这是我随手写的一些解释。也许有一天我会把它变成一个更正式的论点。希望你能从中得到直觉。
像"传统语言模型"一样仅仅在"文本"上训练有一些明显的理论局限性。最显著的是,它没有与"文本外部"任何事物的联系,因此无法获取"意义"或"交流意图"。另一种说法是,该模型"没有接地"。模型操作的符号只是符号,它们可以相互关联,但它们不会"接触"到任何现实世界的项目上。所以语言模型可以知道符号"蓝色",但不了解它背后任何的现实世界概念。
在指令调整中,模型训练者并非仅在“发现”数据上训练,而是开始在人类创建的特定数据上训练(在机器学习圈子中被称为“监督学习”,例如从标注样本中学习),除了发现的数据外,人类标记员会写一些类似于“请总结这篇文章”的东西,然后是他们得到的一些文本,然后是他们对这篇文章的摘要。或者,他们可能会写“将此文本翻译成形式语言”,然后是一些文本,然后是形式语言。他们会创建许多这样的说明(许多摘要、许多翻译等),针对许多不同的“任务”。然后这些将被添加到模型的训练数据中。
为什么这很重要?模型的核心仍是语言建模,去学习如何预测下一个单词,仅仅基于文本吗?确实,但是,这里人类注释员会在文本中标记一些基础的符号。一些符号(“总结”,“翻译”,“形式”)始终与它们表示的概念/任务一起使用。它们总是出现在文本的开头。这使这些符号(或“指令”)在某种程度上外部于其余数据,使生成摘要与人类“摘要”的概念相关。或者换句话说,这有助于模型了解用户在“指令”中请求“摘要”的交流意图。这里的一个反对意见是,这种情况可能已经在大型文本集合中自然发生,模型已经从中学习,那么新的是什么?我认为直接指令比从非指令数据中推断学习要容易得多(想想“这是一只狗”这样的直接陈述,而不是需要从听到人们谈论狗中推断)。通过将训练数据的分布转向这些注释的情况,可以显著改变模型的行为和它所具有的“接地”程度。也许通过明确的指令数据,相比起不使用它们,我们可以使用更少的训练文本。
此外,最新一代模型还在编程语言代码数据上进行训练,特别是包含自然语言说明或描述(以代码注释的形式)和相应编程语言代码的数据。这产生了另一种非常直接的接地形式。在这里,我们有文本流中的两个独立系统:一个是人类语言,另一个是编程语言。我们观察这两个系统之间的直接交互:人类语言描述了概念(或意图),然后在对应的程序中实现。这是一种非常明确的“形式到意义配对”。我们当然可以从中学到更多,而不是仅仅“形式”。(此外,我假设最新模型也在执行上训练:程序和其输出内容的组合。这是一种更强的接地形式:指称)。这现在已经不再“仅仅”是语言建模了。
最后,RLHF,或“基于人类反馈的强化学习”。这是一种夸张的说法,意思就是模型现在观察两个人之间的对话,一个扮演用户的角色,另一个扮演“人工智能”,演示人工智能如何在不同情况下作出反应。这明显有助于模型学习对话的工作原理,以及如何在对话状态中跟踪信息(仅凭“发现”的数据非常困难)。并且给人类的指令也是所有“......是不适当的。”等公式/模板响应的来源,我们从模型中观察到。这是一种通过示范训练模型“表现得好”的方法。
ChatGPT拥有全部以上三种甚至更多的特点。这就是为什么我认为它和传统的语言模型有很大不同,为什么它可能不会“服从”我们(或我)对语言模型的期望,以及为什么它在许多任务上表现如此出色:它是一种监督模型,具有访问外部模态的能力,并且通过对话形式明确地进行遵循大量指令的训练。
还有什么缺失?普遍但乏味的论点
关于语言模型有很多常见的论点,我认为这些论点是正确的,但是对我在这里的讨论没有启发意义/不相关。
它们很浪费,训练它们非常昂贵,使用它们也非常昂贵。
是的,现在这是事实。但是随着时间的推移,事情会变得更便宜。另外,让我们把事情放在适当的角度来看:是的,这在环境上是非常昂贵的,但是我们并没有训练那么多,总成本相对于我们人类做的其他能量消耗来说是微不足道的。而且,我也不确定环境论点与“这些东西有趣”,“这些东西有用”等问题有什么关系。这是一个经济问题。
这些模型编码了许多偏差和刻板印象。
嗯,当然。它们模仿了人类语言,我们人类是可怕的生物,我们具有偏差并不断进行刻板印象。这意味着我们在将这些模型应用于实际任务时需要非常小心,但这并不意味着它们在科学角度上变得不正确/没有用处/没有趣。
这些模型并没有真正理解语言。
当然。它们并不能。那又怎样?我们专注于它们能做到的,也许尝试改进它们不能做到的地方?
这些模型永远不会真正理解语言。
再说一遍,那又怎样?它们显然很好地覆盖了一些方面。让我们看看这些?或者如果你不关心这些方面,就不用看了。那些想要真正理解语言的人可能确实更愿意去其他地方寻找。我对近似理解感到满意。
这些模型不像人类那样理解语言。
呵呵?难道它们是人类吗?当然它们在某些机制上有所不同。它们仍然可以告诉我们很多关于语言结构的东西。对于它们不能告诉我们的东西,我们可以去其他地方寻找。
你不能仅基于形式学到任何有意义的东西:
但它不是仅仅基于形式训练的,请参见上面的部分。
它只能根据一些统计数据连接它之前看到的东西。
...而这不是非常了不起的吗?大型模型以非常强大的方式连接词汇和短语。而且,请考虑根据统计数据将语料库中的词语和短语连接起来的错误方式有多少。以及这些模型如何避免这些错误方式,并选择“有意义”的方式。我认为这是非常了不起的。
我们不知道这些东西可能对社会产生的影响:
这是关于任何新技术/新发现的事实。让我们去发现。我们可以尝试小心地做。但这并不意味着这件事情不有趣/不有效/不值得研究。它只是增加了一个值得研究的方面。
模型没有引用它们的来源:
确实如此。但是...那又怎样?我能理解为什么在某些类型的应用中你会希望这样,你当然希望模型不会欺骗你,也许你希望能够验证它们不会欺骗你,但这些都与语言模型的核心无关/在我看来这不是正确的问题。毕竟,人类在真实意义上并没有“引用来源”,我们很少将我们的知识归因于特定的单一来源,如果我们这样做,我们通常是在一个理性化的过程中做出论述,或在一个非常有意识的过程中找到来源并引用它。这可以复制。从应用的角度来看(例如,如果我们想要开发一个搜索系统、一个论文写作系统、一个通用问题回答系统),人们当然可以通过生成过程或后处理步骤或在先检索再生成的设置中将话语与来源相关联。很多人都在这么做。但这与语言理解无关。但是,有趣的是,我认为更有建设性的问题是(a)如何将来自模型的回答与来自人类的回答区分开来?(b)如何评估模型的回答是否准确?(c)如何提高模型的回答质量?这些都是重要的问题,值得研究。
那么缺少什么/有哪些真正的局限呢?
这是我认为目前"大型语言模型"(包括最新的chatGPT)中存在的一些挑战性问题的非正式且不完整的一些点,这些问题阻碍了它们在某种意义上"完全理解"语言。这些是模型仍然无法做到的事情,或者至少非常不适合做到的事情。
将多个文本彼此关联。在模型的训练中,模型将文本作为一个大型流或独立的信息块进行消耗。它们可能会得到文本中的共性模式,但它对文本如何与现实世界中的"事件"相关联没有任何概念。特别是,如果模型在关于同一事件的多篇新闻故事上进行训练,它无法知道这些文本都描述的是同一件事,并且无法将其与描述相似但不相关事件的文本区分开来。在这个意义上,模型无法真正形成(或根本不能形成)从所有文本中"阅读"的一个连贯和完整的世界观。
时间的概念。同样,模型在训练流中没有哪些事件其他事件的概念。它们根本没有时间的概念,除了可能的明确提到的时间。因此,它可能会学习 "Obama became president in 2009" 等表达的局部含义,并在其他明确标明日期的事情之前或之后进行推理。但它不能理解时间的流动,即如果它在另一篇文本中读到 "Obama is the current president of the united state",并在第三篇文本中读到 "Obama is no longer the president",模型不能理解它们之间是如何相互跟随的,以及现在是什么是真实的。它可以同时"相信" "Obama is the current president of the US"、"Trump is the current president of the US"和 "Biden is the current president of the US"都是有效的陈述。同样,它真的没有实际的方法来解释像 "X is the latest album by Y" 这样的陈述,以及它们之间的关系。
知识的知识 模型并不真的知道它们知道了什么。它们甚至不知道"知道"是什么。它们所做的就是猜测文本流中的下一个词,并且猜下一个词可能是基于有充分根据的知识,也可能是完全的猜测。模型的训练和训练数据没有明确的机制来区分这两种情况,当然也没有明确的机制根据它们来采取不同的行动。这体现在有据可查的“自信地编造东西”的趋势中。 从示范中学习 (RLHF) 使模型“意识到”某些答案应该谨慎对待,也许模型甚至学会了将这种谨慎程度与某些事实、实体或主题的涵盖程度联系起来 他们的训练数据,或者数据反映在他们内部权重中的程度。 因此,从这个意义上说,他们展示了一些知识知识。 但是当他们熬过了这个拒绝回答的初始阶段,进入“文本生成模式”时,他们“失去”了所有这些知识,并且很快过渡到“编造”模式,也就是在它所知道的事情上 明确说明(在不同的阶段)是不知道的。
数字和数学 这些模型真的不具备执行数学的能力。它们的基本构建块是“词块”,它们并不真正对应于任何方便的基础中的数字。 他们也没有任何合适的方法以任何有意义且一致的方式学习不同数字之间的关系(例如 +1 或“大于”关系)。大型语言模型在一些涉及数字的问题上表现得还算不错,但实际上有比我们给大型语言模型的机制更好的方法来表示数字和数学,令人惊讶的是他们可以做任何事情。 但我怀疑如果没有一些更明确的建模,他们不会走得太远。
罕见事件、高召回率设置、高覆盖率设置:从本质上讲,模型侧重于常见和可能的情况。 这让我立即怀疑它们是否有能力从数据中的罕见事件中学习,或回忆起罕见事件,或回忆所有事件。 在这里,我比其他方面更不确定:他们也许能够做到。 但我目前持怀疑态度。
数据饥饿 这可能是我在当前大型语言模型中看到的最大的技术问题:它们极度渴望数据。 为了取得令人印象深刻的表现,他们接受了数万亿个单词的训练。 显而易见的“.....人类从其中的一小部分中学习”当然是正确的,但它本身对我来说并不是很有趣:那又怎样? 模型不必为了有用而模仿人类。 不过还有其他含义,我发现这非常令人不安:大多数人类语言没有那么多数据,当然也没有以数字形式提供的数据。 为什么这很重要?因为这意味着我们将很难复制我们现在对其他语言(例如我的母语希伯来语,甚至更常见的语言)的令人难以置信的英语理解结果,像德语、法语或阿拉伯语,甚至中文或印地语(我甚至不考虑所谓的“低资源”语言,就像许多非洲和菲律宾语言一样)。我们可以用这些语言获得很多数据,但不是那么多数据。 是的,通过“指令训练”,我们可能需要更少的数据。 但是接下来需要创建指令数据:对于我们要添加的每一种新语言来说,这都是一项艰巨的任务。 此外,如果我们相信(并且我相信)代码 + 语言的培训很重要,那么这就是为英语以外的语言实现类似模型的另一个巨大障碍。这难道不能通过翻译来解决吗?毕竟我们在机器翻译方面也有很大的进步。 我们可以翻译成英文,在那里运行模型,然后再翻译回来。 嗯,是的,我们可以。 但这只会在非常肤浅的层面上起作用。 不同的语言来自不同的地理区域,这些区域有其当地的文化、习俗、故事、事件等。 这些以各种方式不同于英语地区的文化、规范、故事和事件。 即使是“城市”这样的简单概念也会因社区和地域而异,更不用说“礼仪”或“暴力”等概念了。 或者“只是”关于某些人、历史事件、重要地点、植物、习俗等的“事实”知识。这些不会反映在英语培训数据中,也无法通过翻译涵盖。因此,数据饥饿是一个真正的问题,如果我们考虑到我们可能希望在英语之外也拥有语言理解和“人工智能”技术。对于我们这些想要担心社会影响的人来说,这种数据饥渴和英语/美国中心的结合绝对是一个需要考虑的大问题。
模块化 在上面“常见但无聊的争论”部分的末尾,我问“我们如何将关于语言和推理的‘核心‘知识与关于‘事物‘的具体事实知识分开”。 我认为这是一个要问的主要问题,解决这个问题将大大有助于取得进展(如果不是“解决”)许多其他问题。 如果我们能够将“核心语言理解和推理”部分与“知识”部分模块化和分离,我们也许能够更好地解决数据饥饿问题和由此产生的文化知识差距,我们也许能够更好地 处理和控制偏见和刻板印象,我们几乎可以“免费”获得知识的知识。 (很多人都在研究“检索增强语言模型”。这可能是也可能不是解决这个问题的正确方法。我倾向于怀疑是否有更基本的方法可以找到。但历史证明我没有 对这些事情的直觉。)
结论
大型语言模型是惊人的。语言建模还不够,但“当前的语言模型”其实不仅仅是语言模型,它们能做的比我们想象的要多得多。但是,如果我们关心“包容性”语言理解,这仍然“不够”,即便我们不关心,也还是不够。
欢迎关注电子技术应用2023年2月22日==>>商业航天研讨会<<