大语言模型的推理能力

article/2025/8/7 8:01:39

2025年,各种会推理的AI模型如雨后春笋般涌现,比如ChatGPT o1/o3/o4、DeepSeek r1、Gemini 2 Flash Thinking、Claude 3.7 Sonnet (Extended Thinking)

对于工程上一些问题比如复杂的自然语言转sql,我们可能忍受模型的得到正确答案需要更多时间,但是准确度一定要高。那么我们就可以考虑用文中的方法(模型推理能力)得到更高精确度。

什么是推理能力

简单说,就是模型在回答问题时会先输出一大段推理过程,然后才给出最终答案。

下图我们分别在deepseek的官网使用不带深度思考的与带深度思考(DeepSeek-R1)的模型对北京是中国的首都吗?
可以看到当我们使用深度思考模型AI不会直接回答,而是会先来一段内心独白再去回答,这中间的内心独白就叫做推理。
在这里插入图片描述
推理能力类似早先年间计算机视觉领域的可视化模型输出的过程。推理能力是某些大模型本身就存在的能力,我们能达到的推理效果是因为我们通过训练或提示词解码了这一过程。

在这里插入图片描述

让LLM实现推理能力的四个方法

Chain-of-Thought 提示词并不是对所有LLM都通用,比如LLama3不适用。

我们在平台上使用的DeepSeek-R1就是结合了本文提到的四种方法实现的

1. Chain-of-Thought

CoT方法是一种提示词引导,分为Short CoT和Long CoT代表性的Supervised CoT,Short CoT又可分为few-shot CoT和 zero-shot CoT。

类别方法名称实现方式示例
Short CoTFew-shot CoT提供示例引导给出2-3个完整的问题-思考-答案示例,然后提问
Short CoTZero-shot CoT简单提示引导在问题后加上"让我们一步步思考"
Long CoTSupervised CoT详细流程指导编写复杂提示词,明确指定思考流程、验证步骤、输出格式等

few-shot CoT是给一些范例引导模型思考,下图展示了few-shot CoT的过程。zero-shot CoT是在问题后面加上一步步来思考在这里插入图片描述
zero-shot CoT是在问题后面加上让我们一步步思考,下图展示了zero-shot CoT的过程。
在这里插入图片描述
Supervised CoT通过编写详细的提示词来指导模型的思考流程,下图展示了Supervised CoT的过程:
在这里插入图片描述
在这里插入图片描述

2. 多次采样

该方法核心是既然一次做不对,那就多试几次。由此引出了两类工程问题:

  • 如何让模型尝试多次?(通常尝试16+次)
  • 如何在多次生成的答案筛选正确答案
产生多个答案
  1. 问题难度决定策略
    • 简单问题:纯串行效果最好
    • 困难问题:需要并行+串行的平衡
    • 中等问题:理想比例介于两者之间
  2. 计算预算影响
    • 小预算:串行采样更高效
    • 大预算:需要平衡分配避免过度优化
  3. 互补性
    • 并行采样提供全局搜索能力
    • 串行采样提供局部优化能力
    • 两者结合能够充分利用测试时计算资源
1. 并行采样(Parallel Sampling)

核心思想:同时生成多个完全独立的解答

具体做法

  • 给定同一个问题,让模型独立生成N个不同的回答
  • 每次生成都是从头开始,互不依赖
  • 通过设置temperature > 0来引入随机性,确保每次生成的答案都不完全相同
2. 串行采样(Sequential Sampling)/ 迭代修正

核心思想:基于前一次的尝试来改进下一次的回答

具体做法

  • 先生成一个初始答案
  • 将这个答案作为上下文,让模型基于此生成改进版本
  • 重复这个过程,每次都在前面答案的基础上进行优化
3. 混合策略:并行+串行

最佳策略往往是两种方法的结合
具体做法

  • 将计算预算分配给并行和串行两种采样
  • 比如用一部分预算生成几个独立的起始点
  • 然后从每个起始点进行串行改进

适应性分配

  • 简单问题:更多串行采样(因为初始答案通常在正确轨道上)
  • 困难问题:更多并行采样(需要探索不同的解题策略)
  • 中等难度:平衡分配
筛选正确答案
1. Majority Vote:群众的智慧

最直观的方法是投票机制:看哪个答案出现次数最多就选哪个。

实验数据显示了一个很有趣的现象:Majority Vote的效果提升并不是线性的。

  • 前期快速上升:从1次尝试到16次,准确率提升很明显
  • 中期平缓增长:从16次到64次,提升变得温和
  • 后期趋于饱和:超过128次后,基本不再提升

这个曲线形状很符合直觉。想象一下,如果正确答案出现的概率是30%,那么:

  • 试1次:30%概率对
  • 试5次:如果正确答案出现2次以上就赢,概率大大提升
  • 试50次:如果正确答案真的占30%,那肯定会胜出

但如果模型本身对某类问题就是"系统性地理解错误",那试再多次也没用——每次都会用错误的方法,只是错得稍有不同而已。

实际操作中,你需要在提示词里告诉模型把最终答案放在特定标签中(比如<answer></answer>),这样才能方便地统计各个答案的出现频率。

2. Best of N:专业裁判来评分

你可以直接再加一个模型,用提示词让模型判断它做得对不对。
更高级的做法是训练一个专门的验证器来给答案打分,然后从N个候选中选出得分最高的。这类似于建立一个机器学习模型,我们需要准备数据集,然后得到这样的模型

训练验证器的方法很巧妙:

  1. 准备一批有标准答案的题目
  2. 让语言模型生成大量不同的解答
  3. 根据最终答案的对错来标注:正确答案标记为1,错误答案标记为0
  4. 用这些数据训练验证器

这样就得到了一个"专业裁判",能够识别哪些答案更可能正确。

3. Beam Search:智能路径探索

如果说Best of N是"海选后评判",那么Beam Search就是"边走边筛选"的智能策略。它不等到最后才评判,而是在解题的每一步都进行筛选,只保留最有希望的路径继续探索。

核心思想:把解题过程看作一棵树,每一步都是树的一个分支,我们只保留最promising的几条路径继续往下走。

具体流程

  1. 生成多个起始步骤:比如生成8个不同的第一步解法
  2. 过程验证器评分:用训练好的验证器给每个步骤打分
  3. 保留最优路径:只保留得分最高的4个步骤(这个4就是beam width)
  4. 继续扩展:从这4个步骤分别生成下一步,又得到新的候选
  5. 重复筛选:再次用验证器评分,保留最好的4个
  6. 直到完成:重复这个过程直到得到最终答案

关键组件 - 过程验证器
与普通验证器不同,过程验证器不需要看到完整答案就能判断当前步骤的质量。它就像一个经验丰富的老师,看到学生解题的前几步就能判断这个思路靠不靠谱。

训练过程验证器的巧妙方法

  1. 从某个中间步骤开始,让原模型继续解题多次(比如20次)
  2. 统计从这个步骤开始最终得到正确答案的比例
  3. 这个比例就是该步骤的"质量分数"
  4. 训练验证器学会预测这个分数

比如从某个step1开始,20次尝试中有14次得到正确答案,那这个step1的质量分数就是0.7。

实际操作技巧

请逐步解决这个数学问题
每个步骤用<step>和</step>标签包围
示例:
<step>分析:这是一个几何问题...</step>
<step>计算:根据勾股定理...</step>

让模型生成到</step>就停止,这样可以精确控制每次只生成一步,然后用验证器评估这一步的质量。

3. 模仿学习(Imitation Learning)

传统的训练数据只包含问题和答案,但在这种方法中,我们的训练数据还包含了完整的推理步骤。
比如说,原来的训练数据是:

  • 问题:小明有3个苹果,小红给了他2个,他现在有几个苹果?
  • 答案:5个

现在的训练数据变成:

  • 问题:小明有3个苹果,小红给了他2个,他现在有几个苹果?
  • 推理过程:小明原本有3个苹果,小红又给了他2个苹果,所以总共是3+2=5个苹果
  • 答案:5个

这里遇到的最大问题是:推理过程的数据从哪里来?让人工去标注这些推理步骤实在太耗时耗力了。

聪明的解决方案是:让语言模型自己生成推理过程。市面上已经有很多强大的推理模型,比如GPT-o1、Claude等。最简单的方法就是知识蒸馏:

  1. 用一个强大的"老师"模型生成推理过程和答案
  2. 让你的"学生"模型直接学习这些数据
  3. 完成训练

4. 强化学习

DeepSeek团队首先创造了一个叫R1-0的模型,这是一个完全用强化学习训练出来的版本。他们以DeepSeek-V3-Base作为基础模型,用两个主要的奖励信号进行训练:

  • 正确率奖励:答对问题得到正向反馈
  • 格式奖励:要求模型生成特定的思考标记(think token)
    实验结果表明,这种纯粹的强化学习方法确实有效。

真正的DeepSeek-R1:复杂的混合训练流程

R1-0效果单次尝试的正确率可以接近GPT-o1,但是它有一个致命问题:生成的推理过程几乎无法阅读

官方发布的DeepSeek-R1对R0有了更进一步提升,从而使得其推理过程能正确被阅读,且效果超过o1。

R1使用的方法其实就是融合了前面提到的四种方法。

第一步:推理数据人工标注

首先,研究团队用R1-0来生成带有推理过程的训练数据。但由于R1-0的输出质量堪忧,他们投入了大量人力去修改和改写这些推理过程。

人工标注员需要将模型生成的那些难以理解的推理过程,改写成人类可以阅读的版本。

除了改写R1-0的输出,他们还使用了CoT:

  • 用少样本提示(Few-shot CoT)让其他模型生成推理数据
  • 使用提示工程让模型生成更详细、包含反思和验证的答案

这一步做完后,就可以训练一个模型了。我们把这个训练好的模型称为模型A

第二步:改进的强化学习

接下来,他们对模型A进行强化学习,但这次的强化学习有所改进。除了要求高正确率,还增加了一个重要约束:语言一致性奖励

如果模型在推理过程中始终使用同一种语言(比如全程英文或全程中文),就会获得额外奖励。这样可以避免模型在推理中频繁切换语言,提高可读性。

虽然这个约束会轻微降低模型的正确率,但研究团队认为这是值得的权衡。

第三步:扩展任务范围

有了模型B之后,训练的重点从数学和编程扩展到各种不同类型的任务。他们让模型B对各种问题生成推理过程和答案。

由于很多任务没有标准答案,他们使用DeepSeek-V3作为验证器来判断答案质量。同时,他们还设置了一些过滤规则,去除那些质量较差的推理过程,比如:

  • 使用多种语言混杂的过程
  • 过于冗长的推理
  • 包含不必要代码的过程

第四步:大规模模仿学习(模型C)

这一步是自动化的,因此可以生成更多数据。他们收集了60万条推理数据,同时为了防止模型遗忘之前学到的知识,还加入了20万条自我输出数据(让模型学习自己之前的优质输出)。

用这80万条数据对DeepSeek-V3-Base进行模仿学习,得到模型C。

第五步:最终的强化学习

最后,对模型C进行一轮强化学习,重点提升模型的安全性和有用性,最终得到我们使用的DeepSeek-R1。


http://www.hkcw.cn/article/xxGSGFRnmp.shtml

相关文章

PINN for PDE(偏微分方程)1 - 正向问题

PINN for PDE(偏微分方程)1 - 正向问题 目录 PINN for PDE(偏微分方程)1 - 正向问题一、什么是PINN的正问题二、求解的实际例子三、基于Pytorch实现的代码 - 分解3.1 引入库函数3.2 设置超参数3.3 设计随机种子&#xff0c;确保复现结果的一致性3.4 对于条件等式生成对应的训练…

Adobe LiveCycle ES、LiveCycle DS 与 BlazeDS 关系解析与比较

Adobe LiveCycle 系列产品是企业级解决方案的重要组成部分&#xff0c;但在命名和功能上常常造成混淆。 产品定义 Adobe LiveCycle ES (Enterprise Suite) LiveCycle ES是一个基于SOA的平台&#xff0c;部署在J2EE应用服务器上。它提供开发、部署、配置和执行服务的功能。基…

Redis最佳实践——性能优化技巧之监控与告警详解

Redis 在电商应用的性能优化技巧之监控与告警全面详解 一、监控体系构建 1. 核心监控指标矩阵 指标类别关键指标计算方式/说明健康阈值&#xff08;参考值&#xff09;内存相关used_memoryINFO Memory 获取不超过 maxmemory 的 80%mem_fragmentation_ratio内存碎片率 used_m…

使用 DeepSeek API 搭建智能体《无间》- 卓伊凡的完整指南 -优雅草卓伊凡

使用 DeepSeek API 搭建智能体《无间》- 卓伊凡的完整指南 -优雅草卓伊凡 作者&#xff1a;卓伊凡 前言&#xff1a;为什么选择 DeepSeek API&#xff0c;而非私有化部署&#xff1f; 在开始搭建智能体之前&#xff0c;我想先说明 为什么推荐使用 DeepSeek API&#xff0c;而…

lidar和imu的标定(三)平面约束的方法

看了一篇&#xff1a;基于平面特征的地面机器人雷达-惯性里程计外参标定方法&#xff1b; 它和GRIL-Calib不同之处&#xff0c;就是采用了平面优化和栅格优化。 栅格优化就不介绍了&#xff0c;感觉工程上不。 平面优化则很容易懂&#xff0c;就是标定出来了激光雷达到IMU之…

CppCon 2014 学习: C++ on Mars

主要介绍了如何在火星探测器的飞行软件中使用 C。&#xff1a; 介绍了火星探测器&#xff08;如 Sojourner, Spirit, Opportunity, Curiosity, Perseverance&#xff09;。强调其复杂性和自主性。 延迟的现实&#xff1a;地球与火星之间的通信时延 单程信号延迟为 4 到 22 分…

【MFC】初识MFC

目录 01 模态和非模态对话框 02 静态文本 static text 01 模态和非模态对话框 首先我们需要知道模态对话框和非模态对话框的区别&#xff1a; 模态对话框是一种阻塞时对话框&#xff0c;它会阻止用户与应用程序的其他部分进行交互&#xff0c;直到用户与该对话框进行交互并关…

C#数字图像处理(二)

文章目录 1.灰度直方图1.1 灰度直方图定义1.2 灰度直方图编程实例 2.线性点运算2.1线性点运算定义2.2 线性点运算编程实例 3.全等级直方图灰度拉伸3.1 灰度拉伸定义3.2 灰度拉伸编程实例 4.直方图均衡化4.1 直方图均衡化定义4.2 直方图均衡化编程实例 5.直方图匹配5.1 直方图匹…

SOC-ESP32S3部分:24-WiFi配网

飞书文档https://x509p6c8to.feishu.cn/wiki/OD4pwTE8Jift2IkYKdNcSckOnfd 对于WiFi类设备&#xff0c;最重要的功能之一就是联网&#xff0c;WiFi需要联网&#xff0c;就需要知道我们家里路由的账号和密码&#xff0c;像手机类型的高端设备没什么问题&#xff0c;我们可以直接…

使用langchain实现五种分块策略:语义分块、父文档分块、递归分块、特殊格式、固定长度分块

文章目录 分块策略详解1. 固定长度拆分&#xff08;简单粗暴&#xff09;2. 递归字符拆分&#xff08;智能切割&#xff09;3. 特殊格式拆分&#xff08;定向打击&#xff09;Markdown分块 4. 语义分割&#xff08;更智能切割&#xff09;基于Embedding的语义分块基于模型的端到…

(七)【Linux进程的创建、终止和等待】

1 进程创建 1.1 在谈fork函数 #include <unistd.h> // 需要的头文件// 返回值&#xff1a;子进程中返回0&#xff0c;父进程返回子进程id&#xff0c;出错返回-1调用fork函数后&#xff0c;内核做了下面的工作&#xff1a; 创建了一个子进程的PCB结构体、并拷贝一份相…

EMO2:基于末端执行器引导的音频驱动虚拟形象视频生成

今天带来EMO2&#xff08;全称End-Effector Guided Audio-Driven Avatar Video Generation&#xff09;是阿里巴巴智能计算研究院研发的创新型音频驱动视频生成技术。该技术通过结合音频输入和静态人像照片&#xff0c;生成高度逼真且富有表现力的动态视频内容&#xff0c;值得…

Baklib知识中台加速企业服务智能化实践

知识中台架构体系构建 Baklib 通过构建多层级架构体系实现知识中台的底层支撑&#xff0c;其核心包含数据采集层、知识加工层、服务输出层及智能应用层。在数据采集端&#xff0c;系统支持对接CRM、ERP等业务系统&#xff0c;结合NLP技术实现非结构化数据的自动抽取&#xff1…

GpuGeek 618大促引爆AI开发新体验

随着生成式AI技术迅猛发展&#xff0c;高效可靠的算力资源已成为企业和开发者突破创新瓶颈的战略支点。根据赛迪顾问最新发布的《2025中国AI Infra平台市场发展研究报告》显示&#xff0c;2025年中国生成式人工智能企业应用市场规模将达到629.0亿元&#xff0c;作为AI企业级应用…

Linux线程同步实战:多线程程序的同步与调度

个人主页&#xff1a;chian-ocean 文章专栏-Linux Linux线程同步实战&#xff1a;多线程程序的同步与调度 个人主页&#xff1a;chian-ocean文章专栏-Linux 前言&#xff1a;为什么要实现线程同步线程饥饿&#xff08;Thread Starvation&#xff09;示例&#xff1a;抢票问题 …

任务22:创建示例Django项目,展示ECharts图形示例

任务描述 知识点&#xff1a; DjangoECharts 重 点&#xff1a; DjangoECharts 内 容&#xff1a; 创建Django项目掌握ECharts绘制图形通过官网ECharts示例&#xff0c;完成Django项目&#xff0c;并通过配置项进行修改图形 任务指导 1、创建web_test的Django项目 2…

深度学习入门Day1--Python基础

一、基础语法 1.变量 python是“动态类型语言”的编程语言。用户无需明确指出x的类型是int。 x10 #初始化 print(x) #输出x x100 #赋值 print(x) print(type(x))#输出x的类型<class int>2.算术计算 >>>4*5 >20 >>>3**3#**表示乘方&#xff08;3…

九坤:熵最小化加速LLM收敛

&#x1f4d6;标题&#xff1a;One-shot Entropy Minimization &#x1f310;来源&#xff1a;arXiv, 2505.20282 &#x1f31f;摘要 我们训练了 13,440 个大型语言模型&#xff0c;发现熵最小化只需要一个未标记的数据和 10 步优化&#xff0c;以实现比使用数千个数据获得的…

微服务面试(分布式事务、注册中心、远程调用、服务保护)

1.分布式事务 分布式事务&#xff0c;就是指不是在单个服务或单个数据库架构下&#xff0c;产生的事务&#xff0c;例如&#xff1a; 跨数据源的分布式事务跨服务的分布式事务综合情况 我们之前解决分布式事务问题是直接使用Seata框架的AT模式&#xff0c;但是解决分布式事务…

儿童节快乐,聊聊数字的规律和同余原理

某年的6月1日是星期日。那么&#xff0c;同一年的6月30日是星期几&#xff1f; 星期是7天一个循环。所以说&#xff0c;这一天是星期几&#xff0c;7天之后同样也是星期几。而6月30日是在6月1日的29天之后&#xff1a;29 7 4 ... 1用29除以7&#xff0c;可以得出余数为1。而…