论文笔记--Goat: Fine-tuned LLaMA Outperforms GPT-4 on Arithmetic Tasks

news2024/9/21 12:24:03

论文笔记--Goat: Fine-tuned LLaMA Outperforms GPT-4 on Arithmetic Tasks

  • 1. 文章简介
  • 2. 文章概括
  • 3 文章重点技术
    • 3.1 LLM的选择
    • 3.2 算数任务的可学习性(learnability)
    • 3.3 大模型的加减乘除
  • 4. 数值实验结果
  • 5. 文章亮点
  • 6. 原文传送门
  • 7. References

1. 文章简介

  • 标题:Goat: Fine-tuned LLaMA Outperforms GPT-4 on Arithmetic Tasks
  • 作者:Tiedong Liu, Bryan Kian Hsiang Low
  • 日期:2023
  • 期刊:arxiv preprint

2. 文章概括

  文章给出了一种可高精度完成基本数学运算的大模型Goat(Good at Arithmetic Tasks),相比于GPT-4,Goat在多位数字的基本运算(加减乘除)上有大幅的精度提升。

3 文章重点技术

3.1 LLM的选择

  文章的Goat模型是在LLaMA[1]基础上进行微调的。之所以选择LLaMA,是因为研究表明分词是影响大模型数学运算能力的一个重要因素,而LLaMA对于处理数字的分词上要优于其它LLM。下表展示了文章对比的一些LLM的分词结果,可以看到LLaMA对与数字的分词是最合理最能支撑数学运算的。
tokenization

3.2 算数任务的可学习性(learnability)

  算数任务可划分为两类:LLM可学习(learnable)的任务和不可学习(unlearnable)的任务。研究表明,不可学习的任务可通过链式思维(Chain-of-Thought, COT)分解为可学习的任务。
  首先,文章对基本的数学运算进行划分。为此,文章进行了数值实验,将LLM可以以较高的精度解决的任务分类为可学习任务,反之LLM表现很差的任务被分类为不可学习任务。下表为文章将数学基本运算进行的分类。其中不可学习的任务包含两种:多位数*多位数,多位数/多位数。
learnability

3.3 大模型的加减乘除

  按照上述分类,所有的加法和减法都是可学习的任务,模型可以成功捕获到其中的数学操作模式,得到较高精度。
  针对乘法,如上表分类,多位数*一位数是可学习的任务,但多位数*多位数是不可学习的任务。为了让LLM计算多位数*多位数,我们将其划分为5个可学习的子任务

  • extraction:从自然语言指令中提取数学运算。如给定指令"Compute 126 * 234",我们提取出其中的"126 * 234 ="这种标准的运算格式(对应上表中可学习任务-Copying).
  • split: 将二者中较小的数划分。如上述标准运算格式,我们首先找到比较小的数"126"(对应上表中可学习任务-Comparison),然后我们将"126"进行分解得到"126=100+20+6"(对应上表中可学习任务-Split).
  • expansion:按照分配律将乘法展开。如上述标准运算分解之后,我们得到"(100+20+6) * 234 = 100 * 234 + 20 * 234 + 6 * 234"(对应上表中可学习任务-Copying).
  • product:计算分配之后的每一项的乘积。如上式可演变为" 100 * 234 + 20 * 234 + 6 * 234 = 1 * 234 (end+00) + 2 *234(end+0) + 6 * 234 =23400 + 4680 + 1404",即通过多位数*一位数和末尾补0的操作完成(对应上表中可学习任务-Multiplication+Copying).
  • adding:计算各子项之和。如上式结果求和为"23400 + 4680 + 1404 = 28080 + 1404 = 29484"即为最后结果(对应上表中可学习任务-Adding+Copying).
      针对除法,多位数除以一位数的任务是可学习任务,现在我们考虑多位数除以多位数的任务。为此,我们通过慢除法来进行循环计算: R j − D × ( q n − ( j + 1 ) × 1 0 j ) = R j + 1 R_j - D\times (q_{n-(j+1)} \times 10^j) = R_{j + 1} RjD×(qn(j+1)×10j)=Rj+1,其中 n n n表示被除数的位数, R j R_j Rj表示上一轮的商, q n − ( j + 1 ) q_{n-(j+1)} qn(j+1)表示模型需要计算的值,要满足 D × q n − ( j + 1 ) × 1 0 j ≤ R j D\times q_{n-(j+1)} \times 10^j \le R_j D×qn(j+1)×10jRj D D D表示除数。上式迭代的终止条件为 R j + 1 < D R_{j + 1} < D Rj+1<D。考虑8914/64,首先第一轮的 R j = 8914 , D = 64 R_j=8914, D=64 Rj=8914,D=64,我们找到最大的可以使得 64 × q n − ( j + 1 ) × 1 0 j ≤ 8914 64 \times q_{n-(j+1)} \times 10^j \le 8914 64×qn(j+1)×10j8914 j j j,得到 j = 2 j=2 j=2,对应的最大的 q = 1 q=1 q=1,即得到 8914 − 64 × ( 1 × 1 0 2 ) = 2514 8914 - 64 \times (1 \times 10^2) = 2514 891464×(1×102)=2514;接下来 R j = 2514 ≥ D R_j = 2514\ge D Rj=2514D,则唏嘘找到最大的可以使得 64 × q n − ( j + 1 ) × 1 0 j ≤ 2514 64 \times q_{n-(j+1)} \times 10^j \le 2514 64×qn(j+1)×10j2514 j j j,得到 j = 1 j=1 j=1,对应最大的 q = 3 q=3 q=3,即得到 2514 − 64 × ( 3 × 1 0 1 ) = 594 2514 - 64 \times (3 \times 10^1) = 594 251464×(3×101)=594;接下来 R j = 594 ≥ D R_j = 594\ge D Rj=594D,则继续找到最大的可以使得 64 × q n − ( j + 1 ) × 1 0 j ≤ 594 64 \times q_{n-(j+1)} \times 10^j \le 594 64×qn(j+1)×10j594 j j j,得到 j = 0 j=0 j=0,对应最大的 q = 9 q=9 q=9,即得到 594 − 64 × ( 9 × 1 0 0 ) = 18 594 - 64 \times (9 \times 10^0) = 18 59464×(9×100)=18;最后 R j < D = 64 R_j< D=64 Rj<D=64,终止判断。最后得到的商由上面所有的 q n − ( j + 1 ) × 1 0 j q_{n-(j+1)} \times 10^j qn(j+1)×10j组成,即 1 ∗ 1 0 2 + 3 ∗ 1 0 1 + 9 ∗ 1 0 0 = 139 1*10^2 + 3 * 10^1 + 9 * 10^0=139 1102+3101+9100=139(相当于split的反向操作),余数为剩下的 R j = 18 R_j = 18 Rj=18。注意到上述整个过程只采用了基本的可学习任务,包括Copyting, Subtraction, Comparison, Multiplication(nD*1D), 反向split。

4. 数值实验结果

  文章随机生成了一百万个问答对,其中问题的自然语言部分是由多个不同的prompt形式组成,问题中包含的数字是不超过16位的随机数字,然后按照上述标准的COT产生回答作为标注数据。模型在LLaMA基础上通过上述数据进行微调,得到Goat模型。
  下表为文章的数值实验结果,可以看到Goat-7B在所有数学任务上表现基本上都在90%甚至95%以上,在unlearnable任务上精度远超过GPT-4。
exp
  值得一提的是,文章通过增加"Solve it step by step"在GPT-4的prompt中,引导GPT-4产生中间结果。文章发现在一些测试样例中,GPT-4产生了一些错误的中间过程,但最终答案确是正确的。这说明GPT-4可能并没有很好的利用到中间过程。
  此外,文章测试了将上述COT作为In-Context Learning的样本加入GPT-4的prompt,显著提高了GPT-4的运算能力,说明文章提出的COT是非常有效的。下图为GPT-4的一个3-shot样例。
3-shot

5. 文章亮点

  文章提出了一种Chain-of-Thought(COT)方法,可以有效地解决LLM无法正确进行数学基本运算的问题。文章基于该COT训练了大语言模型Goat,在基本数学运算能力上达到了SOTA水平。

6. 原文传送门

Goat: Fine-tuned LLaMA Outperforms GPT-4 on Arithmetic Tasks

7. References

[1] 论文笔记–LLaMA: Open and Efficient Foundation Language Models

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

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

相关文章

选读SQL经典实例笔记01_检索和排序

1. 在WHERE子句中引用别名列 1.1. 当表里的某些列没有被恰当命名的时候&#xff0c;这个技巧尤其有用 1.2. sql select sal as salary, comm as commissionfrom empwhere salary &#xff1c; 5000 1.3. 内嵌视图 1.3.1. sql select *from (select sal as salary, comm …

按 DDD 设计这个新项目

一、专业术语 各种服务 IAAS&#xff1a;基础设施服务&#xff0c;Infrastructure-as-a-service PAAS&#xff1a;平台服务&#xff0c;Platform-as-a-service SAAS&#xff1a;软件服务&#xff0c;Software-as-a-service 二、架构演变 图片 从图中已经可以很容易看出架…

R 语言 ggplot2 PCA 主成分分析(虚拟数据集)

生成虚拟数据集 library(ggplot2)data.matrix <- matrix(nrow 100, ncol 10)colnames(data.matrix) <- c(paste("wt",1:5,sep ""),paste("ko",1:5,sep "") )rownames(data.matrix) <- paste("gene",1:100,sep…

vue安装|win11系统

1.安装node.js https://nodejs.org/en/download 下载对应系统对应位数的.msi文件&#xff0c; 下载完成后&#xff0c;一直点击next进行安装 自定义安装路径&#xff0c;我的安装路径为**“D:\nodejs”** # 检查node.js版本 node -V# 检查npm版本 npm -V在D:\nodejs下新建两…

DataGrip连接clickhouse

首先保证ClickHouse启动了&#xff1a; 先建一个工程&#xff1a; 建立数据库源连接&#xff1a; 用户名和密码可以不写&#xff1a; 添加ClickHouse驱动&#xff1a;最好不用自己下载的驱动&#xff0c;会出现一些错误以及连接失败&#xff0c;用在线下载的。 选择一个版…

《深入浅出SSD:固态存储核心技术、原理与实战》----学习记录(三)

第3章 SSD存储介质&#xff1a;闪存 3.1 闪存物理结构 3.1.1 闪存器件原理 1978年诞生的世界上第一块固态硬盘就是基于DRAM的。但由于保存在DRAM中的数据有掉电易失性&#xff0c;当然还有成本因素&#xff0c;所以现在的固态硬盘一般都不采用DRAM&#xff0c;而是使用闪存…

JS对象的浅拷贝与深拷贝

一. 浅拷贝 定义&#xff1a;浅拷贝是按位拷贝对象&#xff0c;它会创建一个新对象&#xff0c;这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型&#xff0c;拷贝的就是基本类型的值&#xff1b;如果属性是内存地址&#xff08;引用类型&#xff09;&#xff0c…

DETRs Beat YOLOs on Real-time Object Detection论文详解

论文题目&#xff1a;DETRs Beat YOLOs on Real-time Object Detection 论文地址&#xff1a;https://arxiv.org/abs/2304.08069 论文代码&#xff1a;mirrors / facebookresearch / ConvNeXt GitCode 等我毕业再打败吧&#xff0c;别打败YOLO&#xff0c;广大研究生们不同…

ROS:通信机制实操

目录 ROS&#xff1a;通信机制一、话题发布实操1.1需求1.2分析1.3实现流程1.4实现代码1.4.1C版1.4.2Python版 1.5执行 二、话题订阅实操2.1需求2.2分析2.3流程2.4实现代码2.4.1启动无辜GUI与键盘控制节点2.4.2C版 ROS&#xff1a;通信机制 一、话题发布实操 1.1需求 编码实现…

Airtest:Windows桌面应用自动化测试一

Airtest&#xff1a;Windows桌面应用自动化测试一 一、为什么选择Airtest?二、官方文档三、环境搭建四、简易操作1、模拟双击桌面应用2、连接应用窗口&#xff08;1&#xff09;嵌入方式连接&#xff08;2种方式连接应用窗口&#xff09;&#xff08;2&#xff09;非嵌入方式连…

设计模式学习之代理模式

设计模式系列往期文章 设计模式学习之策略模式设计模式学习之策略模式在前端的应用设计模式学习之简单工厂模式设计模式学习之工厂方法模式设计模式学习之抽象工厂模式设计模式学习之策略模式和简单工厂模式的对比设计模式学习之观察者模式设计模式学习之模板方法模式 代理模…

怎么把录音转文字?录音转文字怎么操作

以前在采访过程中&#xff0c;总是需要及时记录采访者的回答&#xff0c;并把这些回答准确地记录到笔记本上。然而手写记录不仅效率低下&#xff0c;还可能因为笔迹潦草而导致记录错误。 后来在前辈的指导下&#xff0c;我才知道可以使用录音转文字工具来解决这些问题&#xf…

[安洵杯 2019]game

前言 llvm混淆&#xff0c;第一次接触到&#xff0c;没找到可以直接反混淆的工具&#xff0c;但看了相关知识后&#xff0c;发现有效代码依旧是原有的那一小部分&#xff0c;所以可以直接看有意义的部分代码&#xff0c;有时间好好了解下吧 代码分析 v8是我们输入的&#xff…

设计模式篇(Java):适配器模式

设计模式篇(Java)&#xff1a;建造者模式 八、适配器模式 8.1 适配器模式基本介绍 生活中的适配器例子 比如生活中的插座&#xff0c;在不同国家插座有着不同的规格&#xff0c;如果我们从一个国家去另外一个国家需要使用插座时就需要一个中间转换器把两种不同规则的插座适配一…

【数据结构导论】第 3 章:栈、队列和数组

目录 一、栈 &#xff08;1&#xff09;栈的基本概念 ① 定义 ② 示意图 ③ 栈的特点 ④ 栈的基本运算 &#xff08;2&#xff09;栈的顺序实现 ① 顺序栈及常用名词 ② 顺序栈的类型定义 ③ 顺序栈的基本运算 Ⅰ. 初始化 Ⅱ. 判栈空 Ⅲ. 进栈 Ⅳ. 出栈 Ⅴ. …

【JavaSE】程序逻辑控制

目录 【1】概念 【2】顺序结构 【3】分支结构 【3.1】if 语句 【3.2】switch 语句 【4】循环结构 【4.1】while 循环 【4.2】for 循环 【4.3】do while 循环 【4.4】break 关键字 【4.5】continue 关键字 【5】输入输出 【5.1】输出到控制台 【5.2】从键盘输入 …

第38节:cesium 风场效果(含源码+视频)

结果示例: 完整源码: <template><div class="viewer"><vc-viewer @ready="ready" :logo="false"><!

抖音seo矩阵系统源码开发部署|抖音小程序接入(一)

一、 开发部署步骤&#xff1a; &#xff08;1&#xff09;申请开放平台服务商 &#xff08;2&#xff09;申请开放平台网站应用 &#xff08;3&#xff09;申请开放平台应用权限 &#xff08;4&#xff09;提交各个API接口申请文档 &#xff08;5&#xff09;审核通过技…

JVM实战-2023线上项目突发OOM以及快速定位解决全过程

现象描述&#xff1a; 用户在进行报表下载过程中&#xff0c;每隔几天系统就会报错500&#xff0c;导致无法进行报表下载。 原因分析: 通过查看系统log日志以及gc日志&#xff0c;发现是因为下载报表过程中JVM频繁进行Full GC&#xff0c;而且老年代的堆内存不断增加且无法回…

chatgpt赋能python:Python彻底删除指南:为什么需要彻底删除Python?

Python彻底删除指南&#xff1a;为什么需要彻底删除Python&#xff1f; Python是一种高级编程语言&#xff0c;它广泛用于各种应用程序的开发。但是&#xff0c;对于某些开发者来说&#xff0c;可能需要从他们的计算机中彻底删除Python。这可能是因为他们需要将Python版本更新…