<论文>DeepSeek-R1:通过强化学习激励大语言模型的推理能力(深度思考)

一、摘要

        本文跟大家来一起阅读DeepSeek团队发表于2025年1月的一篇论文《DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning | Papers With Code》,新鲜的DeepSeek-R1推理模型,作者规模属实庞大。如果你正在使用DeepSeek,你会发现输入框下方有个“深度思考(R1)”的功能,实际上就是在使用这篇文章所提出来的DeepSeek-R1大模型。

译文:

        我们推出了第一代推理模型 DeepSeek-R1-Zero 和 DeepSeek-R1。DeepSeek-R1-Zero 是一个通过大规模强化学习(RL)训练而成的模型,在初步阶段没有进行有监督的微调(SFT),它展示出了卓越的推理能力。通过强化学习,DeepSeek-R1-Zero 自然地呈现出许多强大而有趣的推理行为。然而,它也面临着一些挑战,如可读性差和语言混合。为了解决这些问题并进一步提高推理性能,我们推出了 DeepSeek-R1,它在强化学习之前结合了多阶段训练和冷启动数据。DeepSeek-R1 在推理任务上实现了与 OpenAI-o1-1217 相当的性能。为了支持研究社区,我们开源了 DeepSeek-R1-Zero、DeepSeek-R1 以及六个从 DeepSeek-R1 基于 Qwen 和 Llama 提炼出的密集模型(1.5B、7B、8B、14B、32B、70B)。

二、核心创新点

        论文指出,以往的工作严重依赖大量的有监督数据来提升模型性能,而作者在这篇论文中证明了即使不使用有监督微调SFT作为冷启动,通过大规模的强化学习RL也能显著提升模型的推理能力。此外,加入少量冷启动数据可以进一步提升性能。论文介绍了两个推理模型,一个是DeepSeek-R1-Zero,这是直接将RL应用于基础模型,不使用任何SFT数据的模型;另一个是DeepSeek-R1,该模型从一个用数千个长思维链样例微调过的checkpoint开始应用RL。

1、DeepSeek-R1-Zero训练策略

1.1 强化学习策略Group Relative Policy Optimization(GRPO)

        为了节省强化学习的成本,作者使用了GRPO技术。该技术舍弃了通常与策略模型大小相同的critic模型,取而代之的是从Group分数中来评估baseline。具体来说,对于每个问题q,GRPO从旧策略中采样一组输出,接着通过最大化以下目标来优化策略模型

        其中,是超参数,是优势,使用与每个组内的输出相对应的一组奖励来计算:

1.2 奖励模型

        奖励是训练信号的来源,决定了强化学习的优化方向。为了训练DeepSeek-R1-Zero,作者采用了一个基于规则的奖励系统,由两种类型的奖励构成:

  • 准确率奖励:准确率奖励模型评估响应是否正确。例如对于具有确定性结果的数学问题,模型需要以指定格式提供最终答案。
  • 格式奖励:格式奖励模型强制受训练的模型将其思考过程放在“<think>”和“</think>”标签之间。

        作者指出,在开发DeepSeek-R1-Zero时不应用结果或者过程神经奖励模型是因为神经奖励模型在大规模强化学习的过程中可能会受到奖励黑客攻击。

1.3 训练模板

        作者设计了一个简单的模板来引导基础模型遵循指定的指令。这个模板要求模型先生成推理过程,然后给出最终答案。

2、DeepSeek-R1

        在对DeepSeek-R1-Zero的训练过程中,出现了两个自然的问题:一个是通过加入少量高质量数据作为冷启动,推理性能能否进一步提高?另一个是如何训练一个用户友好的模型,该模型不仅能够产生清晰连贯的思维链,还能展示出强大的通用能力?由此,作者设计了一个用于训练DeepSeek-R1的pipeline。

2.1 冷启动

        与DeepSeek-R1-Zero不同,为了防止基础模型中强化学习训练的早期不稳定冷启动阶段,对于DeepSeek-R1,作者构建并收集少量的长思维链数据,以微调模型作为初始的强化学习actor。这里,作者收集了数千个冷启动数据,以微调DeepSeek-V3-Base作为RL的起点。与DeepSeek-R1-Zero相比,冷启动数据的优势在于:

  • 可读性:DeepSeek-R1-Zero的一个关键限制是其内容通常不适合阅读。回复可能会混合多种语言或缺乏Markdown格式来突出显示给用户的答案。相比之下,在为DeepSeek-R1创建冷启动数据时,作者设计了一种可读的模式,即在每个回复的末尾包含一个摘要,并过滤掉不便于读者阅读的回复。在这里,作者将输出格式定义为:|特殊标记|<推理过程>|特殊标记|<摘要>,其中推理过程是查询的思维链,而摘要用于总结推理结果。
  • 潜力:通过使用人类先验仔细设计冷启动数据的模式,DeepSeek-R1-Zero的性能更好。

2.2 面向推理的强化学习

        在对DeepSeek-V3-Base在冷启动数据上进行微调后,作者应用与DeepSeek-R1-Zero相同的大规模强化学习训练过程。这个阶段侧重于增强模型的推理能力,特别是在编码、数学、科学和逻辑推理等推理密集型任务中。

        在训练过程中,思维链(CoT)经常出现语言混合,特别是当强化学习提示涉及多种语言时。为了缓解语言混合问题,作者在强化学习训练期间引入了语言一致性奖励,该奖励通过统计思维链中目标语言单词的比例来计算。尽管消融实验表明这种对齐会导致模型性能略有下降,但作者认为这种奖励符合人类偏好,使其更具可读性。最后,作者将推理任务的准确性和语言一致性奖励直接相加,形成最终奖励。然后,在微调后的模型上应用强化学习训练,直到模型在推理任务上达到收敛。

2.3 抑制采样和有监督微调

        当以推理为导向的强化学习收敛时,作者利用得到的checkpoint为下一轮收集有监督微调数据。与最初主要侧重于推理的冷启动数据不同,这个阶段结合了来自其他领域的数据,以增强模型在写作、角色扮演和其他通用任务方面的能力。具体来说,按照以下方式生成数据并微调模型:

  • 推理数据:作者整理了推理提示,并通过从上述强化学习训练的checkpoint进行抑制采样来生成推理轨迹。在这个阶段合并了额外的数据来扩展数据集,其中一些数据通过将真实结果和模型预测输入到DeepSeek-V3中进行判断来使用生成式奖励模型。最后,作者收集了大约 60 万个与推理相关的训练样本。
  • 非推理数据:对于非推理数据,如写作、事实性问答、自我认知和翻译,作者采用DeepSeek-V3 的pipeline,并复用DeepSeek-V3的SFT数据集的部分内容。对于某些非推理任务,作者通过提示调用DeepSeek-V3在回答问题之前生成一个潜在的思维链。然而,对于更简单的查询,如“你好”,则在响应中不提供思维链。最后,收集了总共约 20 万个与推理无关的训练样本。

2.4 通用化

        为了进一步使模型与人类偏好保持一致,作者还实施了一个二级强化学习阶段,旨在提高模型的有用性和无害性,同时改进其推理能力。具体来说,使用奖励信号和多样化提示分布的组合来训练模型。对于推理数据,遵循DeepSeek-R1-Zero中概述的方法,该方法利用基于规则的奖励来指导数学、代码和逻辑推理领域的学习过程。对于一般数据,作者采用奖励模型来捕捉复杂和微妙场景中的人类偏好。以DeepSeek-V3 pipeline为基础,并采用类似的偏好对和训练提示分布。

        对于有用性,作者仅关注最终总结,确保评估强调响应对用户的实用性和相关性,同时最大限度地减少对底层推理过程的干扰。对于无害性,作者评估模型的整个响应,包括推理过程和总结,以识别和减轻生成过程中可能出现的任何潜在风险、偏差或有害内容。最终,奖励信号和多样化数据分布的整合使作者能够训练出在推理方面表现出色的模型,同时优先考虑有用性和无害性。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Android开发AI实战】选择目标跟踪基于opencv实现——运动跟踪

文章目录 【Android 开发 AI 实战】选择目标跟踪基于 opencv 实现 —— 运动跟踪一、引言二、Android 开发与 AI 的融合趋势三、OpenCV 简介四、运动跟踪原理&#xff08;一&#xff09;光流法&#xff08;二&#xff09;卡尔曼滤波&#xff08;三&#xff09;粒子滤波 五、基于…

第1章 特征工程

原文&#xff1a;第1章 特征工程 俗话说&#xff0c;“巧妇难为无米之炊”。在机器学习中&#xff0c;数据和特征便是“米”&#xff0c;模型和算法则是“巧妇”。没有充足的数据、合适的特征&#xff0c;再强大的模型结构也无法得到满意的输出。正如一句业界经典的话所说&…

idea 如何使用deepseek 保姆级教程

1.安装idea插件codegpt 2.注册deepseek并生成apikey deepseek 开发平台&#xff1a; DeepSeek​​​​​​​ 3.在idea进行codegpt配置 打开idea的File->Settings->Tools->CodeGPT->Providers->Custom OpenAI Chat Completions的URL填写 https://api.deepseek…

多光谱成像技术在华为Mate70系列的应用

华为Mate70系列搭载了光谱技术的产物——红枫原色摄像头&#xff0c;这是一款150万像素的多光谱摄像头。 相较于普通摄像头&#xff0c;它具有以下优势&#xff1a; 色彩还原度高&#xff1a;色彩还原准确度提升约 120%&#xff0c;能捕捉更多光谱信息&#xff0c;使拍摄照片色…

10vue3实战-----实现登录的基本功能

10vue3实战-----实现登录的基本功能 1.基本页面的搭建2.账号登录的验证规则配置3.点击登录按钮4.表单的校验5.账号的登录逻辑和登录状态保存6.定义IAccount对象类型 1.基本页面的搭建 大概需要搭建成这样子的页面: 具体的搭建界面就不多讲。各个项目都有自己的登录界面&#…

vue学习5

1.自定义创建项目 2.ESlint代码规范 正规的团队需要统一的编码风格 JavaScript Standard Style 规范说明&#xff1a;https://standardjs.com/rules-zhcn.html 规则中的一部分&#xff1a; (1)字符串使用单引号 ‘aabc’ (2)无分号 const name ‘zs’ (3)关键字后加空格 if(n…

QTreeView和QTableView单元格添加超链接

QTreeView和QTableView单元格添加超链接的方法类似,本文仅以QTreeView为例。 在QTableView仿Excel表头排序和筛选中已经实现了超链接的添加,但是需要借助delegate,这里介绍一种更简单的方式,无需借助delegate。 一.效果 二.实现 QHTreeView.h #ifndef QHTREEVIEW_H #def…

Qt监控设备离线检测/实时监测设备上下线/显示不同的状态图标/海康大华宇视华为监控系统

一、前言说明 监控系统中一般有很多设备&#xff0c;有些用户希望知道每个设备是否已经上线&#xff0c;最好有不同的状态图标提示&#xff0c;海康的做法是对设备节点的图标和颜色变暗处理&#xff0c;离线的话就变暗&#xff0c;有可能是加了透明度&#xff0c;而大华的处理…

IDEA+DeepSeek让Java开发起飞

1.获取DeepSeek秘钥 登录DeepSeek官网 : https://www.deepseek.com/ 进入API开放平台&#xff0c;第一次需要注册一个账号 进去之后需要创建一个API KEY&#xff0c;然后把APIkey记录保存下来 接着我们获取DeepSeek的API对话接口地址&#xff0c;点击左边的&#xff1a;接口…

docker学习笔记

1.docker与虚拟机技术的不同 传统虚拟机&#xff1a;虚拟出一条硬件&#xff0c;运行一个完整的操作系统&#xff0c;然后在这个系统上安装和运行软件。容器内的应用直接运行在&#xff0c;宿主机的内容&#xff0c;容器是没有自己的内核的&#xff0c;也没有虚拟我们的硬件每…

Linux之kernel(4)netlink通信

Linux内核(04)之netlink通信 Author: Once Day Date: 2023年1月3日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可查看专栏: Linux内核知识_Once-Day的博客-…

视觉硬件选型和算法选择(CNN)

基础知识 什么是机械视觉: 机械视觉是一种利用机器代替人眼来进行测量和判断的技术&#xff0c;通过光学系统、图像传感器等设备获取图像&#xff0c;并运用图像处理和分析算法来提取信息&#xff0c;以实现对目标物体的识别、检测、测量和定位等功能。 机械视觉与人类视觉有什…

Qt元对象系统

目录 1.元对象系统概述 2 宏QOBJECT slots emit 2.1 QOBJECT 2.2 信号槽相关宏 3 信号和槽 3.1 信号和槽的链接使用 3.2 信号槽触发流程 3.3 信号参数自定义 3.4 槽函数中获取发射信号的对象&#xff08;widget&#xff09; 3.4.1 使用QObject::sender() 3.4.2 在连…

verilog练习:i2c slave 模块设计

文章目录 前言1. 结构2.代码2.1 iic_slave.v2.2 sync.v2.3 wr_fsm.v2.3.1 状态机状态解释 2.4 ram.v 3. 波形展示4. 建议5. 资料总结 前言 首先就不啰嗦iic协议了&#xff0c;网上有不少资料都是叙述此协议的。 下面将是我本次设计的一些局部设计汇总&#xff0c;如果对读者有…

什么是中间件中间件有哪些

什么是中间件&#xff1f; 中间件&#xff08;Middleware&#xff09;是指在客户端和服务器之间的一层软件组件&#xff0c;用于处理请求和响应的过程。 中间件是指介于两个不同系统之间的软件组件&#xff0c;它可以在两个系统之间传递、处理、转换数据&#xff0c;以达到协…

【键盘识别】实例分割

第一步 键盘检测 方案一 canny边缘检测 canny边缘检测检测结果不稳定,容易因为复杂背景或光线变换检测出其他目标。 如图是用canny边缘检测方法标出的检测出的边缘的四个红点。 参考的是这篇文章OpenCV实战之三 | 基于OpenCV实现图像校正_opencv 图像校正-CSDN博客 方案二…

线程上下文-ThreadLocal原理

ThreadLocal主要作用&#xff1a;为每个线程提供独立的变量副本&#xff0c;实现线程间的数据隔离&#xff0c;从而避免多线程环境下的资源共享冲突。 原理 ThreadLocal有个内部类 ThreadLocalMap&#xff0c;顾名思义是个Map结构&#xff1a;key为 ThreadLocal实例&#xff0…

【Python】元组

个人主页&#xff1a;GUIQU. 归属专栏&#xff1a;Python 文章目录 1. 元组的本质与基础概念1.1 不可变序列的意义1.2 元组与数学概念的联系 2. 元组的创建方式详解2.1 标准创建形式2.2 单元素元组的特殊处理2.3 使用 tuple() 函数进行转换 3. 元组的基本操作深入剖析3.1 索引操…

SpringSecurity:授权服务器与客户端应用(入门案例)

文章目录 一、需求概述二、开发授权服务器1、pom依赖2、yml配置3、启动服务端 三、开发客户端应用1、pom依赖2、yml配置3、SecurityConfig4、接口5、测试 一、需求概述 maven需要3.6.0以上版本 二、开发授权服务器 1、pom依赖 <dependency><groupId>org.springfr…

android的Compose 简介

Jetpack Compose 简介 Jetpack Compose 是 Android 官方推出的声明式 UI 工具包&#xff0c;用于替代传统 XML 布局&#xff0c;简化界面开发流程。它基于 Kotlin 语言&#xff0c;通过函数式编程实现高效、灵活的 UI 构建&#xff0c;支持实时预览和更直观的状态管理。 优势…