【DeepSeek系列】05 DeepSeek核心算法改进点总结

文章目录

    • 一、DeepSeek概要
    • 二、4个重要改进点
      • 2.1 多头潜在注意力
      • 2.2 混合专家模型MoE
      • 2.3 多Token预测
      • 3.4 GRPO强化学习策略
    • 三、2个重要思考
      • 3.1 大规模强化学习
      • 3.2 蒸馏方法:小模型也可以很强大

一、DeepSeek概要

2024年~2025年初,DeepSeek 相继推出了其推理大模型系列:DeepSeek-V2、DeepSeek-V3、DeepSeek-R1-Zero 和 DeepSeek-R1。由于其卓越的性能,以及超高的性价比,让DeepSeek在2025年初迅速风靡全球,被外媒称为“来自东方神秘的力量”。

在这里插入图片描述

二、4个重要改进点

2.1 多头潜在注意力

核心思想:通过低秩压缩技术,将Key和Value映射到一个低维的潜在空间,从而减少KV缓存的大小,显著提高了推理效率。

具体步骤:(优化注意力机制模块)

  • 低秩压缩:将输入的隐藏状态通过一个下投影矩阵映射到低维的潜在空间,生成压缩后的潜在向量。
  • 生成Key和Value:从潜在向量中通过上投影矩阵恢复出Key和Value。
  • 应用RoPE:在生成的Key上应用旋转位置编码(RoPE),以保留位置信息。
  • 计算注意力:将压缩后的Key和Value与查询(Query)结合,通过标准的注意力公式计算注意力输出。
  • 输出:将注意力输出通过一个输出投影矩阵映射回原始维度。
    在这里插入图片描述

2.2 混合专家模型MoE

核心思想:是一种基于混合专家(MoE)架构的前馈网络(FFN),其核心思想是,让不同的Token由不同的“专家”处理,大幅提升计算效率。它结合了负载均衡策略,旨在减少因负载均衡而导致的模型性能下降,同时保持高效的计算资源利用。

具体结构:

  • 共享专家:模型中包含一定数量的共享专家,这些专家对所有token开放,适用于通用任务。
  • 路由专家:每个token根据其输入动态选择一定数量的路由专家进行计算,专门处理某些类别的信息。
  • Router:即路由,类似于门控,其决定哪些专家参与计算;每个token激活的路由专家数量由超参数控制,确保计算效率和负载均衡。
    在这里插入图片描述

2.3 多Token预测

核心思想:扩展了传统的单Token预测任务,允许模型在每个位置预测多个未来的Token。这一方法提高了模型推理过程中的预测效率,同时也增强了模型对未来Token的预测能力。

具体步骤:

  • 模块化设计:MTP通过多个模块实现,每个模块负责预测一个额外的Token。这些模块共享嵌入层和输出头,但各自包含一个Transformer块和一个投影矩阵
  • 因果链保持:在每个预测深度,MTP模块保持完整的因果链,确保预测的Token不会影响之前的预测。
  • 训练目标:对于每个预测深度,MTP计算一个交叉熵损失,并将这些损失平均后乘以一个权重因子,作为整体的MTP损失。
  • 推理优化:在推理阶段,MTP模块可以被丢弃,主模型可以独立运行,或者MTP模块可以用于推测解码以加速生成。

在这里插入图片描述

3.4 GRPO强化学习策略

核心思想:通过组内相对奖励来优化策略模型,而不是依赖传统的批评模型(critic model)。具体来说,GRPO 会在每个状态下采样一组动作,然后根据这些动作的相对表现来调整策略,而不是依赖一个单独的价值网络来估计每个动作的价值。

具体步骤

  • 采样动作组:对于每个输入提示,模型根据当前策略生成一组不同的输出。这些输出的多样性为后续的相对奖励计算提供了基础。
  • 奖励评估:使用奖励模型对每个输出进行评分,这些评分可以基于任务的特定标准,如数学题的正确性、代码的可运行性等。核心点在于:使用的奖励模型是一个基于规则的奖励系统(准确性奖励+格式奖励),而不是一个预训练的深度学习模型。显著降低了计算和存储需求,提高了训练效率。
  • 计算相对优势:将每个输出的奖励值进行归一化处理,得到相对优势。通过组内相对优势的计算,GRPO 减少了策略更新的方差,确保了更稳定的学习过程。
  • KL散度:最后,使用相对优势更新策略;GRPO 引入了KL散度约束,能够更精细地控制策略更新的幅度,保持策略分布的稳定性。
    在这里插入图片描述

三、2个重要思考

3.1 大规模强化学习

在后训练阶段,不一定需要用SFT作为初始步骤,通过纯强化学习的方式,也能到达不错的推理性能,DeepSeek-R1-Zero首次验证了这一路径。

  • 直接在基础模型上应用 RL,而不依赖于有监督的微调(SFT)作为初步步骤。这种方法允许模型探索解决复杂问题的链式思考(CoT),从而开发出 DeepSeek-R1-Zero。DeepSeek-R1-Zero 展示了自我验证、反思和生成长链式思考的能力,这标志着研究社区的一个重要里程碑。值得注意的是,这是首次公开研究验证 LLMs 的推理能力可以通过纯 RL 激励,而无需 SFT。这一突破为该领域的未来发展铺平了道路。
  • DeepSeek-R1 训练流程:该流程包含两个 RL 阶段,旨在发现改进的推理模式并与人类偏好对齐,以及两个 SFT 阶段,作为模型推理和非推理能力的种子。我们相信这一流程将有助于行业开发更好的模型。

3.2 蒸馏方法:小模型也可以很强大

大型模型的推理模式可以被蒸馏到小模型中,其表现优于通过在小模型上应用 RL 的效果。

  • 证明了大型模型的推理模式可以被蒸馏到小模型中,其表现优于通过在小模型上应用 RL 发现的推理模式。开源的 DeepSeek-R1 及其 API 将有助于研究社区在未来蒸馏出更好的小模型。
  • 使用 DeepSeek-R1 生成的推理数据,我们微调了研究社区广泛使用的几种密集模型。评估结果表明,蒸馏后的小型密集模型在基准测试中表现出色。例如,DeepSeek-R1-Distill-Qwen-7B 在 AIME 2024 上达到了 55.5%,超过了 QwQ-32B-Preview。此外,DeepSeek-R1-Distill-Qwen-32B 在 AIME 2024 上达到了 72.6%,在 MATH-500 上达到了 94.3%,在 LiveCodeBench 上达到了 57.2%。这些结果显著优于之前的开源模型,并且与 o1-mini 相当。我们开源了基于 Qwen2.5 和 Llama3 系列的 1.5B、7B、8B、14B、32B 和 70B 检查点,供社区使用。

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

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

相关文章

redis中的Lua脚本,redis的事务机制

lua脚本的特点 lua脚本可以操作redis数据库,并且脚本中的代码满足原子性,要么全部被执行,要么全部不执行 lua脚本的语法 脚本示例 lua脚本的草稿: 最终的lua脚本 lua脚本在java里调用的方法 RedisTemplete类里有一个方法&…

文章精读篇——用于遥感小样本语义分割的可学习Prompt

题目:Learnable Prompt for Few-Shot Semantic Segmentation in Remote Sensing Domain 会议:CVPR 2024 Workshop 论文:10.48550/arXiv.2404.10307 相关竞赛:https://codalab.lisn.upsaclay.fr/competitions/17568 年份&#…

Golang访问Google Sheet

步骤 1、创建Project https://console.cloud.google.com/welcome?hlzh-cn&projectvelvety-being-444310-c1 2、启用Google Sheet API https://console.cloud.google.com/apis/library?hlzh-cn&projectvelvety-being-444310-c1 3、创建服务账号 https://conso…

HTTP SSE 实现

参考: SSE协议 SSE技术详解:使用 HTTP 做服务端数据推送应用的技术 一句概扩 SSE可理解为:服务端和客户端建立连接之后双方均保持连接,但仅支持服务端向客户端推送数据。推送完毕之后关闭连接,无状态行。 下面是基于…

网络安全与措施

🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 # 网络安全问题概述 1) 数据安全 访问(授权访问);存储(容灾、备份或异地备份等) 2) 应用程序 不能…

Next.js 学习-1

Next.js学习 引用:https://www.nextjs.cn/learn/basics/create-nextjs-app 先试试水吧,正好dify用的这个构建的前端项目。 使用 如果您尚未安装 Node.js,请 从此处安装。要求 Node.js 10.13 或更高版本。 好吧得用新的了,记得…

#渗透测试#批量漏洞挖掘#九思OA系列漏洞之SQL注入漏洞(CNVD-2023-23771)

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…

macOS14 安装MySQL指南

1.下载 地址:https://downloads.mysql.com/archives/community/ 2.安装 双击 *.dmg 文件,按提示点击“下一步”,途中会弹出一个对话框,要求输入 root 密码,完成即可。 3.开启MySQL服务。 点击右上角苹果按钮&#x…

《Head First设计模式》读书笔记 —— 单件模式

文章目录 为什么需要单件模式单件模式典型实现剖析定义单件模式本节用例多线程带来的问题解决问题优化 Q&A总结 《Head First设计模式》读书笔记 相关代码: Vks-Feng/HeadFirstDesignPatternNotes: Head First设计模式读书笔记及相关代码 用来创建独一无二的&a…

Git常见命令--助力开发

git常见命令: 创建初始化仓库: git 将文件提交到暂存区 git add 文件名 将文件提交到工作区 git commit -m "注释(例如这是发行的版本1)" 文件名 查看状态 如果暂存区没有文件被提交显示: $ git status On…

【每日八股】Redis篇(二):数据结构

Redis 数据类型? 主要有 STRING、LIST、ZSET、SET 和 HASH。 STRING String 类型底层的数据结构实现主要是 SDS(简单动态字符串),其主要应用场景包括: 缓存对象:可以用 STRING 缓存整个对象的 JSON&…

LLM大语言模型私有化部署-使用Dify的工作流编排打造专属AI诗词数据分析师

背景 前面的文章通过 Ollama 私有化部署了 Qwen2.5 (7B) 模型,然后使用 Docker Compose 一键部署了 Dify 社区版平台。 LLM大语言模型私有化部署-使用Dify与Qwen2.5打造专属知识库:在 Dify 平台上,通过普通编排的方式,创建了基于…

Linux虚拟机快照

快照管理 如果在使用虚拟机系统的时候(比如linux),想回到原先的某一个状态,也就是说担心可能有些误操作造成系统异常,需要回到原先某个正常运行的状态 示例: 状态A和状态B处各保存了快照,运行到状态C时发生异常&…

【异常错误】pycharm debug view变量的时候显示不全,中间会以...显示

异常问题: 这个是在新版的pycharm中出现的,出现的问题,点击view后不全部显示,而是以...折叠显示 在setting中这么设置一下就好了: 解决办法: https://youtrack.jetbrains.com/issue/PY-75568/Large-stri…

快速入门Springboot+vue——MybatisPlus多表查询及分页查询

学习自哔哩哔哩上的“刘老师教编程”,具体学习的网站为:7.MybatisPlus多表查询及分页查询_哔哩哔哩_bilibili,以下是看课后做的笔记,仅供参考。 多表查询 多表查询[Mybatis中的]:实现复杂关系映射,可以使…

vscode 配置 Copilot 提示GHE.com连接失败

步骤一:打开设置并进入 settings.json 点击菜单栏中的 “文件” -> “首选项” -> “设置”。 在搜索设置栏中输入 “Copilot: Advanced”。 点击搜索结果下方的 “在 settings.json 中编辑” 链接,这会打开 settings.json 文件。 步骤二&#…

基于拼接的宏基因组全流程

下面是基于组装的宏基因组数据分析流程 目录 基本流程介绍 megahit组装 什么是N50? 基于拼接结果的基因预测 cdhit去冗余 功能注释 宏基因组的分箱操作 分箱的目的: 分箱的原理: 基本流程介绍 单独对每个样本进行基因集组装,得到genome1,2,3…

基于javaweb的SpringBoot酒店管理系统设计和实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

Grok 3.0 Beta 版大语言模型评测

2025年2月17日至18日,全球首富埃隆马斯克(Elon Musk)携手其人工智能公司xAI,在美国重磅发布了Grok 3.0 Beta版。这款被誉为“迄今为止世界上最智能的语言模型”的AI,不仅集成了先进的“DeepSearch”搜索功能&#xff0…

【R语言】绘图

一、散点图 散点图也叫X-Y图,它将所有的数据以点的形式展现在坐标系上,用来显示变量之间的相互影响程度。 ggplot2包中用来绘制散点图的函数是geom_point(),但在绘制前需要先用ggplot()函数指定数据集和变量。 下面用mtcars数据集做演示&a…