北京大学:利用好不确定性,8B小模型也能超越GPT-4

news2024/9/22 11:38:29

大模型有一个显著的特点,那就是不确定性——对于特定输入,相同的LLM在不同解码配置下可能生成显著不同的输出。

比如问一问chatgpt“今天开心吗?”,可以得到两种不同的回答。

常用的解码策略有两种,一个是贪婪解码,即永远选择概率最高的下一个token,另一种就是采样方法,根据概率分布随机选择下一个token,常常使用温度参数平衡响应质量和多样性。

那么,这两种方式哪个更好呢?北大的一篇论文给出了答案:

贪婪解码在大多数任务中通常优于采样方法。

另外作者还发现,LLMs的这种不确定性具有巨大潜力。通过采用“Best-of-N”策略,从多个采样响应中挑选最优答案的方式,Llama-3-8B-Instruct在MMLU、GSM8K和HumanEval上均超越GPT-4-Turbo

这是否可以说明,即使小模型单次回答可能不够准确,但多试几次,从里面挑最好的,也能找到正确答案。就像多猜几次谜语,总有一次能猜对一样。一起来看看论文中怎么说的吧~

论文标题:
The Good, The Bad, and The Greedy: Evaluation of LLMs Should Not Ignore Non-Determinism

论文链接
https://arxiv.org/pdf/2407.10457

代码链接
https://github.com/Yifan-Song793/GoodBadGreedy

实验设置

基准测试

本文选择了多个基准测试如下表所示进行实验, 评测模型在通用指令跟随、知识、数学推理、编码等方面的能力。

模型选择

选择开源模型Llama-3-Instruct、Yi-1.5-Chat、Qwen-2-Instruct和Mistral以及闭源模型GPT-4-Turbo作为对比。还测试了同系列中不同规模的模型,如Qwen-2和Yi-1.5。为了更深入地分析,本文还评估了使用不同对齐方法训练的模型,以研究对齐技术的效果,包括DPO、KTO、IPO、ORPO、RDPO和SimPO等对齐方法。

方法选择

本文的目标是在不同的解码配置下比较LLMs的性能。作者选择了贪婪解码和采样生成(temperature=1.0,top-p=1.0)作为主要比较。

实验结果

下表展示了实验结果,其中贪婪解码超过采样平均值的分数用绿色突出显示,而低于采样解码的用红色标记。

从以上结果中可以总结出一些问题的答案。

贪婪解码和采样之间的性能差距有何不同?

贪心解码和采样方法之间始终存在性能差距。这种差距在专有模型和开源模型中都很明显,并且在多个基准测试中都有体现,包括指令执行、语言理解、数学推理和代码生成。

在WildBench测试中,各任务类别的性能差距也很显著,如下表所示。不同的解码配置甚至可能改变模型排名。例如,在Arena-Hard测试中,Qwen2-7B使用贪心解码时略优于Llama-3-8B;但使用采样解码时,Llama-3-8B可能超过Qwen2-7B。

什么时候贪婪解码比采样更好,反之亦然?为什么?

  1. 对于大多数评估任务和模型,贪心解码的表现优于采样。

  2. 对于包含相对简单的开放式创意任务的AlpacaEval,采样生成的响应更好。与GSM8K和HumanEval这类需要LLM解决特定数学或编程问题的推理任务不同,AlpacaEval中50%的实例是信息查询类任务,且为开放式基准测试,没有确定的答案,其实例与难度比Arena-Hard和WildBench更简单。

哪个基准在非确定性方面最一致/最不一致?

MixEval和MMLU在稳定性上表现尤为突出,这体现在无论是使用贪心解码还是采样方法,其性能差异很小,且不同采样间的结果波动也很低。这种高度稳定性主要得益于它们答案空间的严格限制:MMLU采用多项选择题形式,而MixEval则通过真实数据基准测试要求LLM给出简短答案,从而进一步压缩了输出范围。

相比之下,GSM8K和HumanEval在处理非确定性生成任务时显得不够稳定,最佳与最差采样结果之间的性能差异可能超过10分,显示出较大的波动性。

不同模型之间的表现有何差距?

GPT-4-Turbo在多种任务上展示了稳定的性能,贪心解码与采样方法间的性能差异微乎其微,同时采样质量也有所增强

然而,开源LLMs则展现出与众不同的特性。例如,Mistral-7B-Instruct-v0.2在AlpacaEval和Arena-Hard等开放式指令任务上,其行为模式与其他模型截然相反。同样地,Llama3-8B-Instruct在MMLU任务中,通过采样实现的性能甚至超越了贪心解码,这一表现也与众不同。

这些现象引发了对未来研究领域的深刻思考:

  1. 为何特定模型在特定任务上会展现出如此不同的行为?

  2. 这些独特性是否能为构建更稳健的LLM提供新的思路?

这些问题强调了深入探究LLM内部工作机制的重要性,这类研究有望显著提升我们对不同模型及其训练方式如何影响模型行为的理解。

各种因素如何影响非确定性?

那么各种因素又是如何影响非确定性的,这里作者调整缩放、对齐和解码参数进行实验。

Scaling对非确定性的影响

有人可能会认为,较大的LLMs在解码时的不确定性会更低,从而导致采样时的性能差异较小。但从作者的实验结果来看,并非如此。作者使用Yi-1.5-Chat和Qwen2-Instruct系列来观察从0.5B到34B参数的性能差异。

参数扩展并不会导致较低的采样方差。Qwen2-7B-Instruct在AlpacaEval和HumanEval上的方差高于其较小的对应模型。并且不同大小的模型在不同任务上的性能差异显著,无法得出统一的结论。

对齐对非确定性的影响

对齐方法(如DPO)通过学习偏好数据来增强LLM。作者使用Llama-3-8B-Instruct作为训练起点,评估了DPO、KTO和SimPO等对齐方法的效果。如下图所示,应用这些方法后,贪婪解码和采样性能均受到影响。

在AlpacaEval、MMLU、GSM8K和HumanEval等任务中,标准差有所下降,这表明对齐可能会减少采样输出的多样性。然而,需注意,并非所有对齐方法都能始终如一地提高模型性能。例如,KTO和SimPO在MMLU上导致性能下降。此外,SimPO在MixEval基准上效果有限。

温度对非确定性的影响

对于采样生成,温度控制采样过程的随机性,较低的值使模型更具确定性,而较高的值使模型更随机。作者评估不同温度对非确定性生成的影响。

如上图所示,在AlpacaEval任务中,较高的温度会略微提高性能。在多项选择题的问答任务中,温度变化对性能的影响不显著。

值得注意的是,当温度极端升高至如1.5时,LLM在需要推理和代码生成的任务(如GSM8K和HumanEval)上显著受阻,模型解答问题变得困难。相反,在开放式指令任务(如AlpacaEval和ArenaHard)中,即便温度较高,模型依然能保持相对良好的表现。

重复对生成的影响

除了控制贪婪搜索和采样的参数,还有一个关键参数——重复惩罚,它也会影响生成过程。

重复惩罚通过调整新词是否重复出现在提示和已生成文本中的概率来工作。具体来说,值大于1.0时,模型倾向于使用更多新词;小于1.0时,则促进词语的重复。默认情况下,该参数设为1.0,以保持平衡。

如上图所示,大多数情况下建议保持默认值以获得最佳性能。但在AlpacaEval任务中,略微提高重复惩罚(如1.2)可能因GPT评审偏好简短答案而带来性能提升。

对于MixEval和MMLU,由于都鼓励简洁输出,重复惩罚的影响较小。而GSM8K数学推理任务则不同,最佳表现出现在重复惩罚设为0.9时,因数学推理常需重复问题中的数字和条件,过高设置反而降低性能。

非确定性生成中的表面模式

作者还对比了不同生成配置下各类任务的生成长度。如下图所示,贪心解码产生的响应比采样平均值短的情况用蓝色突出显示,反之则用紫色标记。

可以观察到贪婪解码生成的文本通常比采样生成的略短。在Yi系列模型处理AlpacaEval和GSM8K任务时,这一模式出现了变化,两种生成方法产生的响应长度几乎相当。

下图展示了Qwen2-7B-Instruct在GSM8K上贪婪解码与采样生成的效果差异。

结果显示,贪婪解码在解决GSM8K问题上表现显著优于采样生成(83.5% vs. 72.0%)。贪婪解码能有效且准确地解答问题,而采样生成则在多次尝试中错误率激增,达到89%,这表明采样方法可能在一定程度上削弱了LLMs的推理能力

LLMs的不确定性有何潜力

当前对LLMs的评估常局限于单一输出,这限制了对其全面能力的洞察。作者采用“Best-of-N”策略,即从多个采样响应中挑选最优答案。利用ArmoRM和FsfairX等先进奖励模型,对Llama-3-8B-Instruct的响应进行评分并排序,选取最高分作为输出。同时,设立“oracle”基准,以最佳响应为上限,评估策略潜力。

可以看到“Best-of-N”策略极大提升了LLMs性能,尤其是oracle选择下,Llama-3-8B-Instruct在MMLU、GSM8K和HumanEval上均超越GPT-4-Turbo。这凸显了小规模LLMs的强劲实力。

因此未来可以从两条路径强化小规模LLMs:

  1. 通过概率校准和优化偏好来提升答案质量

  2. 利用集成学习或自一致性等策略,从多个候选答案中精准挑选最佳项

结语

这篇文章给了我们一个重要的提示:当我们想要提升大模型的实力,或者更准确地评估它们的性能时,别忘了考虑解码方式这个关键因素。利用大模型自带的“不确定性”,我们可以找到更多创新的方法来推动技术进步。所以,不妨在设计和评估模型时,多琢磨琢磨解码方式,也许会带来意想不到的效果~

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

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

相关文章

好展位,抢先订!2025浙江(玉环)机械展

2025第18届浙江(玉环)机械工业展览会 时间地点:2025年4月25-28日 玉环会展中心 近年来,随着玉环工业经济的蓬勃发展,汽摩配件、阀门水暖五金产业、铜加工、眼镜配件、金属加工生产等行业,如同贪婪的巨人&…

React Native初次使用遇到的问题

Write By Monkeyfly 以下内容均为原创,如需转载请注明出处。 前提:距离上次写博文已经过去了5年之久,诸多原因导致的,写一篇优质博文确实费时费力,中间有其他更感兴趣的事要做(打游戏、旅游、逛街、看电影…

4.2、存储管理-页式存储

页式存储和段氏存储会考 页式存储几乎必考,段氏存储可能会考 页式存储 页式存储是操作系统的一种存储管理方式。 因为我们的程序往往是远远大于内存的,所以程序在执行的时候,是不会一次性把所有内容都装入到内存中,它会把程序分…

实验3-3 比较大小 想知道①和②的区别是什么(都错)

//实验3-3 比较大小 代码① #include<stdio.h> #include<math.h>void swap(int a, int b);// 正确声明 swap 函数int main() {int a, b, c;scanf("%d %d %d",&a,&b,&c);// 比较并交换 a 和 bif (a > b) {swap(a, b);}// 比较并交换 b 和 …

力扣刷题之3111.覆盖所有点的最少矩形数目

题干描述 给你一个二维整数数组 point &#xff0c;其中 points[i] [xi, yi] 表示二维平面内的一个点。同时给你一个整数 w 。你需要用矩形 覆盖所有 点。 每个矩形的左下角在某个点 (x1, 0) 处&#xff0c;且右上角在某个点 (x2, y2) 处&#xff0c;其中 x1 < x2 且 y2 …

关于vue开发中,高德地图有时不显示的问题

场景1&#xff1a;在弹出框中初始化地图 先设置 this.dialogVisible true; 然后再用nextTick初始化地图 this.$nextTick(() > { this.initAmap(); }); 场景2&#xff1a;点击tab页路由回退&#xff0c;导致高德地图不初始化的问题 解决方法&#xff1a; 通过$refs的方…

焦化行业超低排放改造巩固提升方案(朗观视觉)

朗观视觉小编观察发现&#xff1a;随着全球对环境保护意识的日益增强&#xff0c;焦化行业作为高污染、高排放的工业领域&#xff0c;其超低排放改造已成为行业转型升级的必然趋势。为了积极响应国家关于推进生态文明建设、打赢蓝天保卫战的号召&#xff0c;山东省生态环境厅发…

Windows + Ubuntu双系统!小白轻松安装

前言 这几天有小伙伴想着装WindowsUbuntu双系统&#xff0c;但苦于找不到办法&#xff0c;就在某篇文章后台留言&#xff1a; 这不&#xff0c;今天就更新了嘛&#xff01;虽然做不到有求必应&#xff0c;但教程帖还是可以写写的&#xff0c;能帮一个是一个&#xff01; 今天要…

深入探讨RCE漏洞及其防御策略

1. RCE漏洞 1.1. 漏洞原理 远程代码执行&#xff08;RCE&#xff09;漏洞允许攻击者远程注入并执行操作系统命令或代码&#xff0c;从而控制后台系统。 1.2. 漏洞产生条件 调用第三方组件存在代码执行漏洞。用户输入内容作为系统命令参数拼接到命令中。对用户输入的过滤不严…

关于Linux服务器端更新命令apt update没有效果问题总结(校园网认证)

这里写目录标题 项目场景&#xff1a;问题描述错误解决过程个人解决apt update和apt upgrade 项目场景&#xff1a; 在使用Django进行服务器部署的时候&#xff0c;需要使用执行命令 apt update&#xff1a; 具体场景&#xff1a; 问题描述 需要使用apt命令进行升级、下载…

[HITCON 2017]SSRFme 1

目录 代码审计 符号shell_exec() 函数:GET " . escapeshellarg($_GET["url"])&#xff1a;pathinfo($_GET["filename"]basename() 题目解析 代码审计 118.182.186.90 <?phpif (isset($_SERVER[HTTP_X_FORWARDED_FOR])) {$http_x_headers explod…

二叉树,二叉查找树,平衡二叉树

一.绪论: 二.数据结构(二叉树): 1.简介: 1)每一个节点&#xff08;也叫结点&#xff09;都是一个独立的对象-->当中不仅要存数据值&#xff0c;还要存父节点地址值&#xff0c;左子节点地址值&#xff0c;右子 节点地址值 2)没有父节点或者子节点的节点就记为null 2.遍历方…

【Bug记录】模板生成错误:不属于vector的成员

项目场景&#xff1a; 在调用自己写的一个简化版优先级队列时候报语法错误&#xff1a;模板生成错误 问题描述 模板生成错误&#xff0c;如下图 原因分析&#xff1a; 问题的分析&#xff1a;刚开始怀疑写模板写错了&#xff0c;之后看错误列表发现是top函数不属于vector。…

<数据集>棉花识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;13765张 标注数量(xml文件个数)&#xff1a;13765 标注数量(txt文件个数)&#xff1a;13765 标注类别数&#xff1a;4 标注类别名称&#xff1a;[Partially opened, Fully opened boll, Defected boll, Flower] 序…

llama-factory 系列教程 (六),linux shell 脚本自动实现批量大模型的训练、部署与评估

背景 最近在做大模型微调训练的评估&#xff0c;每次都要手动训练大模型&#xff0c;手动评估。 发现这样太浪费时间了&#xff0c;于是就尝试着使用linux shell 脚本&#xff0c;利用 for 循环自动实现大模型的训练、部署与评估。 实验&#xff1a;在不同的文本分类数据集尺…

记录两道关于编码解码的问题

环境&#xff1a;php环境即可&#xff0c;也可使用phpstudy。 参考文章: 深入理解浏览器解析机制和XSS向量编码-CSDN博客(很重要) HTML 字符编码&#xff08;自我复习&#xff09;-CSDN博客 例题1&#xff1a; <?php header("X-XSS-Protection: 0"); $xss …

Shell编程——简介和基础语法(1)

文章目录 Shell简介什么是ShellShell环境第一个Shell脚本Shell脚本的运行方法 Shell基础语法Shell变量Shell传递参数Shell字符串Shell字符串截取Shell数组Shell运算符 Shell简介 什么是Shell Shell是一种程序设计语言。作为命令语言&#xff0c;它交互式解释和执行用户输入的命…

【算法】一文带你搞懂0-1背包问题!(实战篇)

在【算法】一文带你搞懂0-1背包问题&#xff01;&#xff08;理论篇&#xff09;中&#xff0c;讲解了纯0-1背包问题及其原理&#xff0c;本篇文章中进入LeetCode中0-1背包问题应用的实战环节&#xff0c;主要难点其实在于看出是0-1背包问题、转换成0-1背包问题。 416. 分割等和…

动态卷积(轻量级卷积)替代多头自注意力

动态卷积&#xff0c;它比自注意力更简单、更有效。我们仅基于当前时间步长预测单独的卷积核&#xff0c;以确定上下文元素的重要性。这种方法所需的操作数量随输入长度呈线性增长&#xff0c;而自注意力是二次的。在大规模机器翻译、语言建模和抽象摘要上的实验表明&#xff0…