Scaling Instruction-Finetuned Language Models

2023-11-13

Paper name

Scaling Instruction-Finetuned Language Models

Paper Reading Note

Paper URL: https://arxiv.org/pdf/2210.11416.pdf

TL;DR

  • 2022 年谷歌出的文章,对指令微调的影响因素进行分析,提出了一些提升指令微调效果的方案。与该文章一起出品的数据集 Flanv2 也是业界公认的高质量微调数据集,对于各种公开榜单刷榜有重要意义

Introduction

背景

  • 人工智能的一个重要目标是开发可以推广到看不见的任务的模型。在自然语言处理 (NLP) 中,预训练的语言模型朝着这个目标取得了重大进展,因为它们可以在给定自然语言描述的情况下执行任务,但这需要一些提示词工程(few-shot 示例)来进行协助
  • 通过在表示为指令的任务集合上微调语言模型,已经取得了进一步的进展,这使得模型能够更好地响应指令,并减少对 few-shot 示例的需求

本文方案

  • 本文提出了几种优化指令微调的方式
    • 研究了缩放对指令微调的影响
      • 与微调指令的任务数量有关,任务数量越多效果越好
      • 与模型的大小有关,模型越大效果越好
    • 研究了指令微调对推理任务的影响
      • 微调指令中增加思维链(CoT)数据能提升效果

在这里插入图片描述

  • 本文贡献
    • 使用 540B 参数模型训练 Flan-PaLM,将微调任务的数量增加到 1.8K,包括 CoT 数据。Flan-PaLM 优于 PaLM,在几个基准测试中实现了最优效果。比如 MMLU 实现了 75.2 的精度
    • 与 PaLM 相比,Flan-PaLM 也提高了多语言能力,例如 one-shot TyDiQA 的绝对精度提升为 14.9%,代表性不足语言的算术推理的绝对提升为 8.1%
    • 在人工评估员评估中,Flan-PaLM 在一组具有挑战性的开放式生成问题上大大优于 PaLM,这表明可用性有所提高
    • 指令微调 Flan-T5 模型(80M 到 11B)。这些 checkpoints 具有很强的 zeroshot、few-shot 和 CoT 能力,优于之前的 T5 模型。

在这里插入图片描述

Methods

Flan Finetuning

  • 将指令微调称为 Flan(Finetuning language models),加上 Flan 的模型指代微调后的模型,比如 Flan-PaLM。指令微调的流程可适配以下多种模型结构
    在这里插入图片描述

微调数据

  • 多个任务混合,如下图所示,包含 Muffin, T0-SF, NIV2, CoT 四个混合数据源,一共 1836 个微调任务,数据集就包含了 473 个
    在这里插入图片描述
  • 上图推理部分包含了 CoT 数据,用它来探索对 CoT 注释进行微调是否可以提高 unseen 场景下的推理任务的性能
    • 从先前的工作中创建了一个包含九个数据集的新混合,人类评分者手动为训练语料库编写 CoT 注释,九个数据集主要包含算术推理、multi-hop 推理、自然语言推理任务,每个任务手动编写十个指令模板
  • 模板设置
    • 对于 Muffin、T0-SF 和 NIV2,我们为每个任务使用指示性模板,由各个数据源的创建者给出
    • 对于 CoT,手动为九个数据集中的每个数据集编写了大约十个指令模板,包含/不包含 CoT 数据基于带/不带 few-shot 的样例数据如下
      在这里插入图片描述

finetuning 流程

  • T5、PaLM、U-PaLM 的不同尺寸模型都进行训练,训练流程一致,除了少量超参数:学习率、batch size、dropout 和训练 step 数目
    • 使用 Adafactor 优化器,恒定学习率
    • 使用 packing 将多个训练示例组合成一个序列,使用序列结束标记将输入与目标分开
    • masking 操作:用于防止 token 在 packing 的示例边界关注其他 token
    • 对于每个模型,对所有后续评估评估都仅使用某个固定 checkpoint;最佳 checkpoint 是基于评测任务的定期评估(每个 2k 到 10k 步,具体取决于模型大小),并且在给定模型的所有消融实验中都使用相同的 checkpoint 步骤数
    • 微调的计算资源消耗与预训练相比很小,例如只使用 0.2% 的预训练计算来指导微调 Flan-PaLM 540B(大约 512 v4 TPU 芯片 37 小时)

模型和任务规模的缩放效应

  • 以下图片的纵坐标是在多个评测集上的结果平均后的结果,随着模型规模提升精度提升,另外随着微调任务提升精度也提升
    在这里插入图片描述
    在这里插入图片描述
  • 从以上实验可以提取出的一些经验
    • 增加模型规模稳定涨点,不管是微调前还是微调后的
    • 指令微调对于大模型和小模型的提升幅度基本差不多。如果指令数据的任务足够多,看起来是小模型的绝对提升幅度大于大模型。但是这样评估也不一定科学,比如 8B 模型的绝对增益大于 540B 模型(8B 为 15.5%,5.4B 为 9.4%),但 540B 模型的错误率的相对减少更大(18.4% 540 B vs 16.6% 8B)
    • 增加任务种类涨点,282 个任务后的涨点幅度变小,可能有两种解释
      • 282 个任务之后的任务不是特别多样化,没有提供具有新知识的模型
      • 多任务指令微调的大部分收益来自让模型更好表达预训练过程中模型已经知道的知识,超过 282 个任务后作用就不大了。作者认为这个解释是有道理的,因为预训练数据由 780B 个 token 组成,而指令微调仅使用 1.4B 个 token(预训练标记的 0.2%)

CoT 的影响

  • CoT 的影响分为两方面

    • CoT 训练数据:从上节表格中,可以看出 CoT 的数据增加有明显涨点
    • CoT prompt:对于大尺度模型(540B)在推理性任务(比如 BBH)上有涨点,知识性任务(MMLU)上不论大小模型都掉点
  • CoT 如何结合 self-consistency 对于大模型可以显著涨点;指令微调后的模型 (Flan-PaLM)相比于预训练模型(PaLM)稳定涨点
    在这里插入图片描述

  • 同时使用 CoT 和 non-CoT 数据的精度最高;可以看出如果没有 CoT 数据引入,微调是掉点的(对于 CoT 评测任务),但是增加 CoT 数据后微调能涨点。这说明为了保持推理能力,对某些 CoT 示例进行微调至关重要
    在这里插入图片描述

  • 训练任务中有 CoT 的数据可以解锁 zero-shot 推理能力:对于预训练模型,使用 CoT prompt 无法涨点,但是对于微调后的模型,使用 CoT 能涨点。CoT 的方式为使用经典的 “let’s think step-by-step”
    在这里插入图片描述
    一些使用 CoT 的样例对比如下

在这里插入图片描述

Experiments

  • 基于 Flanv2 数据集训练的模型都能稳定涨点
    在这里插入图片描述

  • 基于人工评测模型的开放域问答能力,微调后的模型效果更佳
    在这里插入图片描述

Thoughts

  • 本文一些重要结论汇总
    • 指令微调对于大模型和小模型的提升幅度基本差不多。如果指令数据的任务足够多,小模型的绝对提升幅度大于大模型
    • 增加模型规模稳定涨点
    • 增加任务种类涨点,但增加任务种类在 282 个任务后的涨点幅度变小
    • 微调的计算资源消耗与预训练相比很小,例如只使用 0.2% 的预训练计算来指导微调 Flan-PaLM 540B(大约 512 v4 TPU 芯片 37 小时)
    • 指令微调后的模型 (Flan-PaLM)相比于预训练模型(PaLM)稳定涨点
    • 同时使用 CoT 和 non-CoT 数据的精度最高
    • 训练任务中有 CoT 的数据可以解锁 zero-shot 推理能力
  • CoT + self-consistency 对于大模型(540B)刷榜很有效
  • 文章实验充分且解释详尽,不愧是 yaofu 说要全文背诵的文章
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scaling Instruction-Finetuned Language Models 的相关文章

随机推荐

  • 计算机组成原理 总线与微命令实验

    总线与微命令实验 实验环境 计算机组成原理实验环境 实验目的 理解总线的概念和作用 连接运算器与存储器 熟悉计算机的数据通路 理解微命令与微操作的概念 实验要求 做好实验预习 读懂实验电路图 熟悉实验元器件的功能特性和使用方法 按照实验内容
  • 手把手教你阅读开源代码【附Python开源项目包】

    文末领取 Python开源项目包 1 为什么要阅读开源代码 阅读 Python 开源项目代码主要有如下三个原因 在工作过程中遇到一些问题 Google 和 StackOverFlow 等网站找不到解决办法 只能去翻源码 对某些项目或者方向非
  • VS2010 error LNK2019: unresolved external symbol _WinMain

    MSVCRTD lib crtexew obj error LNK2019 unresolved external symbol WinMain 16 referenced in funct 本来应该是console application
  • 用C写小游戏(扫雷)

    扫雷 前言 实现的基本要素 菜单 雷区设置与打印 1 雷区 2 布置雷 3 打印雷区 雷范围标识与排雷 1 雷范围标识 2 排雷 代码展示 前言 说到扫雷大家都不陌生吧 特别是windowsXP开始的菜单中找到的小游戏中最吸引我们的便是扫雷
  • coroutines 学习随笔「一」

    文章目录 前言 疑问1 为啥用协程还要添加一个额外的依赖库 太奇怪了 我的runBlocking launch withContext 等等都哪去了 跟踪到标准库去看看 从现在开始进入到标准库了 下个小结论 this is BaseCont
  • 猿创征文|深聊MySQL,从入门到入坟之:应该是全网最详细的MySQL知识点汇总,必须收藏。

    MySQL详细知识点汇总 1 引言 2 MySQL知识点汇总 2 1 链接与断开 2 2 启动与创建服务 2 3 数据库操作 2 4 表操作 2 5 数据操作 2 6 字符集编码 2 7 数据类型 2 7 1 数值类型 2 7 2 字符串类
  • multipart/form-data的使用注意

    问题描述 事情是这样的 我在使用ajax FormData对象提交数据的时候 使用request setRequestHeader Content Type application x www form urlencoded 但服务端接受的
  • 用ACL实现防火墙功能

    目录 一 实验目的 二 实验环境 三 实验内容 实验步骤 测试数据等 1 打开Cisco Packet Tracer 6 0 按以下拓扑图接好线路 PC与Server的IP地址 掩码 网关配置 路由器连接配置 2 配置好设备的IP地址和静态
  • Java线程的5种状态及状态之间转换

    Java中的线程的生命周期大体可分为5种状态 1 新建 NEW 新创建了一个线程对象 2 可运行 RUNNABLE 线程对象创建后 其他线程 比如main线程 调用了该对象的start 方法 该状态的线程位于可运行线程池中 等待被线程调度选
  • 笔记/OSI七层模型

    层级 名称 功能 协议 设备 协议数据单元 7 应用层 为应用程序提供网络服务 对应用程序提供接口 HTTP 80 TCP 超文本传输 Telnet 23 TCP 远程登陆 FTP 20 21 TCP 文件传输 SMTP 25 TCP 简单
  • AD器件距离过近报错 AD修改丝印的距离间距

    今天画板子遇见了一个间距报错 图片如下 我当时想着 修改丝印的间距就可以了 查找了一些资料之后发现是这样修改 并且我将其修改到了0 但是结果还是如上图一样 报错 最后发现除此之外 我们还需要修改元件之间的电气距离 修改完成之后就OK
  • Thinkpad笔记本快捷键大全

    Thinkpad笔记本快捷键大全 FN F2 锁定屏幕 FN F3 关闭屏幕 FN F4 待机 FN F5 无线和蓝牙开关 FN F7 不同显示设备输出切换 FN F9 安全删除硬件 FN F12 休眠 FN 空格 放大 其实就是降低分辨率
  • JackSonUtil JSONArray转换工具

    import com fasterxml jackson core type TypeReference import com fasterxml jackson databind ObjectMapper public final cla
  • Ubuntu安装nginx到配置ssl证书

    1 命令安装nginx sudo apt get install nginx 配置文件默认在 etc nginx文件夹下面 可以编辑nginx conf 或者 sites enabled文件夹下面的默认配置文件 default 2 常用命令
  • linux定时删除文件或文件夹

    本文转载自 https blog csdn net jiangnan8710 article details 51849748 linux新人 个人记录以后备用 一 常用的命令 1 查询命令 find 在删除日志前 首先要做的是查找日志所在
  • dos命令之md详解及实例应用

    dos命令之md详解及实例应用 用来创建文件夹dos的命令只有md 其英文解释为 makedirectory在windows2000 xp vista win7使用方法及实例如下 在命令行窗口输入md 可得到一份帮助信息如下图 例1 如果在
  • python爬取整个网站的广告敏感词_Python实现敏感词过滤的4种方法

    在我们生活中的一些场合经常会有一些不该出现的敏感词 我们通常会使用 去屏蔽它 例如 尼玛 gt 一些骂人的敏感词和一些政治敏感词都不应该出现在一些公共场合中 这个时候我们就需要一定的手段去屏蔽这些敏感词 下面我来介绍一些简单版本的敏感词屏蔽
  • 全国首富排行居然有他?用Python采集全国富豪榜五百名。

    背景 今天刷到一则文章 就是国内某富豪花重金迎娶泰国某 皇后 可谓是有点颠覆了我的三观啊 有钱人都玩的这么花的吗 这里内容就不一一讲了 毕竟看咱文章的都是想来学技术的 那就废话不多说 开始干活 正文 相关模块 今天不用其他的什么模块 pyt
  • linux系统使用rsync做主备服务器文件同步

    根据本文档设置 可以实现备机自动同步主机中的文件 注意 此方式缺陷为 如果主机文件修改 但是文件大小无变化或者文件变小时 无法自动同步到备机中 只有主机中文件修改后变大或者名称修改才能自动同步 一 LINUX服务器间免密登录设置 先执行 u
  • Scaling Instruction-Finetuned Language Models

    Paper name Scaling Instruction Finetuned Language Models Paper Reading Note Paper URL https arxiv org pdf 2210 11416 pdf