【大模型 数据增强】Evol-Instruct 应用:扩充大模型数据多样性

2024-03-20 06:59

本文主要是介绍【大模型 数据增强】Evol-Instruct 应用:扩充大模型数据多样性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Evol-Instruct 应用:扩充大模型数据多样性

    • 提出背景
    • 流程步骤
    • 总结
    • Evol-Instruct 代码复现
    • Evol-Instruct 应用:扩充大模型数据多样性

 


提出背景

论文:https://arxiv.org/pdf/2304.12244.pdf

代码:https://github.com/nlpxucan/WizardLM
 
Evol-Instruct 利用大模型生成指令的方法,可生成相对复杂和多样的指令数据集。

  1. 子问题1:初始指令集的限制(人类懒得写复杂指令)
    子解法1:指令数据演化
    • 特征: 需要将初始指令集(D(0))升级,以产生更多样化的指令。
    • 目的: 通过演化提高指令的复杂度和响应性,增强模型对不同类型指令的处理能力。

现在有一个创业方向,就是给带货行业写指令,一条好的指令可以卖到 5000-几万块,但复杂的指令十分烧脑。

  1. 子问题2:生成复杂指令的需求
    子解法2:指令演化者(Instruction Evolver)

    • 特征: 使用特定提示(prompts)来使指令更复杂和困难。
    • 目的: 产生高质量的、难度逐步增加的指令,避免过度复杂化影响模型泛化性能。
  2. 子问题3:指令多样性不足
    子解法3:广度演化(In-Breadth Evolving)

    • 特征: 通过创建与给定指令基于同一领域但更为罕见的全新指令来增加主题和技能覆盖面。
    • 目的: 扩展数据集的主题和技能多样性,增强模型的综合应用能力。
  3. 子问题4:演化失败的指令的筛选
    子解法4:淘汰演化(Elimination Evolving)

    • 特征: 识别和过滤那些没有提供信息增益、难以生成响应、只包含标点和停止词、或明显复制了演化提示词汇的指令。
    • 目的: 保证指令集的质量,提供有效的数据用于模型训练。
  4. 子问题5:如何有效地微调LLM
    子解法5:在演化指令上微调LLM

    • 特征: 将所有演化的指令数据与初始指令集合并,随机洗牌以创造最终的微调数据集。
    • 目的: 确保在数据集中指令难度级别的均匀分布,最大化模型微调的平滑性。

 


流程步骤

Evol-Instruct方法的示例,这是一种使用大型语言模型(LLMs)代替人类来自动生成各种难度级别的开放域指令的新方法。

在这里插入图片描述

从一个简单的初始指令“1+1=?”开始,如何通过两种演化方式——“In-depth Evolving”(深度演化,蓝色方向线)和“In-breadth Evolving”(广度演化,红色方向线)——来提升指令的复杂性或创造新的指令以增加多样性。

图中给出了五种深度演化操作和一种广度演化操作,具体如下:

  1. 深度演化(In-depth Evolving) 包括五种类型的操作:

    • 添加约束(Add Constraints):如将“1+1=?”演化为“在哪种情况下1+1不等于2?”
    • 深化(Deepening):如将“1+1=?”演化为“如何证明1+1=2在哥德巴赫猜想中是正确的?”
    • 具体化(Concretizing):如将“如果你有一个苹果,有人给了你一个香蕉,你有多少水果?”
    • 增加推理步骤(Increase Reasoning):如将“1+1=?”演化为“x的值是多少,如果3x+3=7?”
    • 复杂化输入(Complicate Input):通过增加代码或公式来提高问题的复杂性,如给出一个包含数学函数和随机数的Python代码片段要求求解。
  2. 广度演化(In-breadth Evolving) 是突变,即基于给定指令生成一个完全新的指令:

    • 例如,将“1+1=?”演化为“请填写下表,提供光速在不同介质中的近似值。”
    • 另一个示例是将“请解释上述公式中叶绿素的主要作用。”演化为一个复杂化输入的表格任务。

此外,图中还显示了一个被称为“Elimination Evolving”(淘汰演化)的过程,用于过滤失败的指令。

 


这张图提供了Evol-Instruct方法的概览,标题为“Figure 2: Overview of Evol-Instruct”。这是一个由三个主要部分组成的流程图:

  1. 初始指令(Initial Instruction):这是流程的起点,表示Evol-Instruct方法的开始,用一个灯泡图标表示,可能象征着一个简单的、创意的或基础的想法。

  2. 演化过程(Evolving Process):从初始指令出发,指令经历了三种演化过程:

    • 深度演化(In-Depth Evolving):用蓝色箭头表示,指令变得更加复杂和深入。
    • 广度演化(In-Breadth Evolving):用红色箭头表示,指令变得更加多样化。
    • 淘汰演化(Elimination Evolving):用黄色箭头表示,不成功的指令将被淘汰。

    演化过程中使用了不同的图标来表示这一过程,包括树木的图标表示生长和发展,以及一个回收符号可能表示从失败的指令中回收和重组元素。

  3. 指令消除器(Instruction Eliminator):这是一个用于过滤掉不成功或不合格指令的步骤,用一个带有红色错误标记的图标表示。

  4. 指令池(Instruction Pool):通过演化过程成功的指令被收集到指令池中,表示为一个数据库或存储图标。

  5. 基础LLM(Foundation LLM):指令池中的指令被用来训练或微调基础大型语言模型,这里用一只骆驼图标表示,可能代表LLM的负载能力或基础性质。

  6. WizardLM:最终,经过微调的LLM被称为WizardLM,这里用一个魔术师图标表示,可能意味着模型通过Evol-Instruct变得更加强大或具有魔法般的能力。

Evol-Instruct的整个流程:从一个初始指令开始,通过多轮的演化和过滤,最终生成一个高质量的指令池,这个指令池被用于训练或微调一个更先进的LLM,即WizardLM。

 


总结

Evol-Instruct方法的拆解和解释如下:

主问题: 如何通过Evol-Instruct方法生成多样化和复杂度高的指令,以提升大型语言模型(LLMs)的性能。

问题与解法组成:

  1. 子问题1:生成复杂度更高的指令。

    • 子解法1:Instruction Evolver。
      • 特点: 利用LLM的能力,通过深度演化和广度演化的策略来生成更复杂的指令。
      • 原因: 深度和广度演化可以从不同角度增加指令的复杂性,增强LLM处理多样化任务的能力。
  2. 子问题2:从深度方面增加指令复杂性。

    • 子解法2:深度演化操作,包括增加约束、深化、具体化、增加推理步骤和复杂化输入。
      • 特点: 这些操作通过改写现有指令,增加其复杂度和细节。
      • 原因: 这些改写方法可以使指令更加具体和挑战性,迫使LLM进行更深入的思考和处理。

例子:

  • 增加约束:原指令:“翻译这段文字。” ------ 改写后的指令:“翻译这段文字,并确保翻译结果在文化上是敏感和适当的。”
  • 深化:原指令:“总结这篇文章的主要观点。” ------ 改写后的指令:“总结这篇文章的主要观点,并解释它们对当前政治环境的影响。”
  • 具体化:原指令:“描述一个健康的饮食。” ------ 改写后的指令:“描述一个适合糖尿病患者的健康饮食计划。”
    增加推理步骤:原指令:“计算10加20的结果。” ------ 改写后的指令:“如果一个人有10个苹果,每天吃掉2个,计算他需要多少天吃完这些苹果。”
  • 复杂化输入:原指令:“根据提供的数据绘制图表。” ------ 改写后的指令:“根据提供的数据中的趋势和异常值绘制图表,并解释可能的原因。”
  1. 子问题3:从广度方面增加指令复杂性。
    • 子解法3:广度演化操作,即创造全新指令。
      • 特点: 生成与现有指令相似但更为罕见的新指令。
      • 原因: 创造新的指令可以提高数据集的多样性,促进LLM学习更广泛的应用场景。

原指令:“写一个关于太空旅行的短故事。”

改写后的新指令:“创建一个关于在火星上建立殖民地的未来主义场景。”

  1. 子问题4:筛选有效的演化指令。
    • 子解法4:Instruction Eliminator,即指令消除器。
      • 特点: 剔除演化过程中产生的无效或低效指令。
      • 原因: 确保数据集中的指令都是高质量的,有助于提高LLM的训练效率和性能。

假设通过演化产生了一条指令:“编写一个故事,然后删除它。”

因为这个指令缺乏具体的目的和效用,所以被指令消除器剔除。

 
每个子问题和子解法在整体解法中的目的:

  • 子问题1和子解法1 的目的是通过创新的演化方法生成具有不同复杂度的指令,增强LLM的处理能力。
  • 子问题2和子解法2 的目的是通过深化和具体化现有指令,使LLM能够处理更复杂和具体的任务。
  • 子问题3和子解法3 的目的是增加数据集的广度和多样性,使LLM能够适应更广泛的应用场景。
  • 子问题4和子解法4 的目的是确保通过演化方法生成的指令是高质量的,提高LLM训练的效率和成果。

 


Evol-Instruct 代码复现

 


Evol-Instruct 应用:扩充大模型数据多样性

这篇关于【大模型 数据增强】Evol-Instruct 应用:扩充大模型数据多样性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/828645

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G