超自然指令:通过声明式指令在 1600 多个 NLP 任务上进行泛化.
0. TL; DR
本文介绍了SUPER-NATURALINSTRUCTIONS,这是一个包含1616个多样化自然语言处理(NLP)任务及其专家编写指令的基准数据集。该数据集覆盖了76种不同的任务类型,包括分类、信息抽取、填空、序列标注、文本改写和文本生成等。研究者们通过这个大规模数据集训练了一个名为Tk-INSTRUCT的模型,该模型在未见过的任务上表现出色,超越了现有的指令跟随模型(如InstructGPT)。实验结果表明,模型的泛化能力随着训练任务的多样性和模型规模的增加而显著提升。
1. 背景介绍
近年来,自然语言处理(NLP)领域取得了显著进展,尤其是预训练语言模型(如GPT-3和T5)在多种任务上展现出强大的性能。然而,这些模型在面对未见过的新任务时,其泛化能力仍然面临挑战。为了提升模型对新任务的适应能力,研究者们开始探索如何利用自然语言指令来指导模型完成任务。这种通过指令引导模型完成任务的方法被称为“指令跟随”(Instruction Following)。
尽管已有研究在指令跟随方面取得了一定成果,但现有的数据集和模型仍存在局限性。例如,许多数据集规模较小,任务类型有限,且缺乏对多语言任务的支持。此外,一些大型模型(如InstructGPT)的训练数据并未公开,这使得研究者难以复现和改进这些模型。
为了解决这些问题,本文提出了SUP-NATINST数据集和Tk-INSTRUCT模型。SUP-NATINST是一个包含1616个任务的大型基准数据集,涵盖了76种不同的任务类型和55种语言。每个任务都配有详细的指令,包括任务定义、正例和负例。这些任务和指令由88名NLP实践者共同贡献,并经过多轮同行评审和众包反馈,以确保数据质量。Tk-INSTRUCT模型则基于T5架构,通过多任务训练在这些任务上进行学习,并在未见过的任务上展现出强大的泛化能力。
2. 方法介绍
SUP-NATINST数据集的构建过程如下:
- 任务收集:通过GitHub平台公开征集任务,鼓励NLP实践者从现有数据集、众包实验或合成任务中提取任务。
- 指令设计:每个任务都配有统一格式的指令,包括任务定义、正例和负例。任务定义用自然语言描述输入到输出的映射关系;正例和负例分别展示正确和错误的输出示例。
- 质量控制:通过自动化测试、同行评审和众包反馈对任务进行质量检查,确保指令清晰、准确且易于理解。
Tk-INSTRUCT模型基于T5架构,通过多任务训练学习任务指令。具体方法如下:
- 任务表示:每个任务 $t$ 通过其自然语言指令 $I_t$ 定义,指令包含任务定义和示例。模型需要根据输入 $x$ 和指令 $I_t$ 生成正确的输出 $y$。
- 训练过程:模型在训练集上进行多任务训练,学习如何根据指令完成任务。训练时,将指令和输入文本拼接后输入模型,模型输出预测结果。
- 模型架构:Tk-INSTRUCT模型使用T5架构,支持多种模型规模(如3B、11B等)。此外,还训练了一个多语言版本的模型(mTk-INSTRUCT),用于处理非英语任务。
为了将任务指令和输入文本输入模型,需要将指令的各个部分(如定义、正例等)转换为文本格式。具体编码方式如下:
- 任务定义:将任务定义文本直接拼接到输入文本前。
- 正例和负例:将正例和负例的输入输出对及其解释拼接到输入文本中。
- 输入格式:最终输入模型的文本格式为:
定义 + 正例 + 负例 + 输入
。
3. 实验分析
实验分为英语任务和跨语言任务两个赛道,分别包含119个和35个任务。为了评估模型的泛化能力,将任务分为训练集和测试集,测试集任务未在训练中出现。评估指标采用ROUGE-L,用于衡量生成文本与参考文本的相似度。
实验中对比了多种基线模型,包括:
- 启发式基线:如复制输入实例、复制示例输出。
- 预训练语言模型:如T5和GPT-3。
- 指令调优模型:如InstructGPT和T0。
Tk-INSTRUCT在英语任务上取得了62.0的ROUGE-L分数,显著优于InstructGPT(52.1)和T0(32.3)。多语言版本的mTk-INSTRUCT在跨语言任务上也取得了66.1的ROUGE-L分数,优于InstructGPT(52.8)。
Tk-INSTRUCT在所有任务类型上均优于其他基线模型,但在某些任务类型(如文本蕴含、核心ference解析等)上与监督学习的性能仍有较大差距。
作者进一步分析不同方面对微调性能的影响:
- 任务数量:随着训练任务数量的增加,模型的性能呈对数线性增长。这表明增加训练任务的多样性可以显著提升模型的性能。
- 训练实例数量:实验发现,当每个任务的训练实例数量达到64时,模型性能趋于饱和。进一步增加实例数量并不会显著提升性能。
- 模型规模:模型规模的增加对性能有显著提升。