Chain-of-Instructions (CoI) 微调和超越

本文介绍了CoI(Chain-of-Instructions)方法,通过将大型语言模型的输出作为后续指令,增强了模型处理多步骤任务的能力。通过CoI微调,模型在多语言摘要等任务中表现出色,展示了其在未知复合任务上的泛化性。文章详细阐述了CoI的实现步骤,包括任务定义、数据集构建和模型调优等关键环节。
部署运行你感兴趣的模型镜像

论文地址:https://arxiv.org/pdf/2402.11532.pdf

  • CoI(Chain-of-Instructions)是一种创新的方法,它通过将大型语言模型(LLMs)的输出作为后续指令的输入,构建了一个指令的链条。这种方法与传统的单一指令任务处理方式截然不同,它通过分步解决每个子任务,直至得到最终答案,从而提升了模型处理复杂、多步骤任务的能力。
  • 通过CoI进行的模型调优,即利用CoI指令对模型进行微调,不仅增强了模型处理复合指令的能力,而且在多语言摘要等任务中的表现也超越了传统的基线模型,证明了CoI模型在处理未知的复合下游任务时具有更好的泛化性。

在实际应用开发中,实现CoI的步骤可以细化如下:

  1. 定义CoI任务:首先,开发者需要清晰界定CoI任务的范畴,即设计一个由多个子任务构成的任务序列,每个子任务的输出都自然地转化为下一个子任务的输入。
  2. 数据集构建:为了训练CoI模型,开发者需要创建一个专门的CoI数据集,这个过程包括:
    1. 选择种子数据集:从现有的单一任务指令数据集中筛选出合适的任务作为构建CoI的基础。
    2. 指令简化:利用LLM对复杂的任务描述进行总结和简化,使之更加符合人类的指令风格。
    3. 可组合性检查:确保所选的指令可以无缝组合,即一个指令的输出能够合理地作为下一个指令的输入。
    4. 生成CoI实例:基于通过可组合性检查的指令对,构建数据集中的<组合指令,输入,输出>样本。
  3. 模型调优:使用构建的CoI数据集对选定的基础LLM进行微调。这一过程需要在配备高性能计算资源的机器上执行,同时需要精心设置学习率、批次大小、训练周期等超参数。
  4. 性能评估:微调后的模型需要在多个任务上进行评估,这不仅包括传统的单指令任务,也包括CoI任务,以此来验证模型处理复杂和组合指令的能力。
  5. 人类评估:除了自动化的评估指标(如ROUGE得分)之外,还可以通过人类评估来比较CoI模型输出与基线模型输出的质量,以获得更全面的评估结果。
  6. 下游任务应用:最终,将经过CoI调整的模型应用于实际的下游任务中,例如多语言摘要,以此来展示模型在实际应用场景中的有效性和实用性。

在实现指令组合的过程中,开发者需要确保各个任务之间的逻辑连贯性和数据格式的一致性,这是确保模型能够准确理解和执行整个任务链的关键。通过这些精心设计的步骤,CoI模型能够更好地理解和处理复杂的、多步骤的任务,从而在实际应用中发挥更大的作用。

原文地址:chain-of-instructions-coi-fine-tuning-going-beyond-instruction-tuning

2024 年 3 月 22 日

因为,CoI 不像 CoT 那样是一种新的提示技术。相反,这项研究重点关注需要解决复杂和组合指令的任务,并构建新的数据集和技术来解决此类任务。

介绍

最近我写了一篇关于 Microsoft Orca-2 小语言模型 (SLM) 的文章。尽管 Orca-2 是一个小型语言模型,但它具有强大的推理能力。

这种推理能力是通过使用细致入微的训练数据来实现的。这就引出了我过去几个月一直在考虑的一个话题:数据设计

这种大规模创建细致入微的训练数据的过程可以被描述为数据设计的过程。因此,将数据设计为某种格式,以便更有效地进行微调。

细致入微的数据

就 Orca-2 而言,为了创建细致入微的训练数据,LLM会收到复杂的提示,其设计目的是引出策略推理模式,从而产生更准确的结果。

此外,在训练阶段,较小的模型会接受 (1)任务以及后续 (2)LLM的输出。

LLM的输出数据定义了LLM如何解决问题。

但原来的 (3)提示不会显示给 SLM。这种“提示词擦除”方法是一种将 Orca-2 转变为谨慎推理机的技术,因为它不仅学习如何执行特定的推理步骤,而且还学习如何在更高层次上制定如何完成特定任务的策略。

与其简单地模仿强大的LLM,不如将LLM作为行为的储备库,从中审慎选择用于处理手头任务的方法。

返回指令链

使用各种指令对大型语言模型 (LLM) 进行微调,增强了它们执行各种任务的能力,包括以前从未见过的任务。

然而,现有的指令数据集大多包含单个指令,并且难以处理涉及多个步骤的复杂指令。

这项研究引入了一种称为指令链 (CoI) 的新概念,其中一条指令的输出成为下一条指令的输入,在训练数据中形成一条链。

因此,我感觉到快速工程学科的原则正在训练数据的设计中得到落实。这是一种将LLM的非梯度训练原则转变为梯度方法的现象。

与传统的单指令任务不同,这种新方法鼓励模型依次解决每个子任务 ,直到达到最终答案。

因此,LLM 的行为发生了变化,用于利用 LLM 上下文学习的元素现在在训练数据中使用。

使用 CoI 指令进行微调(称为 CoI 调整)可以提高模型处理具有多个子任务的指令的能力。 CoI 调整的模型在多语言摘要方面也优于基线模型,这表明 CoI 模型在新的复合任务上的有效性。

分解指令

考虑下图,给出了带有输入文本的指令。

接下来是指令的详细多步分解,以及顺序指令和输出示例。

基本方法

情境学习

该框架利用现有单指令数据集的上下文学习来创建指令链。

该框架还可以在最少的人工监督下自动构建组合指令数据集。

经过微调的模型可以在复杂任务链的每个步骤生成增量输出。通过 CoI-tuning,逐步推理变得可行,特别是在处理由多个子任务组成的指令时。

该方法的输出符合AI可检验、可观察的原则。

综上所述

该研究指出,训练数据集是在最少的人为干预下创建的。我可以预见精心(人类)管理的数据集如何改进这种将上下文学习(ICL)从非梯度方法转移到梯度方法的方法。

一个有趣的元素是,在准备训练数据集时使用了LLM。这再次让人想起 Orca-2 的训练,其中使用 LLM 来训练 SLM。

您可能感兴趣的与本文相关的镜像

Qwen3-VL-30B

Qwen3-VL-30B

图文对话
Qwen3-VL

Qwen3-VL是迄今为止 Qwen 系列中最强大的视觉-语言模型,这一代在各个方面都进行了全面升级:更优秀的文本理解和生成、更深入的视觉感知和推理、扩展的上下文长度、增强的空间和视频动态理解能力,以及更强的代理交互能力

### Chain-of-Thought Prompting Mechanism in Large Language Models In large language models, chain-of-thought prompting serves as a method to enhance reasoning capabilities by guiding the model through structured thought processes. This approach involves breaking down complex problems into simpler components and providing step-by-step guidance that mirrors human cognitive processing. The creation of these prompts typically includes selecting examples from training datasets where each example represents part of an overall problem-solving process[^2]. By decomposing tasks into multiple steps, this technique encourages deeper understanding and more accurate predictions compared to traditional methods. For instance, when faced with multi-hop question answering or logical deduction challenges, using such chains allows models not only to generate correct answers but also articulate intermediate thoughts leading up to those conclusions. Such transparency facilitates better interpretability while improving performance on various NLP benchmarks. ```python def create_chain_of_thought_prompt(task_description, examples): """ Creates a chain-of-thought prompt based on given task description and examples. Args: task_description (str): Description of the task at hand. examples (list): List containing tuples of input-output pairs used for demonstration purposes. Returns: str: Formatted string representing the final prompt including both instructions and sample cases. """ formatted_examples = "\n".join([f"Input: {ex[0]}, Output: {ex[1]}" for ex in examples]) return f""" Task: {task_description} Examples: {formatted_examples} Now try solving similar questions following above pattern. """ # Example usage examples = [ ("What color do you get mixing red and blue?", "Purple"), ("If it rains tomorrow, will we have our picnic?", "No") ] print(create_chain_of_thought_prompt("Solve logic puzzles", examples)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值