ChatGLM-Math:强化数学能力

大型语言模型(LLM)在文本摘要、问答和角色扮演对话等语言任务上表现出色,在数学推理等复杂问题上也具有应用潜力。

但目前提高 LLM 数学问题解决能力的方法,往往会导致其他方面能力的下降。例如RLHF的方法,虽然可以提高文本生成的质量,但却会忽略解决数学问题所需要的准确性和逻辑连贯性,而 SFT 微调,则可能降低大模型本身的语言多样性。

针对这一问题,我们提出了一种Self-Critique的迭代训练方法,通过自我反馈的机制,可以使 LLM 的语言能力和数学能力得到同步提升。

图片

图:基于 Self-Critique 方法,ChatGLM3-32B的传统学术数据集数学能力(GSM8k)和分布外测试集匈牙利国家数学考试分数(Hungarian Exam Score)都得到了的提升。

此外,为了更加准确地评估 LLM 解决现实世界数学问题的能力,我们开发了 MathUserEval 评测基准。

图片

项目地址:https://github.com/THUDM/ChatGLM-Math

论文地址:https://arxiv.org/pdf/2404.02893.pdf

Self-Critique 的整体流程

Self-Critique 有三个步骤:

Math-Critique

图片

我们工作的第一部分是构建一个准确而稳健的评估模型。基于对大模型评估的启发,我们提出了 Math-Critique 的方法。Math-Critique 将根据问题和参考答案,对模型生成的数学响应进行评分,并给出评分的解释。

Math Critique 的模型可以定义为:

MathCritique(问题,参考答案,答案)-> (评分,解释评论)

在指令中,Math-Critique 会将响应结果分为四个类别:完全错误、部分正确但结果错误、部分错误但结论正确、完全正确。这些类别与 1-2、3-5、6-8 和 9-10 的评分范围相对应。

我们使用两种 Math-Critique 的评估方法:平均分数评估和硬分隔评估。前者计算给定问题集的每个模型答案分数的平均值;后者基于预定义的阈值将每个模型答案分类为通过或失败,超过阈值即为正确,反之为错误。

利用 MathCritique,我们为训练集生成了 5k 个带有注释的数据;并生成 800 个注释数据作为测试集。

Critique-RFT

图片

我们使用了基于 Math-Critique 的拒绝采样方法,重新审查和重新设计了RFT的实现,并发现在拒绝采样过程中,采样范围和模型都会影响结果。具体来说,我们设计了以下采样原则:

  • 预去重:从训练集中对问题嵌入进行聚类,并在各个类别中均匀采样,确保在没有重复的情况下获取各种类型的问题。

  • 后采样去重:我们在数学批评的结果基础上,在5-10个采样迭代之后进行了选择过程。在必要的去重之后,我们只在同一问题存在正确和不正确回答的情况下选择完全正确的回答。

Critique-DPO

图片

我们采用了DPO方法,以进一步增强模型能力,遵循Critique-RFT。该方法的主要优点在于在构建数据流、稳定性和训练速度方面的简单性。DPO方法直接比较了相同问题的正确和错误答案。

在我们的方法中,这两个答案都是从经过RFT后的模型中采样得到的,我们发现这一点至关重要。我们还在训练过程中集成了 DPO 正例的 SFT 损失,作为正则化项的近似替代。我们的 DPO 数据过滤过程类似于 Critique-RFT,唯一的区别在于 DPO 训练对的构建方法。在至少存在一个正确和一个错误答案的前提下,我们选择评分结果差异最大的数据对作为 DPO 对的选择。

训练过程

Math-Critique训练

我们使用ChatGLM3-32B的基础模型作为初始的Math-Critique基础模型。在每次迭代之后,通过SFT(监督微调)或评论RFT(评论反馈训练)当前经过优化的模型将被用作基础模型。我们在6B和32B模型上都使用学习率为3e-6和批量大小为128。

Critique-RFT训练

在Critique RFT阶段,我们的每次微调迭代都包括了前几个阶段的数据集经过去重后的结果,这也包括了最初的SFT数据集。我们将DRFT和DSFT合并为:

图片

DSFT数据集包含许多常规任务,并且可以用开源指令微调数据集进行替代。为了消除这个数据集对最终结果的潜在干扰,我们在消融研究中比较了包含或排除SFT数据的影响。

Critique-DPO训练

在 Critique-DPO 阶段,观察到直接使用 DPO 损失会导致训练过程中的不稳定性。将所选答案的交叉熵损失作为总损失的正则化项引入来缓解这个问题。该加法旨在提高模型训练的稳定性。

图片

在这种情况下,λ 表示总损失中所选答案的交叉熵损失系数。由于正则化项的加入,该系数的值高于标准 DPO,我们对该值的测试范围为 {0.5, 1, 2}。

此外,总学习速率设置为1e-6。实验部分将报告这些系数设置下的最佳结果。在这个阶段,我们以 64 的批大小训练 500 步。

测试集

为了评估 LLM 的数学能力,我们设计了一个 MATHUSEREVAL基准测试集。这个测试集专门用于评估 LLM 解决实际应用场景中的复杂开放性数学问题的能力。

我们将测试集分为两个大类(初级和高级)和八个子类,见下表:

图片

实验

数据

在我们的研究中,我们主要测试了MATHUSEREVAL数据集,该数据集源自模拟对话记录和实际考试试卷。与学术数据集相比,这个数据集具有更多样化的问题风格,并且更贴近于实际的使用场景。此外,我们还测试了以下学术数据集:

  • 英语学术数据集:GSM8k和MATH。这两个数据集包含了中学和高中以及竞赛水平的英语数学问题。

  • 中文学术数据集:ape210k和cmath。这些数据集中的问题也来自中学和高中水平。

我们还将匈牙利国家考试作为一个外部分布测试集。值得注意的是,在所有测试集中,我们只使用了GSM8k和MATH的训练集作为生成数据的种子数据。为了评估通用的语言能力,我们选择了AlignBench的中文语言组件和完整的MT-Bench进行测试。

结果

测试结果如下:

图片

RFT &DPO 的影响:

图片

不同提升方法与问题难度的关系。横轴代表MATHUSEREVAL在24个模型中的平均得分(由GPT-4-1106-Preview评分),我们将其视为问题难度的表示。纵轴代表模型在这些问题上的硬分割分数。

可以看到,RFT几乎提高了所有难度级别的性能,但平均得分在4到6之间问题的表现改进最显著。DPO主要对平均得分在5到7之间问题的表现改进最显著。这表明,我们提高数学能力的RFT和DPO可以作为对齐模型与现实世界的有效方法,并且在中等难度的问题上改进最为显著。

Math-Critique能力评测:

图片

模型的Math-Critique评测。“Acc”代表模型回答正确与否的准确性,Math-Critique的Pearson、Spearman和Kendall相关系数与四类分类中的人类注释的比较。

结果表明,与人类注释相比,Math-Critique-32B模型在判断准确性和相关系数方面显著超过GPT3.5-Turbo,基本上与GPT-4.0613持平。

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

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

相关文章

Linux的虚拟机操作

一、linux系统 我们知道的系统用到的大多数是Windows系统。 Windows个人用到的有:win7 win10 win11 winxp 服务器用到的有:windows server 2003、2008、2013...........等等 linux也有系统。 centos 7 有5、6、8等等 redhat ubuntu kail 二、了…

Apple强大功能:在新款 iPad Pro 和 iPad Air 中释放 M4 芯片潜力

Apple 的最新强大功能:在新款 iPad Pro 和 iPad Air 中释放 M4 芯片的潜力 概述 Apple 推出配备强大 M4 芯片的最新 iPad Pro 和 iPad Air 型号,再次突破创新界限。新一代 iPad 有望彻底改变我们的工作、创造和娱乐方式。凭借无与伦比的处理能力、令人惊…

kubebuilder(6)webhook

operator中的webhook也是很重要的一块功能。也是相对比较独立的模块,所以放在后面讲。 webhook是一个callback,注册到k8s的api-server上。当某个特定的时间发生时,api server就会查询注册的webhook,并根据一些逻辑确认转发消息给…

练习题(2024/5/8)

1 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(…

第2章.STM32开发C语言常用知识点

目录 0. 《STM32单片机自学教程》专栏总纲 2.1. STM32嵌入式开发C语言编程的不同 2.2. C语言常用知识点 2.2.1 位操作 2.2.2 define 宏定义 2.2.3 条件编译 2.2.3.1 #ifdef 2.2.3.2 #ifndef 2.2.3.3 #if !defined 2.2.4 extern 变量声明 2.2.5 typedef 类型别名 …

微信用户可以通过哪些渠道查找和关注到公众号

什么是公众号 公众号,作为微信生态中不可或缺的一部分,已经成为连接用户与品牌、企业与个人的重要桥梁。它不仅是一个信息发布平台,更是一个集互动、服务、营销于一体的综合性工具。公众号通过发布高质量的内容,吸引用户关注&…

Leetcode—976. 三角形的最大周长【简单】(ranges::sort函数)

2024每日刷题&#xff08;122&#xff09; Leetcode—976. 三角形的最大周长 实现代码 class Solution { public:int largestPerimeter(vector<int>& nums) {ranges::sort(nums);for(int i nums.size() - 1; i > 1; i--) {if(nums[i - 1] nums[i - 2] > nu…

项目经理【过程】原则

系列文章目录 【引论一】项目管理的意义 【引论二】项目管理的逻辑 【环境】概述 【环境】原则 【环境】任务 【环境】绩效 【人】概述 【人】原则 【人】任务 【人】绩效 【过程】概念 【过程】原则 一、质量管理水平、质量管理的发展 1.1 质量管理水平 1.2 质量管理的发展 …

亲测快捷高效的编写测试用例方法

前言 测试用例是任何测试周期的第一步&#xff0c;对任何项目都非常重要。如果在此步骤中出现任何问题&#xff0c;则在整个软件测试过程中都会扩大影响。如果测试人员在创建测试用例模板时使用正确的过程和准则&#xff0c;则可以避免这种情况。 在本篇文章中将分享一些简单而…

【大学物理】双语合集听课笔记

7.5 angular momentu(角动量)_哔哩哔哩_bilibili 6.4Energy in Rotation Motion 有质量有速度的物体有动能&#xff0c;是不是很有道理 international system&#xff08;from French systeme international&#xff0c;acronym&#xff0c;SI&#xff09;of ineria kg*m^2 转…

[笔试训练](十六)

目录 046:字符串替换 047:神奇数 048:DNA序列 046:字符串替换 字符串替换_牛客题霸_牛客网 (nowcoder.com) 题目&#xff1a; 题解&#xff1a; 简单模拟题~ class StringFormat { public:string formatString(string str, int n, vector<char> arg, int m) {strin…

PPP点对点协议

概述 Point-to-Point Protocol&#xff0c;点到点协议&#xff0c;工作于数据链路层&#xff0c;在链路层上传输网络层协议前验证链路的对端&#xff0c;主要用于在全双工的同异步链路上进行点到点的数据传输。 PPP主要是用来通过拨号或专线方式在两个网络节点之间建立连接、…

牛客 二叉树 NB1 牛群的最大高度

原题链接 就不采用, 递归的方式来做了, 自己弄个栈来做 用栈来保存路径, curr 表示当前的节点, pre 保留往回走时的上一步 如果是 用递归来做 它的栈链路是这样的, 可以做下参考 黄色表示返回 用栈模拟的话, 不可能模拟得一摸一样, 递归的话一个栈会经过3次, 第三次后就不…

MATLAB实现遗传算法优化第三类生产线平衡问题

第三类生产线平衡问题的数学模型 假设&#xff1a; 工作站数量&#xff08;m&#xff09;和生产线节拍&#xff08;CT&#xff09;是预设并固定的。每个任务&#xff08;或作业元素&#xff09;只能分配到一个工作站中。任务的执行顺序是预先确定的&#xff0c;且不可更改。每…

ICode国际青少年编程竞赛- Python-2级训练场-列表入门

ICode国际青少年编程竞赛- Python-2级训练场-列表入门 1、 Dev.step(3)2、 Flyer.step(1) Dev.step(-2)3、 Flyer.step(1) Spaceship.step(7)4、 Flyer.step(5) Dev.turnRight() Dev.step(5) Dev.turnLeft() Dev.step(3) Dev.turnLeft() Dev.step(7) Dev.turnLeft() Dev.…

二叉树习题汇总

片头 嗨&#xff01;大家好&#xff0c;今天我们来练习几道二叉树的题目来巩固知识点&#xff0c;准备好了吗&#xff1f;Ready Go ! ! ! 第一题&#xff1a;二叉树的最大深度 解答这道题&#xff0c;我们采用分治思想 1. 递归子问题&#xff1a;左子树的高度和右子树的高度 …

Tkinter组件:Checkbutton

Tkinter组件&#xff1a;Checkbutton Checkbutton&#xff08;多选按钮&#xff09;组件用于实现确定是否选择的按钮。Checkbutton 组件可以包含文本或图像&#xff0c;你可以将一个 Python 的函数或方法与之相关联&#xff0c;当按钮被按下时&#xff0c;对应的函数或方法将被…

【汇编语言小练习输入两个数字然后输出它们的和】

这个程序是用汇编语言编写一个简单的程序&#xff0c;它将从键盘输入两个数字&#xff0c;然后输出它们的和。 .MODEL SMALL .STACK 100H.DATAINPUT_MSG1 DB Enter the first number: $INPUT_MSG2 DB 13, 10, Enter the second number: $RESULT_MSG DB 13, 10, The sum is: $N…

【抽样调查】分层抽样上

碎碎念&#xff1a;在大一大二时听课有的时候会发现听不太懂&#xff0c;那时候只觉得是我自己的基础不好的原因&#xff0c;但现在我发现“听不懂”是能够针对性解决的。比如抽样调查这门课&#xff0c;分析过后我发现我听不懂的原因之一是“没有框架”&#xff0c;一大堆知识…

2024年第六届世界软件工程研讨会(WSSE 2024)即将召开!

2024年第六届世界软件工程研讨会&#xff08;WSSE 2024&#xff09;将于2024年9月13-15日在日本京都举行。软件工程领域的发展离不开各位专家学者和业界精英的共同努力和贡献。WSSE 2024将就软件工程领域的最新研究成果、实践经验和发展趋势进行深入交流和探讨&#xff0c;汇聚…
最新文章