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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux--验证命令行上运行的程序的父进程是bash

1.输入以下代码&#xff1a; #include <stdio.h> #include <unistd.h> int main() {printf("hello world: pid: %d, ppid: %d\n",getpid(),getppid());return 0; }2.编译得到可执行程序​​​ 3.运行得到ppid 4.输入指令 ps axj | head -1 &&am…

【图论】差分约束

一.情景导入 x1-x0<9 ; x2-x0<14 ; x3-x0<15 ; x2-x1<10 ; x3-x2<9; 求x3-x0的最大值&#xff1b; 二.数学解法 联立式子2和5&#xff0c;可得x3-x0<23;但式子3可得x3-x0<15。所以最大值为15&#xff1b; 三.图论 但式子多了我们就不好解了&#xff0…

Linux标准库API

目录 1.字符串函数 2.数据转换函数 3.格式化输入输出函数 4.权限控制函数 5.IO函数 6.进程控制函数 7.文件和目录函数 1.字符串函数 2.数据转换函数 3.格式化输入输出函数 #include<stdarg.h>void test(const char * format , ...){va_list ap;va_start(ap,format…

测试的概念

测试职责 需求分析 测试分析 设计测试用例 执行测试用例 掌握自动化测试技术 验证产品是否实现了应该实现的功能,或者实现了不应该实现的功能 在整个软件生命周期中&#xff0c;测试是一个贯穿始终的过程&#xff0c;它包含了不同阶段和不同类型的测试,以此来保证软件工程的稳…

黑马头条---day1

手机端查看 docker 容器&#xff0c;镜像操作命令 1、docker删除所有镜像命令 删除所有镜像的命令是Docker中一个非常常见的操作。下面是具体的实现步骤和命令示例&#xff1a; $ docker stop $(docker ps -aq) 停止所有正在运行的容器。 $ docker rm $(docker ps -aq) 删…

靶机精讲之NYX

主机发现 端口扫描 服务扫描 -sV漏洞脚本扫描 UDP扫描 那些开发那些关闭 脚本扫描 或许有价值.php web渗透 看源码 目录爆破 没有扫到有价值的信息 继续web渗透&#xff0c;访问admin目录 继续目录扫描 sudo gobuster dir -u http://192.168.10.206 -x txt,sql,php,jsp -w…

20.1 HTML 介绍

1. W3C组织 万维网联盟(World Wide Web Consortium, W3C): 是一个国际性的标准化组织, 致力于开发和推广Web标准.W3C的使命是通过制定和推广Web技术标准, 促进Web的长期发展和互操作性, 它由许多组织和个人组成, 包括浏览器制造商, 软件开发商, 网络服务提供商, 学术机构和个…

线性代数(应用篇):第五章:特征值与特征向量、第六章:二次型

文章目录 第5章 特征值与特征向量、相似矩阵(一) 特征值与特征向量1.定义2.性质3.求解(1)具体型矩阵试根法、多项式带余除法&#xff1a;三阶多项式分解因式 (2)抽象型矩阵 (二) 相似1.矩阵相似(1)定义(2)性质 2.相似对角化(1)定义(2)相似对角化的条件&#xff08;n阶矩阵A可相…

python机器学习(五)逻辑回归、决策边界、代价函数、梯度下降法实现线性和非线性逻辑回归

线性回归所解决的问题是把数据集的特征传入到模型中&#xff0c;预测一个值使得误差最小&#xff0c;预测值无限接近于真实值。比如把房子的其他特征传入到模型中&#xff0c;预测出房价&#xff0c; 房价是一系列连续的数值&#xff0c;线性回归解决的是有监督的学习。有很多场…

【微服务】springboot整合mongodb使用详解

目录 一、mongodb简介 1.1 什么是mongodb 1.2 mongodb特点 二、mongodb中的核心术语 2.1 mogodb与数据库对比 2.2 mongodb中的核心概念 2.3 与关系数据库的差异 2.3.1 半结构化 2.3.2 支持多级嵌套 2.3.3 关系弱化 三、mongodb 技术优势和应用场景 3.1 mongodb 技术…

【C#】并行编程实战:并行编程中的模式

本章将介绍并行编程模式&#xff0c;重点是理解并行代码问题场景并使用并行编程/异步技术解决他们。本章会介绍几种最重要的编程模式。 本教程学习工程&#xff1a;魔术师Dix / HandsOnParallelProgramming GitCode 1、MapReduce 模式 引入 MapReduce 是为了解决处理大数据的问…

睡眠健康数据分析

项目背景 背景描述 本数据集涵盖了与睡眠和日常习惯有关的诸多变量。如性别、年龄、职业、睡眠时间、睡眠质量、身体活动水平、压力水平、BMI类别、血压、心率、每日步数、以及是否有睡眠障碍等细节。 数据集的主要特征&#xff1a; 综合睡眠指标&#xff1a; 探索睡眠持续时…

UNISOT让食品欺诈无处遁形

​​发表时间&#xff1a;2023年5月11日 全世界的消费者开始越来越关注食物的来源和采购方式。这是因为人们渴望吃得更健康、更用心&#xff0c;同时人们也认识到了购买可持续且合乎伦理道德的产品的必要性。 近年来&#xff0c;人们对食品溯源的渴望进一步加速&#xff0c;原…

Python读取csv、Excel文件生成图表

简介 本文章介绍了通过读取 csv 或 Excel 文件内容&#xff0c;将其转换为折线图或柱状图的方法&#xff0c;并写入 html 文件中。 目录 1. 读取CSV文件 1.1. 生成折线图 1.1.1. 简单生成图表 1.1.2. 设置折线图格式 1.2. 生成柱状图 1.2.1. 简单生成图表 1.2.2. 设置柱…

文章详情页 - 评论功能的实现

目录 1. 准备工作 1.1 创建评论表 1.2 创建评论实体类 1.3 创建 mapper 层评论接口和对应的 xml 实现 1.4 准备评论的 service 层 1.5 准备评论的 controller 层 2. 总的初始化详情页 2.1 加载评论列表 2.1.1 实现前端代码 2.1.2 实现后端代码 2.2 查询当前登录用户的…

Docker安装es以及ik分词器

1、拉取镜像 docker pull elasticsearch:7.10.12、下载对应版本的ik分词、并将它们解压到ik文件夹下&#xff0c;如图 https://github.com/medcl/elasticsearch-analysis-ik/releases 3、在服务器上创建文件夹 mkdir /usr/elklog/elk/es mkdir /usr/elklog/elk/es/data mkdi…

【C进阶】回调函数(指针进阶2,详解,小白必看)

目录 6. 函数指针数组 6.1简单计算器 6.2函数指针数组实现计算器 7. 指向函数指针数组的指针(仅作了解即可) 8.回调函数 8.1关于回调函数的理解​编辑 8.1.1用回调函数改良简单计算器 8.2qsort库函数的使用 8.2.1冒泡排序 8.2.2qsort的概念 8.3冒泡排序思想实现qsor…

docker存储空间报错解决(谨慎操作,会影响原来的容易镜像,不熟练切勿操作)

报错内容 [rootDream package]# docker build -t imapp . [] Building 21.0s (6/19)> [internal] load build definition from Dockerfile 0.1s> > transferring …

TCP 三次握手四次挥手浅析

大家都知道传输层中的TCP协议是面向连接的&#xff0c;提供可靠的连接服务&#xff0c;其中最出名的就是三次握手和四次挥手。 一、三次握手 三次握手的交互过程如下 喜欢钻牛角尖的我在学习三次握手的时候就想到了几个问题&#xff1a;为什么三次握手是三次&#xff1f;不是…

AnimateDiff论文解读-基于Stable Diffusion文生图模型生成动画

文章目录 1. 摘要2. 引言3. 算法3.1 Preliminaries3.2. Personalized Animation3.3 Motion Modeling Module 4. 实验5.限制6. 结论 论文&#xff1a; 《AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning》 github: https://g…