指令调整 是一种在标记的指令提示和相应输出数据集上对大型语言模型 (LLM) 进行微调的技术。它不仅能提高模型在特定任务中的性能,还能提高模型在一般情况下遵循指令的性能,从而帮助调整预训练模型,使其适合实际使用。
指令调整是更广泛的微调技术的一个子集,用于调整预训练的基础模型以适应下游任务。可以出于各种目的对基础模型进行微调,从风格定制到补充预训练模型的核心知识和词汇,再到优化特定用例的性能。尽管微调并非任何特定领域或人工智能模型架构所独有,但它已成为 LLM 生命周期不可或缺的一部分。例如,Meta 的 Llama 2 模型系列 (多种尺寸)有基本模型、对话微调模型(Llama-2-chat) 和编码微调模型(Code Llama)。
指令调整与其他微调技术并不相互排斥。例如,聊天模型通常会同时进行指令调整和来自人类反馈的强化学习 (RLHF),这是一种旨在提高乐于助人和诚实等抽象品质的微调技术;针对编码进行微调的模型通常会同时进行指令调整(以广泛优化对指令遵循的响应)和对特定于编程的数据的额外微调(增强模型对编码语法和词汇的了解)。
虽然 LLM 的起源可以追溯到 2017 年的“Attention is All You Need”论文,该论文将大规模转换器模型引入自然语言处理 (NLP) 任务中,而在谷歌(2021 年)1和 OpenAI(2022 年)2的有影响力的论文的推动下, 指令调整和 RLHF 的融入产生了现代 LLM,随着 ChatGPT 的推出,开启了当前的生成式 AI 时代。
与大多数微调技术一样,指令调整的作用在于,预训练的 LLM 并没有针对对话或指令遵循进行优化。从字面意义上讲,LLM 并不回答提示:它们只是将文本添加到提示中。指令调整有助于使附加文本更加有用。
自回归语言模型(用于生成文本的 LLM,例如 Meta 的 Llama 2 、OpenAI 的 GPT、Google 的 Gemini 或 IBM 的 Granite)的预训练过程对这些 LLM 进行优化,使其只需预测给定序列中的下一个单词,直到完成为止。
LLM 是通过对大量书面内容语料库的自我监督学习进行预训练的。在预训练中,自回归模型提供文本样本的开头,并重复预测序列中的下一个单词,直到摘录结束。对于每个预测,原始样本句子的实际下一个单词都是“标准答案”。通过梯度下降等优化算法迭代调整模型参数(应用于 Neural Networks 中每个节点上发生的数学运算的不同权重和偏差),使模型的预测更接近原文,模型“学习”训练数据中的语言模式(进而学习这些语言模式中传递的“知识”)。
尽管这种预训练过程能够生成语言连贯的文本,但它并不一定能使模型性能与人类用户的实际需求相一致。如果不进行微调,基础模型可能会对“教我如何烤面包”的提示做出“用家用烤箱”响应。从语法角度看,这样完成句子是合理的,但却不是用户想要的。
然而,出于任何特定目的(例如遵循指令)预先训练 LLM 是不切实际的。“大型语言模型”中的“大型”是指这些模型通常拥有数十亿个参数:从头开始训练这些庞大的模型需要大量的精力、时间、计算资源和训练数据。相反,对已经训练过的 LLM 进行微调所需的数据要少得多,尤其是在使用部分微调或低秩自适应 (LoRA) 等参数高效微调 (PEFT) 方法时,所需的计算量只是其中的一小部分。
尽管微调几乎可以通过任何机器学习范式实现,包括强化学习、半监督学习 或其他自监督学习,但指令调整需要对标记的(输入、输出)对进行监督学习。指令调整与其他形式的监督微调 (SFT) 不同之处在于,指令数据集中的输入样本完全由类似于用户可能在提示中提出的请求的任务组成;输出则展示了对这些请求的理想响应。在调整模型权重以使 LLM 的输出与指令数据集中的示例相似时,LLM 通过添加包含实际烤面包建议的文本,“学会”对“教我如何烤面包”这样的提示做出回应。
因此,指令调整有助于缩小模型的基本目标(下一个单词预测)与用户让模型遵循指令并执行特定任务的目标之间的差距。这使得模型行为更有用、更可预测。
在各种指令遵循任务的标记数据集上对 LLM 进行微调,通常可提高遵循指令的能力,减少有效提示所需的上下文信息量。指令数据集可以是人为制作的,也可以是由其他 LLM 生成的。
正如 Google Research 在 2022 年发表的一篇颇具影响力的论文《微调语言模型是零样本学习学习者》中所阐述的那样,指令调整的目的是提高 LLM 响应 NLP 指令的能力。为此,指令调整“结合了预训练 - 微调和提示范式的吸引人之处”。从本质上讲,通过将提示工程的原则有机地融入监督微调中,指令调整减少了提示工程的数量,也减少了从微调模型中得出有用、准确的响应所需的少量示例。1
指令数据集中的每个训练样本都由三个元素组成:
谷歌的论文指出,他们的 LaMDA-PT 模型的最终指令调整变体,被称为 FLAN(Fintuned Language Net 的缩写),该变体在翻译、问答、阅读理解和自然语言推理 (NLI) 等以指令形式自然表达的任务上取得了最大的改进,自然语言推理是指确定给定“假设”是否符合给定“前提”的逻辑。
为了解释这一点,FLAN 论文指出了 Brown 等人在 2020 年发布的原始 GPT-3 模型研究论文中提出的一个观点:为什么预训练的 LLM(没有额外的微调)在处理 NLI 等任务时会遇到困难,原因之一是在用于自监督预训练的未标记数据语料库中,不太可能自然出现类似典型 NLI 任务的段落。3相反,对于与预训练的直接语言建模目标更接近的任务,例如最终要求模型正确完成一个句子的常识推理任务,指令在很大程度上是多余的(因此指令调整带来的益处较少)。
也许最重要的是,该论文证明,在指令调整数据集中添加额外任务,甚至在指令数据集中没有体现的新任务上,也能提高指令调整模型的性能。这就是指令调整的根本好处:全面提高模型遵循指令的能力。
FLAN 论文还包括一项消融研究,深入了解了指令微调的明显优势是指令本身造成的,还是仅仅归因于在多个 NLP 任务中对模型进行了微调。为了研究指令在微调中的作用,消融研究在三个不同的设置上对基础模型进行了微调:
然后,消融研究测量了每个微调语言模型在一系列零样本学习指令遵循任务中的结果。经过指令调整的模型比“无模板”模型的准确率高出 18%,比“数据集名称”模型的准确率高出 8%。这表明,指令本身的训练对于提高未见任务的零样本学习性能至关重要。
思维链 (CoT) 提示要求 LLM 不仅要回答问题,还要就如何得出答案提出理由。要做到这一点,可以通过少量的顺序推理示例进行提示,或者在提示语末尾简单地加上“逐步思考”。研究表明,CoT 提示可显着增强了大型模型在各种算术、符号推理和其他逻辑推理任务中的零样本学习能力。5 Wei 等人发现,如果指令数据集中不包括 CoT 任务,进行指令调整会显着降低模型在 CoT 评估中的性能,但添加 CoT 数据集后,模型在所有评估中的性能都会提高。6
此外,他们的研究还发现,在 CoT 任务中对指令进行微调(无论是使用还是不使用少样本学习的示例)都能提高模型在零样本学习环境中进行 CoT 推理的能力。对这一好处的直观理解是,通过对模型进行微调,使其能够按逻辑步骤解决问题,而不是匆忙得出一个在语言上看似连贯的答案,从而学会更好地产生和应用自己的推理技能。
有许多数据集可用于指导调整 LLM,其中很多都是开源资源。这些数据集可以包含直接编写(或收集)的自然语言对(指令、输出),也可以使用模板将现有的带注释数据集转换为指令,甚至使用其他 LLM 生成示例。
直接编写(指令、输出)对虽然简单明了,但却是一个劳动密集型过程,最终会耗费大量的时间和成本。已经提出了各种将自然语言数据集转化为指令的方法,通常是通过应用模板。多个开源人工制作数据集的发布有助于降低对自然数据进行微调的成本。
人工制作的著名开源教学数据集包括:
由于手动生成指令和目标输出所需的成本和人力过高,许多指令数据集都使用大型 LLM 的响应来生成提示、输出或两者兼而有之。使用 LLM 生成的数据集往往会产生额外的效果,即教会较小的模型模仿较大模型的行为,有时是在一种有意的教师/学习者动态中进行的。
随着 LLM 功能的增强,LLM 生成的指令调整数据集的效用也同样得到了提高。2023 年的一篇论文重现了 Alpaca 微调范式,即在 InstructGPT 生成的指令基础上对 LLaMA 进行微调,同时使用 GPT-4 生成指令以并行方式重复该过程。他们将由此产生的模型命名为 LLaMA-GPT4,其“实用性”得分大大超过了 Alpaca 等同模型,在“实用性”、“诚实”和“无公害”方面也接近于 GPT-4 模型本身。11
虽然指令调整技术在 LLM 方面取得了重要进展,但仍需努力使指令调整数据集多样化,并充分阐明其优势。
指令调整所面临的主要挑战是创建用于微调的高质量指令。制作一个适当大型的指令数据集所需的资源,使指令集中于少数几个开源数据集,这可能会降低模型的多样性。虽然使用较大的专有 LLM 来生成指令有助于降低成本,但这也有潜在的弊端,即在所有开源 LLM 中强化了这些专有 LLM 的偏见和缺点。为了规避人类研究人员的固有偏见,专有模型往往被用来评估较小模型的性能,这使得问题更加复杂。
在技术层面上,一些研究人员担心,使用较大的模型来改进较小的模型,可能有助于最小的模型模仿较大的模型的风格,但无法模仿较大的模型的实际功能。2023 年的一项实证研究表明,通过指令调整获得的许多令人印象深刻的成绩提高可能来自于对表面模式的拾取,而不是逻辑推理方面更多真正的改进。12
同样,其他研究人员也认为,报告中提到的一些改进可能在某种程度上依赖于在与指令训练数据集过于密切相关的任务上评估指令调整模型的性能。Gudibande 等人总结说,“通过对以这种方式调整的模型进行更有针对性的测试,改进开源代码模型的最高杠杆作用是应对开发更好的基础 [语言模型] 这一艰巨挑战,而不是走模仿专有系统的捷径”。13
使用面向 AI 构建器的新一代企业级开发平台 IBM watsonx.ai,可以训练、验证、调整和部署生成式 AI、基础模型和机器学习功能。使用一小部分数据,即可在很短的时间内构建 AI 应用程序。
借助 IBM 业界领先的人工智能专业知识和解决方案组合,让人工智能在您的业务中发挥作用。
通过增加 AI 重塑关键工作流程和运营,最大限度提升体验、实时决策和商业价值。