大模型-DeepSeek 模型的训练过程即核心技术

DeepSeek 简介

        2025年初,“DeepSeek” 一词迅速风靡中国全网,并带动“AI”等概念成为春节期间全民热议的焦点。随着人工智能技术前所未有地进入大众视野,国内外科技企业纷纷借势发力,一时间,“接入 DeepSeek”几乎成为各类AI产品的宣传标配。

       DeepSeek全称杭州深度求索人工智能基础技术研究有限公司,简称深度求索,成立于 2023年7月,是幻方量化旗下的AI公司,专注于实现通用人工智能(AGI),具有深厚的软硬件协同设计底蕴。其代表模型 DeepSeek-V3(基座模型)与 DeepSeek-R1(推理模型),凭借开源免费、性能卓越、高性价等核心优势,一时间横扫各个大模型评估榜单,并迅速成为业界标杆,并为 AI 技术的普及化奠定了坚实基础。

        接下来,我将从技术角度,解析 DeepSeek 的核心训练方法与相关的创新技术。

DeepSeek 的核心优势

顶尖性能

        在 DeepSeek-R1 尚未出现前,大模型领域的领头羊 OpenAI 旗下的推理模型(如 "o1"),在推理模型领域长期处于断层式领先地位。而 DeepSeek 出现后,在 AI 模型基准能力的各大权威榜单中,其得分与 OpenAI 的 o1 模型不相上下,展现出了卓越的性能实力。​

        过去两年间,业内普遍认为中国 AI 模型在发展进度上落后于美国模型半年到一年。但 DeepSeek R1 模型的横空出世,彻底终结了这一偏见,证明了中国在大模型领域已具备与国际顶尖水平同台竞技的能力。更重要的是,作为国产模型,DeepSeek 针对中文场景进行了深度优化,在中文语义理解、文化语境适配、专业领域中文处理等方面表现更为出色,为中文用户带来了更贴合需求的使用体验。

低成本

  • 低训练成本:从模型训练看,DeepSeek-V3 在2048 块H800 GPU 训练3.7天,换算成单块GPU共278.8万小时,以H800每小时2美元成本计算,最后 一轮训练硬件成本仅约558 万美元;Meta同规格的Llama 3.1模型约花费9240万美元,相比高出16倍。

  • 低推理成本:从模型推理看,以官方API接入价格为例,对话模型DeepSeek V3价格约为OpenAI GPT-4o价格的十分之一;推理模型DeepSeek R1价 格约为OpenAI o1价格的二十分之一。

开源

        DeepSeek 影响力的迅速扩张,核心之一就是源于其全栈开源策略——完整公开模型权重、技术细节及训练代码。与闭源模式对关键技术严格保密不同,开源模型(DeepSeek)通过开放生态驱动全球协作,形成开发者共创与快速落地的正向循环。

开源级别的标准化定义

        2024年10月,开放源代码促进会(OSI) 发布《开源AI定义1.0》(OSAID 1.0),首次从六大维度界定开源程度:

  1. 模型权重的可获取性

  2. 训练数据的透明度

  3. 代码的完整可复现性

  4. 商业使用授权条款

  5. 社区协作协议

  6. 符合开源软件基本原则

        而DeepSeek在上述维度均达到最高级别,成为OSAID 1.0的标杆案例。

整体训练过程

DeepSeek 模型训练过程

DeepSeek 模型训练过程

        上述两张图展示了DeepSeek 系列模型的核心训练过程,我们来简单总结下:

DeepSeek - V3 系列构建

  • V3 - Base 预训练:以初始基模型为起点,投喂超大规模语料库(如 14.8T 量级 ),让模型学习语言规律、知识概念,夯实通用基础,产出 DS - V3 - Base 。

  • V3 后训练优化:在 V3 - Base 基础上,融入监督微调(覆盖推理、非推理两类数据 ),先让模型适配任务输出;再引入强化学习,依据反馈持续优化,最终得到成熟的 DeepSeek - V3 。

DeepSeek - R1 系列推理强化

  • R1 - Zero 专项训练:以 DS - V3 - Base 为基底,结合分组相对策略优化(GRPO )与 CoT 奖励模型,定向强化推理能力,训练出专注强推理的 DeepSeek - R1 - Zero 。

  • DeepSeek-R1 训练流程

    • 数据准备

      • 推理数据:用 DS - V3 - Base 经监督微调(基于 R1 - Zero 采样冷启动数据 )、强化学习得到 R1 - RL ,再经拒绝采样,产出 600K 推理数据 。

      • 非推理数据:对 V3 监督微调数据 “选择性添加 CoT” ,构建 200K 非推理数据 。

    • 模型训练:以 DS - V3 - Base 为基础,用 800K 推理 + 非推理数据监督微调,搭配强化学习,最终训练出 DeepSeek - R1 。

R1 蒸馏模型轻量化

        选取 Qwen、Llama 系列共 6 种小模型,从 DeepSeek - R1 蒸馏获取推理、非推理组合数据,经监督微调(SFT ),压缩模型规模同时保留核心能力,得到 DeepSeek - R1 Distill 。

模型训练核心技术

        接下来我们主要介绍下模型训练相关的核心技术细节。

预训练相关

Document Packing

         document packing的目标是为了解决传统填充(Padding)和截断(Truncation)造成的资源浪费和信息丢失问题。

        首先我们需要回顾一下 Transformer 模型是如何构建输入序列 tokens 的。Transformer 模型默认情况下需要固定长度的 token 序列作为输入,然而同一 batch 的文本输入往往长度不同。为了适应这种情况,文本输入通常需要经过以下预处理步骤:

  • 将所有原始文本输入分词为 token 序列

  • 将 token 序列截断或填充到预定义的固定长度(max_seq_len):若原始序列过长则截断,否则用特殊 [PAD] token 进行填充

  • 生成掩码 IDs 使模型在训练时能忽略填充的 token

        为了更清晰地展示这个过程,以下这个示例我们将使用 GPT-2 [10]的分词器处理两个句子:

from transformers import AutoTokenizer

# 加载分词器(以gpt2为例)
tokenizer = AutoTokenizer.from_pretrained("gpt2", padding_side="right")

# 手动设置 padding token(gpt2 默认没有,这里用 eos_token 替代)
tokenizer.pad_token = tokenizer.eos_token  

# 示例输入序列
prompt = [
    "The cat sat on a mat",
    "I love machine learning but do not have time to read papers"
]

# 分词并填充/截断到最大长度 10
tokenized = tokenizer(
    prompt, 
    return_tensors="pt",  # 返回 PyTorch 张量
    padding="max_length",  # 用 pad_token 填充到 max_length
    truncation=True,  # 超过 max_length 则截断
    max_length=10  
)

# 打印分词后的结果
print("Input IDs:\n", tokenized["input_ids"])
print("Attention Mask:\n", tokenized["attention_mask"])

        运行上述脚本后,会得到如下输出,其中:

  • 第一句话被填充了 4 个额外的 padding token,体现在 input_ids 和 mask_ids 中;

  • 第二句被截断,因此无需添加 padding token。

填充操作示例

        上述截断和填充方法虽然能让模型处理不同长度的输入,但当输入序列长度差异过大时(这在 LLM 训练中非常常见)会引发一系列问题:

  • 对超长序列,截断可能导致有用信息丢失

  • 对较短的序列,填充过多 token 会造成计算资源浪费

        因此,LLM 训练通常采用 document packing 技术来处理输入序列。更具体地说,如果给定若干长度不同的文档,我们首先将其分割为较小的块(chunk),如下图所示(用不同颜色代表不同文档):

文档分割

        随后,我们将不同文档的块(chunk)进行拼接,以避免对长文档进行截断和对短文档进行填充:

传统拼接方式

        在上例中:

  • 第一个输入:仅包含文档 1 的 tokens

  • 第二个输入:拼接自文档 1 和文档 2 的 tokens

  • 第三个输入:拼接自文档 2 和文档 3 的 tokens

  • 第四个输入:拼接自文档3、4、5 的 tokens

        这种方法虽能在一定程度上避免进行填充和截断,但由于仅按数据中的相对顺序拼接来自不同文档的块(chunks),无法控制最终输入序列的构建方式。 例如:文档 3(紫色)被不必要地分割为两部分,尽管其实际长度小于 max_seq_len,可以完整放入。

Best-fit Packing

Best-fit packing技术

        为了解决这个问题,Fewer Truncations Improve Language Modeling( https://arxiv.org/abs/2404.10830)中提出了 Best-fit Packing 技术,通过两个步骤完全消除不必要的分割:

  • Step 1:将每个文档分割为更小的块。

  • Step 2:以一种智能的方式将这些块(chunks)分组为训练序列,确保在不进一步分割任何块(chunks)的前提下生成最少量的序列。

填空训练(Fill-in-the-Middle, FIM)

        在传统的自回归生成中,只能以从左到右的方式训练模型,即模型只能根据前面的 tokens 预测下一个 token。 然而在实际应用中,模型常需根据上下文生成中间缺失的内容。 尤其在代码生成场景中 —— 我们常会给定输入/输出和部分代码片段,要求模型填充中间逻辑,如下例所示:

def calculate_area(radius):
    # calculate circle area given radius

    return area

radius = 5
print(calculate_area(radius))

        为了适配此类需求,DeepSeek-Coder: When the Large Language Model Meets Programming — The Rise of Code Intelligence( https://arxiv.org/abs/2401.14196)提出了一种简单有效的方法,称为 “fill-in-the-middle”:即将文档随机切分为 prefix、middle 和 suffix 三部分,然后将 middle 部分移至末尾:

        由于数据组织形式为 "Prefix-Suffix-Middle",该方法常被称为 PSM 框架。实际实现时通过添加特殊 token 来标记各部分的边界:

  • <|fim_begin|>和<|fim_hole|>标记 prefix 部分

  • <|fim_hole|>和<|fim_end|>标记 suffix 部分

  • <|fim_end|>和<|eos_token|>标记 middle 部分

        以如下输入为例:

def calculate_area(radius):
    area = 3.14 * radius ** 2  
    return area

radius = 5
print(calculate_area(radius))

        若需模型预测第二行代码,可将该行作为 middle 部分,并构造 FIM 输入如下:

PSM 框架示意图

        此时模型的预期输出应为:

    area = 3.14 * radius ** 2 
基于 YaRN 的长上下文窗口扩展

        现代 LLM 常需处理极长的提示词(如整个代码仓库),但直接使用 128K 等长上下文窗口进行预训练并不现实。多数 LLM 采用分阶段渐进式扩展策略:先在较小的上下文窗口进行预训练,再分多个阶段逐步扩展到更长的上下文窗口,从而大大降低训练成本。

        例如,在 DeepSeek-V3 中,模型首先使用 4K 的上下文窗口完成预训练,然后再分两阶段扩展到 128K:

  • 第一阶段:从 4K 到 32K(1000 steps)

  • 第二阶段:从 32K 到 128K(再 1000 steps)

        需特别指出的是,这种扩展不能通过简单调大上下文窗口实现,而需借助基于旋转位置编码(RoPE)改进的 YaRN(Yet another RoPE extensioN)技术对位置编码进行修改。

        RoPE 是一种相对位置编码方法,其核心思想是通过使用复杂的旋转嵌入修改 Query 和 Key,使得二者的内积依赖于它们的相对位置:

        然而,由于余弦函数和正弦函数是周期性的,(pos_i, pos_j) 之间的内积可能看起来与 (pos_i, pos_k) 之间的内积相似,因此在固定 θ 的情况下,仅使用 1K tokens(即位置索引 1~1000) 进行预训练的模型在测试时可能会混淆,因为测试时遇到的位置索引(如 5K 或 10K)可能远远超出了预训练时的上下文窗口。

        下图展示了这种现象: 当 32K 上下文窗口的预训练模型在超出该窗口的位置测试时,困惑度(Perplexity)急剧上升:

困惑度与上下文窗口的关系

        那么,YaRN 是如何应对这一挑战的呢?既然外推法(extrapolate)效果欠佳,YaRN 转而采用插值频率(interpolate the frequency)的策略。假设我们有一个在 4 个 token 长度的输入上训练的模型,希望将其扩展到 8 个 token,且基础频率 θ=0.5。对于原始 RoPE,直接使用 cos(θ×pos) 和 sin(θ×pos) 对 Query 和 Key 进行旋转即可。

        而对于 YaRN:

  • 首先,计算扩展后的上下文长度与原始长度的比值作为缩放因子,本例中为 2。

  • 然后,生成新频率 θ' = θ / 2 = 0.25。

  • 再使用新频率对 Query 和 Key 进行旋转,即 cos(θ'×pos) 和 sin(θ'×pos)。

        下图对比了 RoPE 与 YaRN 的 cos 和 sin 值:

YaRN 工作原理示意图

        通过该图可观察到:

  • 在 RoPE 中,cos 和 sin 值会随位置索引的增加而快速振荡,导致扩展到更长的上下文时出现问题。

  • 而在 YaRN 中,原始的余弦和正弦函数通过频率缩放被插值到扩展后的上下文长度(如蓝色高亮区域所示),实现了更平滑的过渡,使得模型能够更有效地处理长序列。

成本相关

混合专家MoE

        混合专家(MoE)架构是提升大模型性能与效率的关键技术之一,DeepSeek 在这一技术上进行了针对性优化,形成了独具特色的实现方案。

MoE 核心架构与优势

        MoE 架构的核心由路由机制专家模块两部分构成,与传统稠密模型相比存在显著差异:

传统稠密模型中,所有输入数据均通过单个神经网络统一处理;MoE 稀疏模型则通过路由机制,将数据分配给最适合的多个专家模型进行专项处理。

        这一架构带来两大核心优势:

  • 计算效率提升:每个词元仅需激活部分专家,大幅减少冗余计算,节约资源;

  • 任务适应性增强:不同专家可专注于不同任务或领域,在处理复杂、多维度任务时表现更优。

  • 整体而言,MoE 技术通过整合多专家模块,让模型能根据输入动态选择处理单元,既提高了计算利用率,又增强了模型的表达能力。

DeepSeek 对 MoE 的改进

        DeepSeek 在经典 MoE 架构基础上进行了技术升级,主要体现在两个方面:

  • 更细粒度的专家划分:将专家模块的专注范围进一步细化,使每个专家能更精准地适配特定类型的输入或子任务,提升处理专业性;

  • 引入共享专家机制:设置部分共享专家,负责处理跨领域、通用性的输入,在保证专家专业化的同时,增强了模型对不同场景的泛化能力,避免因过度细分导致的 “专家孤岛” 问题。

        通过这些改进,DeepSeek 的 MoE 技术在兼顾计算效率与模型性能的同时,实现了专业性与泛化性的平衡,为模型在复杂任务与多语言场景下的优异表现提供了有力支撑。

多头潜在注意力MLA

  • 引入旋转位置编码(RoPE)来保持位置信息的有效表示。

    • 位置信息对序列建模至关重要,MLA 引入旋转位置编码(RoPE),巧妙利用旋转矩阵特性,在编码位置信息时,让模型能更精准、稳定地捕捉序列中元素的相对位置关系 。无论是文本中的词序,还是长上下文里的语义关联,RoPE 都能有效保留位置线索,为后续语义理解、因果推断筑牢基础,让模型处理长文本时,也能清晰梳理逻辑脉络。

  • 通过低秩压缩技术,将高维输入压缩到低维空间, 提高推理效率。

    • 推理侧优化:对注意力键值执行低秩联合压缩,大幅削减推理过程中键值缓存的内存占用。原本高维、冗余的键值数据,经压缩后变得更 “轻巧”,模型推理时能快速调取、运算,提升响应速度;

    • 训练侧优化:针对注意力查询实施低秩压缩,降低训练阶段的激活内存消耗。训练大模型时,激活值存储往往占用大量资源,此优化让训练过程更高效,助力模型在大规模数据训练中平稳推进 。

  • 擅长捕捉数据的潜在含义,如语义、因果关系等

    • MLA 聚焦数据潜在含义捕捉,凭借对语义、因果关系等的敏锐 “洞察”,能穿透文本表层,挖掘深层逻辑。面对复杂文本,无论是专业领域的技术文档,还是富含隐喻的文学作品,都能精准解析语义关联,梳理因果链条,为模型生成高质量内容、理解复杂指令提供有力支撑。

  • 擅长处理更长的上下文

    • 得益于 RoPE 对位置信息的有效保留,以及低秩压缩带来的效率提升,MLA 擅长处理超长上下文。在长文本对话、文档连贯理解等场景中,能整合海量信息,不丢失关键细节,让模型清晰把握长篇内容的整体脉络,输出连贯、契合语境的结果,突破传统注意力机制在长序列处理上的局限 。

        低秩压缩技术在优化内存与计算效率的同时,并未牺牲模型性能。MLA 让 DeepSeek 在处理任务时,既能快速响应(推理效率提升 ),又能深度理解(语义捕捉优势 ),实现了效率与性能的精妙平衡,适配大规模模型落地应用的需求,无论是云端部署推理,还是大规模数据训练,都能展现出良好的工程实用性 。

FP8混合精度训练

        模型训练通常采用FP16或FP32精度的数据格式以保证训练效果,如果换成低精度即可降低存储占用,但往往受到激活、权重和梯度中异常值的限制。

         为了解决这个问题,DeepSeek采用了混合精度框架,使用细粒度量化策略、低精度优化器状态等方法以实现增强精度、低精度存储和通信,同时DeepSeek向硬件厂商也提出了硬件设计的相关建议。

具体方法
  • 计算过程:向前传播、梯度计算和权重更新均用FP8完成

  • 关键模块:归一化、权重存储等仍然使用BF16或FP32。

性能相关

多词元预测训练MTP

核心原理

        多词元预测打破了传统语言模型仅预测下一个词元的局限,在训练过程中让模型同时预测未来的多个词元。其实现方式是在共享的模型主干网络基础上,增设多个独立的输出头,每个输出头负责预测序列中不同位置的未来词元。值得注意的是,这种架构设计不会额外增加训练时间和内存消耗,在保证效率的前提下实现了预测能力的扩展。

        具体而言,当多词元预测深度设置为 1 时,模型除预测下一个词元外,每个词元还会额外预测一个后续词元。从结构上看,模型分为主体部分和多个输出头,每个头都配备独立的 RMSnorm 层、Linear 层和 Transformer Block,确保预测任务的独立性与专业性。同时,各个头的预测存在明确依赖关系:主模型完成基础计算后,将结果传递给后续输出头,以此实现多词元的连贯预测。

核心价值

        MTP 技术的核心价值体现在训练与推理两个维度:

  • 训练阶段:将预测范围扩展到未来多个词元,迫使模型对序列进行 “预规划”,更深入地捕捉词元间的长距离依赖关系与语义连贯性,从而提升数据利用效率。这种训练方式能让模型在相同数据量下学习到更丰富的序列规律,增强整体性能。

  • 推理阶段:借助训练过程中习得的多词元预测能力,可应用于推测解码策略,让模型在生成文本时能一次预测多个词元,显著提高生成速度,优化用户交互体验。

强化学习
训练模式创新

        DeepSeek-R1-Zero 开创性地采用纯强化学习训练模式,颠覆了传统依赖有监督微调(SFT)与人类反馈强化学习(RLHF)的训练范式,首次验证了仅通过强化学习即可实现推理能力自主进化的可行性。​

        在核心实现路径上,该模型采用面向结果的奖励模型,而非常规的面向过程奖励模型。这种设计能有效规避奖励欺骗问题 —— 由于奖励判断直接基于输出结果的实际价值,而非生成过程的表面合理性,从机制上减少了模型投机取巧的空间。同时,面向结果的奖励模型无需依赖大量标注数据构建过程评价标准,显著降低了训练复杂度。其奖励体系主要包含准确性奖励(基于答案的客观正确性判定)和格式奖励(确保输出结构符合规范要求)等核心维度。​

        训练策略层面,DeepSeek-R1-Zero 创新采用 “冷启动 + 多阶段 RL” 的递进式优化框架。冷启动阶段通过引入数千条高质量长思维链数据对基础模型进行定向微调,强制规范模型输出格式,奠定推理过程的可读性基础。在此之后,通过两阶段强化学习实现性能跃升:第一阶段为推理导向 RL,结合规则化奖励机制重点优化模型在数学、编程等结构化任务中的逻辑严谨性;第二阶段为通用对齐 RL,融入人类偏好奖励模型,确保模型在开放域任务中的输出安全性、实用性与价值观对齐。​

        这种全链路强化学习训练模式,既摆脱了对大规模标注数据的依赖,又通过多维度奖励设计与分阶段优化策略,实现了模型推理能力的高效进化。

DeepSeek 强化学习过程样例

任务:给定一个数组和一个目标数,用基本运算将数组组成一个等式,其计算结果为目标数 输入:[4, 18, 12], 10 输出:18 – 12 + 4 训练过程中,模型的输出逐渐发生变化:

1. 早期:存在格式错误

<think>First, I'll look at the numbers available: 4, 18, and 12. The target number is 10. One possibility is combining 12 and 4 to see if it leads us to 10. We know that 12 - 4 = 8. If we see 8, then it may be possible to manipulate it to reach 10 using the remaining number 18.</think>
Now, let's try to form 18 using 8 and 4:
<think>18 is quite a bit bigger than 8, so subtracting 8 from 18 gives 10. That looks promising.</think>
Thus, the equation can be:
<answer>18 - (12 - 4) </answer>
Let's verify:
<think>12 - 4 = 8 </think>
<think>18 - 8 = 10 </think>
The final calculation confirms that the equation equals 10. Hence, the answer is
<answer>18 - (12 - 4)</answer>

2. 中期:学会正确格式,但可读性差

<think>First, I'll consider the possibility of directly subtracting two numbers to get close to 31. If I subtract 57 from 63, I get 7. Now, if I subtract this 7 from 25, I get 25 - 7 = 18. Far from 31, so this doesn't work.
Next, let's try adding and subtracting. Dividing 63 by 25 will give a decimal, so that's unlikely to work. Now, let's see if adding and subtracting in another order could work. For example, let's try 63 - 25, and then we see this gets us 38. Now, we need a way to get to 31 from here. Subtracting 7 from 38 would work, but we can't figure out how to create that 7 from the given numbers.
Hmm, let me try to incorporate all numbers by adding and subtracting. If I try 63 + 25, I get 88. This is quite far from 31, but if 88 - 57, I get 31 exactly! This seems to be the equation: 63 + 25 - 57 equals 31.
</think>
<answer>63 + 25 - 57 </answer>

3. 末期:适应任务,可读性

<think> We need to use the numbers 21, 5, and 40 with basic arithmetic operations to get 24. Let's try different combinations:

- 21 - 5 - 40 = -15

- 21 - 5 + 40 = 56

- 21 + 5 - 40 = -14

- 21 * 5 / 40 = 2.1 (not an integer, let's try another)

- 40 * 5 / 21 = 9.52 (not 24)

- 40 / 5 - 21 = 9 - 21 = -12

- 5 * 40 / 21 = 100 / 21 ≈ 4.76 (not 24)

- 5 + 40 - 21 = 24! This works.

</think>

<answer> 5 + 40 - 21 </answer>

算法创新:分组相对策略优化( GRPO )

        分组相对策略优化算法(GRPO)是 DeepSeek 针对 PPO 的局限性提出的改良算法,通过创新设计显著提高了计算效率,降低了内存占用,更适用于超大型模型的训练需求。​

        GRPO 的核心创新点主要体现在三个方面:

  • 移除价值函数,摒弃了 PPO 依赖单独价值模型估计预期奖励的方式,转而将同一问题生成的 N 条候选答案划为一组,以组内平均奖励为基线计算相对优势值。这种基于组的相对优势估计直接利用采样响应的奖励信息进行策略更新,无需额外训练价值模型,大幅降低了训练复杂度和内存占用。

  • 改进优势计算方式,将 PPO 采用的广义优势估计(GAE)改为组归一化优势(Group Computation),通过组内奖励的均值和标准差计算每个响应的相对优势,反映响应在组内的相对优劣程度,有效避免了因绝对奖励值波动带来的干扰,提高了训练稳定性;

  • 优化 KL 散度处理,将 KL 散度约束直接融入损失函数,通过在损失函数中加入 KL 惩罚项,限制新策略与参考策略(通常是经过监督微调的初始模型)之间的差异,防止模型在训练过程中因过度探索而偏离原始合理的策略方向,解决了强化学习中的 “灾难性遗忘” 难题,确保策略更新的安全性。​

        通过这些创新,GRPO 在实际应用中展现出显著优势。例如,通过简单的矩阵运算替代复杂的价值模型推理,使训练速度提升 40%,显存占用降低 55%。同时,由于无需训练价值模型和依赖大量标注数据,训练复杂度大幅降低,在处理数学、编程等结构化任务以及开放域任务中均表现出高效的优化能力,为强化学习算法在大模型训练中的应用提供了更优解决方案。   

拓展:近端策略优化算法(PPO)

        近端策略优化算法(PPO)是 OpenAI 于 2017 年提出的一种强化学习算法,凭借其简单易实现、训练稳定且性能优异的特点,成为强化学习领域应用最广泛的算法之一,被广泛用于 GPT 等主流大模型的训练过程,以优化模型表现。​

        PPO 的核心原理是通过优化策略网络来最大化累积奖励,同时限制策略更新的幅度,避免因策略突变导致训练不稳定。

        其关键机制包括以下几点:

  • 采用优势估计(如广义优势估计 GAE)来评估当前策略的好坏,通过对比实际奖励与价值函数预测的价值,计算优势值,为策略更新提供依据;

  • 引入剪辑目标函数(Clipped Objective),将新策略与旧策略的比值限制在一定范围内(通常为 [1-ε, 1+ε]),防止策略更新过大,保证训练的稳定性;

  • 依赖单独的价值模型来估计状态价值,价值模型与策略模型同步训练,价值模型的输出用于计算优势值和更新目标。​

        PPO 的优势在于平衡了训练效率与稳定性,相较于此前的信任区域策略优化(TRPO)等算法,实现更简单,计算成本更低,同时能有效避免策略崩溃问题。不过,PPO 也存在一定局限,在大模型训练中,单独训练价值模型会带来较高的内存和计算开销,增加约 50% 的资源需求,且价值模型与策略模型的协同优化可能引入额外的训练复杂度。

参考文献

「DeepSeek-V3 技术解析」:DeepSeek-V3-Base 预训练阶段解析_ITPUB博客

 Fewer Truncations Improve Language Modeling( https://arxiv.org/abs/2404.10830) 

DeepSeek-Coder: When the Large Language Model Meets Programming — The Rise of Code Intelligence( https://arxiv.org/abs/2401.14196)

http://www.sccio.cn/uploads/20250320/1691cf2250445b61e5fdfd1d753747c8.pdf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

找了一圈尾巴

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值