论文笔记--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. References1. 文章简介
标题:Goat: Fine-tuned LLaMA Outperforms GPT-4 on Arithmetic Tasks 作者:Tiedong Liu, Bryan Kian Hsiang Low 日期:2023 期刊:arxiv preprint2. 文章概括
文章给出了一种可高精度完成基本数学运算的大模型Goat(Good at Arithmetic Tasks),相比于GPT-4,Goat在多位数字的基本运算(加减乘除)上有大幅的精度提升。
3 文章重点技术
3.1 LLM的选择
文章的Goat模型是在LLaMA[1]基础上进行微调的。之所以选择LLaMA,是因为研究表明分词是影响大模型数学运算能力的一个重要因素,而LLaMA对于处理数字的分词上要优于其它LLM。下表展示了文章对比的一些LLM的分词结果,可以看到LLaMA对与数字的分词是最合理最能支撑数学运算的。
3.2 算数任务的可学习性(learnability)
算数任务可划分为两类:LLM可学习(learnable)的任务和不可学习(unlearnable)的任务。研究表明,不可学习的任务可通过链式思维(Chain-of-Thought, COT)分解为可学习的任务。
首先,文章对基本的数学运算进行划分。为此,文章进行了数值实验,将LLM可以以较高的精度解决的任务分类为可学习任务,反之LLM表现很差的任务被分类为不可学习任务。下表为文章将数学基本运算进行的分类。其中不可学习的任务包含两种:多位数*多位数,多位数/多位数。
3.3 大模型的加减乘除
按照上述分类,所有的加法和减法都是可学习的任务,模型可以成功捕获到其中的数学操作模式,得到较高精度。
针对乘法,如上表分类,多位数*一位数是可学习的任务,但多位数*多位数是不可学习的任务。为了让LLM计算多位数*多位数,我们将其划分为5个可学习的子任务
针对除法,多位数除以一位数的任务是可学习任务,现在我们考虑多位数除以多位数的任务。为此,我们通过慢除法来进行循环计算: 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} Rj−D×(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)×10j≤Rj, 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)×10j≤8914的 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 8914−64×(1×102)=2514;接下来 R j = 2514 ≥ D R_j = 2514\ge D Rj=2514≥D,则唏嘘找到最大的可以使得 64 × q n − ( j + 1 ) × 1 0 j ≤ 2514 64 \times q_{n-(j+1)} \times 10^j \le 2514 64×qn−(j+1)×10j≤2514的 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 2514−64×(3×101)=594;接下来 R j = 594 ≥ D R_j = 594\ge D Rj=594≥D,则继续找到最大的可以使得 64 × q n − ( j + 1 ) × 1 0 j ≤ 594 64 \times q_{n-(j+1)} \times 10^j \le 594 64×qn−(j+1)×10j≤594的 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 594−64×(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 1∗102+3∗101+9∗100=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。
值得一提的是,文章通过增加"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样例。
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