Scaling Instruction-Finetuned Language Models

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 说要全文背诵的文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/17454.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue sku商品规格多选

vue sku商品规格多选 1.创建一个数据对象,用于存储SKU的选中状态。例如,可以使用一个数组来表示选中的SKU,每个元素代表一个SKU选项的id。 data() {return {selectedOptions: []} }2.在SKU选项列表中,使用v-bind:class绑定一个计…

基于双层优化的微电网系统规划设计方法(Matlab代码实现)

目录 💥1 概述 1.1 微电网系统结构 1.2 微电网系统双层规划设计结构 1.3 双层优化模型 1.4 上层容量优化模型 1.5 下层调度优化模型 📚2 运行结果 🎉3 文献来源 🌈4 Matlab代码、数据、文章讲解 💥1 概述 文献来源&…

Meta “地平线世界”移动端应用即将上线,手机快乐元宇宙?

根据海外记者 Janko Roettgers 的报道,Meta 预计很快推出移动版的 VR 元宇宙服务 "地平线世界",这是Meta 长期开发的产品。 根据最新报道,Meta宣布正在研发“地平线世界”的移动版,并表示这一服务已经可以在Quest VR设…

LInux的安装(VMware,网卡设置,SSH连接工具)

Linux的安装 1、安装方式介绍 1.安装方式: 物理机安装:直接将操作系统安装到服务器硬件上 虚拟机安装:通过虚拟机软件安装 **虚拟机( Virtual Machine)**指通过软件模拟的具有完整硬件系统功能、运行在完全隔离环境中的完整计算机系统。 2、安装Linux 在官网将…

PoseiSwap:首个基于模块化设施构建的订单簿 DEX

在前不久,PoseiSwap 曾以1000万美元的估值,获得了来自于ZebecLabs基金会的150万美元的融资。此后 PoseiSwap 又以2500万美元的估值,从GateLabs、EmurgoVentures、Republic以及CipholioVentures等行业顶级投资机构中,获得了新一轮未…

Vue2面试题

1. Vue 的基本原理 当 一 个 Vue 实 例 创 建 时 , Vue 会 遍 历 data 中 的 属 性 , 用 Object.defineProperty ( vue3.0 使 用 proxy) 将 它 们 转 为 getter/setter,并且在内部追踪相关依赖,在属性被访…

Java课题笔记~Maven基础知识

一、什么是Maven? Maven是专门用于管理和构建Java项目的工具。 它的主要功能有: 提供了一套标准化的项目结构提供了一套标准化的构建流程(编译,测试,打包,发布……)提供了一套依赖管理机制 …

子域名收集工具OneForAll的安装与使用-Win

子域名收集工具OneForAll的安装与使用-Win OneForAll是一款功能强大的子域名收集工具 GitHub地址:https://github.com/shmilylty/OneForAll Gitee地址:https://gitee.com/shmilylty/OneForAll 安装 1、python环境准备 OneForAll基于Python 3.6.0开发和…

Kotlin基础(九):对象和委托

前言 本文主要讲解kotlin对象和委托。 Kotlin文章列表 Kotlin文章列表: 点击此处跳转查看 目录 1.1 对象 在Kotlin中,对象(Object)是一个具有特殊用途的单例实例。它是一种创建单个实例的方式,确保在整个应用程序中只存在一个特…

(树) 剑指 Offer 32 - II. 从上到下打印二叉树 II ——【Leetcode每日一题】

❓剑指 Offer 32 - II. 从上到下打印二叉树 II 难度:简单 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3/ \9 20/ \15 7返回其层次遍历结果&#xff1a…

详解顺序表功能

前言 随着我们C语言的不断深入学习,我们要开始学习一点数据结构来增加我们的内功了,虽说现在很多高级语言的顺序表,链表等可以不用自己实现,但在C语言中是需要我们自己来实现的,这并不能说明C语言和其他语言比C语言很…

使用WebMvcConfigurationSupport后导致原来返回的json数据变为了xml的解决方法

问题 未使用WebMvcConfigurationSupport拦截时返回的数据都是JSON格式,使用WebMvcConfigurationSupport做拦截后数据的返回变为了XML的格式。 原因 在Spring框架中,WebMvcConfigurationSupport 是一个类,它可以用于自定义Spring MVC的配置…

【模型预测控制MPC】使用离散、连续、线性或非线性模型对预测控制进行建模(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

LLM微调 | Adapter: Parameter-Efficient Transfer Learning for NLP

目的:大模型预训练+微调范式,微调成本高。adapter只只微调新增的小部分参数【但adapter增加了模型层数,引入了额外的推理延迟。】 Adapters最初来源于CV领域的《Learning multiple visual domains with residual adapters》一文,其核心思想是在神经网络模块基础上添加一些残…

【Python机器学习】实验04(1) 多分类(基于逻辑回归)实践

文章目录 多分类以及机器学习实践如何对多个类别进行分类1.1 数据的预处理1.2 训练数据的准备1.3 定义假设函数,代价函数,梯度下降算法(从实验3复制过来)1.4 调用梯度下降算法来学习三个分类模型的参数1.5 利用模型进行预测1.6 评…

CS162 13-17 虚拟内存

起源 为啥我们需要虚拟内存-----------需求是啥? 可以给程序提供一个统一的视图,比如多个程序运行同一个代码段的话,同一个kernel,就可以直接共享 cpu眼里的虚拟内存 无限内存的假象 设计迭代过程 为啥这样设计? 一…

安装vite-plugin-svg-icons

找不到合适的图标,如何使用其他的svg图标? 安装vite-plugin-svg-icons 使用svg-icon,即可使用iconfont等svg图标库 安装及使用过程 一、安装依赖二、在src/assets新建svg目录三、vite.config.js中进行配置四、在main.js中导入文件五、在compo…

Redis篇

文章目录 Redis-使用场景1、缓存穿透2、缓存击穿3、缓存雪崩4、双写一致5、Redis持久化6、数据过期策略7、数据淘汰策略 Redis-分布式锁1、redis分布式锁,是如何实现的?2、redisson实现的分布式锁执行流程3、redisson实现的分布式锁-可重入4、redisson实…

技术复盘(5)--git

技术复盘--git 资料地址原理图安装配置基本命令分支命令对接gitee练习:远程仓库操作 资料地址 学习地址-B站黑马:https://www.bilibili.com/video/BV1MU4y1Y7h5 git官方:https://git-scm.com/ gitee官网:https://gitee.com/ 原理图 说明&am…

Twitter 劲敌 Threads,“魔改”了哪些 Python 技术栈?

Meta 创始人 Mark Zuckerberg 昨天在 Threads 上宣布,周三正式上线的 Threads 注册量已突破三千万。 Threads 是一个基本文本的社交应用,由 Instagram 团队开发。虽然它在功能上还无法真正取代 Twitter,但目前看来事实上已是 Twitter 的替代方…