最近读到一篇超有意思的研究,“用合成评估挑战AI(CHASE)”提出了一个超酷的统一框架,能让大语言模型(LLMs)自己生成超有挑战性的问题,还完全不用人工参与!这可太颠覆传统了,今天必须来和大家好好唠唠。
论文标题: How to Get Your LLM to Generate Challenging Problems for Evaluation 2502.14678
下载链接在文末阅读原文
更多 LLM 架构文章点击查看:
LLM 架构专栏
大模型架构专栏文章阅读指南
1. AI 智能体,颠覆还是赋能?一文读懂!
2. 1W8000字 解锁 AI 高效运作密码:工作流与智能体如何协同?
3. 万字深度剖析 AI 代理:类型、应用及优势与局限全解析
4. 1W5000字 深度剖析大模型Agent框架
5. Agent系列 1W字用Python从零搭建AI智能体
CHASE框架致力于为三个不同领域创建评估基准,分别是基于文档的问答、存储库级代码完成和数学推理。
传统做法是先合成复杂问题,再从生成的大模型里找答案,但这样问题很容易被模型解决。CHASE则另辟蹊径,先从简单的问题 - 解决方案对入手,然后自下而上构建具有挑战性的上下文。比如,把解决方案或推理的部分藏起来,让模型得从长上下文里提取信息或者自己推断,难度一下子就上去了。
CHASE框架的管道中使用了两种不同的大语言模型:生成器G和验证器V。这就好比给大任务拆分成了一个个小任务,每个模型各司其职。这样做不仅能更好地控制生成过程的每一步,还方便单独优化推理参数,生成的数据也能根据需求调整复杂性和多样性。而且,不在生成过程中的大语言模型还能用来检查数据质量,每个验证任务又小又简单,结果更靠谱。
下面咱们详细看看CHASE在不同领域的应用。
CHASE - QA:基于文档的问答挑战
CHASE - QA是一项基于文档的问答任务,包含671个问题。每个示例都有一组文档和一个问答对。
1. 生成多样场景
生成器G会生成各种各样逼真的场景,用(角色,集合名称)元组来定义。比如说“大学生”在“大学网站的校内网”搜索信息,“实习医生”在“疾病百科全书”里找资料。最开始会有5个手动标注的场景作为引导,之后G就会用自己生成的场景当提示,不断扩展数据集。
2. 生成问答(QA)对
给定一个场景,G就会生成一个符合角色身份的信息搜索问题,还有对应的答案。这些答案可不简单,是由多个要点组成的。同时,G还会生成一组文档的大纲,答案要点就分布在这些文档里。
3. 生成无关信息
为了增加检索任务的难度,G会给每个原始问题生成额外的问答对。这些新问题的答案和原始答案类型相似,但其实和原始问题没啥关系,就像在现实中找信息时,总会遇到一些看似相关却没用的内容。验证器V会来检查这些问答对是不是真的无关。
4. 生成文档
对于每个问答对,G都会生成完整的文档。文档里不仅有答案要点,还有很多无关信息,模拟出真实又杂乱的信息环境。之后还会用验证器V进行两步检查,确保数据质量:一是检查答案的完整性,看看基本答案的所有部分是不是都在文档里;二是检查有没有信息泄漏,保证文档里除了预定义的答案点,没有其他和原始问题相关的信息。
5. 设置
CHASE - QA用GPT - 4o作为生成器G,GPT - 4o - mini作为验证器V。先采样500个唯一场景,每个场景生成2个问答对,再为每个问答对生成4个相似的问答对来获取无关信息。最后经过拒绝抽样,得到了671个示例的最终基准。
CHASE - CODE:存储库级代码完成的试炼
CHASE - CODE是一个包含500个问题的存储库级代码完成基准测试,主要针对Python函数存储库,要求基于一组目标实现新函数,数据涵盖数据预处理和算法两个领域。
1. 生成Python函数
生成器G从3个带注释的示例起步,为特定领域生成各种Python函数,然后用这些函数当提示生成更多函数。验证器V会通过生成和执行代码来验证这些辅助函数的正确性。
2. 生成问题陈述和答案代码
创建单个问题时,会随机采样一些辅助函数。G要创建一个复杂的“答案代码”函数,这个函数至少得用4个相关辅助函数,还要加上额外逻辑。同时,G会生成自然语言问题陈述。之后验证器V会进行两步验证:一是生成测试代码检查答案代码的执行正确性;二是验证问题陈述是否充分,看看根据问题陈述和辅助函数生成的代码,和原始答案代码在语义上是否一致。
3. 生成测试代码
G会为答案代码生成Python测试代码,这个测试代码会独立实现答案代码的逻辑,用样本值初始化答案函数,再把结果和自己的实现进行比较。要是测试代码执行失败或者答案代码没通过测试,这个示例就会被丢弃。
4. 构建代码存储库
每个示例都会创建一个Python文件存储库,里面有相关的辅助函数,还有从预生成集合里随机采样的不相关Python函数,增加了问题的复杂性。
5. 设置
CHASE - CODE用GPT - 4o - mini作为生成器G,Gemini - 1.5 - Flash作为验证器V。由于生成代码可能出错,所以要经过很多次迭代。每个域先采样500个可执行辅助函数,再用10个随机辅助函数生成问题陈述和答案代码,目标是每个域1000个示例。每个示例最多生成10个测试代码,只保留测试通过的。最后经过拒绝抽样,得到500个示例的最终基准,每个示例的存储库包含100个不相关辅助函数,分布在10个Python文件里。
CHASE - MATH:数学推理的挑战升级
CHASE - MATH包含500个小学水平的数学应用题,只涉及基本算术运算,但难度可不小。
1. 分解种子MWP
种子MWP用(问题p,答案a)元组表示。生成器G会把问题p分解成两部分:提供所有信息的上下文c和询问未知量的问题q。
2. 创建MWP的延续
以一个种子MWP为基础,G会构建一个新问题,这个新问题是前一个问题的延续。新问题的上下文会把前一个问题的答案当作已知信息,但不会明确说出来,得让模型自己推断。
3. 结合种子MWP及其延续
把种子问题和它的延续结合起来,就得到了一个推理深度更高的新MWP。新问题的上下文是两者上下文的串联,问题和答案则来自延续部分。
4. 迭代增加推理深度
通过不断迭代创建新的延续,增加种子MWP的推理深度。每次迭代后新的延续会成为下一次迭代的种子问题。由于新问题难度和种子数据集差不多,所以会用一组验证器模型来检查正确性。要是有验证器不通过,这个问题就会被丢弃,重新开始。
5. 设置
CHASE - MATH用GPT - 4o - mini作为生成器G,Gemini - 1.5 - Flash和Llama - 3.1–70B的集合作为验证器V。从GSM8k和SVAMP的测试集里选了2.3k个种子问题,最大和最小推理深度分别设为8和2。每个问题进行15次迭代生成延续,这个过程重复3次,大约生成1500个问题。经过拒绝抽样,丢弃大约75% GPT - 4o - mini能解决的问题,最后得到500个具有挑战性的MWP。
评价:CHASE带来的新认知
在CHASE基准测试中,各大语言模型都遇到了不小的挑战。就算是表现最好的大语言模型,在三个领域的基准测试里准确率也比较低,说明大语言模型的推理能力还有很大的提升空间。而且CHASE基准能有效区分不同大语言模型的性能,不像一些标准基准,大家的表现都差不多。比如双子座模型在长上下文推理(CHASE - QA和CHASE - CODE)方面就很突出;GPT - 4o在CHASE - CODE的数据预处理任务上比较熟练。另外,CHASE - MATH和现有数学基准测试相比,不同大语言模型之间的性能差异很大,这让我们怀疑现有数学基准可能存在数据污染的问题。
和直接提示大语言模型生成数据的方式相比,CHASE生成的数据更具挑战性。而且随着上下文大小增加,大语言模型在CHASE - QA和CHASE - CODE上的性能会下降。有意思的是,GPT - 4o的判断和人类注释者在CHASE - QA上的一致性很高,说明大语言模型的判断还是比较可靠的。不过,用弱模型生成的数据对小模型进行微调,在CHASE - MATH上的性能提升很有限。
CHASE框架真的为大语言模型的评估带来了新的思路和方法,让我们对大语言模型的能力有了更深入的认识。相信在未来,随着研究的不断深入,会有更多有趣的成果出现,一起期待吧!
## 推荐阅读
1. DeepSeek-R1的顿悟时刻是如何出现的? 背后的数学原理
2. 微调 DeepSeek LLM:使用监督微调(SFT)与 Hugging Face 数据
3. 使用 DeepSeek-R1 等推理模型将 RAG 转换为 RAT
4. DeepSeek R1:了解GRPO和多阶段训练
5. 深度探索:DeepSeek-R1 如何从零开始训练
6. DeepSeek 发布 Janus Pro 7B 多模态模型,免费又强大!
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。