提示工程:大语言模型的新特征工程

2 阅读5分钟

在自然语言处理领域,大型语言模型的重要性与日俱增,因此,“提示工程”已成为一个主要的研究课题。

过去,我们进行特征工程,即构建一个统计模型,添加不同类型的表示或特征,然后需要根据特征对模型进行调整。如今,随着大语言模型的出现,一个新事物正在兴起,即利用提示(及其各种变体)作为激活模型潜能的方法。

像GPT-3这样的大型语言模型,经过训练能够根据上下文预测单词序列。当模型规模足够大,且训练数据足够多时,它们最终能够编码整个语言的单词序列概率。提示 就是模型用来生成文本的基础输入。

有时,提示本质上就是一个单词序列,就像在计算机终端输入命令一样。但“提示”也用来指代软提示,它是一个向量;这些也被称为任务特定嵌入或任务嵌入。任务嵌入有助于模型执行模式切换。例如,一个指示待生成文本应使用某种语言的向量,被称为语言向量。

长期以来,大型语言模型一直被用作自然语言处理模型的基础;在典型场景中,预训练的语言模型会在针对特定任务标注的数据上进行微调。但提示提供了一种直接访问大型语言模型中所编码知识的方法。毕竟,单词之间的统计关系携带着语义信息:一个能够为提示“在1940年的选举中,罗斯福击败了……”找到最高概率结论的模型,实际上可以为用户提供关于世界的真实信息。

一致性问题

问题在于,尽管信息可能存在于模型中,但提取它却是一件碰运气的事:当被要求陈述一个事实时,大型语言模型可能会输出可靠信息,也可能胡言乱语。不过,这只是一项新兴技术不可避免的成长阵痛。

提示工程就是为自然语言生成寻找最适合特定模型的提示的过程。然而,为预测序列中下一个单词而训练的模型是可以改进的。存在一些能够带来更好结果的替代方案,例如引入人在回路,让人对输出结果进行排序。哪个是正确的响应,哪个是错误的?这有助于模型将提示与正确的响应对齐,并融入所有这些新的归纳偏置。

然而,引导模型生成事实准确且避免冒犯性语言的输出,并不能解决另一个问题:两个不同的提示,在人类读者看来表达了相同的语义内容,却可能从大型语言模型中引出不同的响应。

因此,需要更多研究来构建和评估对提示具有鲁棒性的模型。“提示工程”这个术语的存在本身就意味着,当前可用的模型只有在给定最佳指令时才能正常工作。已经有论文在研究通用提示的概念,以及提示鲁棒性和如何衡量提示释义鲁棒性。

提示工程也为大型语言模型提供了一种进行少样本泛化的方法,即在一个通用任务集上训练的机器学习模型,仅通过少量示例就能学会一个全新的或相关的任务。

可以提供带有示例的提示。例如,如果想提取一段对话的摘要,并且有另外三段对话的文本,就可以提供这些对话及其人工摘要,模型将根据这些上下文进行调整,从而生成更好的摘要。

这些模型还能够进行任务的组合。在大型语言模型的深度学习时代之前,会受到数据的限制。但现在有了提示的概念,大型语言模型实际上可以组合多个任务。例如,可以要求“从两岁孩子的角度总结这份文档”或“从科学家的角度总结这份文档”,模型应该会产生截然不同的输出。模型根据输入中提供的词语来学习组合。例如,它们可以同时进行风格迁移和摘要,甚至能用多种语言执行这些任务。

热门研究趋势

在EMNLP会议上,还有几个其他研究趋势值得关注。其中之一是推理

最近这一领域变得非常活跃。有有趣的论文展示了如何训练模型,使其在响应提示之前能够生成一个思维链。生成思维链有助于这些模型提供更好的答案,所以在某种程度上,这就像模型在进行“边想边说”。这里的挑战在于,如何自动评估那些在输出中提供推理过程的模型。

最后,尽管单词序列预测在自然语言处理中取得了巨大成功,但引入其他类型的结构信息可能会带来更好的模型。模型依赖于单词的位置信息,而这些位置信息可以通过多种方式得到丰富——例如,单词在句法树中的位置,或者它们在文档表格中的位置。目前有许多有价值的研究,旨在让我们的模型感知语言结构甚至文档结构,而不仅仅是依赖简单的单词序列。FINISHED