本教程将系统梳理自然语言处理中一种新兴的监督范式——从任务指令中学习。你会了解什么是任务指令、有哪些类型、如何建模、哪些因素影响性能,以及当前面临的挑战与应用前景。通过通俗的语言和结构化的讲解,即使你是刚接触这一领域的新手,也能快速掌握核心概念。
1 引言
人工智能的目标之一是构建一个能普遍理解并解决新任务的系统。传统的做法依赖大量特定任务标记示例,但这种方式存在两个问题:
- 成本高、不灵活:收集标记示例对复杂或昂贵任务不现实,也无法满足系统即时处理新任务的需求。
- 用户不友好:最终用户更愿意提供任务描述,而非一堆示例。
因此,社区开始探索一种新范式:从任务指令中学习。指令往往比单个标记示例包含更抽象、更全面的目标任务知识。例如,小孩可以通过指令和几个例子学会解决新数学题。这种范式最近引起了NLP领域的主要关注。

当提到“任务指令”,很多人首先想到提示(Prompt)——通过简短模板将输入重新格式化为语言建模问题。但提示只是指令的一种特殊情况。本文对指令驱动的NLP研究进行了全面、更广泛的梳理,试图回答以下问题:
- 什么是任务指令?存在哪些指令类型?
- 如何对指令进行编码以帮助目标任务?
- 哪些因素(如模型大小、任务数量)影响性能?如何设计更好的指令?
- 指令学习能带来什么应用?
- 面临哪些挑战和未来方向?

据我们所知,这是第一篇调研文本指令学习的论文。与现有侧重于特定上下文(如提示、演示或推理)的调研不同,本文提供了一个更广泛的视角,以有组织的方式连接不同研究。我们还发布了相应的阅读清单。
2 基础知识
对于任务式学习,目标是通过遵循指令使系统根据输入产生输出。一个数据集由三个元素组成:
- Input (X):实例的输入。可以是单段文本(如情感分类),也可以是一组文本(如文本蕴涵)。
- Output (Y):实例的输出。分类问题中为预定义标签,生成任务中为开放形式的文本。
- 模板 (T):一种文本模板,用于表达任务含义,或作为X与Y之间的桥梁。T可能还不是一种组件结构。
小提示: 理解这三个基本元素,是后续学习指令类型和建模方法的基础。可以把模板T看作“任务的说明书”。
3 什么是任务指令?
在零样本和少样本NLP任务中,已使用了多种文本指令,例如提示、Amazon Mechanical Turk指令、带演示的指令和思维链解释。不同的指令最初针对不同目标设计。我们将它们总结为三个类别(如图2所示),它们执行T、X和Y的不同组合。

3.1 I=T^+Y: 面向蕴含的指令
传统分类任务将标签转换为索引,丢失了标签语义。面向蕴含的指令将模板T与标签Y结合,为每个标签构建一个假设,从而将标签真值判断转化为文本蕴含问题。如表1所示:

这种方法的优势:
- 保持标签语义,输入和输出编码同等重要。
- 形成统一的推理过程(文本蕴含),适用于多种NLP问题。
- 可利用现有TE数据集进行间接监督,无需特定任务微调。
- 将闭集标签分类扩展为开放域开放形式标签识别。
它广泛应用于少样本/零样本分类任务,如主题、情感、姿态、实体类型和关系分类。
常见问题:
Q: 面向蕴含的指令是否只适用于文本分类?
A: 不完全是。虽然它最初用于分类,但通过将输出空间转化为假设,也可以扩展到一些生成任务。不过目前主要应用于分类相关场景。
3.2 I=T^+X: 面向PLM的指令(如提示)
提示是面向PLM的指令的代表,通常是一个简短的语句,以前缀提示或完形填空提示的形式出现。其核心是利用预训练语言模型(PLM)的预训练目标(如掩码语言建模),避免传统监督微调,降低标注成本。

提示学习在问答、机器翻译、情感分析、文本蕴含、命名实体识别等任务上取得了显著成果。
小提示: 提示的短语设计非常关键,甚至微小的措辞变化都会影响PLM的输出。建议参考“提示工程”相关技巧。
3.3 面向人的指令
面向人的指令主要用于众包平台(如Amazon MTurk),通常包含任务标题、类别、定义、注意事项等段落式文本信息。它们对人友好、描述性强,可应用于几乎任何复杂NLP任务。

常见问题:
Q: 面向人的指令与提示有何区别?
A: 面向人的指令是为人类标注者设计的,语言自然、详细;而提示是为PLM设计的,通常简洁且符合模型预训练格式。面向人的指令更灵活,但需要额外处理才能被模型理解。
4 如何为指令建模?
本节总结四种主流的指令学习建模策略:
- 基于语义解析器:早期方法,用于编码指令(如将自然语言指令解析为逻辑形式)。
- 基于提示模板:神经网络时代常用,将指令作为模板嵌入输入。
- 基于前缀指令:将整个指令作为前缀拼接到输入前,引导模型生成输出。
- 基于超网络:近期兴起,利用一个网络生成指令参数,再作用于主模型。
注意:选择哪种建模方式取决于任务类型、模型结构和可用的计算资源。
5 应用
5.1 人机交互
文本指令是一种自然的人机交互方式。许多工作使用自然语言指令指导计算机执行现实任务:
- 非NLP任务:驱动智能体根据指令选择对象、导航、制图、玩游戏、生成体育广播、控制软件、查询数据库等。
- NLP任务:操作字符串、根据解释分类邮件、文本到代码生成等。
近年趋势是迭代式、模块化设计。例如Li等人构建的系统可让用户逐步完善指令(如点咖啡);Dwivedi-Yu等人提出迭代指导PLM改进文本;Chakrabarty等人构建协作写诗系统。针对非专家用户难以一次性编写完整指令的问题,这种设计可有效降低认知负担。
5.2 数据和特征增强
任务指令可视为间接监督资源,其中包含浅层规则(标记函数),可直接用于注释或特征增强:
- Srivasta va等人将自然语言解释解析为逻辑形式,生成额外二值特征。
- Wang等人利用标签解释自动标注语料,在噪声数据上训练分类器。
- Su等人使用指令丰富模型表示,通过对比学习训练嵌入模型,为未见任务生成基于指令的表示,实现跨任务泛化。
5.3 通用语言模型
通用语言模型应是一个优秀的多任务助手,能以零样本/少样本方式处理各种任务。指令学习在其中扮演关键角色。值得注意的是,InstructGPT和ChatGPT的成功也依赖指令学习技术。虽然ChatGPT还采用了人类反馈强化学习(RLHF),但研究表明,即使没有人类反馈,指令微调也能显著降低模型输出的毒性(如性别和职业偏见)。我们相信,通过持续发展指令学习等技术,AGI目标将更进一步。
编辑:黄飞
