以提示/指令模式直接使用大模型

咖哥:不过,小冰,有一点你必须知道,近年来,随着GPT这种生成式大型预训练模型的突飞猛进,“预训练+微调大模型”的使用模式有被一种称为“提示”(Prompt)或者说“指令”(Instruct)的使用模式所取代的趋势。

Prompt模式和Instruct模式都基于这样一种思想:在训练阶段,这些模型通过学习大量的文本数据,掌握了语言的结构、语法和一定程度的语义知识。那么,在应用阶段,通过在输入中提供恰当的信息和指导,可以引导大型预训练模型(如GPT-3)生成相关性更强且更有用的输出。这种方法可以看作与模型进行一种“对话”,用户提供输入(Prompt或Instruct),然后模型根据输入生成相应的输出。

下面这张图来自卡内基-梅隆大学某研究团队发表的一篇有关Prompt模型的综述文章[4],它形象地描述了在几个预训练模型上使用Prompt模式的方法:通过提供合适的输入,用户可以引导模型生成符合特定目标的输出。


[4] LIU P, YUAN W, JIANG Z, et al. Pre-train, prompt, and predict: A systematic survey of prompting methods in natural language processing [J]. ACM Computing Surveys, 2022: 55(9), Article No. 195, 1-35.

Prompt:想让模型做什么?有话直说[5]


[5] 图中的BERT、BART和ERNIE都是预训练语言模型,同时也都是卡通人物的名字。其中BART由Facebook AI Research于2019年推出,ERNIE是百度研究院于2019年推出的。

用我自己的话来说就是,大模型本身就是知识库,里面蕴含了你所需要的信息,不一定非得微调才能解决问题,但是你得知道怎么才能把它里面的知识“调”出来

咖哥发言

提示工程(Prompt Engineering)已经不再是一个新鲜名词了,它能“有效地与人工智能沟通以获得你想要的东西”。大多数人都不擅长提示工程,然而,它正在成为一项越来越重要的技能……

不好的输入很大程度上意味着不好的输出。因此,提示工程师这个职业应运而生。他们主要负责设计和优化模型的输入(即提示或指令),以引导模型生成满足特定目标的输出。当然,提示工程师需要深入理解特定任务的需求和目标,对任务背景和领域知识具有一定程度的了解,以确保输入符合任务的实际需求,设计出有效的提示或指令。而且,一个提示工程师还需要具有良好的沟通和协作能力。

小冰:那么咖哥,Prompt和Instruct这两种模式应该也有一些不同之处吧。

咖哥:是的。Prompt和Instruct这两种模式在输入的类型和任务的性质上有区别(如下图所示)。

Prompt和Instruct模式

Prompt模式:输入通常是一个词或短语,模型需要根据这个提示生成自然且连贯的文本。这种方式适用于生成式任务,如文本生成、文章摘要等。例如,当输入“从前”这个提示时,语言模型返回“有个山,山里有个庙……”

Instruct模式:输入是一条明确的指令,要求模型完成特定任务。这种方式适用于那些需要明确指示的任务,如回答问题、解释概念等。例如:当输入“请给我讲个故事”时,语言模型返回“从前有个山,山里有个庙,庙里有个咖哥给小冰、小雪上课……”

小冰:那么你能否总结一下Prompt/Instruct模型和“预训练+微调大模型”模型的异同?

咖哥:先说两者的相似之处。首先,两种模型都依赖于大型预训练模型(如GPT、BERT等),这些模型在大规模无标注文本数据上进行训练,以学习丰富的语言知识和通用表示。其次,两种模型都利用了预训练模型的迁移学习能力,在具体的下游任务上使用预训练好的模型,从而减少了训练时间和数据需求。

不同之处咱们列表看看(见表0.2)。

表0.2 “预训练+微调大模型”模式与Prompt/Instruct模式的不同之处

总的来说,这两种模型都利用了预训练模型的强大能力,但它们在实现具体任务时采用了不同的策略。“预训练+微调大模型”模式通过在特定任务上对模型进行微调,使模型更加精确地适应任务需求;而Prompt/Instruct模式则直接利用预训练模型的生成能力,通过设计合适的提示来解决问题。选择哪种模型取决于具体的任务需求、可用数据,以及具体的任务对精确性和灵活性的需求。

小冰:咖哥,谢谢你把预训练模型的诞生、发展和使用方式细细捋了一遍,这样我就对大模型有了宏观的认识。下面,你能不能把GPT的发展脉络梳理出来呢?

咖哥:当然可以。