总览

大规模“指令调整”的语言模型,即指令微调的LLM,已经表现出非凡的零样本能力,尤其是推广新任务上。 然而,这些模型严重依赖于人类编写的指令数据,而这些数据通常在数量、多样性和创造力方面受到限制,因此阻碍了调整模型的通用性。

基于上述背景,作者提出了Self-instruct框架,一个通过预训练语言模型自己引导自己来提高的指令遵循能力的框架

大白话点讲,就是

  1. 大模型自己遵循一套流程来生成数据
  2. 再用这些生成的数据来指令微调训自己
  3. 从而提高模型自己的能力。

因此核心思想就是生成 指令遵循数据

数据生成

指令数据由指令、输入、输出组成。如下图,作者的数据生成piple包含四个步骤:1)生成任务指令,2)确定指令是否代表分类任务,3)使用输入优先或输出优先方法生成实例,4)过滤低质量的数据。

1 指令生成

首先生成丰富的指令,初始化175个任务,每个任务1个指令和1个实例;

  1. 每一个迭代都选8个任务的指令作为该任务的提示样本,其中6个是人写的,2个是生成的。
  2. 然后组成输入送入模型进行输出引导,直到达到token限制或者够16个任务

2 分类任务识别

作者对于分类任务和非分类任务的后续处理是不同的,所以需要先区别是否为分类任务,这里同样使用LLM对生成的指令进行区别。如下图(只显示了部分),作者为列举 12 个分类指令和19个非分类指令作为prompt提示,以少样本学习提示的方式让LLM判断是否任务为分类。

3 实例生成

针对每一任务类型,作者独立的生成实例,即整个指令数据。

指令微调一般三部分:指令、输入和输出,大模型需要对这3部分都进行生成。

这部分比较难的是让大模型理解模板任务是什么,并根据指令(上面已经生成了),得到输入,再进一步补充出输出

作者发现大模型对 指令-输入-输出 提示的上下文学习有效果,于是:

输入优先方式(Input-first Approach)

以下图为例,给大模型一堆例子,指令指导它进行参考生成:如果需要input,就先生成input,如果没有input,就直接生成output

输出优先方式(Output-first Approach)

上面这种输入优先的方式不适合部分任务生成,尤其是分类任务,生成的输入会偏向于某个标签(label),比如是语法错误检测任务,他会生成 语法性的输入。于是作者提出输出优先方式,将输出放在前面进行上下文学习

4 过滤和后处理

  1. 为了保证指令多样性,新指令中只有与已有指令ROUGE-L相似度(衡量自然语言相似度的指标)小于0.7的才会被保留;
  2. 包含特定关键词的指令也剔除(image, picture, graph等LM本来也无法处理的);
  3. 去除 输入输出完全相同的实例;或者输入相同输出不同的实例;
  4. 还有一些启发式方法(比如指令太长/短,输出是输入的重复等等)进行剔除;

Self-Instruct 论文解读:利用大模型自己给自己生成指令数据,指令数据自动生成的更多相关文章

  1. 利用 Oracle EM 企业管理器 进行oracle SQL的优化(自动生成索引)

    利用 Oracle EM 企业管理器 进行oracle SQL的优化(自动生成索引) ##应用情景 项目中有大量的SQL,尤其是涉及到统计报表时,表关联比较多,当初开发建表时也没搞好索引关联的,上线后 ...

  2. iOS 创建模型时自动生成属性

    转载 mark666(简书作者), 链接:http://www.jianshu.com/p/63ee533a7705 我们在创建模型的时候,常常要写一大堆恶心的@property(nonatomic, ...

  3. NLP论文解读:无需模板且高效的语言微调模型(上)

    原创作者 | 苏菲 论文题目: Prompt-free and Efficient Language Model Fine-Tuning 论文作者: Rabeeh Karimi Mahabadi 论文 ...

  4. 论文解读丨表格识别模型TableMaster

    摘要:在此解决方案中把表格识别分成了四个部分:表格结构序列识别.文字检测.文字识别.单元格和文字框对齐.其中表格结构序列识别用到的模型是基于Master修改的,文字检测模型用到的是PSENet,文字识 ...

  5. 人工智能论文解读精选 | PRGC:一种新的联合关系抽取模型

    NLP论文解读 原创•作者 | 小欣   论文标题:PRGC: Potential Relation and Global Correspondence Based Joint Relational ...

  6. NLP论文解读:无需模板且高效的语言微调模型(下)

    原创作者 | 苏菲 论文题目: Prompt-free and Efficient Language Model Fine-Tuning 论文作者: Rabeeh Karimi Mahabadi 论文 ...

  7. 论文:利用深度强化学习模型定位新物体(VISUAL SEMANTIC NAVIGATION USING SCENE PRIORS)

    这是一篇被ICLR 2019 接收的论文.论文讨论了如何利用场景先验知识 (scene priors)来定位一个新场景(novel scene)中未曾见过的物体(unseen objects).举例来 ...

  8. zz扔掉anchor!真正的CenterNet——Objects as Points论文解读

    首发于深度学习那些事 已关注写文章   扔掉anchor!真正的CenterNet——Objects as Points论文解读 OLDPAN 不明觉厉的人工智障程序员 ​关注他 JustDoIT 等 ...

  9. NIPS2018最佳论文解读:Neural Ordinary Differential Equations

    NIPS2018最佳论文解读:Neural Ordinary Differential Equations 雷锋网2019-01-10 23:32     雷锋网 AI 科技评论按,不久前,NeurI ...

  10. [论文解读] 阿里DIEN整体代码结构

    [论文解读] 阿里DIEN整体代码结构 目录 [论文解读] 阿里DIEN整体代码结构 0x00 摘要 0x01 文件简介 0x02 总体架构 0x03 总体代码 0x04 模型基类 4.1 基本逻辑 ...

随机推荐

  1. Java Heap

    堆 堆是一种基于树的数据结构,是一种完全二叉树,堆中的所有的节点都按照特定的顺序排列. 在堆数据结构中,如果任意父节点的值都大于其子节点,则会产生一个大顶堆:反之,如果任意父节点的值都小于其子节点,则 ...

  2. python移动同名文件

    import os import shutil def split_name(file): file_name, _ = file.split('.') return file_name def mo ...

  3. Unity快手上手【熟悉unity编辑器,C#脚本控制组件一些属性之类的】

    Unity学习参考文档和开发工具 unity的官网文档:https://docs.unity3d.com/cn/current/Manual/ScriptingSection.html ■ 学习方式: ...

  4. Karmada 多云容器编排引擎支持多调度组,助力成本优化

    摘要:Karmada 社区也在持续关注云成本的管理,在最近发布的 v1.5 版本中,支持用户在分发策略 PropagationPolicy/ClusterPropagationPolicy 中设置多个 ...

  5. 一文讲透产品经理如何用好ChatGPT

    作者:京东零售 何雨航 "4.0版本的ChatGPT可以有效提升产品经理工作效率,但并无法替代产品经理的角色." 一.引言 3月15日,OpenAI发布了最新的基于GPT-4的Ch ...

  6. 【解决方法】正常游览Flash页面,解决主流游览器的不支持问题(如Edge,Firefox)

    环境: 工具:360游览器-某特殊版本 系统版本:Windows 10 视频链接:[[解决方法]正常浏览flash页面,解决主流浏览器的不支持问题] https://www.bilibili.com/ ...

  7. AspNetCoreRateLimit应用于MVC项目求助

    AspNetCoreRateLimit应用于MVC项目求助 前言 之前发过一篇文章: .NET Core WebApi接口ip限流实践 - 妙妙屋(zy) - 博客园 (cnblogs.com) 然后 ...

  8. 面试精灵:Java后端靠谱、强大的面试题网站(稳拿offer)

    ​面试精灵:一个给力的Java后端面试题网站. 网址:https://offer.skyofit.com 这套题真实.高频.全面.有详细答案.保你稳过面试,让你成为offer收割机.题目包括:Java ...

  9. SQL课设之报刊订阅管理

    E-R图: 一些常用命令: 1.登录mysql 2.选择进入数据库  相关SQL代码如下: CREATE TABLE Administrator( Gname varchar(50)PRIMARY K ...

  10. 2022-03-11:int n, int[][] roads, int x, int y, n表示城市数量,城市编号0~n-1, roads[i][j] == distance,表示城市i到城市j距

    2022-03-11:int n, int[][] roads, int x, int y, n表示城市数量,城市编号0~n-1, roads[i][j] == distance,表示城市i到城市j距 ...