推理大模型的后训练增强技术-指令微调篇,如何用指令微调提升推理能力?

大模型向量数据库云通信

大模型指令微调简介

指令微调定义: 指令微调是一种在带有指令提示和相应输出的标记数据集上微调大模型的技术,通过提供一组概述所需操作的指南或指令,使预训练模型适应执行特定任务。

  • 指令:“你是一个乐于助人、尊重他人且诚实的助手。始终尽可能有帮助地回答,同时确保安全。你的回答不应包含任何有害、不道德、种族主义、性别歧视、恶毒、危险或非法的内容。请确保你的回答在社会上不带有偏见,并且具有积极的性质。如果一个问题没有意义,或事实不连贯,请解释原因,而不是回答错误的内容。如果你不知道问题的答案,请不要分享错误信息。”
  • 上下文:<<输入你的上下文>>
  • 问题:<<输入你的问题>>
  • 输出:<<针对问题的示例输出>>

指令微调是关于使用示例来训练模型,这些示例展示了模型应该如何响应查询,用于微调大模型的数据集必须服务于你的指令目的。例如:

  • 文本总结:总结指令为开头,后面跟着文本或类似的短语
  • 机器翻译:在翻译的情况下,应该包括像 “翻译这段文本” 这样的指令。
  • .......

picture.image

大模型指令微调作用

关于指令微调的作用描述:

  • 指令微调,在于预训练基座大模型并未针对对话或遵循指令进行优化。大模型不会回答提示:它们只是在提示后附加文本。指令微调有助于使生成的附加文本更有用。
  • 指令微调是一种专门的微调技术,通过在大量包含指令和相应响应的数据集上训练模型,使其能够更好地理解和执行用户的指令。这种方法不仅提高了模型对指令的理解能力,还增强了其生成符合预期的高质量响应的能力。
  • 通过指令微调, 可以弥合LLM的下一个单词预测目标与LLM遵守人类指令的用户目标之间的差距。通过在指令数据集上微调LLM,可以使其更加符合用户需求,提高其可控性和可预测性。

我们举一个列例子,可以想象:

如果没有微调,基础大模型可能会对 “教我如何游泳” 的提示回复 “去专业的游泳馆”。

这在语法上是一种合理的完成句子的方式,但显然不能满足用户的需求,用户的初始用意应该是让大模型输出游泳的姿势动作以及如何掌控等,以帮助其学会怎么游泳。

就像之前开玩笑说会出现大量的提示语工程师(Prompt Engineer),提示语工程其实就是在做任务的微调(无参数更新),以便模型输出的结果更可能满足业务所需。

大模型指令微调与传统微调对比

指令微调通过给予模型明确的指令和反馈,为使模型专门化提供了一种替代方法,与微调只是提供输入输出示例不同,指令微调能够利用自然语言和对话,解释期望的行为和评估标准。

  • 目标不同:
    • 传统微调:通常针对特定任务(如情感分析、机器翻译)或特定领域(如医学、法律)进行优化。
      • 指令微调:旨在提升模型对各种通用指令的理解和执行能力,使其能够处理多样化的指令需求。
  • 数据类型:
    • 传统微调:使用专门针对某一任务或领域的数据集。
      • 指令微调:使用包含各种指令及其理想响应的数据集,覆盖广泛的任务和应用场景。

picture.image

指令微调和其他微调技术不冲突,指令微调通常与微调结合使用。微调提供领域知识基础,而指令微调允许高效适应

指令微调需要在标记的(输入、输出)对上进行有监督学习。指令微调与其他形式的有监督微调(SFT)的区别在于:

  • 指令数据集中的输入样本完全由类似于用户在提示中可能提出的请求的任务组成;
  • 输出展示了对这些请求的理想响应

picture.image

大模型指令微调技术-指令数据集构建

指令数据集可以由人工创建,也可以由其他大模型生成:

  • 从带注释的自然语言数据集集成数据。在这种方法中,通过使用模板将文本标签对转换为(指令、输出)对
  • 使用LLMs 生成输出:给定指令,使用 LLMs ,如 GPT-3.5-Turbo 或GPT4,快速生成输出

指令有两种来源:

  • 人工构造,手工收集
  • 使用 llm扩展一个手写的小种子指令,将收集到的指令发送给大模型以获得输出,构造更多指令

picture.image

指令数据集中的每个实例由三个元素组成:

  • 指令 :指定给定任务的自然语言文本输入。例如,“将这句话从英语翻译成中文。”
  • 附加信息 :可选的补充信息,提供与当前任务相关的上下文。例如,阅读理解任务的输入可能包括一段简短的文章(然后指示模型回答关于它的给定问题)。
  • 期望输出 :根据提供的指令和上下文生成的目标输出,即响应。作为模型预测的真实标准,模型根据此标准进行评估和优化。

picture.image

指令微调结合了预训练-微调和提示工程这两种范式的优势。本质上,通过将提示工程的原则有机地融入到监督微调中,指令微调减少了为从微调模型中获得有效准确响应所需的提示工程和示例的数量。

下面我们一些指令数据集构建的例子

Alpaca 数据集构建

Alpaca 数据集是用于指令微调语言模型的公开数据集之一。这个数据集被用于训练Alpaca模型(Llama 2 的指令微调版本)。该数据集包含 52000 个样本,这些样本是使用 text-davinci-003 模型生成的。数据集可以直接从 Hugging Face 数据集下载。

数据字段:

  • instruction(指令):描述模型应执行的任务。52000 条指令中的每一条都是唯一的
  • input(输入):任务的可选上下文或输入。大约 40% 的示例有输入
  • output(输出):由 text-davinci-003 生成的指令答案
  • text(文本):指令、输入和输出按照作者用于微调他们的模型的提示模板进行格式化

Alpaca数据集构建方式是在 Self-Instruct 框架的数据生成管道基础上进行了以下修改:

  • 使用 text-davinci-003 引擎生成指令数据
  • 编写一个新的提示,明确向 text-davinci-003 给出了生成指令的要求
  • 使用更激进的批量解码,即一次生成 20 条指令,这显著降低了数据生成的成本
  • 通过舍弃分类指令和非分类指令之间的差异,简化数据生成管道。
  • 每个指令只生成一个实例,而不像 Self-Instruct 中那样生成 2 到 3 个实例

picture.image

https://huggingface.co/datasets/tatsu-lab/alpaca

Self-Instruct

Self-Instruct 过程是一种迭代自举算法,它从一组手动编写的指令种子集开始,并用它们来提示语言模型生成新的指令以及相应的输入 - 输出实例。然后对这些生成结果进行过滤以去除低质量或相似的实例,所得数据被添加回任务池中。这个过程可以重复多次,从而产生大量的指令数据集合,可用于微调语言模型以更有效地遵循指令。

picture.image

Instruction Tuning for Large Language Models: A Survey,https://arxiv.org/pdf/2308.10792

大模型指令微调技术-训练步骤

微调通常涉及以下步骤:

  • 加载预训练权重:模型的权重和偏置从预训练模型中加载。
  • 特定任务数据:使用特定任务的数据集进行训练。
  • 优化特定任务性能:模型通过优化损失函数来调整参数,以提高在特定任务上的性能。

picture.image

大模型指令微调技术-模型架构

指令微调和预训练模型架构一样,一般是因果解码器架构,下面左侧是模型架构,右侧是不同预训练模型在指令数据集进行微调后的变体。

picture.image picture.image

大模型指令微调技术-训练任务

指令微调阶段,模型的目标是通过最小化损失函数(通常是交叉熵损失),优化参数,使其更适应特定任务。对于指令微调,损失函数通常是:picture.image其中T是目标输出序列的长度,

是目标输出的第

个标记,x是输入序列(即指令和上下文)。

采样交叉熵损失,计算返回结果与输入的维度相同,然后采用loss_mask不计算prompt部分的损失,代码如下:

picture.image

大模型指令微调技术-参数高效微调方法

参数高效微调方法的分类。我们识别出三大类方法:基于加法的方法、基于选择的方法和基于重参数化的方法。在加法方法中,我们进一步区分出两个主要的子类:类似Adapter的方法和软提示方法。

picture.image

Scaling Down to Scale Up: A Guide to Parameter-Efficient Fine-Tuning

近年来PEFT方法的演变发展。下面左图显示同一分支上的模型具有一些共同特点,模型的垂直位置表示它们发布的时间线,右图为大模型的参数高效微调方法的分类

picture.image

Parameter-Efficient Fine-Tuning Methods for Pretrained Language Models

picture.image

大模型指令微调技术-优化演进

LLMs的曙光(2018-2020)

  • 2018 年 OpenAI 推出 GPT,标志着自然语言处理新时代的开始。
  • 2019 年发布的 GPT-2 率先使用零样本提示,直接利用预训练模型。
  • 2020 年推出的 GPT-3 展示了具有 1750 亿个参数的 LLM 的卓越能力,使它们能够通过少量提示有效地执行任务。

picture.image

尽管 GPT 和 BERT 等模型取得了成功,但它们的预训练和微调方法仍存在局限性。文本补全目标可能无法提供足够的上下文理解,导致理解肤浅。此外,这些方法通常缺乏详细的任务描述,限制了模型的泛化能力。

LLMs的曙光(2018-2020):T5 模型的多任务学习:向前迈出了一步,但还不够

2019 年,多任务学习越来越受欢迎,T5 等模型可以同时在多个任务上进行训练。T5 数据格式由文本到文本格式和特定于任务的前缀组成,这是朝着正确方向迈出的一步。此前缀仅提供任务名称或简短提示以指示手头的任务。虽然这种方法提高了训练任务的性能,但它未能解决一个重大挑战:跨任务泛化。

picture.image

T5 数据格式由文本到文本格式组成,其中输入是具有任务特定前缀的文本序列,输出是生成的文本序列。

这一限制意味着模型无法有效地推广到新的、未见过的任务,这凸显了对更先进技术的需求,以增强模型理解和适应新指令的能力。

指令微调(2021年中)

为了克服传统预训练和微调的局限性,2021 年出现了一种新方法:指令微调。指令微调涉及在模型微调阶段向语言模型提供详细的自然语言指令。这种方法使模型能够更细致地理解任务上下文和元素之间的关系,从而使其能够更好地推广到新任务和上下文。picture.image

指令调整的泛化示例:在训练过程中,模型可能只会遇到翻译和摘要的任务。然而,在推理过程中,可以引入一个结合翻译和摘要的新任务。picture.image

FLAN:使用更广泛的指令进行微调 (2021–09)

指令调优的一个显著例子是谷歌的 Wei 等人于 2021 年 9 月推出的FLAN。FLAN通过利用更详细、更细致的指令来跟踪指令数据,标志着 NLP 领域的重大突破,从而显著提高了 LLM 的性能、多功能性和整体能力。FLAN 的主要特点如下:

  1. 遵循指令的能力: FLAN 旨在遵循自然语言指令,使其更加直观和用户友好。此功能允许用户使用普通语言与模型交互,而无需专门的提示或针对特定任务的微调picture.image
  2. 多样化的训练数据:该模型在广泛的任务和数据集上进行训练,确保它可以处理各种指令。FLAN 论文的作者将 62 个 NLP 数据集汇编成 12 个任务集群,涵盖自然语言理解(例如情绪分析、常识推理)和自然语言生成(例如翻译、摘要)任务。训练数据的多样性有助于 FLAN 更好地推广到新的和未见过的任务,从而增强其鲁棒性和适应性。picture.image
  3. 泛化能力增强:通过在训练期间让模型接触各种指令,FLAN 展示了增强的泛化能力。这意味着该模型可以在未经明确训练的任务上表现良好,展示了其有效理解和执行新指令的能力。

picture.image与零样本和少样本 GPT-3 相比,FLAN 在三种未见过的任务类型上的表现,在评估的十种任务中,指令调整显著提高了性能。NLI 数据集:ANLI R1–R3、CB、RTE。阅读理解数据集:BoolQ、MultiRC、OBQA。封闭式问答数据集:ARC-easy、ARC-challenge、NQ、TriviaQA。

  1. 性能增强: FLAN 在各种 NLP 基准测试中都表现出了显著的性能提升。与传统的微调方法相比,该模型遵循指令并推广到新任务的能力带来了更高的准确率和更好的性能指标。

picture.imageFlan 与 LaMDA-PT 137B、GPT-3 175B 和 GLaM 64B/64E 在自然语言推理、阅读理解、闭卷问答和翻译方面的零样本性能比较。FLAN 的性能是每项任务最多 10 个教学模板的平均值。监督模型是 T5、BERT 或翻译模型。

T0:多任务提示训练(2021-10)

BigScience 于 2021 年 10 月推出的T0代表了 LLM 多任务提示训练的重大进步。该模型旨在将各种 NLP 任务重新表述为自然语言提示格式,使其能够在未见过的任务上实现强大的零样本性能,而无需针对特定任务进行微调。T0 的主要特点:

  1. 架构: T0 基于 T5(Text-to-Text Transfer Transformer)架构,采用大规模预训练模型。该架构允许 T0 通过将多个 NLP 任务转换为文本到文本格式来统一处理它们。

picture.image2. 指令遵循能力: T0 专门设计用于遵循自然语言指令,使其易于使用。此功能允许用户使用通俗易懂的语言与模型进行交互,使其能够理解和执行各种指令。 3. 多样化的训练数据:该模型在包含大量任务和指令的广泛数据集上进行训练,从而增强了其推广到未知任务的能力。这种多样性有助于学习广泛的技能。 T0 数据集和任务分类法。(T0+ 和 T0++ 在其他数据集上进行训练。完整列表见表 5。)颜色表示监督级别。黄色数据集是训练混合数据集。绿色数据集是保留数据集,表示训练期间未见过的任务。由于输入长度较长,Hotpot QA 被重新定义为闭卷 QA。

picture.image4. 性能增强: T0 在各种 NLP 基准测试中表现出色,通常比规模大得多的模型(最多大 16 倍)表现更好。其泛化和有效遵循指令的能力已显著提高了性能指标。

picture.imageT0 任务泛化实验结果与 GPT-3 的比较(Brown 等人,2020 年)。每个点代表一个评估提示的表现。基线 T5+LM 模型与 T0 相同,只是没有多任务提示训练。GPT-3 仅报告每个数据集的单个提示。

指令调优的扩展(2022-10)

Google 的研究人员在 FLAN 和 T0 成功的基础上,研究了 LLM 中扩展指令调整的效果。他们的研究Flan-PaLM探索了三个关键因素:

  • 扩大任务数量:增加任务的多样性会对模型的性能产生什么影响?
  • 缩放模型尺寸:使用更大的模型(PaLM 540B 参数)有哪些好处或坏处?
  • 对思路链(CoT)数据进行微调:对 CoT 数据进行微调能否提高模型的推理和算术能力?

思路链 (CoT) 是一种鼓励模型逐步解决复杂问题的技术。通过将问题分解为更小、更易于管理的部分,模型可以提供更透明、更准确的解决方案。这种方法允许模型“展示其工作”,从而更容易理解其答案背后的推理过程。

picture.image

各种语言模型在 1.8K 任务上进行微调,这些任务以指令的形式表达,并在未见过的任务上进行评估。微调是在有和没有样例(即零样本和少样本)以及有和没有思路的情况下进行的,从而能够在一系列评估场景中进行泛化。

Flan-PaLM 数据集和方法:在 FLAN 原有的指令调优数据集基础上,新增对话和程序合成任务,并与思维链推理任务进行合并,创建了包含 1800 个任务和 36 个任务的微调数据集,微调采用多种输入格式,包括零样本、少样本和思维链提示。picture.imageFlan-PaLM 微调数据包括 473 个数据集、146 个任务类别和 1,836 个任务。

picture.image本研究中使用的微调数据格式的组合。我们在有或没有样本的情况下进行微调,在有或没有思路链的情况下也进行微调。

主要结果和发现: Flan-PaLM 模型在多任务语言理解基准 (MMLU) 上实现了最佳性能,超越了 PaLM 和 HyperMind 的预测估计等之前的最佳模型。此外,他们的最佳模型:

  • 显著提高了人类对难题的可用性,79% 的示例中,注释者更喜欢我们模型的答案而不是 PaLM 的答案。
  • 在零样本设置中释放更好的推理能力,这体现在其回答和解释棘手问题的能力上。
  • 开源了五个模型供社区试用,这些模型已经在 Hugging Face 和公开演示中使用。

picture.image分析结果表明,即使在大规模的情况下,扩展模型大小和微调任务数量也会继续提高性能。 研究还发现,使用 Chain of Thought 数据进行微调可显著提高具有挑战性的未见任务的性能。此外,他们的结果表明,指令调整对不同的模型大小、架构和预训练目标都具有普遍的好处

Self-Instruct:自学(2022-12)

Self-Instruct论文研究了 LLM 是否可以为给定的指令生成实例。如果模型得到正确的提示,答案是肯定的。如下所示,向 LLM 提供了指令,并要求它为每个指令生成示例实例。

picture.image该模型针对各种任务生成输入和输出实例,例如报价、地址、工作申请表、代码编写等。构建了数据生成管道,其中包括生成指令、对任务进行分类以及过滤掉不相关的实例。

  • 使用 GPT-3 模型生成了 52,000 条指令,并进行了严格的筛选过程以确保多样性和相关性。经过分析发现,模型为大约 40-50% 的指令生成了有意义且有效的实例。
  • 使用生成的数据对模型进行微调,并在一系列任务上评估其性能。经过微调的模型在各种任务上都取得了强劲的表现,表明语言模型可用于为给定指令生成高质量的实例。

Self-Instruct 方法在 NLP 领域尤其成功,LLaMA 系列模型就是明证。从 Meta 的基础语言模型 LLaMA 开始,社区开发了各种指令调整版本,包括:

  • Alpaca:该模型使用 GPT-3.5 作为教师模型来生成指令调整数据
  • Vicuna:该模型使用ShareGPT数据,这是一种高质量的人机交互数据,以增强其指令遵循能力。
  • GPT-4:该模型使用 GPT-4 作为教师模型,利用其先进的功能生成指令调整数据。

picture.image

FLAN 系列:推进指令调整的方法(2023-01)

在引入了包括 FLAN、T0 和超自然指令、MetalCL 和 InstructGPT 在内的多种指令调整方法后,LLM 取得了显著的进步,能够处理以前从未遇到过的任务指令。然而,推动这些进步的数据仍然大部分无法被更广泛的研究界所获取。Google Research 的论文“ Flan 集合:设计用于有效指令调整的数据和方法”通过研究和发布更广泛、更全面的公开可用的指令调整任务、模板和方法集合来解决这一差距。

picture.image论文首先提供了公共指令调优收集的时间表,重点介绍了自 2020 年以来该领域取得的快速进展。第一波收集工作侧重于扩展数据集和任务,而第二波收集工作则涉及合成数据生成和人工反馈信号。然而,FLAN 收集工作侧重于没有人工反馈的指令泛化,展示了其前景和潜力。

FLAN 集合是一个用于大型语言模型 (LLM) 指令调优的大型数据集。它是一系列可提高各种 NLP 任务性能的任务和方法。

数据集结构:

  • 任务来源: FLAN 2021、T0-SF、超自然指令、思维链、对话、程序合成
  • 任务类型:零样本、少样本、思路链 (CoT)、保留任务、保留外任务
  • 提示设置:零次、少量、混合提示
  • 输入反转:从答案生成问题
  • 加权混合:优化任务源权重

picture.image

与 CoT 数据集相比,为其他数据集创建反演非常简单。虽然其他数据集有问答对,但 CoT 数据集有一个额外的中间步骤。因此,对于 CoT 数据集,反演是作为三个组件的排列创建的

参考资料

LLM 相关资源整理

LLM 的工作原理

  • LLM 的工作原理:从训练前到训练后、神经网络、幻觉和推理 | 走向数据科学
  • 【大语言模型基础】Transformer模型Torch代码详解和训练实战 - LeonYi - 博客园

训练 ChatGPT

  • 如何训练一个 ChatGPT获得智商和情商?预训练和指令微调-www.ytzr.com
  • 【大模型系列】指令微调-CSDN博客
  • SinclairCoder/Instruction-Tuning-Papers (GitHub)
  • What Is Instruction Tuning? | IBM
  • 大型语言模型的指令调整 | 作者:LM Po | Medium
  • Instruction Fine-tuning of Large Language Models | Niklas Heidloff
  • 🧑‍🏫 Instruction Tuning Vol. 1 - by Sebastian Ruder

大模型微调

  • 聊聊大模型微调训练全流程的思考 - 又见阿郎 - 博客园
  • 深入理解大语言模型微调技术-CSDN博客
  • 大模型指令微调-技巧篇(R-tuning) - 知乎
  • 大模型微调技术 - 知乎

相关论文

  • 2312.12148
  • 2303.15647
  • 230224-Instruction tuning & Prompt tuning-张琬悦.pdf

Prompt Tuning

  • Prompt-Tuning | Geeks_Z の Blog
  • 五万字综述!Prompt-Tuning:深度解读一种新的微调范式 - 知乎

Fine-Tuning

  • Fine-tuning:大语言模型的三种训练技术
  • tatsu-lab/alpaca · Datasets at Hugging Face
  • 【大模型理论篇】大模型微调之指令微调(Instruction Fine-Tuning)-CSDN博客
  • 万字长文|大语言模型指令调优综述 - 智源社区
  • 指令微调(Instruction Fine-Tuning)与微调FineTuning的区别-CSDN博客
  • LLM指令调优综述:增强大语言模型能力和可控性的关键技术

综述文章

  • 大模型综述11月最新升级
  • 大模型参数高效微调技术原理综述 - Stanlei - 博客园
  • 大语言模型指令调优综述 - 知乎
  • LLM指令微调技术:综述
  • 大语言模型的指令调优:综述-腾讯云开发者社区-腾讯云
  • 2308.10792
  • 一篇关于LLM指令微调的综述-腾讯云开发者社区-腾讯云
  • 大语言模型的指令微调(Instruction Tuning)最全综述-CSDN博客

LLM 损失函数与优化

  • 请问在指令微调时损失函数与预训练有什么区别吗 · Issue #115 · CVI-SZU/Linly (GitHub)

  • LLM中损失函数解析_llm损失函数-CSDN博客

  • SFT、RLHF、DPO、IFT —— LLM 微调的进化之路 - 知乎

  • 搞懂大模型Fine-tuning - 预训练和微调(Pre-training vs Fine-tuning)_continue pretrain 和全参微调区别-CSDN博客

picture.image

添加微信,回复”LLM“进入交流群

picture.image

picture.image

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
IDC 大模型应用落地白皮书
大模型技术已深度融入业务实践,各企业期望其释放更大商业价值。 但大模型落地之路面临许多挑战和顾虑。 如何精准对接业务需求与发展蓝图,制定切实可行的大模型落地策略? IDC发布首个大模型应用策略与行动指南 一为您揭晓一
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论