作者 | FesianXu
导读
继AlphaGo在2016年横扫了人类棋手之后,2022年末的chatGPT横空出世,再次引爆了全球对人工智能技术的热情。基于语言模型的chatGPT的功能却远远不止步于『chat(闲聊)』,而是能在人类的各个领域中提供帮助,包括但不限于编程、常识问答、法律咨询、知识检索、数学题/逻辑题解答、甚至有研究者还称其可能具有九岁孩童的人类心智 [1],并有研究者称GPT-4 [3] 已经可以视为早期的通用人工智能 [2]。
对于笔者来说,由于没有在NLP前沿领域有太多跟踪,这一切太过突然,仿佛从天而降,但心里已经隐隐觉得大规模语言模型可能并不只受限于『语言』,而是能在非常广阔的其他领域有所应用。本文是笔者在读完综述 [4]后的一个读后感,笔者对NLP见识有限,谨以此文对一些阅读进行个人看法讨论。
全文11355字,预计阅读时间29分钟。
gmented Language Model (ALM),笔者将其翻译为增强型语言模型,因其不仅可处理常规的自然语言处理任务(如命名实体识别、文本分类等等),而且在一些看似不是自然语言任务的场景也可以应用(如操控机械臂等),在论文[4]中,作者给我们展示了一个ALM在当前已有的一些研究,笔者深受其震撼。总结来说,ALM主要有两种最为突出的能力:
1、推理能力(Reasoning): 指的是模型能将复杂任务拆解为多个或多步简单任务,通过对简单任务的求解从而达到对复杂任务求解的目的。
2、对外部工具的操控能力(The ability of using external tools): 指的是有能力调用外部工具,比如搜索引擎、数据库、甚至是物理世界的机械臂等。这种能力有可以再细分为单纯从工具中获取知识(如调用搜索引擎),或者通过工具影响物理世界(如操作机械臂)。
首先需要强调的是,这些能力目前来看都只在大规模语言模型(Large Language Model, LLM)中有所涌现(Emergency) [5],涌现指的是某种只在模型参数规模达到一定程度后(>10B)才能出现的能力,这些能力在小模型上都无从谈起,对此的讨论可参考博文 [6]。LLM的涌现能力可以说是ALM的基础,具备了涌现能力之后,ALM才具有了强大的逻辑推理和语义理解能力。可以想想,一个模型如果能够具有强大的语义理解能力和逻辑推理能力,并且可以通过操作外部工具获取知识,影响物理世界,那么这已经和我们认识中的『强人工智能』似乎也相差不远了?本文就是尝试对ALM的这些神奇的能力进行综述。
01 推理能力
通常来说,推理能力是通过证据(Evidence)和逻辑(Logic)对一个问题进行推理的能力,通常可以拆分为一些子问题进行研究,比如常识推理(Commonsense reasoning)、数学推理(mathematical reasoning)、符号推理(Symbolic reasoning)等等。近些年来,基于prompt技术的语言模型得到了广泛地流行,prompt技术+预训练模型是一种新的范式,与传统pretrain -> finetune的范式有所不同的是,在pretrain -> prompt范式中,我们可以不对模型参数进行更新,只需要考虑如何设计更加合理的prompt,就能充分地利用预训练模型中的知识。这里指的『设计更合理的prompt』,既可以是借助已有的人工标注数据进行设计,也可以对已有的人工标注数据进行扩展,比如Chain of Thought Prompt [7] 就扩展了已有标注,补充了思维链的过程。
说到底,无论是prompt还是finetune,都是为了让预训练模型更好地往着下游任务迁移的过程,然而这两者有着完全不同的设计思路。对于finetune而言,预训练模型仿佛是一个早熟的『孩子』,知识丰富却缺少了经验,因此通过一些人工标注数据作为监督信号,去教导这个孩子成为某个领域的专家,然而这个蜕变的过程是刻骨铭心的,一旦他成为了一个领域的专家,他可能就很难成为另一个领域的专家了。蜕变后的他获得了某个领域的成功,却失去了作为孩子的无限发展的可能性(模型通用性)。不仅如此,现在的预训练模型日渐庞大,GPT-3的参数量已经达到了175B,PaLM的参数量达到了540B,在这种参数量下,即便是少量样本的微调,也显得代价难以接受。
此时,我们自然就在想,是否可以在不更新模型参数的前提下,进行预训练模型的下游任务迁移呢?而这也不是痴人说梦,预训练模型在参数量足够巨大的时候,本身就蕴含着无限可能性,他好似一个无穷尽的知识库,只是缺少了有效的搜索途径。从这个角度看,『finetune』这个过程才显得可笑,这相当于为了契合某个人的喜好,就将这个已有知识宝库里面的大部分知识都付之一炬一般。理查德·道金斯所著的《自私的基因》一书中曾经有句名言:
当搜索空间足够大时,有效的搜索就与真正的创造并无二致了。
我们在拥有了这个无尽知识宝库(大规模语言模型)后,应该考虑的是如何才能有效从中找到我们需要的内容,而这个过程我们不妨就称之为prompt。(1.然而,这并不是说明finetune就不重要了,事实上基于instruction的finetune正是能让chatGPT如此成功的要点之一。)
LLM的推理能力正是可以通过prompt技术进行诱导,而prompt又可以分为zero-shot prompt和few-shot prompt,后者我们通常也称之为情景学习(in-context learning)。(2.之所以笔者将in-context翻译成情景,而不是上下文,那是因为in-context这个过程更多地是为LLM提供一个任务的诱导,而不是提供一个上下文。翻译成上下文多少和原意有所不同,因其可视为提供了某种任务的背景,翻译成情景就更为合适。 )
如Fig 1.1 (a) 所示,few-shot prompt技术可以通过提供一个解决某个问题的中间思维过程作为示例,如绿底字就提供了解决这个文字数学问题的中间计算过程,诱导LLM的回答里面也包含这个中间思维过程,因此这种prompt方式也称之为思维链提示(Chain of Thought Prompt, CoT prompt)。如果只提供了一个示例,称之为one-shot prompt,如果提供了若干个示例,则称之为few-shot prompt,如果没有提供任何示例呢?如Fig 1.1 (b)所示,这种我们称之为zero-shot prompt。在zero-shot prompt中,没有提供任何和任务有关的示例,顶多会提供一些通用的提示词,如[8]只是在输入的问题后面添加上了一段 Let’s think step by step,即便如此,实验也证实了在GSM8K等推理任务中,zero-shot prompt也有着不错的表现(即便比不过few-shot prompt)。
△Fig 1.1 通过使用Few-shot思维链提示技术和zero-shot提示技术,可以『诱导』出模型的推理能力。
如Fig 1.2 (a)所示,采用了CoT prompt技术的LLM模型,比起不采用CoT的有着巨大的性能提升,而如Fig 1.2 (b)所示,CoT prompt带来的大幅性能提升只在模型规模达到一定程度之后才会涌现。 △Fig 1.2 采用了CoT prompt技术后,与传统prompt技术的结果对比。
还有一些研究在尝试将复杂问题进行分解成多个子任务,进行分而治之解决,这些方法又可以分为两大类,将复杂问题分解为子任务的方法,也是采用了prompt技术[9]进行的。
1、独立对子问题进行求解,并将子解合并为最终解。
2、序列式地求解子问题,将上一个子问题的答案作为下一个子问题的依赖进行求解。
这个过程可见Fig 1.3,在Prompt 0中对复杂问题进行分解,得到两个子问题,显然这两个子问题存在依赖关系,我们需要首先解决绿色子问题Subquestion 1。在prompt 1中,将绿色子问题Subquestion 1作为prompt,和原问题一并提供给LLM得到Answer 1。然后在Prompt 2中将原问题,Subquestion 1和Answer 1作为prompt的一部分输入,同时再加入Subquestion 2,得到最终的问题答案Answer 2。
△Fig 1.3 LLM对复杂任务进行子任务分解,然后序列式地对子问题进行求解,得到最终的问题答案。
即便已经取得了如此了不起的结果,prompt技术还处在一些缺陷,特别是当LLM足够大的时候。首先,探索出一些能够诱导出LLM形成推理能力(如多步推理)的prompt,挑选一个合适的prompt并不是一件容易的事情。如Fig 1.4 (a)所示,即便是相同的prompt示例样本,不同标注者的prompt风格都可以导致在GSM8K上的结果有较大差距。不仅如此,当LLM规模较大的时候,长prompt同样会带来较大的计算负担。
△Fig 1.4 即便对于同一个示例样本,不同的prompt风格都会对结果有很大影响。
因此,一些研究尝试显式地诱导语言模型进行推理 (3.之所以称之为『显式』,指的是我们需要提供多步推理的过程,作为某种形式的监督信号给模型,无论模型需要微调与否,当得到了这种多步推理的中间信号后,就可以视为是显式地对多步推理能力进行建模。 ) ,这个过程就回到了pretrain -> finetune的范式,不过还是同样会使用prompt技术的辅助。文献[10]提出了一种称之为『草稿本(Scratchpad)』的概念,指的是模型在训练时候可以同时见到原问题和中间步骤,并且以中间步骤作为监督信号进行模型的finetune,在预测阶段模型汇通是对中间步骤和中间答案都进行预测,像极了我们解数学题时候的草稿本,因此而得名。如Fig 1.5所示,该图展示了一般直接式的程序执行预测和草稿本策略下的程序执行预测的差别,后者会对程序调用过程中的结果进行跟踪,并且以此微调模型,以此显式地获得推理能力。我们能发现,scratchpad策略和我们之前提到的few-shot prompt等策略都有所不同,它是需要对模型进行微调的。
△Fig 1.5 scratchpad会对代码运行或者数学计算的中间步骤和结果都进行预测。
△Fig 1.6 另一种可行的显式多步推理建模,将多步推理过程在prompt中作为输入。
总结来看,LLM的推理能力可以认为是一种将复杂问题分解为多个子问题,并且进行分别求解的过程,这个过程中不能保证中间步骤的有效性,同时LLM也经常会出现一些常识性错误,并且LLM经常在一些简单的数学问题中得到错误的中间答案。这些我们将在后文中看到,可以通过调用外部工具(如搜索引擎、计算器等)进行缓解,提高中间推理步骤的有效性。
在原文中,此处作者还提到了一个有趣的结论,采用显式的指令微调(instruction finetuning),已经在诸多研究中证实了其作用,能够使得较小规模的(10B左右)的语言模型,超越未经过指令微调的大规模语言模型,特别是在那些非常看重指令执行的任务中。这一点在chatGPT和其前辈instructGPT [15]都有体现,他们利用了RLHF(Reinforcement Learning from Human Feedback)技术,对LLM进行了指令微调,从而得到了强大的推理能力。
02 使用外部工具的能力
最近chatGPT又推出了一个使用插件的功能 [12],使得chatGPT可以联网与超过5000种的外部插件进行交互,这是一个轰动的结果,这意味着chatGPT作为一个『大脑』,从此可以利用互联网中海量的插件能力,这无疑给chatGPT赋予了左膀右臂,如Fig 2.1的官方演示所示,一旦chatGPT接入了Wolfram Alpha,就再也不用担心chatGPT数值计算的不准确的问题了。一旦chatGPT接入了搜索引擎和数据库,chatGPT就可以检索到最新的信息了。一旦chatGPT接入了代码解释器,chatGPT甚至还能帮你debug代码!这海量的插件将给chatGPT带来完全不同的玩法,我们不禁感叹天网将至,似乎我们往着通用人工智能又往前了一大步。
△Fig 2.1 chatGPT接入了Wolfram Alpha插件后,拥有了更为精确的数值计算功能。
从上面的例子中,我们不难看出LLM除了推理能力,还能借助外部知识库的力量巩固自己的知识,不仅如此,LLM甚至还能『听得懂』你的指令为你购物,还能控制物理世界的机械臂 [13],而本章就讨论LLM的这两种能力:利用工具巩固自己知识、通过工具影响外部世界。
此处的外部工具(External Tools)是一个广义的概念,不仅仅是搜索引擎、数据库、机械臂等,连神经网络或者语言模型本身也可以视为是外部工具。从这种角度上看,LLM迭代式地调用自身也可以视为是调用工具,类似的工作如PEER [15]。如Fig 2.1所示,PEER是一个自己调用自己的过程,其每次迭代中会输入Text,LLM生成Plan和Edit,通过Plan的引导对原文进行修改,并形成修改后的文本Edit。在后续的迭代中,将Edit作为Text,并迭代运行,直到达到终止条件为止。这种迭代式优化文本的方式对于一些复杂的生成任务,如小说、文章生成而言有着优势,相当于是将复杂任务拆分为了多个小型的子任务了。
△Fig 2.1 采用PEER的迭代式prompt的例子。
正如上文所谈到的,LLM还可以调用外部的知识单元,比如搜索引擎、数据库等提高自身的知识推理能力,通过这种手段可以减少LLM的事实错误推理,产生过时信息等,并且通过将LLM的知识储存功能下放到外部知识模块,可以减少LLM的参数量。检索通常可以分为稀疏检索(Sparse)和稠密检索(Dense),前者通过对文档和检索词进行词袋(Word of Bag, WoB)表达后进行匹配,是一种类似于字词匹配的技术;而后者通过神经网络对文档和检索词进行向量编码后进行相似度计算,也被称之为向量化检索 [16],这是一种基于语义的检索方式。在我们本文中提到的工作都是采用稠密检索的。语言模型尝试采用检索系统的结果并不是一件稀罕事儿,这类型的工作会将文档的稠密表达拼接到当前语言模型上下文的后面,从而进行相似度计量,第一篇端到端的工作是REALM [17],还有若干篇后续工作。还有一些工作尝试把思维链的思想也引入到检索中,如IRCoT(交织型检索思维链, Interleaving Retrieval CoT) [18]这个方案通过交织检索步(Retrieve)和推理步(Reason),利用检索得到的结果去加强CoT推理步的结果,反过来也用CoT推理步的结果去更好地检索新结果,这是一个彼此加强的过程,如Fig 2.2所示。
△Fig 2.2 IRCoT的流程交织着检索步(Retrieve)和推理步(Reason)。
在这些工作中,为了获得对应的资料去增强语言模型,对于每个检索请求(Query)都会调用检索器(Retriever)。与此同时,也有些其他工作让语言模型只在需要的时候请求检索器扩充知识。比如BlenderBot [20] 可以通过prompt的方法决定是否发起检索,在这种情况下,prompt方法直接与调用搜索引擎工具的指令相关联了。由于可以访问到外部的搜索引擎,因此BlenderBot可以应对开放域(open-domain)的问题,如Fig 2.3所示,作者将其作为公开应用进行部署、公开,让模型能以人在回路(human in the loop)的方式对模型进行持续训练。
△Fig 2.3 BlenderBot 采用人在回路的方式,对模型进行持续学习。
BlenderBot只能对检索器 (4.此处的搜索引擎并不是指的如同百度和谷歌一样的具有前端的搜索引擎,而是单纯的输入文本返回文本的搜索工具,或者笔者将其称之为检索器会更加合适的。) 进行调用,而在WebGPT这篇工作中,作者尝试让语言模型去仿照人的行为去『浏览』一个浏览器,为了实现的简便性,此处的浏览器是一个纯文本构成的浏览器 (5.浏览器是纯文本亦或是具有美观的前端和控件与否,并不是一个根本性的问题,具备有前端和控件的浏览器我们也能视为是有超文本定义出来的,因此只采用纯文本的浏览器并不会影响WebGPT的有效性。 ) 。webGPT可以学习出如何通过使用如Fig 2.4所示的有限指令集对浏览器进行检索、浏览、点击链接、引用数据源等,由于这显然是一个action-reward的过程,在训练模型的时候采用了强化学习,而此处的奖励也并不难定义,在给定了某个特定的任务描述的时候,只要判断webGPT是否在浏览器中找到了需要的内容,即可定义出非零既一的硬奖励函数去引导模型的学习了。
△Fig 2.4 WebGPT所使用的有限指令集,包括了网页浏览相关的基本操作,如查询、点击链接、定位网页、引用等等。
由此我们看到LLM具有分解任务和决策序列规划的能力,这种能力对于控制外部工具而言非常重要,LLM有一个很有意思的应用就是尝试利用LLM作为『大脑』去分解高级指令,拆解目标后控制一个虚拟仿真世界中的实体或者真实世界中的实体(agent)。如Fig 2.5所示,”Get Class of Milk”是一个复杂且抽象的指令,为了完成这个指令需要实体知道周围环境的状态,并且拆解、规划出合适的一系列动作去完成,而[22]这篇工作指出,在LLM足够庞大并且进行了正确的prompt之后,LLM中所具有的世界知识(World Knowledge)足以让实体完成这个任务。
△Fig 2.5 LLM可以拆解复杂、抽象的指令成若干具体指令,然后指导虚拟世界的实体进行执行。
在[23]这个工作中,作者则结合多模态模型(Visual-Language Model, VLM)和LLM模型去控制模拟环境下的机械臂,LLM作为多步规划器(去理解环境状况与任务语义,进行复杂任务的拆解),而VLM则作为观察外部环境的手段,通过多模态模型的引入提供了更好的观察外部世界的手段。
END
参考资料:
[1]. Kosinski, M. (2023). Theory of mind may have spontaneously emerged in large language models. arXiv preprint arXiv:2302.02083.
[2]. Bubeck, S., Chandrasekaran, V., Eldan, R., Gehrke, J., Horvitz, E., Kamar, E., … & Zhang, Y. (2023). Sparks of Artificial General Intelligence: Early experiments with GPT-4. arXiv preprint arXiv:2303.12712.
[3]. https://cdn.openai.com/papers/gpt-4.pdf
[4]. Mialon, Grégoire, Roberto Dessì, Maria Lomeli, Christoforos Nalmpantis, Ram Pasunuru, Roberta Raileanu, Baptiste Rozière et al. “Augmented language models: a survey.” arXiv preprint arXiv:2302.07842 (2023).
[5]. Wei, Jason, Yi Tay, Rishi Bommasani, Colin Raffel, Barret Zoph, Sebastian Borgeaud, Dani Yogatama et al. “Emergent abilities of large language models.” arXiv preprint arXiv:2206.07682 (2022).
[6]. https://fesianxu.github.io/2023/03/25/emergent-abilities-llm-20230324/, 《【论文极速读】 大规模语言模型中的能力“涌现”现象》
[7]. Wei, Jason, Xuezhi Wang, Dale Schuurmans, Maarten Bosma, Ed Chi, Quoc Le, and Denny Zhou. “Chain of thought prompting elicits reasoning in large language models.” arXiv preprint arXiv:2201.11903 (2022).
[8]. Takeshi Kojima, Shixiang Shane Gu, Machel Reid, Yutaka Matsuo, and Yusuke Iwasawa. Large language models are zero-shot reasoners. In Advances in Neural Information Processing Systems (NeurIPS), 2022.
[9]. Zeqiu Wu, Yi Luan, Hannah Rashkin, David Reitter, and Gaurav Singh Tomar. Conqrr: Conversational query rewriting for retrieval with reinforcement learning. Conference on Empirical Methods in Natural Language Processing (EMNLP), 2022d.
[10]. Nye, M., Andreassen, A. J., Gur-Ari, G., Michalewski, H., Austin, J., Bieber, D., … & Odena, A. (2021). Show your work: Scratchpads for intermediate computation with language models. arXiv preprint arXiv:2112.00114.
[11]. Taylor, Ross, Marcin Kardas, Guillem Cucurull, Thomas Scialom, Anthony Hartshorn, Elvis Saravia, Andrew Poulton, Viktor Kerkez, and Robert Stojnic. “Galactica: A large language model for science.” arXiv preprint arXiv:2211.09085 (2022).
[12]. https://openai.com/blog/chatgpt-plugins
[13]. Driess, Danny, Fei Xia, Mehdi SM Sajjadi, Corey Lynch, Aakanksha Chowdhery, Brian Ichter, Ayzaan Wahid et al. “Palm-e: An embodied multimodal language model.” arXiv preprint arXiv:2303.03378 (2023).
[14]. Timo Schick, Jane Dwivedi-Yu, Zhengbao Jiang, Fabio Petroni, Patrick Lewis, Gautier Izacard, Qingfei You, Christoforos Nalmpantis, Edouard Grave, and Sebastian Riedel. Peer: A collaborative language model. arXiv preprint arXiv:2208.11663, 2022.
[15]. Ouyang, L., Wu, J., Jiang, X., Almeida, D., Wainwright, C., Mishkin, P., … & Lowe, R. (2022). Training language models to follow instructions with human feedback. Advances in Neural Information Processing Systems, 35, 27730-27744. short for InstructGPT
[16]. Johnson, Jeff, Matthijs Douze, and Hervé Jégou. “Billion-scale similarity search with gpus.” IEEE Transactions on Big Data 7, no. 3 (2019): 535-547.
[17]. Gautier Izacard and Edouard Grave. Leveraging passage retrieval with generative models for open domain question answering. arXiv preprint arXiv:2007.01282, 2020.
[18]. Harsh Trivedi, Niranjan Balasubramanian, Tushar Khot, and Ashish Sabharwal. Interleaving retrieval with chain-of-thought reasoning for knowledge-intensive multi-step questions. arXiv preprint arXiv:2212.10509, 2022.
[19]. Shuster, Kurt, Jing Xu, Mojtaba Komeili, Da Ju, Eric Michael Smith, Stephen Roller, Megan Ung et al. “Blenderbot 3: a deployed conversational agent that continually learns to responsibly engage.” arXiv preprint arXiv:2208.03188 (2022).
[20]. Yao, Shunyu, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik Narasimhan, and Yuan Cao. “React: Synergizing reasoning and acting in language models.” arXiv preprint arXiv:2210.03629 (2022).
[21]. Nakano, R., Hilton, J., Balaji, S., Wu, J., Ouyang, L., Kim, C., … & Schulman, J. (2021). Webgpt: Browser-assisted question-answering with human feedback. arXiv preprint arXiv:2112.09332.
[22]. Huang, Wenlong, Pieter Abbeel, Deepak Pathak, and Igor Mordatch. “Language models as zero-shot planners: Extracting actionable knowledge for embodied agents.” In International Conference on Machine Learning, pp. 9118-9147. PMLR, 2022.
[23]. Zeng, Andy, Adrian Wong, Stefan Welker, Krzysztof Choromanski, Federico Tombari, Aveek Purohit, Michael Ryoo et al. “Socratic models: Composing zero-shot multimodal reasoning with language.” arXiv preprint arXiv:2204.00598 (2022).
推荐阅读:
基于公共信箱的全量消息实现
百度APP iOS端包体积50M优化实践(二) 图片优化
浅论分布式训练中的recompute机制
剖析多利熊业务如何基于分布式架构实践稳定性建设
百度工程师的软件质量与测试随笔
百度APP iOS端包体积50M优化实践(一)总览