当前位置: 首页 > news >正文

DeepSeek算法学习笔记

学习和总结deepseek优雅的算法设计思想,并提供基础知识回顾,帮助大家快速搞懂deepseek算法思想。

文章目录

    • 1 模型架构
      • MoE: 混合专家
      • KV cache
      • MLA: multi-head latent attention
    • 2 训练方法
      • RL基础
      • 经典 RL 算法介绍
      • 用于 LLM 训练的 RL 算法
      • GRPO 算法
      • RL 替代方案

1 模型架构

MoE: 混合专家

在 Transformer attention 模块中的前馈网络 FFNN 部分,改为多个 FFNNs,由路由门控网络选择激活哪个专家,从而减少冗余
在这里插入图片描述

KV cache

由于语言序列输入预测下一个token时,前面的token对应的 K V 会被重复计算,因此缓存计算过的KV
在这里插入图片描述

MLA: multi-head latent attention

参考视频讲解:https://www.youtube.com/watch?v=0VLAoVGf_74
由于KV cache占内存高达400G,提出思想:将K,V投影到低维空间进行计算attn,最后再上采样
在这里插入图片描述

推导过程和结果:所有transformer层共享一个将X下采样的 L_kv 矩阵,每个层有自己的低维Wk,Wv,最后用Wo上采样,可以大大降低KV cache所需存储,且表现更好
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2 训练方法

RL基础

  • R: 当前reward
  • return: 当前及未来reward总和
  • Q(s,a):状态-动作价值,按照当前策略时,当前状态下采用当前动作可获得的未来return的期望
  • V(s):状态价值,按照当前策略时,当前状态下所有动作Q值的期望
  • A(s,a):优势,当前状态下采用当前动作的好处,A(s,a)=Q(s,a)-V(s)
  • 贝尔曼方程:当前状态价值=【当前状态的奖励+下一个状态的价值】的期望
  • 优势估计方法:
    • 蒙特卡洛法MC:对完整轨迹采样计算回报,不适合在线学习;偏差小,但方差较大
    • 时序差分法TD:用一步预测来估计Q:A=rt+γV(st+1)−V(t)A=r_t+\gamma V(s_{t+1})-V(t)A=rt+γV(st+1)V(t) ,方差小但偏差大
    • GAE广义优势估计:A=∑n=0∞(γλ)nδtA=\sum_{n=0}^{\infty}(\gamma \lambda)^n\delta_tA=n=0(γλ)nδt 结合了TD和MC,平衡方差和偏差
      • λ=0\lambda=0λ=0, 即时序差分法
      • λ=1\lambda=1λ=1, 即蒙特卡洛法

经典 RL 算法介绍

  1. DQN
    学习最优Q值预测,从而选择最优动作:a = argmaxQ*(s,a)
    Q*(s, a) = R(s, a)+γ max(Q*(s’, a’))
    假设当前网络预测结果是 Q(s,a),学习率为α,则Q网络更新公式为:
    Q(s, a) <-- Q(s, a) + α[R(s, a)+γ max(Q*(s’, a’)) - Q(s, a)]

  2. DDPG
    DQN的连续动作版本,学习Q的同时,再学习一个策略网络使Q最大化

  3. Policy gradient
    策略由网络预测,根据梯度上升法更新参数: θ←θ+α∇J(πθ)\theta \leftarrow \theta + \alpha \nabla J(\pi_\theta)θθ+αJ(πθ)
    可推导出,策略梯度可以用下式估计:
    J(πθ)=Eπθ[R(πθ)]J(\pi_\theta) = E_{\pi_\theta} [R(\pi_\theta)]J(πθ)=Eπθ[R(πθ)]
    ∇J(πθ)=E(∑t=0T∇θlog⁡πθ(at∣st)A(st,at))\nabla J(\pi_\theta) = E(\sum_{t=0}^T \nabla_\theta \log \pi_\theta (a_t|s_t) A(s_t, a_t))J(πθ)=E(t=0Tθlogπθ(atst)A(st,at))

  4. TRPO
    参考1、参考2

  • 重要性采样:基于分布q(x),估计分布p(x)下的函数f(x)期望
    Ep(x)[f(x)]≐Eq(x)[p(x)q(x)f(x)]E_{p(x)}[f(x)] \doteq E_{q(x)}[\frac{p(x)}{q(x)} f(x)] Ep(x)[f(x)]Eq(x)[q(x)p(x)f(x)]

  • advantage的期望可以用旧策略采样估计:
    J(πθ)=Eπ[A(st,at)]=Eπold[ππoldA′(st,at)]J(\pi_\theta) = E_\pi [A(s_t, a_t)]= E_{\pi_{old}}[\frac{\pi}{\pi_{old}}A'(s_t, a_t)]J(πθ)=Eπ[A(st,at)]=Eπold[πoldπA(st,at)]
    并约束新旧策略KL散度,使得新旧策略不要差异太大,更新更稳定

    • KL散度:衡量两个概率分布的差异
      在这里插入图片描述
  • 缺点:参数更新需要二阶优化方法,计算成本高

  1. PPO
  • 类似TRPO思路, 但把KL散度加到惩罚项里,而不是作为约束
  • 对重要性采样系数进行CLIP
  • 可以用梯度下降法完成更新
  • 利用GAE估计优势,提高样本利用率
  • 网络架构:actor-critic,策略+价值网络

用于 LLM 训练的 RL 算法

  • 状态:文本序列
  • 动作:next token
  • 奖励:预训练的RM reward model 对完整响应进行打分
  • 训练步骤:
    • SFT:使用监督问答数据,微调预训练LLM
    • RM:训练奖励模型
    • RL:使用PPO算法,结合人类反馈微调策略模型和价值模型
      • 额外加入一个惩罚项,约束RL策略与SFT策略的KL散度
  • 传统 GAE 回报计算:LLM的输出是完整应答,因此一句话结束时才有奖励,每个中间token的return都等于最终token的奖励(γ=1),PPO采用单条轨迹重要性采样计算A

GRPO 算法

  • DeepSeek 的 GRPO(Group Relative Policy Optimization):
    • 用多次采样同一输入的回答的平均奖励作为V的近似估计,提高样本利用率,提升微调效率
    • 只需要一个actor模型,降低训练资源需求
    • 使用KL正则项,防止策略过度偏离参考策略
    • 更新时增加梯度方差约束项,提升训练稳定性
      在这里插入图片描述

RL 替代方案

偏好排序对齐
2024 PRO: Preference ranking optimization for human alignmen

  • RL目的是优化 LLM 符合 RM,RM 目的是对齐人类偏好,为什么不直接优化LLM 对齐人类偏好?
    直接从人类偏好排序对齐的角度优化LLM
http://www.dtcms.com/a/299592.html

相关文章:

  • RabbitMQ--Springboot解决消息丢失
  • Spring Boot集成RabbitMQ终极指南:从配置到高级消息处理
  • Linux进程控制:掌握系统的核心脉络
  • Git版本控制
  • FC(Function Calling)和MCP详解(区别、作用、运用场景)
  • 2.JVM跨平台原理(字节码机制)
  • 【Bluedroid】btif_av_sink_execute_service之服务器禁用源码流程解析
  • 零基础学后端-PHP语言(第二期-PHP基础语法)(通过php内置服务器运行php文件)
  • 机器语言基本概念
  • android开发中的协程和RxJava对比
  • DOM元素添加技巧全解析
  • LangChain + MCP 构建带可视化图表功能的ChatBI智能体
  • Git 创建一个完全没有提交历史的 master 分支
  • 【服务器与部署 27】Shell脚本自动化部署:Python应用一键部署让运维效率提升10倍
  • 【Android】广播机制
  • 【LeetCode 热题 100】131. 分割回文串——回溯
  • 谷歌无法安装扩展程序解决方法(也许成功)
  • JDBC教程,2025版最新讲解.超详细入门教程
  • 从UX到AX:从“设计路径”到“共创关系”的范式革命——Agentic Experience如何重塑未来产品哲学
  • 关于Feign的应用
  • 大话数据结构之<队列>
  • PHP框架之Laravel框架教程:1. laravel搭建
  • 方案C,version1
  • 零基础学习性能测试第四章:从0到1学会编写性能测试报告
  • 如何开始学习和使用 BPF/eBP
  • 树上倍增和LCA问题
  • python—————knn算法
  • C++:STL中vector的使用和模拟实现
  • 计算机网络体系结构的核心思想是什么?它有什么用?
  • 大语言模型困惑度:衡量AI语言能力的核心指标