Raki的读paper小记:SELF-INSTRUCT: Aligning Language Models with Self-Generated Instructions

2023-10-30

Abstract&Introduction&Related Work

  • 研究任务
    改进大模型遵循指令的能力,SELF-INSTRUCT提供了一种几乎无需注释的方法来使预训练语言模型与指令对齐
  • 已有方法和相关工作
    • 许多研究提出使用语言模型进行数据生成(Schick和Schütze,2021; Wang等,2021; Liu等,2022; Meng等,2023)或数据增强(Feng等,2021; Yang等,2020; Mekala等,2022)
    • 知识蒸馏。知识蒸馏(Hinton等,2015; Sanh等,2019; West等,2021; Magister等,2022)通常涉及将大型模型的知识转移给较小的模型。SELF-INSTRUCT也可以被看作是一种“知识蒸馏”的形式,然而,它与知识蒸馏的区别在于:(1)蒸馏的源和目标是相同的,即模型的知识被蒸馏到自身;(2)蒸馏的内容以任务的形式存在(即定义任务的指令和一组实例)
    • Bootstrapping with limited resources.:最近的一系列研究使用语言模型通过专门的方法进行自助引导。NPPrompt(Zhao等,2022)提供了一种方法,在没有进行微调的情况下生成语义标签的预测。它使用模型自身的嵌入来自动找到与数据样本标签相关的单词,从而减少了从模型预测到标签(verbalizers)的手动映射的依赖性。STAR(Zelikman等,2022)通过迭代地利用少量的含有理由的示例和大量不含理由的数据集,来引导模型进行推理能力的自助引导。Self-Correction(Welleck等,2023)将一个不完善的基础生成器(模型)与一个独立的校正器分开,后者学会迭代地纠正不完善的生成结果,并在基础生成器上展示了改进
  • 面临挑战
    收集指令数据代价很大并且多样性有限,
  • 创新思路
    • 使用模型自身的指令信号来调优预训练的语言模型。整个过程是一个迭代的自举算法
  • 实验结论
    GPT3SELF-INST的性能大幅优于GPT3(原始模型)(+33.1%),并且几乎与InstructGPT001的性能相当

用GPT3生成的instructions
在这里插入图片描述

贡献:
(1) 我们引入了SELF-INSTRUCT,一种使用最少人工标记数据诱导指令遵循能力的方法;(2) 我们通过广泛的指令调优实验证明了其有效性;(3) 我们发布了一个大规模的合成数据集,包含52,000个指令,以及一组手动编写的新任务,用于构建和评估未来的指令遵循模型。

  1. 首先从一个有限的(比如研究中的175个)手动撰写的任务种子集开始,用于指导整体生成
  2. 在第一阶段,模型被提示为新任务生成instruction。这一步利用现有的指令集来创建更广泛覆盖的instruction,用于定义(通常是新的)任务
  3. 在得到新生成的指令集后,该框架还为它们创建输入-输出实例,这些实例可以在后续的指令调优过程中用于监督
  4. 最后在将低质量或重复的指令自动过滤掉之前,使用各种启发式方法将剩余的有效任务添加到任务池中。这个过程可以重复多次,直到获得大量任务
    在这里插入图片描述

SELF-INSTRUCT是一种生成任务指令数据的方法,它使用预训练的普通语言模型自身来生成任务,经过过滤和调优,可以让模型更好地遵循指令。方法的流程包括定义指令数据、自动指令数据生成、过滤和后处理以及LM调优。

  1. 定义指令数据:指令数据包含一组指令,每个指令用自然语言描述一个任务,并包含对应的输入-输出实例。模型被期望根据指令和输入生成相应的输出
  2. 自动指令数据生成:使用自助引导的方式从一小组人工撰写的种子指令中生成新的指令。根据生成的指令是否表示分类任务,使用先输入后输出或先输出后输入的方法生成实例,并过滤低质量数据
  3. 过滤和后处理:为了鼓励多样性,只有当新的指令与已有指令的ROUGE-L相似度小于0.7时,才将新的指令添加到任务池中。同时,过滤掉完全相同或输入相同但输出不同的实例,并排除一些特定关键词的指令
  4. LM调优:使用创建的指令数据对原始LM进行微调,通过将指令和实例输入连接在一起进行监督训练,使模型更好地遵循指令。

在应用SELF-INSTRUCT到GPT3的案例研究中,研究了生成数据的多样性和质量。生成的指令包含多样的意图和文本格式,与种子指令有较低的重叠。在质量方面,大部分生成的指令都是有意义的,生成的实例可能会包含一些噪声,但仍有用于训练模型遵循指令的价值

SELF-INSTRUCT方法通过自动生成指令和实例数据,克服了人工标注大规模指令数据的挑战。通过自我引导的方式,不断扩充任务池,生成更多的任务指令和实例,从而实现了大规模数据的生成。方法中提到使用多个模板来处理不同格式的指令和实例输入,这样能够提高模型的鲁棒性。生成的数据具有一定的多样性,涵盖了不同的意图和文本格式,这有助于提高模型的泛化能力。

在质量方面,生成的数据虽然可能存在一些噪声,但大多数仍然是正确格式或部分正确的,这为训练模型遵循指令提供了有用的指导。这意味着自动生成的数据虽然不完美,但仍然具有一定的实用性和可行性,为解决大规模任务指令数据标注的瓶颈问题提供了新的思路和方法。这对于推动自然语言处理领域的发展,特别是在通用模型和多任务学习方向上,具有重要的意义。然而,还需要进一步研究和改进,以提高自动生成数据的质量和适用性

Experiments

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Conclusions

文章引入了SELF-INSTRUCT,一种通过其自己生成的指令数据来改进语言模型(LM)的遵循指令能力的方法。在对普通的GPT3进行实验后,我们自动生成了一个包含52,000个指令的大规模数据集,涵盖了多样化的任务。将GPT3在这个数据集上进行微调后,在SUPERNI任务上相对于原始的GPT3取得了33%的绝对改进。此外,我们策划了一组由专家撰写的用于新任务的指令。对这组数据进行人工评估显示,使用SELF-INSTRUCT微调的GPT3在性能上大幅优于使用现有公共指令数据集,并且接近于InstructGPT001的表现。我们希望SELF-INSTRUCT可以作为第一步,将预训练的语言模型与人类指令保持一致,未来的研究可以在此基础上继续改进遵循指令的模型。

Remark

一种有意思的用自监督来克服数据资源不够的困境的方法,期待后续工作改进

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Raki的读paper小记:SELF-INSTRUCT: Aligning Language Models with Self-Generated Instructions 的相关文章

  • 比较文本文档含义的最佳方法?

    我正在尝试找到使用人工智能和机器学习方法来比较两个文本文档的最佳方法 我使用了 TF IDF Cosine 相似度和其他相似度度量 但这会在单词 或 n gram 级别上比较文档 我正在寻找一种方法来比较meaning的文件 最好的方法是什
  • BERT - 池化输出与序列输出的第一个向量不同

    我在 Tensorflow 中使用 BERT 有一个细节我不太明白 根据文档 https tfhub dev google bert uncased L 12 H 768 A 12 1 https tfhub dev google bert
  • 使用我自己的训练示例训练 spaCy 现有的 POS 标记器

    我正在尝试在我自己的词典上训练现有的词性标注器 而不是从头开始 我不想创建一个 空模型 在spaCy的文档中 它说 加载您想要统计的模型 下一步是 使用add label方法将标签映射添加到标记器 但是 当我尝试加载英文小模型并添加标签图时
  • Blenderbot 微调

    我一直在尝试微调 HuggingFace 的对话模型 Blendebot 我已经尝试过官方拥抱脸网站上给出的传统方法 该方法要求我们使用 trainer train 方法来完成此操作 我使用 compile 方法尝试了它 我尝试过使用 Py
  • Spacy 中的自定义句子分割

    I want spaCy使用我提供的句子分割边界而不是它自己的处理 例如 get sentences Bob meets Alice SentBoundary They play together gt Bob meets Alice Th
  • 否定句子的算法

    我想知道是否有人熟悉算法句子否定的任何尝试 例如 给定一个句子 这本书很好 请提供任意数量的意思相反的替代句子 例如 这本书不好 甚至 这本书不好 显然 以高精度实现这一点可能超出了当前 NLP 的范围 但我确信在这个主题上已经有了一些工作
  • ANEW 字典可以用于 Quanteda 中的情感分析吗?

    我正在尝试找到一种方法来实施英语单词情感规范 荷兰语 以便使用 Quanteda 进行纵向情感分析 我最终想要的是每年的 平均情绪 以显示任何纵向趋势 在数据集中 所有单词均由 64 名编码员按照 7 分李克特量表在四个类别上进行评分 这提
  • 缩短文本并仅保留重要句子

    德国网站 nandoo net 提供了缩短新闻文章的可能性 如果使用滑块更改百分比值 文本会发生变化并且某些句子会被遗漏 您可以在这里看到它的实际效果 http www nandoo net read article 299925 http
  • 如何提取句子中的主语及其各自的从属短语?

    我正在尝试在句子中进行主题提取 以便我能够根据主题获得情感 我在用nltk在 python2 7 中用于此目的 以下面的句子为例 Donald Trump is the worst president of USA but Hillary
  • PHP 和 NLP:嵌套括号(解析器输出)到数组?

    想要将带有嵌套括号的文本转换为嵌套数组 以下是 NLP 解析器的输出示例 TOP S NP PRP I VP VBP love NP NP DT a JJ big NN bed PP IN of NP NNS roses 原文 我喜欢一大床
  • 使用“自然”语言编写代码更好吗?

    我最近看到一种编程语言叫做超新星 http supernova sourceforge net 他们在网页上说 超新星编程语言是 现代脚本语言和 第一个提出了概念 用直接虚构进行编程 描述使用 纯人类语言的清晰子集 你可以编写如下代码 i
  • 给定文档,选择相关片段

    当我在这里提出问题时 自动搜索返回的问题的工具提示给出了问题的前一点 但其中相当一部分没有给出任何比理解问题更有用的文本 标题 有谁知道如何制作一个过滤器来删除问题中无用的部分 我的第一个想法是修剪仅包含某个列表中的单词的任何前导句子 例如
  • 如何使用FeatureUnion转换PipeLine中的多个特征?

    我有一个 pandas 数据框 其中包含有关用户发送的消息的信息 对于我的模型 我感兴趣的是预测消息的缺失收件人 即给定消息的收件人 A B C 我想预测还有谁应该成为收件人的一部分 我正在使用 OneVsRestClassifier 和
  • FastText - 由于 C++ 扩展未能分配内存,无法加载 model.bin

    我正在尝试使用 FastText Python APIhttps pypi python org pypi fasttext https pypi python org pypi fasttext虽然 据我所知 此 API 无法加载较新的
  • 对产品列表进行分类的算法? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个代表或多或少相同的产品的列表 例如 在下面的列表中 它们都是希捷硬盘 希捷硬盘 500Go 适用于笔记本电脑的希捷硬盘 120
  • 如何将句子或文档转换为向量?

    我们有将单词转换为向量的模型 例如 word2vec 模型 是否存在类似的模型 可以使用为单个单词学习的向量将句子 文档转换为向量 1 跳克法 以及使用它的工具 谷歌 word2vec https code google com p wor
  • 如何使用Bert进行长文本分类?

    我们知道 BERT 有 token 的最大长度限制 512 因此如果一篇文章的长度远大于 512 例如文本中有 10000 个 token 如何使用 BERT 您基本上有三个选择 您可以剪掉较长的文本并仅使用前 512 个令牌 最初的 BE
  • Spacy提取特定名词短语

    我可以在 python 中使用 spacy 来查找具有特定邻居的 NP 吗 我想要文本中前后都有动词的名词短语 您可以合并名词短语 这样它们就不会单独标记化 分析依存解析树 查看相邻标记的 POS gt gt gt import spacy
  • 在Python中表示语料库句子的一种热门编码

    我是 Python 和 Scikit learn 库的初学者 我目前需要从事一个 NLP 项目 该项目首先需要通过 One Hot Encoding 来表示一个大型语料库 我已经阅读了 Scikit learn 关于 preprocessi
  • 有人可以简单解释一下自然语言处理的要素吗?

    我是自然语言处理的新手 对所使用的术语感到困惑 什么是代币化 POS 标签 实体识别 标记化只是将文本分割成可以有意义的部分或为这些部分赋予含义 以及含义 当我确定某物是名词 动词或形容词时 它的名字是什么 如果我想分为日期 姓名 货币呢

随机推荐

  • vue.js:基于nodejs使用log4js输出日志文件

    一 问题 开发web项目过程中 常规的console log 只是将信息反映在了浏览器的控制台 我们经常需要输出到文本日志文件 以便开发调试和维护排查 下面介绍log4js在vue项目中的部署与使用 二 解决方案 1 安装log4j 注意
  • IntelliJ IDEA2022(破译版)安装教程

    首先先下载一个压缩包 里面安装包破译插件都有 通过百度网盘分享的文件 JetBrain zip 链接 https pan baidu com s 1mBQUacDIf39AJtR wGZ bw 提取码 P95C 复制这段内容打开 百度网盘A
  • 全局负载均衡(GSLB)的实现方案

    What is GSLB Global Server Load Balancing 中文 全局负载均衡 SLB Server load balancing 是对集群内物理主机的负载均衡 而GSLB是对物理集群的负载均衡 这里的负载均衡可能不
  • python驱动DDT框架应用--实战举例

    步骤 创建一个python file ddttest 引入ddt 更新ddt File Settings 双击pip 搜索框输入 ddt 实例讲解 传入一个参数 import unittest from ddt import ddt dat
  • 2022全国职业技能大赛-网络安全赛题解析总结⑨(超详细)

    2022全国职业技能大赛 网络安全赛题解析总结 自己得思路 模块A 基础设施设置与安全加固 20分 模块B 网络安全事件响应 数字取证调查和应用安全 40分 模块C CTF夺旗 攻击 20分 模块D CTF夺旗 防御 20分 有什么不懂得可
  • openstack调优

    cinder限速 为了减缓来自实例的数据访问速度的减慢 openstack block storage支持对卷数据复制带宽的速率限制 请修改cinder后端配置文件将文件卷复制带宽限制为最高100MB s The upper limit o
  • arm 关于m a r系列区别

    arm系列contex的a r m的区别 从cortex开始 分为三个系列 a系列 r系列 m系列 m系列与arm7相似 不能跑操作系统 只能跑ucos2 偏向于控制方面 说白了就是一个高级的单片机 a系列主要应用在人机互动要求较高的场合
  • Github Copilot连接不上服务器

    现象 报错 ERROR default 2023 09 08T15 47 01 542Z GitHub Copilot could not connect to server Extension activation failed conn
  • Python 2.7下下载并安装nltk (自然语言处理工具包)

    1 在cmd窗口中 进入到python的文件夹内的 Scripts内 我的目录地址是 D using Python Scripts 命令行输入 easy install pip 运行结束后 安装PyYAML and NLTK 命令行输入 p
  • c++ 中bool 的默认值

    比如在Test h中定义变量 isFirst Test h头文件 ifndef TEST H define TEST H class Test private bool isFirst endif 然后访问它 include Test h
  • Java面试题整理——网络

    Java面试题整理 网络 网络 1 常用的 http 响应码及含义 200 OK 请求成功 这是对HTTP请求成功的标准应答 201 Created 请求创建被完成 同时新的资源被创建 202 Acceptd 供处理的请求已被接受 但是处理
  • 【VxWorks】Vxworks、QNX、Xenomai、Intime、Sylixos、Ucos等实时操作系统的性能特点

    目录 1 VxWorks操作系统 2 QNX操作系统 3 Xenomai操作系统 4 INtime操作系统 5 SylixOS操作系统 5 1 SylixOS官网
  • uniapp 跳转传参 [‘object‘] 问题解决, 遇坑解决

    普通 号拼接传参不知道什么原因 接收参数时转换数据失败 换成模板传参试试 解决 传 ckgd productList 传参时先转为json 一定要用模板字符串传参 如下 uni navigateTo url pagesA service d
  • MySQL执行器与存储引擎是怎么交互的

    体系结构 1 连接器 2 查询缓存 3 分析器 4 优化器 多个索引 选择哪个索引 join的顺序 5 执行器 调用存储引擎接口获取满足条件的第一行记录 调用存储引擎接口获取满足条件的下一行记录 6 存储引擎 索引下推 假设现子表T有字段
  • c++泛型算法扩展和迭代器、反向迭代器

    cout lt lt 插入迭代器 lt lt endl back inserter 创建一个使用push back的迭代器 front inserter 创建一个使用push front的迭代器 inserter 创建一个使用insert的
  • bee-box

    这篇博客就是为了记下bee box做题过程 随便记记 免得忘了 安装 先去官网下载了 然后分个新的盘单独放进去 打开虚拟机 双击bee box vmx就能安装了 打开里面的火狐会自动跳去一个登录界面 默认账号和密码是bee bug 登录然后
  • GitHub 源代码被泄露了...

    阅读本文大概需要 4 分钟 来自量子位 GitHub 忽然 开源 了自己代码的一部分 还将它放在了 GitHub 上 事件起因是这样的 TypeScript 的开发者 Resynth 忽然 Po 了篇文章 表示代码托管服务 GitHub 的
  • 【牛客网OJ题】不要二

    题目描述 二货小易有一个WH的网格盒子 网格的行编号为 0 H 1 网格的列编号为0 W 1 每个格子至多可以放一块蛋糕 任意两块蛋糕的欧几里得距离不能等于2 对于两个格子坐标 x1 y1 x2 y2 的欧几里得距离为 x1 x2 x1 x
  • spring注解:@Autowired、@Qualifier、@Primary

    Autowired 默认情况下 Autowired 按类型装配 Spring Bean 如果容器中有多个相同类型的 bean 则框架将抛出 NoUniqueBeanDefinitionException 以提示有多个满足条件的 bean 进
  • Raki的读paper小记:SELF-INSTRUCT: Aligning Language Models with Self-Generated Instructions

    Abstract Introduction Related Work 研究任务 改进大模型遵循指令的能力 SELF INSTRUCT提供了一种几乎无需注释的方法来使预训练语言模型与指令对齐 已有方法和相关工作 许多研究提出使用语言模型进行数