<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://oopvo.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://oopvo.github.io/" rel="alternate" type="text/html" /><updated>2026-06-19T14:16:39+00:00</updated><id>https://oopvo.github.io/feed.xml</id><title type="html">Oopvo</title><subtitle>分享学习内容~不断完善ing</subtitle><entry><title type="html">人工智能 50 词</title><link href="https://oopvo.github.io/AI-100-Terms/" rel="alternate" type="text/html" title="人工智能 50 词" /><published>2026-06-16T00:00:00+00:00</published><updated>2026-06-16T00:00:00+00:00</updated><id>https://oopvo.github.io/AI-100-Terms</id><content type="html" xml:base="https://oopvo.github.io/AI-100-Terms/"><![CDATA[<p>网络上收集相关概念</p>

<h2 id="基础概念篇">基础概念篇</h2>

<ol>
  <li><strong>函数</strong>：万物皆函数</li>
  <li><strong>符号主义（Symbolism）</strong>：早期人们用符号主义思想找到精确函数，但是遇见了瓶颈</li>
  <li><strong>联结主义（Connectionism）</strong>：后来人们用联结主义思想，啥都不管，弄个非常复杂的函数，然后用真实值与预测值中间的误差来调整参数，这个函数我们叫做：</li>
  <li><strong>模型（Model）</strong></li>
  <li><strong>权重（Weight）</strong>：模型里面的参数</li>
  <li><strong>大模型（LM）</strong>：模型里面的参数量很大</li>
  <li><strong>大语言模型（LLM）</strong>：用来处理自然语言的模型</li>
  <li><strong>训练</strong>：调整模型参数的过程</li>
  <li><strong>预训练</strong>：事先训练好一个基础模型的方法叫做预训练</li>
  <li><strong>微调（Fine-tuning）</strong>：基于预训练模型继续训练，让模型学会具体任务的方式叫做参数微调</li>
  <li><strong>推理（Inference）</strong>：根据函数的输入计算输出结果的过程叫做推理</li>
  <li><strong>涌现（Emergence）</strong>：随着模型参数的不断提升，对话能力有了明显的上升，这种量变引起质变，让模型突然出现之前没有的能力的现象为涌现（这里可以和 Vision Banana 联系）</li>
  <li><strong>闭源模型（Closed-source Model）</strong>：不开放源代码，也不开放权重，只提供服务的模型</li>
  <li><strong>开放权重（Open-weight Model）</strong>：这里只开源了权重，没有开放训练数据等等，并且可以在本地部署的为开源模型</li>
  <li><strong>完全开源（Fully Open-source Model）</strong>：全开放</li>
  <li><strong>私有化部署（Private Deployment）</strong>：不开放服务给外界使用，只给自己用</li>
  <li><strong>生成式 AI（Generative AI）</strong>：基于输入可以自动输出结果的模型</li>
  <li><strong>Token</strong>：分割出的，模型可以处理的最小信息单位</li>
  <li><strong>上下文（Context）</strong>：输入给模型的所有的信息叫做上下文</li>
  <li><strong>幻觉（Hallucination）</strong>：说胡话</li>
  <li><strong>联网（Browser）</strong>：大模型回答问题前，先在互联网上查找相关信息，把信息和问题共同发给大模型，相当于开卷考试</li>
  <li><strong>RAG（Retrieval-Augmented Generation）检索增强生成</strong>：有的时候，某些数据不能上传到网络上，就是私有的数据库</li>
  <li><strong>知识库（KB, Knowledge Base）</strong>：这些私有的数据库叫做知识库</li>
  <li><strong>向量数据库</strong>：为了让模型和知识库中的语义进行匹配，知识往往会以向量的形式存储在向量数据库里面</li>
  <li><strong>词嵌入（Embedding）</strong>：把文字转化为词向量的方式叫做词嵌入</li>
  <li><strong>向量检索（Vector Search）</strong>：根据相似度在向量数据库里面找到对应的词向量的过程叫做向量检索</li>
  <li><strong>多模态（Multimodal）</strong>：处理多种模式内容的能力叫做多模态</li>
  <li><strong>工作流（Workflow）</strong>：把工作步骤编排成一个工作流程的能力</li>
  <li><strong>智能体（Agent）</strong>：按照工作流封装大模型和一整套工具集，用于自动完成某一类任务的工具</li>
  <li><strong>多智能体（Multi-Agent）</strong>：多个智能体相互协助，完成更复杂的任务</li>
  <li><strong>MCP（Model Context Protocol）</strong>：有的时候模型要用微信、上网等等，对外部世界进行操作，Anthropic 公司给了一个 AI 操作外部世界的统一标准 MCP</li>
  <li><strong>A2A（Agent-to-Agent Protocol）</strong>：Google 给 Agent 之间的通信定的协议</li>
  <li><strong>模型压缩（Model Compression）</strong>：让模型更小，以便减少成本和方便个人部署</li>
  <li><strong>量化（Quantization）</strong>：把模型中的浮点数用更低精度的方法表示，以减少显存和计算</li>
  <li><strong>蒸馏（Distillation）</strong>：用参数量大的大模型，指导参数量小的模型</li>
  <li><strong>剪枝（Pruning）</strong>：删除模型中不重要的神经元</li>
  <li><strong>LoRA（Low-rank Adaptation）</strong>：用更低成本改善微调效果的方式</li>
  <li><strong>思维链（Chain-of-Thought）</strong>：从推理能力增强模型能力的方式</li>
  <li><strong>RLHF（人类反馈强化学习）</strong>：通过人类反馈的方式强化学习，让模型说的话更贴合人心</li>
  <li><strong>NLP</strong>：自然语言处理</li>
  <li><strong>TTS</strong>：文字转语音</li>
  <li><strong>Hugging Face</strong>：AI 开源工作平台</li>
</ol>

<h2 id="模型训练流程">模型训练流程</h2>

<h3 id="1-明确任务需求">1. 明确任务需求</h3>

<p><strong>传统机器学习</strong>：分类、回归、聚类、异常检测</p>

<p><strong>深度学习</strong>：图像分类、目标检测、分割、生成任务</p>

<h3 id="2-定义评价指标">2. 定义评价指标</h3>

<p><strong>分类</strong>：Acc、Precision、Recall、F1、AUROC、AUPRC</p>

<p><strong>回归</strong>：MSE、MAE、RMSE、R²</p>

<p><strong>生成类</strong>：BLEU、PSNR、SSIM</p>

<h3 id="3-业务约束">3. 业务约束</h3>

<p>显存、精度</p>

<h3 id="4-数据集的构建">4. 数据集的构建</h3>

<h3 id="5-数据预处理">5. 数据预处理</h3>

<h3 id="6-数据集划分">6. 数据集划分</h3>

<h3 id="7-特征工程数据增强">7. 特征工程（数据增强）</h3>

<h3 id="8-模型搭建与初始化">8. 模型搭建与初始化</h3>

<h3 id="9-确定训练组件的配置">9. 确定训练组件的配置</h3>

<ul>
  <li>Loss</li>
  <li>Optimizer</li>
  <li>超参数的设定</li>
</ul>

<h3 id="10-训练循环">10. 训练循环</h3>

<p>训练集训练（分批次输入 → 前向传播预测结果 → 计算 Loss → 反向传播计算梯度 → 优化器优化权重）、验证集调参</p>

<h3 id="11-模型评估">11. 模型评估</h3>

<p>测试集看性能</p>

<h3 id="12-超参数调优">12. 超参数调优</h3>

<h3 id="13-模型优化">13. 模型优化</h3>

<p>过拟合、欠拟合</p>

<h2 id="大模型训练后的对齐技术">大模型训练后的对齐技术</h2>

<p>大模型在预训练后，通常需要经过以下对齐步骤：</p>

<ul>
  <li><strong>SFT（Supervised Fine-Tuning）</strong>：提供优质的指令-回答数据学习</li>
  <li><strong>RLHF（Reinforcement Learning from Human Feedback）</strong>：奖励 RM 训练、PPO 强化学习
    <ul>
      <li><strong>PPO（Proximal Policy Optimization，近端策略优化）</strong>：RM 打分为奖励，更新模型，同时加入 KL 散度惩罚</li>
    </ul>
  </li>
  <li><strong>GRPO（Group Relative Policy Optimization）</strong>：R1 中使用，SFT 模型直接进入强化学习，无需单独训练奖励模型。GRPO 分组相对奖励：同一问题批量生成多条推理答案，对比正确率、步骤完整性给出分组奖励</li>
  <li><strong>DPO（Direct Preference Optimization）</strong>：舍弃奖励模型，直接用偏好数据（优劣回答对）构造损失，一步完成偏好对齐，训练更简单、显存开销更低</li>
</ul>]]></content><author><name></name></author><category term="deep-learning" /><category term="AI术语" /><summary type="html"><![CDATA[网络上收集相关概念]]></summary></entry><entry><title type="html">论文精读：Image Generators are Generalist Vision Learners</title><link href="https://oopvo.github.io/Vision-Banana-Paper-Reading/" rel="alternate" type="text/html" title="论文精读：Image Generators are Generalist Vision Learners" /><published>2026-06-11T00:00:00+00:00</published><updated>2026-06-11T00:00:00+00:00</updated><id>https://oopvo.github.io/Vision-Banana-Paper-Reading</id><content type="html" xml:base="https://oopvo.github.io/Vision-Banana-Paper-Reading/"><![CDATA[<blockquote>
  <p>原文链接：<a href="https://research.google.com/pubs/pub/46923">Google Research</a></p>
</blockquote>

<p>2026 年 6 月 5 日，Google Research 发布了论文《Image Generators are Generalist Vision Learners》V3 版本，以图像生成预训练为通用视觉表征基座，通过轻量指令微调与严格可逆的 RGB 编码接口，将 2D/3D 感知任务统一重构为条件图像生成问题。这意味着生成式视觉预训练将在构建兼具生成能力和理解能力的基础视觉模型中占据核心地位。</p>

<blockquote>
  <p>In this work, we demonstrate that image generation training serves a role similar to LLM pretraining, and lets models learn powerful and general visual representations that enable state-of-the-art performance on various vision tasks.</p>
</blockquote>

<p>在很多视觉任务中，Vision Banana 都可以达到 SOTA 水平。</p>

<blockquote>
  <p>Our generalist model, Vision Banana, achieves state-of-the-art results on a variety of vision tasks involving both 2D and 3D understanding, beating or rivaling zero-shot domain-specialists, including Segment Anything Model 3 on segmentation tasks, and the Depth Anything series on metric depth estimation.</p>
</blockquote>

<p>这个模型（Vision Banana）在 2D/3D 都达到了行业顶尖水平，甚至可以与 SAM3、Depth Anything 系列等专业模型竞争，甚至是超过这些模型。</p>

<hr />

<h2 id="论文背景与动机">论文背景与动机</h2>

<p>本论文尝试回答一个问题：大规模图像/视频生成模型在海量无监督预训练过程中，是否已经隐式地习得了强泛化、可迁移的视觉理解表征（是否像在 NLP 领域一样学到了对于世界的理解）？如果的确如此，那我们是否可以通过一种轻量的、统一的方法把这些表征”解放”出来。</p>

<p>如此，具有最大意义：</p>

<ul>
  <li><strong>Paradigm shift</strong>：范式转换，表明 CV 正式与 NLP 对齐：Pretrain → Instruction Tuning → Emergence</li>
  <li><strong>统一 CV 流程</strong>：传统 CV 任务，图像分类、目标检测、分割等，在实际应用上往往需要多步融合，而本论文方法可将这些任务统一为”单模型 + 统一提示词路由”</li>
  <li><strong>扩展灵感</strong>：对于 NLP、CV 本质相同，那是否可以推广到更远的领域，是否可以推广到世界模型</li>
</ul>

<h2 id="如何证明图像生成模型确实可作为视觉理解的基座模型">如何证明图像生成模型确实可作为视觉理解的基座模型</h2>

<blockquote>
  <p>To achieve this, we finetune a pretrained image generator with a small amount of computer vision data (depth estimation, surface normal estimation, segmentation, etc.). We then evaluate the resulting model on a wide variety of vision benchmarks. If the finetuned model performs at or near SOTA on these benchmarks, while retaining its image generation capabilities, then there is strong evidence that the image generator was indeed a foundation model for visual understanding – i.e., a generalist vision learner.</p>
</blockquote>

<p>为验证这一点，我们使用少量计算机视觉数据（深度估计、表面法向量估计、图像分割等任务数据）对预训练图像生成模型进行微调。随后，我们在各类视觉评测基准上测试该模型。若微调后的模型在这些基准任务中达到或接近当前最优水平，同时保留图像生成能力，便足以证明：这类图像生成模型确实可作为视觉理解的基座模型，也就是通用视觉学习模型。</p>

<p>实际上论文提到了以前有实验去验证了生成式模型有着某些隐藏的理解能力，但是因为模型未能严格遵循提示要求，以<strong>生成可解码为视觉输出并用于计算定量指标的预期格式图像</strong>，导致了这些模型未能达到 SOTA 水平。部分研究者还添加专用模块并进行全精细调优来调整生成架构，从而在特定目标任务上实现 SOTA 级效果。</p>

<p>虽然这些研究利用了预训练特征的理解能力，但是牺牲了模型在其他地方的理解和生成式模型的通用性。</p>

<p>在此基础上进行训练：</p>

<p><img src="../images/vision-banana/framework-pipeline.png" alt="整体训练流程" /></p>

<p>本文将视觉生成模型定位为”视觉基座模型”，并通过指令微调实现模型对齐，使其能够依据提示词生成符合预期格式的视觉输出，整体流程如上图。</p>

<p>具体而言，模型会根据指令生成 RGB 图像，我们可从该图像中解码得到各类计算机视觉任务输出结果。本文设计了配套指令提示词与可解码可视化方案，打通视觉生成结果与标准评测格式之间的转换通道，使我们能够采用可量化指标开展基准测试。</p>

<p>举个例子：输入提示词”将滑板类别分割为纯黄色 &lt; 255, 255, 0&gt;”，只需筛选像素值接近 &lt; 255,255,0 &gt; 的像素做聚类，就能快速提取滑板对应的分割掩码。</p>

<p>该方法具有三大优势：</p>

<ol>
  <li>单一套统一模型即可适配海量任务；完成指令微调后，所有任务共享模型权重，仅需更换提示词就能切换任务</li>
  <li>所需新增训练数据量较少，指令微调仅教会模型如何将各类视觉任务结果编码为 RGB 图像</li>
  <li>模型能够保留原生图像生成能力 — 模型输出本质仍是全新 RGB 图像，不会破坏生成基础能力</li>
</ol>

<hr />

<p><img src="../images/vision-banana/performance-comparison.png" alt="性能对比" /></p>

<p>上图表示该模型对比各种 specialist 模型的性能，可以看出在多种任务都超过了专业模型。</p>

<h3 id="启示">启示</h3>

<ul>
  <li>首先，它表明图像生成器本质上属于通用视觉学习系统，其生成式视觉预训练与语言模型预训练一样具有基础性作用</li>
  <li>其次，它表明图像生成可以作为一种有效的学习方法，这种通用接口旨在实现统一的视觉理解，其作用类似于文本生成在语言理解和推理中的角色</li>
</ul>

<h2 id="方法">方法</h2>

<blockquote>
  <p>为严谨地研究和评估这些能力，我们需要对模型进行<strong>校准</strong>，使其生成的可视化结果能够反向解码为实际视觉任务输出以便定量分析。例如，在度量深度估计任务中，生成的深度热图必须能逆转换为物理深度值以进行量化评估。因此，我们通过对基础模型 Nano Banana Pro 进行指令调优，并结合一系列以可逆方式表述的视觉任务数据，开发出了 Vision Banana。具体而言，我们将<strong>视觉任务数据</strong>以极低比例混合到 Nano Banana Pro 自身的训练数据集中。这一过程使模型产生的生成表征能够对应到可测量的物理几何结构和语义标签，从而使得我们的通用型模型能够与特定任务专用模型进行对比评估。</p>
</blockquote>

<h2 id="基于图像生成器的通用视觉模型vision-banana">基于图像生成器的通用视觉模型（Vision Banana）</h2>

<p>本节给出 Vision Banana 在各种 CV 任务上的表现效果。</p>

<p><img src="../images/vision-banana/segmentation-results.png" alt="分割任务效果" /></p>

<ul>
  <li>Semantic segmentation 语义分割</li>
  <li>Instance segmentation 实例分割</li>
  <li>Referring expression segmentation 指代表达分割</li>
</ul>

<h3 id="2d-语义理解">2D 语义理解</h3>

<p>传统图像分割任务：依赖复杂的具体<strong>特定任务</strong>的模型将像素划分为语义类别或物体示例（高度专门化的架构设计 + 昂贵的人工标注掩码）。</p>

<p>本文 Vision Banana：挑战了这种 prevailing paradigm（主流范式），我们无需依赖大量精心制作的分割样本进行训练，而是利用基础图像生成模型所学习到的丰富表征信息。通过指示模型生成多色分割掩膜图像，我们获得密集的分割图谱，并从中解码出单个掩膜，从而实现基于图像生成的分割任务（具体见上表）。</p>

<p>这种精妙的生成方法超越了经过高度调优的专业模型，在所有评估的分割基准上均实现了 SOTA 零样本迁移性能。我们将其与未在领域内数据（即这些基准的训练集）上训练过的其他方法进行比较，并在表格中标注为”零样本迁移”。</p>

<blockquote>
  <p>生成式模型学习到了丰富的表征信息，通过指示模型分割就直接从图像中解码出分割掩码。</p>
</blockquote>

<p><strong>语义分割</strong>：语义分割是指将每个像素划分为预定义类别，而不区分具体实例。例如，Cityscapes 基准集（Cordts 等人，2016）定义了 19 个类别，包括道路、人物和天空。虽然实例分割和参考表达式分割也能传递语义信息，但我们仍使用”语义分割”这一术语。</p>

<p><img src="../images/vision-banana/semantic-segmentation.png" alt="语义分割" /></p>

<p>此处严格而言，该概念仅适用于<strong>类别层面</strong>的语义分割任务。经典语义分割任务的这一特性可通过<strong>文本提示</strong>进行指定，我们训练模型遵循此类指令：要求模型生成一幅可视化图像，其中每个像素均根据其类别着色，如图所示。</p>

<p>关键在于，我们的方法采用<strong>开放词汇表设计</strong>：目标类别不受固定集合限制，可在提示中<strong>动态指定</strong>并附带相应的颜色映射关系。我们支持多种提示方式，包括<strong>自然语言描述</strong>（例如”马卡龙蛋糕用黄色表示”）以及<strong>结构化的 JSON 映射</strong>方案——颜色可指定为命名颜色、<strong>十六进制代码</strong>或 <strong>RGB 三元组</strong>。为进行定量评估，我们会对生成图像进行后处理，将每个像素归入其目标颜色在 RGB 空间中最接近的类别。</p>

<blockquote>
  <p>Vision Banana 在语义分割任务上，可以用各种开放词汇表与颜色映射关系进行指定，利用其生成能力得到分割掩码。</p>
</blockquote>

<p><img src="../images/vision-banana/instance-segmentation.png" alt="实例分割" /></p>

<p><strong>实例分割</strong>：与语义分割不同，实例分割要求模型能够区分属于同一类别的各个独立对象。例如，如果一张图像包含五只狗，我们期望模型为每只动物生成独立的掩码。这对 Vision Banana 提出了独特挑战：<strong>由于实例数量无法预先确定，我们无法在提示中指定具体颜色</strong>。为解决这一问题，我们仅提供<strong>目标类别</strong>和<strong>背景颜色</strong>作为输入，指示模型为每个独立实例分配唯一且不同的颜色，并允许模型动态为该类别下的不同实例分配不同颜色。</p>

<p><img src="../images/vision-banana/referring-segmentation.png" alt="指代表达分割" /></p>

<p><strong>指代表达分割</strong>：与传统的固定类别分割不同，参照表达式分割旨在评估模型对由长篇自由形式自然语言查询所描述对象进行分割的能力。该任务要求模型能够理解并推理微妙的自然语言表达，并捕捉对象之间的复杂关系。</p>

<h3 id="3d-understanding-from-monocular-images单眼图像理解三维空间">3D Understanding from Monocular Images（单眼图像理解三维空间）</h3>

<p><strong>Metric Depth Estimation（度量深度估计）</strong>：深度估计的目标是从单目图像中生成深度图，其中每个像素的值代表从相机平面到观测物体的实际几何距离。</p>

<p>这是计算机视觉领域的基础任务，广泛应用于机器人技术、增强/虚拟现实以及自动驾驶等领域。然而，深度估计本质上属于不适定问题，因为二维投影会丢失关键的三维几何信息。此外，由于多视图场景中缺乏视差线索（即使已知相机内参），单目深度估计尤其具有挑战性。</p>

<p>传统深度估计：视为是一个密集的逐像素监督回归任务，采用专门的架构和领域特定的损失函数；最新的 SOTA 在训练、推理过程都需要依靠详细的内参（camera intrinsic）以缓解深度估计固有的模糊性。</p>

<p>本文假设：生成建模中对模式的<strong>探索特性</strong>能够<strong>自然解决训练目标的模糊性</strong>，从而无需使用此类专门技术。此外，预训练过程中积累的广泛世界知识使该模型在物体尺寸和距离方面比窄目标模型具有更强的先验知识。为使 Nano Banana Pro 能够以度量单位估算深度，我们要求该模型输出精心构建的深度值伪彩色可视化结果。</p>

<p><img src="../images/vision-banana/depth-estimation-pipeline.png" alt="深度估计流程" /></p>

<blockquote>
  <p>将深度转化为 RGB 图像（具体原理还需要参考 Barron 等人 2023 年 ICCV 论文《Learning to Estimate Depth from Monocular Images》）</p>
</blockquote>

<p><img src="../images/vision-banana/depth-estimation-results.png" alt="深度估计性能" /></p>

<p>本次实验完全不使用任何真实世界的深度数据，并排除了所有评估所用深度数据集中的训练数据。需要特别说明的是，这一结果的实现<strong>无需</strong>在训练或推理过程中依赖<strong>相机参数</strong>（无论是内参还是外参）。通过充分利用其<strong>基础模型中蕴含的丰富几何先验信息</strong>，Vision Banana 仅凭视觉特征和物体关系即可推断出绝对尺度，从而实现对任意输入图像的零样本泛化能力。</p>

<p>定性分析：</p>

<p><img src="../images/vision-banana/depth-qualitative-1.png" alt="深度估计定性分析 1" />
<img src="../images/vision-banana/depth-qualitative-2.png" alt="深度估计定性分析 2" /></p>

<p><strong>表面法向量估计</strong>：表面法线估计是另一项关键的视觉任务。表面法线是取值范围在 -1.0 至 1.0 之间的单位向量 (x, y, z)，可作为表征局部几何形状和场景结构的重要指标。与度量深度所需的复杂颜色映射不同，表面法线的可视化本质上与 RGB 色彩空间相契合，从而能够直接集成到我们的模型中。</p>

<p><img src="../images/vision-banana/surface-normal-results.png" alt="表面法向量估计" />
<img src="../images/vision-banana/surface-normal-comparison.png" alt="表面法向量对比" /></p>

<p>与 SOTA 水平相当。</p>

<h2 id="讨论与个人见解">讨论与个人见解</h2>

<p>本文章为真正的基础视觉模型以及基于视觉的人工通用智能（AGI-V）铺平了道路。</p>

<p>基于本文提出的 Vision Banana 模型，我们是否可以对其进行扩展至世界模型（WM）？以下是个人的见解：</p>

<ol>
  <li>LLM 理解物理世界规则、材质、纹理等，但是缺少视觉信息；纯视觉模型则缺少物理世界规则，只能依靠训练进行分类</li>
  <li>Vision Banana 模型很好地统一了这一点</li>
  <li>明确几点：第一，LLM 可以描述客观世界，但是是基于人类的视角，本质上还是相当于一个巨大的知识库，充其量可能可以通过噪声在低概率的情况下推断某些新的东西；第二，视觉是给人看的，也是不可或缺的</li>
  <li>现状：世界模型（这里以李飞飞的分类法：渲染器、模拟器、规划器）。渲染器如 Sora，无法直接处理 3D 场景，对物体材质、纹理、性质无法理解，对于光照也无法直接处理，难以通向 AGI；规划器如 VLA，依靠模拟器推理行动。于此，个人认为模拟器如 Marble（李飞飞团队），可以成为通向 AGI 的基础</li>
  <li>Vision Banana 模型的出现为训练理解物理世界的模拟器提供了捷径，这里列出个人的理解与思路：</li>
</ol>

<blockquote>
  <ol>
    <li>利用 Vision Banana 模型及大语言模型对于世界的理解，由一张图片生成 3D 场景（图片 → 深度提取 → 体素生成），这里关注体素生成。传统体素仅包含位置信息，而结合 Vision Banana 模型以及 LLM 可以生成包含材质、纹理、性质等信息的体素</li>
    <li>训练 Bert（Swin）补全 3D 场景</li>
    <li>训练体素转 3DGS 高斯粒子的模型（这里参考的是李飞飞团队的 Marble 模型，3DGS 高斯粒子拥有更好的渲染效果，更贴近现实世界）。该模型国内也有相关工作，如李飞飞团队、浙大 VolSplat（这里可以利用 LLM 对世界的理解进行调整，迁移学习）</li>
    <li>在此基础上的模拟器可以生成贴近现实世界的 3D 场景，在此基础上添加时间维度，通过视频与 Vision Banana 模型不断对齐，训练其理解物理世界规则（视频能力）</li>
    <li>后文在此模拟器基础上，模拟器的预测功能得到的动作数据结合 VLA 的规划功能，或许可以实现较好的效果</li>
  </ol>
</blockquote>]]></content><author><name></name></author><category term="deep-learning" /><category term="paper-reading" /><category term="Google" /><category term="CV" /><category term="生成模型" /><category term="Vision Banana" /><category term="通用视觉" /><summary type="html"><![CDATA[原文链接：Google Research]]></summary></entry><entry><title type="html">StableDiffusion 详解</title><link href="https://oopvo.github.io/StableDiffusion-overview/" rel="alternate" type="text/html" title="StableDiffusion 详解" /><published>2026-06-11T00:00:00+00:00</published><updated>2026-06-11T00:00:00+00:00</updated><id>https://oopvo.github.io/StableDiffusion-overview</id><content type="html" xml:base="https://oopvo.github.io/StableDiffusion-overview/"><![CDATA[<blockquote>
  <p>StableDiffusion 是一种基于<a href="/glossary/diffusion-model/">扩散模型</a>的生成模型，能够生成高质量的图像。记得第一次使用的时候还是高一，用 qq 登录一个啥网站，然后生成第一张图片的时候的惊奇感，那个时候生成一次图片还需要排队，还需要等好久。=v=往事</p>
</blockquote>

<hr />

<p>我们带着一些问题去了解 StableDiffusion 模型的原理和实现：</p>

<ol>
  <li>What is StableDiffusion? 什么是 <a href="/glossary/diffusion-model/">StableDiffusion</a> 模型？</li>
  <li>How to visually understand the <a href="/glossary/diffusion-model/">diffusion model</a>? 如何可视化理解扩散模型？</li>
  <li>How to derive the diffusion model mathematically? 如何推导扩散模型的数学原理？</li>
  <li>How to train a StableDiffusion model and infer it? 如何训练 StableDiffusion 模型并进行推理？</li>
</ol>

<h2 id="1-什么是-stablediffusion-模型">1. 什么是 StableDiffusion 模型？</h2>

<p><img src="../images/stable-diffusion/forward-diffusion-overview.png" alt="前向扩散加噪过程" /></p>

<p>Denoising Diffusion Probability Model 加噪扩散概率模型，顾名思义一下，<strong>加噪</strong>，就是如图，$x_{t-1}$ 在加入一个均值为 0、方差为 1 的<a href="/glossary/gaussian-noise/">高斯噪声</a>，得到 $x_t$，一步一步地加噪，直到得到<strong>纯噪声图像</strong>。</p>

<p><img src="../images/stable-diffusion/denoising-process.png" alt="去噪过程" /></p>

<p>而<strong>去噪</strong>，就是如图，从 $x_t$ 开始，我们训练一个模型（神经网络）来预测 $x_t$ 的噪声，然后在 $x_t$ 的基础上减去预测的噪声，得到 $x_{t-1}$，以此类推，直到得到原始图像。</p>

<p>而我们不可能在每一步都训练一个模型的，因为这样会非常耗时，而且需要大量的计算资源。为此，我们会为模型注入一个 $t$ 的变量（timestep），来让模型知道当前是在第几步，这样我们就可以训练一个模型来同时处理所有的步骤了。</p>

<p><img src="../images/stable-diffusion/timestep-injection.png" alt="时间步注入" /></p>

<hr />

<p>大佬的话</p>

<hr />

<p><strong>从数学角度深入：</strong></p>

<h3 id="1-加噪过程">1. 加噪过程</h3>

<p>我们定义一个<strong>前向扩散过程</strong>，从原始图像 $x_0$ 开始，逐步加入噪声，直到得到纯噪声 $x_T$。这个过程可以表示为：</p>

\[x_t = \epsilon(x_t, t) + \sigma \epsilon_t\]

<p>其中，$\epsilon$ 是一个噪声函数，$t$ 是时间步，$\sigma$ 是噪声标准差。</p>

<p><img src="../images/stable-diffusion/forward-diffusion-formula.png" alt="前向扩散公式" /></p>

<p>如何理解这个公式：</p>

\[x_t = \epsilon(x_t, t) + \sigma \epsilon_t\]

<p>首先对于任意一个正态分布</p>

\[z \sim \mathcal{N}(\mu, \sigma^2)\]

<p>我们通过一些简短的数学变换可以得到一个标准的正态分布</p>

\[\frac{z-\mu}{\sigma} \sim \mathcal{N}(0, I)\]

<p>那对于图像的任意一个随机采样的像素，我们可以将其表示为：</p>

\[z = \mu + \sigma \cdot \varepsilon, \quad \varepsilon \sim \mathcal{N}(0, I)\]

<p>其中，$\epsilon_t$ 是一个标准正态分布的随机变量，$\sigma$ 是噪声的标准差，$\mu$ 是图像像素的均值。通过这个变换，我们可以将任意一个图像像素表示为一个标准正态分布的随机变量，这个过程我们叫做 <strong><a href="/glossary/reparameterization-trick/">重参数化技巧</a></strong>（这里联系 <a href="/glossary/vae/">VAE</a> 的重参数化技巧，也用到了同样的技巧）。</p>

<p><img src="../images/stable-diffusion/reparameterization-trick.png" alt="重参数化技巧" /></p>

<p>如图，我们用 $x_t = \sqrt{\alpha_t} x_{t-1} + \sqrt{1-\alpha_t} \varepsilon_{t-1}$ 来表示 $x_t$，其中 $\sqrt{\alpha_t}$ 是均值项 mean，$\sqrt{1-\alpha_t}$ 是方差项 std。</p>

<blockquote>
  <p><strong>💡 马尔可夫过程</strong>：这个前向扩散过程是一个典型的 <a href="/glossary/markov-process/">马尔可夫过程</a>，即每一步的状态 $x_t$ <strong>只依赖于上一步</strong> $x_{t-1}$，与更早的状态无关：
\(q(x_t \mid x_{t-1}, x_{t-2}, \dots, x_0) = q(x_t \mid x_{t-1})\)
这一性质使得联合分布可以分解为条件分布的连乘，也使得我们可以直接从 $x_0$ 跳跃式计算任意 $x_t$（详见下文）。</p>
</blockquote>

\[q(x_t \mid x_{t-1}) = \mathcal{N}\left(x_t; \sqrt{\alpha_t} x_{t-1},\ (1-\alpha_t)\mathbf{I}\right)\]

<p>代表在 $x_{t-1}$ 的基础上，加入一个均值为 $\sqrt{\alpha_t} x_{t-1}$、方差为 $(1-\alpha_t)\mathbf{I}$ 的高斯噪声，得到 $x_t$。</p>

<p><img src="../images/stable-diffusion/noise-schedule.png" alt="噪声调度" /></p>

<p>与 $\sqrt{\alpha_t}$ 相乘的是 signal，与 $\sqrt{1-\alpha_t}$ 相乘的是 noise，在原论文中，代表是一个 <strong><a href="/glossary/snr/">信噪比</a></strong> 的问题（梦回计网物理层香农定理）。</p>

<p>如图，右侧的是这两个参数随时间变化的趋势，称 <strong>Schedule</strong>。随着时间的增长，$\sqrt{\alpha_t}$ 会越来越小，代表 signal 的权重会越来越小。如何理解：对于未加噪的图像，我们一开始加的噪声大，对图像的影像也大，但是到后期，我们的图像噪声已经很大，<strong>为了让每一次加噪都对图像的影像尽可能一致</strong>，我们就会将 $\sqrt{\alpha_t}$ 设置为越来越小，代表 signal 的权重会越来越小。</p>

<blockquote>
  <p><strong>重要的公式：</strong>
\(x_t = \sqrt{\alpha_t} x_{t-1} + \sqrt{1-\alpha_t} \varepsilon_{t-1}\)</p>
</blockquote>

<p><img src="../images/stable-diffusion/skip-noise-addition.png" alt="跳跃式加噪" /></p>

<p>跳跃式加噪</p>

<p>利用<a href="/glossary/markov-process/">马尔可夫性质</a>，我们可以直接从 $x_0$ 计算任意时间步 $x_t$，无需逐 step 迭代。定义 $\bar{\alpha}<em>t = \prod</em>{i=1}^t \alpha_i$，则有：</p>

\[x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1-\bar{\alpha}_t} \epsilon\]

<p>这就是 <strong>跳跃式加噪</strong>，在训练时只需一步即可得到任意时间步的噪声图像，大幅提升训练效率。</p>

<h2 id="2-去噪过程">2. 去噪过程</h2>

<p><img src="../images/stable-diffusion/reverse-process-denosing.png" alt="逆向去噪过程" /></p>

<p>从 $x_T$ 再到 $x_{t-1}$，是几乎不可能的，所以为了反向推出 $x_{t-1}$，我们需要训练一个模型，来预测 $x_t$ 的噪声，然后在 $x_t$ 的基础上减去预测的噪声，得到 $x_{t-1}$，以此类推，直到得到原始图像。</p>

<p>我们认为，我们的目标分布 $q(x_{t-1} \mid x_t) = \mathcal{N}\left(x_{t-1};\ \mu_t(x_t),\ \Sigma_t(x_t)\right)$ 是一个高斯分布，而我们大胆地假设，我们的模型 $p(x_t \mid x_{t-1})$ 也是一个高斯分布，即：</p>

\[p_\theta(x_{t-1} \mid x_t) = \mathcal{N}\left(x_{t-1};\ \mu_\theta(x_t, t),\ \Sigma_\theta(x_t, t)\right)\]

<p><img src="../images/stable-diffusion/mle-derivation.png" alt="MLE 推导" /></p>

<blockquote>
  <p><strong>重要的公式：</strong>
<a href="/glossary/maximum-likelihood/">最大似然估计</a> = 最小化负对数似然函数</p>
</blockquote>

\[\log \mathcal{L}(\theta \mid x_t) = -\frac{1}{2} \left(\frac{1}{\Sigma_\theta(x_t, t)} \left(\frac{x_{t-1} - \mu_\theta(x_t, t)}{\Sigma_\theta(x_t, t)}\right)^2 + \frac{1}{2} \log \Sigma_\theta(x_t, t)\right)\]

<p><strong>这里对应 <a href="/glossary/vae/">VAE</a> 的损失函数</strong></p>

<p><img src="../images/stable-diffusion/vae-loss-connection.png" alt="VAE 损失对比" /></p>

<blockquote>
  <p><strong>重要的公式：</strong></p>
</blockquote>

<p><img src="../images/stable-diffusion/denoising-key-formula.png" alt="去噪关键公式" /></p>

<p><img src="../images/stable-diffusion/reverse-process-math.png" alt="逆向过程公式" /></p>

<p>对于整个过程，实际上就只有一个参数 $\epsilon$ 未知，实际上我们训练的模型就是去预测 $\epsilon$（注意这里的噪声是从 $x_0$ 到 $x_T$ 的噪声）。</p>

<p><strong>为啥不直接一步预测呢</strong>：这里每一次修正都存在一个修正的过程</p>

<h2 id="3-训练与采样推导">3. 训练与采样推导</h2>

<p><img src="../images/stable-diffusion/training-sampling-derivation.png" alt="训练与采样推导" /></p>

<h2 id="4-训练步骤">4. 训练步骤</h2>

<p><img src="../images/stable-diffusion/algorithm-training.png" alt="训练算法" /></p>

<ol>
  <li>随机选一个 time step，然后 encode</li>
  <li>加噪</li>
  <li>训练神经网络，一般是 <a href="/glossary/u-net/">U-Net</a></li>
  <li><strong>这里计算的损失就是不同 timestep 对应的两个高斯噪声的 L2 距离</strong></li>
</ol>

<h2 id="5-采样">5. 采样</h2>

<p><img src="../images/stable-diffusion/algorithm-sampling.png" alt="采样算法" /></p>

<ol>
  <li>从纯噪声开始采样，输入噪声与 time step 后，得到预测的噪声</li>
  <li>从 $x_t$ 的基础上减去预测的噪声，得到 $x_{t-1}$</li>
  <li>以此类推，直到得到原始图像</li>
</ol>

<hr />

<h2 id="参考与延伸阅读">参考与延伸阅读</h2>

<ol>
  <li><strong>DDPM</strong> — Ho, J., Jain, A., &amp; Abbeel, P. (2020). <em>Denoising Diffusion Probabilistic Models</em>. NeurIPS 2020. [<a href="https://arxiv.org/abs/2006.11239">arXiv:2006.11239</a>]</li>
  <li><strong>扩散模型起源</strong> — Sohl-Dickstein, J., Weiss, E. A., Maheswaranathan, N., &amp; Ganguli, S. (2015). <em>Deep Unsupervised Learning using Nonequilibrium Thermodynamics</em>. ICML 2015. [<a href="https://arxiv.org/abs/1503.03585">arXiv:1503.03585</a>]</li>
  <li><strong>Stable Diffusion</strong> — Rombach, R., Blattmann, A., Lorenz, D., Esser, P., &amp; Ommer, B. (2022). <em>High-Resolution Image Synthesis with Latent Diffusion Models</em>. CVPR 2022. [<a href="https://arxiv.org/abs/2112.10752">arXiv:2112.10752</a>]</li>
  <li><strong>重参数化技巧</strong> — [<a href="/glossary/reparameterization-trick/">glossary 条目</a>]</li>
  <li><strong>VAE</strong> — [<a href="/glossary/vae/">glossary 条目</a>]</li>
</ol>

<p>最好的讲解： https://www.bilibili.com/video/BV1xih7ecEMb/?share_source=copy_web&amp;vd_source=9ddae8a660784d5c8d074cccde4334d6</p>]]></content><author><name></name></author><category term="deep-learning" /><category term="StableDiffusion" /><category term="PyTorch" /><category term="生成模型" /><category term="模型训练" /><summary type="html"><![CDATA[StableDiffusion 是一种基于扩散模型的生成模型，能够生成高质量的图像。记得第一次使用的时候还是高一，用 qq 登录一个啥网站，然后生成第一张图片的时候的惊奇感，那个时候生成一次图片还需要排队，还需要等好久。=v=往事]]></summary></entry><entry><title type="html">VAE 变分自编码器详解</title><link href="https://oopvo.github.io/VAE-Reproduction/" rel="alternate" type="text/html" title="VAE 变分自编码器详解" /><published>2026-06-10T00:00:00+00:00</published><updated>2026-06-10T00:00:00+00:00</updated><id>https://oopvo.github.io/VAE-Reproduction</id><content type="html" xml:base="https://oopvo.github.io/VAE-Reproduction/"><![CDATA[<blockquote>
  <p>VAE（Variational Autoencoder）变分自编码器，是生成模型的基石之一</p>
</blockquote>

<hr />

<h2 id="一生成模型要解决什么问题">一、生成模型要解决什么问题？</h2>

<h3 id="核心问题学习数据的分布">核心问题：学习数据的分布</h3>

<p>假设你有 10000 张猫的图片。<strong>生成模型</strong>的目标是：学完这些图片后，能<strong>生成全新的、看起来像猫的图片</strong>。</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>训练集: [🐱₁, 🐱₂, 🐱₃, ..., 🐱₁₀₀₀₀]  →  学分布 p(x)

生成: 采样自 p(x) → 得到全新的 🐱 (训练集中没有的)
</code></pre></div></div>

<h3 id="核心难点高维空间的稀疏性">核心难点：高维空间的稀疏性</h3>

<p>图片是<strong>高维数据</strong>。一张 28×28 的灰度图（MNIST）是 784 维空间中的一个点。要直接学习 $p(x)$ 在 784 维空间的分布，需要<strong>指数级</strong>的数据量——这被称为<strong>维度灾难</strong>。</p>

<h3 id="vae-的思路先降维再生成">VAE 的思路：先降维再生成</h3>

<p>VAE 核心：高维的变量可被用低维变量来表示。如一张图片的Latent Space可以是10~100维的向量，每一个向量可以用基于高斯分布的概率来表示范围。</p>

<p><img src="/images/VAE1.png" alt="VAE架构图" /></p>

<h2 id="于此我们可以通过采样潜在变量-z-来生成新的数据空间中的新点就是通过原图像生成的潜在变量来生成与原图像相关的新的图像">于此，我们可以通过采样潜在变量 $z$ 来生成新的数据空间中的新点，就是通过原图像生成的潜在变量来生成与原图像相关的新的图像。</h2>

<h2 id="二vae-架构">二、<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="VAE" data-def="Variational Autoencoder（变分自编码器），由 Kingma &amp; Welling 于 2014 年在 ICLR 提出的生成模型。与普通自编码器将输入编码为一个固定向量不同，VAE 的编码器输出一个概率分布的参数（均值 μ 和方差 σ²），然后从该分布采样得到潜在变量 z，再由解码器生成新数据。损失函数由重构损失和 KL 散度两部分组成，前者保证重建质量，后者规整潜在空间。训练完成后，可以直接从标准正态分布采样 z 来生成全新的数据。VAE 是生成模型的基石，衍生出 β-VAE、VQ-VAE 等众多变体。" data-url="/glossary/vae/">VAE</span> 架构</h2>

<h3 id="与普通自编码器的关键区别">与普通自编码器的关键区别</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>普通自编码器（Autoencoder）:
  输入 x → [编码器] → z（一个固定向量）→ [解码器] → 重建 x̂

  问题：z 是"一个点"，无法从中采样生成新数据
        → 只能重建见过的数据

VAE:
  输入 x → [编码器] → μ, σ²（一个分布的参数）→ 采样 z → [解码器] → 重建 x̂
                      ↓
                  潜在分布 q(z|x)
  
  优势：z 从分布中采样 → 可以生成无穷多新数据！
</code></pre></div></div>
<p>即：Autoencoder每次采样是不变的，而VAE每次采样都是随机的，VAE的泛化和潜力巨大。</p>
<h3 id="架构图">架构图</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>         编码器（推断网络）          潜在空间             解码器（生成网络）

  x ──→ [NN] ──→ μ ─────┐
         │               ├──→ z = μ + σ·ε ──→ [NN] ──→ x̂
         └──→ σ² ──────┘          ↑
                                  ε ∼ N(0, I)  ← 随机噪声
</code></pre></div></div>

<h3 id="原理解析">原理解析</h3>
<p>如图，为原始的ELBO形式，也是变分推理通用的框架。
<img src="/images/ELBO.png" alt="ELBO变分下界" />
其中公式定义为：
\(\mathcal{L}_q = \mathbb{E}_{z \sim q}[\log p(z, x) - \log q(z)]\)
关键概念：</p>
<ul>
  <li>
    <table>
      <tbody>
        <tr>
          <td>$q(z) \approx p(z</td>
          <td>x)$：引入一个近似分布 $q(z)$，来逼近真实后验分布 $p(z</td>
          <td>x)$（真实后验通常无法直接计算）</td>
        </tr>
      </tbody>
    </table>
  </li>
  <li>$z$：<strong>隐变量</strong>（Latent Variable），数据的抽象表示</li>
  <li>$x$：<strong>观测变量</strong>（Observed Variable），输入数据</li>
  <li>
    <table>
      <tbody>
        <tr>
          <td>目标：最大化 $\mathcal{L}_q$，等价于让 $q(z)$ 尽可能接近 $p(z</td>
          <td>x)$，同时提升数据的对数似然 $\log p(x)$</td>
        </tr>
      </tbody>
    </table>
  </li>
</ul>

<p>这里补充一下基础：</p>
<h3 id="先验分布-pz">先验分布 $p(z)$</h3>
<p><strong>定义</strong>：在观测到数据 $x$ 之前，潜在变量 $z$ 的分布。<br />
<strong>常用选择</strong>：标准正态分布 $N(0, I)$，即均值为 0、方差为 1 的多维高斯分布。<br />
<strong>作用</strong>：提供一个规范化的潜在空间，有点像是给出一个模板</p>

<h3 id="后验分布-qzx">后验分布 $q(z|x)$</h3>
<p><strong>定义</strong>：给定观测数据 $x$ 后，潜在变量 $z$ 的分布。<br />
<strong>公式来源（贝叶斯定理）</strong>：\(p(z|x) = \frac{p(x|z)p(z)}{p(x)}\)<br />
<strong>一般来说</strong>：后验分布是无法计算的</p>

<h3 id="似然-pxz">似然 $p(x|z)$</h3>
<p><strong>定义</strong>：给定潜在变量 $z$，生成原始数据 $x$ 的概率。</p>

<table>
  <tbody>
    <tr>
      <td>于是，公式的目的就是：**引入一个近似分布 $q(z)$，来逼近真实后验分布 $p(z</td>
      <td>x)$**</td>
    </tr>
  </tbody>
</table>

<h3 id="vae的改造引入编码器和解码器">VAE的改造：引入编码器和解码器</h3>
<p>引入编码器和解码器后，分布将参数化。</p>
<ul>
  <li>
    <table>
      <tbody>
        <tr>
          <td>近似分布不再是固定 $q(z)$ 而是条件分布 $q(z</td>
          <td>x)$，由编码器网络参数化</td>
        </tr>
      </tbody>
    </table>
  </li>
  <li>
    <table>
      <tbody>
        <tr>
          <td>生成数据 $p(x</td>
          <td>z)$ 由解码器网络参数化</td>
        </tr>
      </tbody>
    </table>
  </li>
</ul>

<p>于是公式：<br />
\(\begin{aligned}
\mathcal{L}_q &amp;= \mathbb{E}_{z \sim q}\left[ \log p_\theta(x \mid z)p(z) - \log q_\phi(z \mid x) \right] \\
&amp;= \mathbb{E}_{z \sim q}\left[ \log p_\theta(x \mid z) + \log p(z) - \log q_\phi(z \mid x) \right]
\end{aligned}\)</p>

<p>这个拆分对于了VAE损失函数的两大部分：</p>
<ul>
  <li>
    <table>
      <tbody>
        <tr>
          <td><strong>重构损失</strong>：$\mathbb{E}_{z \sim q(z</td>
          <td>x)}[\log p(x</td>
          <td>z)]$，衡量生成数据与原始数据的相似度</td>
        </tr>
      </tbody>
    </table>
  </li>
  <li>
    <table>
      <tbody>
        <tr>
          <td><strong>KL 散度</strong>：$D_{\text{KL}}(q(z</td>
          <td>x) | p(z))$，衡量 $q(z</td>
          <td>x)$ 的分布与 $p(z)$ 的分布的相似度</td>
        </tr>
      </tbody>
    </table>
  </li>
</ul>

<h2 id="三损失函数">三、损失函数</h2>

<p>VAE 的损失由两部分组成：<strong>重构损失 + KL 散度</strong>。</p>

<h3 id="1-重构损失reconstruction-loss">1. 重构损失（Reconstruction Loss）</h3>

<p>让生成的图片和原图尽可能相似：</p>

\[\mathcal{L}_{\text{recon}} = -\mathbb{E}_{z \sim q(z|x)}[\log p(x|z)]\]

<p><strong>直观理解</strong>：给定潜在变量 $z$，生成原始数据 $x$ 的概率有多大？概率越大，损失越小。</p>

<p>对于图像，常用<strong>二值交叉熵（BCE）</strong>：</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">recon_loss</span> <span class="o">=</span> <span class="n">F</span><span class="p">.</span><span class="n">binary_cross_entropy</span><span class="p">(</span><span class="n">recon_x</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">reduction</span><span class="o">=</span><span class="s">'sum'</span><span class="p">)</span>
<span class="c1"># 每个像素的交叉熵之和
</span></code></pre></div></div>

<h3 id="2-kl-divergence-正则化">2. <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="KL Divergence" data-def="Kullback-Leibler 散度（KL 散度），衡量两个概率分布之间差异的指标（非对称）。在机器学习中广泛用于正则化——强制一个分布接近另一个分布。在 VAE 中，KL 散度作为正则化项，强制近似后验分布 q(z|x) 接近先验分布 p(z)=N(0,I)，防止潜在空间过度发散，让潜在空间具有良好的连续性和可插值性。对于两个高斯分布，KL 散度有闭合解：D_KL = -0.5 × Σ(1 + log(σ²) - μ² - σ²)。KL 散度还是信息论中相对熵的概念，表示用分布 q 编码来自分布 p 的数据所需的额外信息量。" data-url="/glossary/kl-divergence/">KL Divergence</span> 正则化</h3>

<table>
  <tbody>
    <tr>
      <td>强制 $q(z</td>
      <td>x)$ 接近标准正态分布 $N(0, I)$：</td>
    </tr>
  </tbody>
</table>

\[D_{\text{KL}}(q(z|x) \| p(z)) = \int q(z|x) \log \frac{q(z|x)}{p(z)} dz\]

<p>对于两个高斯分布，有<strong>闭合解</strong>：</p>

\[D_{\text{KL}} = -\frac{1}{2} \sum_{j=1}^{J} \left(1 + \log \sigma_j^2 - \mu_j^2 - \sigma_j^2\right)\]

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">kl_loss</span> <span class="o">=</span> <span class="o">-</span><span class="mf">0.5</span> <span class="o">*</span> <span class="n">torch</span><span class="p">.</span><span class="nb">sum</span><span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">logvar</span> <span class="o">-</span> <span class="n">mu</span><span class="p">.</span><span class="nb">pow</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="o">-</span> <span class="n">logvar</span><span class="p">.</span><span class="n">exp</span><span class="p">())</span>
</code></pre></div></div>

<p><strong>KL 散度的作用</strong>：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>KL 散度大 → q(z|x) 偏离 N(0, I) 太远
           → 潜在空间结构不好 → 采样出来的 z 没意义 ❌

KL 散度小 → q(z|x) 接近 N(0, I)  
           → 潜在空间规整 → 可以从 N(0, I) 采样生成 ✅

但 KL 散度太小也不行 → 会忽略 x 的信息 → 重建效果差
</code></pre></div></div>

<h3 id="3-总损失两个目标的平衡">3. 总损失：两个目标的平衡</h3>

\[\mathcal{L} = \underbrace{-\mathbb{E}_{z \sim q(z|x)}[\log p(x|z)]}_{\text{重构损失（逼真性）}} + \underbrace{D_{\text{KL}}(q(z|x) \| p(z))}_{\text{KL 散度（可生成性）}}\]

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>平衡关系：
  重构损失小 → 重建质量高 → 但可能过拟合（只会复制）
  KL 散度小 → 潜在空间规整 → 但可能忽略 x 的信息
  
  好的 VAE → 两者平衡 → 既能重建又能生成
</code></pre></div></div>

<hr />

<h2 id="四reparameterization-trick为什么需要它">四、<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="Reparameterization Trick" data-def="重参数化技巧，解决 VAE 训练中采样操作不可微的关键技术。VAE 需要从 N(μ, σ²) 中采样得到 z，但采样操作是离散的、无梯度的。重参数化技巧将采样拆解为确定性变换加独立噪声：z = μ + σ × ε（其中 ε ∼ N(0,I)）。这样 μ 和 σ 的梯度可以沿 z 反向传播到编码器，实现端到端的 SGD 训练。这一技巧不仅用于 VAE，还被广泛应用于变分推断、强化学习中的随机策略梯度等需要「在不可微操作中传播梯度」的场景。" data-url="/glossary/reparameterization-trick/">Reparameterization Trick</span>：为什么需要它</h2>

<h3 id="问题采样不可微">问题：采样不可微</h3>

<p>VAE 训练中最棘手的障碍：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>编码器 → μ ──┐
              ├──→ z ∼ N(μ, σ²) → 解码器
编码器 → σ² ─┘
              ↑
        采样操作！梯度无法反向传播 ❌
</code></pre></div></div>

<h3 id="解决方法">解决方法</h3>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="Reparameterization Trick" data-def="重参数化技巧，解决 VAE 训练中采样操作不可微的关键技术。VAE 需要从 N(μ, σ²) 中采样得到 z，但采样操作是离散的、无梯度的。重参数化技巧将采样拆解为确定性变换加独立噪声：z = μ + σ × ε（其中 ε ∼ N(0,I)）。这样 μ 和 σ 的梯度可以沿 z 反向传播到编码器，实现端到端的 SGD 训练。这一技巧不仅用于 VAE，还被广泛应用于变分推断、强化学习中的随机策略梯度等需要「在不可微操作中传播梯度」的场景。" data-url="/glossary/reparameterization-trick/">Reparameterization Trick</span> 把随机采样拆成两步：<strong>确定性变换 + 独立噪声</strong>。</p>

\[z = \mu + \sigma \cdot \varepsilon, \quad \varepsilon \sim \mathcal{N}(0, I)\]

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>原来（不可微）:
  z = sample_from(N(μ, σ²))   ← 采样操作无梯度 ❌

现在（可微）:
  z = μ + σ × ε              ← 纯代数运算 ✅
       ↑     ↑
     可微    ε ∼ N(0,I) 独立于模型参数
</code></pre></div></div>

<p><strong>为什么可行？</strong></p>

<p>因为 $\varepsilon$ 是与模型参数无关的随机噪声，$\mu$ 和 $\sigma$ 是由编码器输出的确定性函数。梯度可以沿 $\mu$ 和 $\sigma$ 回传到编码器。</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">reparameterize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mu</span><span class="p">,</span> <span class="n">logvar</span><span class="p">):</span>
    <span class="s">"""重参数化技巧"""</span>
    <span class="n">std</span> <span class="o">=</span> <span class="n">torch</span><span class="p">.</span><span class="n">exp</span><span class="p">(</span><span class="mf">0.5</span> <span class="o">*</span> <span class="n">logvar</span><span class="p">)</span>       <span class="c1"># 标准差 σ
</span>    <span class="n">eps</span> <span class="o">=</span> <span class="n">torch</span><span class="p">.</span><span class="n">randn_like</span><span class="p">(</span><span class="n">std</span><span class="p">)</span>          <span class="c1"># 独立噪声 ε ∼ N(0, I)
</span>    <span class="n">z</span> <span class="o">=</span> <span class="n">mu</span> <span class="o">+</span> <span class="n">eps</span> <span class="o">*</span> <span class="n">std</span>                   <span class="c1"># z = μ + σ × ε
</span>    <span class="k">return</span> <span class="n">z</span>
</code></pre></div></div>

<hr />

<h2 id="五完整代码实现">五、完整代码实现</h2>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">torch</span>
<span class="kn">import</span> <span class="nn">torch.nn</span> <span class="k">as</span> <span class="n">nn</span>
<span class="kn">import</span> <span class="nn">torch.nn.functional</span> <span class="k">as</span> <span class="n">F</span>

<span class="k">class</span> <span class="nc">VAE</span><span class="p">(</span><span class="n">nn</span><span class="p">.</span><span class="n">Module</span><span class="p">):</span>
    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">input_dim</span><span class="o">=</span><span class="mi">784</span><span class="p">,</span> <span class="n">latent_dim</span><span class="o">=</span><span class="mi">20</span><span class="p">):</span>
        <span class="nb">super</span><span class="p">().</span><span class="n">__init__</span><span class="p">()</span>
        <span class="c1"># === 编码器 ===
</span>        <span class="bp">self</span><span class="p">.</span><span class="n">encoder</span> <span class="o">=</span> <span class="n">nn</span><span class="p">.</span><span class="n">Sequential</span><span class="p">(</span>
            <span class="n">nn</span><span class="p">.</span><span class="n">Linear</span><span class="p">(</span><span class="n">input_dim</span><span class="p">,</span> <span class="mi">400</span><span class="p">),</span>
            <span class="n">nn</span><span class="p">.</span><span class="n">ReLU</span><span class="p">()</span>
        <span class="p">)</span>
        <span class="bp">self</span><span class="p">.</span><span class="n">mu_layer</span> <span class="o">=</span> <span class="n">nn</span><span class="p">.</span><span class="n">Linear</span><span class="p">(</span><span class="mi">400</span><span class="p">,</span> <span class="n">latent_dim</span><span class="p">)</span>       <span class="c1"># 均值
</span>        <span class="bp">self</span><span class="p">.</span><span class="n">logvar_layer</span> <span class="o">=</span> <span class="n">nn</span><span class="p">.</span><span class="n">Linear</span><span class="p">(</span><span class="mi">400</span><span class="p">,</span> <span class="n">latent_dim</span><span class="p">)</span>    <span class="c1"># 对数方差
</span>
        <span class="c1"># === 解码器 ===
</span>        <span class="bp">self</span><span class="p">.</span><span class="n">decoder</span> <span class="o">=</span> <span class="n">nn</span><span class="p">.</span><span class="n">Sequential</span><span class="p">(</span>
            <span class="n">nn</span><span class="p">.</span><span class="n">Linear</span><span class="p">(</span><span class="n">latent_dim</span><span class="p">,</span> <span class="mi">400</span><span class="p">),</span>
            <span class="n">nn</span><span class="p">.</span><span class="n">ReLU</span><span class="p">(),</span>
            <span class="n">nn</span><span class="p">.</span><span class="n">Linear</span><span class="p">(</span><span class="mi">400</span><span class="p">,</span> <span class="n">input_dim</span><span class="p">),</span>
            <span class="n">nn</span><span class="p">.</span><span class="n">Sigmoid</span><span class="p">()</span>  <span class="c1"># 确保输出在 [0, 1] 范围
</span>        <span class="p">)</span>

    <span class="k">def</span> <span class="nf">encode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
        <span class="n">h</span> <span class="o">=</span> <span class="bp">self</span><span class="p">.</span><span class="n">encoder</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
        <span class="k">return</span> <span class="bp">self</span><span class="p">.</span><span class="n">mu_layer</span><span class="p">(</span><span class="n">h</span><span class="p">),</span> <span class="bp">self</span><span class="p">.</span><span class="n">logvar_layer</span><span class="p">(</span><span class="n">h</span><span class="p">)</span>

    <span class="k">def</span> <span class="nf">reparameterize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mu</span><span class="p">,</span> <span class="n">logvar</span><span class="p">):</span>
        <span class="c1"># z = μ + σ × ε, ε ∼ N(0,I)
</span>        <span class="n">std</span> <span class="o">=</span> <span class="n">torch</span><span class="p">.</span><span class="n">exp</span><span class="p">(</span><span class="mf">0.5</span> <span class="o">*</span> <span class="n">logvar</span><span class="p">)</span>
        <span class="n">eps</span> <span class="o">=</span> <span class="n">torch</span><span class="p">.</span><span class="n">randn_like</span><span class="p">(</span><span class="n">std</span><span class="p">)</span>
        <span class="k">return</span> <span class="n">mu</span> <span class="o">+</span> <span class="n">eps</span> <span class="o">*</span> <span class="n">std</span>

    <span class="k">def</span> <span class="nf">decode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">z</span><span class="p">):</span>
        <span class="k">return</span> <span class="bp">self</span><span class="p">.</span><span class="n">decoder</span><span class="p">(</span><span class="n">z</span><span class="p">)</span>

    <span class="k">def</span> <span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
        <span class="n">mu</span><span class="p">,</span> <span class="n">logvar</span> <span class="o">=</span> <span class="bp">self</span><span class="p">.</span><span class="n">encode</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>          <span class="c1"># 编码 → 分布参数
</span>        <span class="n">z</span> <span class="o">=</span> <span class="bp">self</span><span class="p">.</span><span class="n">reparameterize</span><span class="p">(</span><span class="n">mu</span><span class="p">,</span> <span class="n">logvar</span><span class="p">)</span>  <span class="c1"># 重参数化采样
</span>        <span class="n">recon</span> <span class="o">=</span> <span class="bp">self</span><span class="p">.</span><span class="n">decode</span><span class="p">(</span><span class="n">z</span><span class="p">)</span>               <span class="c1"># 解码重建
</span>        <span class="k">return</span> <span class="n">recon</span><span class="p">,</span> <span class="n">mu</span><span class="p">,</span> <span class="n">logvar</span>


<span class="k">def</span> <span class="nf">vae_loss</span><span class="p">(</span><span class="n">recon_x</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">mu</span><span class="p">,</span> <span class="n">logvar</span><span class="p">):</span>
    <span class="s">"""VAE 损失函数"""</span>
    <span class="c1"># 重构损失：二值交叉熵
</span>    <span class="n">recon_loss</span> <span class="o">=</span> <span class="n">F</span><span class="p">.</span><span class="n">binary_cross_entropy</span><span class="p">(</span>
        <span class="n">recon_x</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">reduction</span><span class="o">=</span><span class="s">'sum'</span>
    <span class="p">)</span>

    <span class="c1"># KL 散度：闭合解
</span>    <span class="c1"># D_KL = -0.5 * Σ(1 + log(σ²) - μ² - σ²)
</span>    <span class="n">kl_loss</span> <span class="o">=</span> <span class="o">-</span><span class="mf">0.5</span> <span class="o">*</span> <span class="n">torch</span><span class="p">.</span><span class="nb">sum</span><span class="p">(</span>
        <span class="mi">1</span> <span class="o">+</span> <span class="n">logvar</span> <span class="o">-</span> <span class="n">mu</span><span class="p">.</span><span class="nb">pow</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="o">-</span> <span class="n">logvar</span><span class="p">.</span><span class="n">exp</span><span class="p">()</span>
    <span class="p">)</span>

    <span class="k">return</span> <span class="n">recon_loss</span> <span class="o">+</span> <span class="n">kl_loss</span>
</code></pre></div></div>

<hr />

<h2 id="六训练循环">六、训练循环</h2>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># 超参数
</span><span class="n">input_dim</span> <span class="o">=</span> <span class="mi">784</span>      <span class="c1"># 28×28 图片展平
</span><span class="n">latent_dim</span> <span class="o">=</span> <span class="mi">20</span>      <span class="c1"># 潜在空间维度
</span><span class="n">batch_size</span> <span class="o">=</span> <span class="mi">128</span>
<span class="n">lr</span> <span class="o">=</span> <span class="mf">1e-3</span>
<span class="n">num_epochs</span> <span class="o">=</span> <span class="mi">50</span>

<span class="c1"># 初始化
</span><span class="n">model</span> <span class="o">=</span> <span class="n">VAE</span><span class="p">(</span><span class="n">input_dim</span><span class="p">,</span> <span class="n">latent_dim</span><span class="p">)</span>
<span class="n">optimizer</span> <span class="o">=</span> <span class="n">torch</span><span class="p">.</span><span class="n">optim</span><span class="p">.</span><span class="n">Adam</span><span class="p">(</span><span class="n">model</span><span class="p">.</span><span class="n">parameters</span><span class="p">(),</span> <span class="n">lr</span><span class="o">=</span><span class="n">lr</span><span class="p">)</span>

<span class="c1"># 训练
</span><span class="k">for</span> <span class="n">epoch</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_epochs</span><span class="p">):</span>
    <span class="n">total_loss</span> <span class="o">=</span> <span class="mi">0</span>
    <span class="k">for</span> <span class="n">batch_idx</span><span class="p">,</span> <span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">_</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">train_loader</span><span class="p">):</span>
        <span class="n">data</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">view</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">input_dim</span><span class="p">)</span>  <span class="c1"># 展平图片
</span>        <span class="n">optimizer</span><span class="p">.</span><span class="n">zero_grad</span><span class="p">()</span>

        <span class="c1"># 前向传播
</span>        <span class="n">recon_batch</span><span class="p">,</span> <span class="n">mu</span><span class="p">,</span> <span class="n">logvar</span> <span class="o">=</span> <span class="n">model</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>

        <span class="c1"># 计算损失
</span>        <span class="n">loss</span> <span class="o">=</span> <span class="n">vae_loss</span><span class="p">(</span><span class="n">recon_batch</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">mu</span><span class="p">,</span> <span class="n">logvar</span><span class="p">)</span>

        <span class="c1"># 反向传播
</span>        <span class="n">loss</span><span class="p">.</span><span class="n">backward</span><span class="p">()</span>
        <span class="n">optimizer</span><span class="p">.</span><span class="n">step</span><span class="p">()</span>

        <span class="n">total_loss</span> <span class="o">+=</span> <span class="n">loss</span><span class="p">.</span><span class="n">item</span><span class="p">()</span>

    <span class="n">avg_loss</span> <span class="o">=</span> <span class="n">total_loss</span> <span class="o">/</span> <span class="nb">len</span><span class="p">(</span><span class="n">train_loader</span><span class="p">.</span><span class="n">dataset</span><span class="p">)</span>
    <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'Epoch </span><span class="si">{</span><span class="n">epoch</span><span class="si">:</span><span class="mi">3</span><span class="n">d</span><span class="si">}</span><span class="s"> | 平均损失: </span><span class="si">{</span><span class="n">avg_loss</span><span class="si">:</span><span class="p">.</span><span class="mi">2</span><span class="n">f</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>
</code></pre></div></div>

<hr />

<h2 id="七生成新数据">七、生成新数据</h2>

<p>训练完成后，生成新数据只需解码器部分：</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">generate</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">num_samples</span><span class="o">=</span><span class="mi">16</span><span class="p">,</span> <span class="n">latent_dim</span><span class="o">=</span><span class="mi">20</span><span class="p">):</span>
    <span class="s">"""从标准正态分布采样，生成新数据"""</span>
    <span class="n">model</span><span class="p">.</span><span class="nb">eval</span><span class="p">()</span>
    <span class="k">with</span> <span class="n">torch</span><span class="p">.</span><span class="n">no_grad</span><span class="p">():</span>
        <span class="c1"># 从 N(0, I) 采样
</span>        <span class="n">z</span> <span class="o">=</span> <span class="n">torch</span><span class="p">.</span><span class="n">randn</span><span class="p">(</span><span class="n">num_samples</span><span class="p">,</span> <span class="n">latent_dim</span><span class="p">)</span>
        <span class="c1"># 解码生成
</span>        <span class="n">samples</span> <span class="o">=</span> <span class="n">model</span><span class="p">.</span><span class="n">decode</span><span class="p">(</span><span class="n">z</span><span class="p">)</span>
    <span class="k">return</span> <span class="n">samples</span>
</code></pre></div></div>

<h3 id="潜在空间的插值">潜在空间的插值</h3>

<p>VAE 最强大的特性之一：<strong>平滑插值</strong>。</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>z₁ = encode("猫 A")    →  猫 A 的潜在表示
z₂ = encode("猫 B")    →  猫 B 的潜在表示

z_α = (1-α) × z₁ + α × z₂  →  中间的潜在表示

α = 0:    猫 A
α = 0.25: 偏 A 的中间猫
α = 0.5:  猫 A 和猫 B 的平均
α = 0.75: 偏 B 的中间猫
α = 1:    猫 B
</code></pre></div></div>

<p>这是因为 KL 散度强制潜在空间连续且规整——邻近的点对应语义相似的内容。</p>

<hr />

<h2 id="八一些个人的思考和一些问题">八、一些个人的思考和一些问题</h2>

<h3 id="1-为什么不能直接不要编码器直接随机取隐变量呢">1. 为什么不能直接不要编码器，直接随机取隐变量呢？</h3>
<p>首先，每一个输入的图片在隐变量空间都有一个对应的表示，这个表示是根据图片的内容特征提取的，但是隐变量空间的输入对应的点是有限的，那随机取必然存在噪声。<br />
VAE想到的解决办法则是将每一个隐变量都看作是一个标准正态分布，然后从这个分布中采样，而且各个变量独立。但是如此仍然存在噪声，所以每一个变量都需要尽量的去接近一个均值为0的正态分布。</p>

<h3 id="2-如何让编码器神经网络生成一个正态分布">2. 如何让编码器神经网络生成一个正态分布？</h3>
<p>实际上就是让编码器生成正态分布的两个参数，<strong>均值和方差</strong>。方差必须为正数，神经网络输入为α，用exp(α)来表示方差。所以α = log(方差)</p>

<h3 id="3-符号定义">3. 符号定义</h3>
<p><img src="/images/Swdefinition.png" alt="符号定义" />
如图，输入的照片是x，encoder是一个映射，它将x映射到隐空间z，$q(z|x)$表示给定一个x，encoder将x映射到不同z的概率密度函数<br />
$p(z)$表示我们所期望的隐变量z的分布，我们期望z是一个标准的多元正态分布<br />
$q(x|z)$表示给定一个z，解码器将z映射到不同x的概率密度函数，这个也是一个正态分布<br />
最后的Decoder直接输出最后的概率密度函数的均值作为输出的x</p>

<h3 id="4如何解决vae的随机性对方向传播计算的影响">4.如何解决VAE的随机性对方向传播计算的影响</h3>
<p>传统自编码器其实就是一个神经网络，通过计算输入图片与输出图片MSE即可<br />
但是对于VAE，中间存在一个采样的过程，此时我们似乎无法计算梯度，反向传播似乎中断了<br />
这里我们为了解决这个问题，引入了一个<strong>重参数化技巧</strong><br />
即$z = \mu + \sigma \times \epsilon,\ \epsilon \sim \mathcal{N}(0,I)$
<strong>确定性函数</strong>：$z = \mu + \sigma \times \epsilon$
<strong>独立噪声</strong>：$\epsilon \sim \mathcal{N}(0,I)$
<strong>结合后</strong>：$z = \mu + \sigma \times \epsilon,\ \epsilon \sim \mathcal{N}(0,I)$
这样就将随机采样拆成了两步：一个是确定性变换，另一个是独立噪声，z对μ和σ是确定的，可导的函数（这里需要注意，我们把随机采样的随机性放在了ε中）</p>

<h3 id="5-如何保证z的分布是标准的多元正态分布">5. 如何保证z的分布是标准的多元正态分布</h3>
<p>这里通过的是KL散度来实现的，即$KL(D_{z|\mu,\sigma} \parallel D_{z|\mu,\sigma}) = -0.5 \times \Sigma(1 + \log(\sigma^2) - \mu^2 - \sigma^2)$
把KL散度作为VAE的损失函数的一部分，让每一个照片生成的隐变量z的分布都与隐空间的标准多元正态分布一致
故最后的LOSS由两部分组成：一个是重构损失，一个是KL散度损失</p>

<h3 id="6两个损失是相互制衡的">6.两个损失是相互制衡的</h3>
<p>一方面：重构损失让生成的图像尽可能与原图像相同，此时则需要隐空间内不同的输入图片尽可能的远
另一方面：KL散度损失让隐空间内不同的输入图片尽可能的近来保证输入图像的分布尽可能是标准的多元正态分布</p>

<p>这里推荐一个讲的很好的视频：
https://www.bilibili.com/video/BV1TJE8zoEJa/?spm_id_from=333.337.search-card.all.click
https://www.bilibili.com/video/BV1Ns4y1J7tK/?share_source=copy_web&amp;vd_source=9ddae8a660784d5c8d074cccde4334d6
最好的算法讲解：https://www.bilibili.com/video/BV1xFxMz1EMS/?share_source=copy_web&amp;vd_source=9ddae8a660784d5c8d074cccde4334d6</p>

<h2 id="参考文献">参考文献</h2>

<ul>
  <li><a href="https://arxiv.org/abs/1312.6114">Auto-Encoding Variational Bayes, ICLR 2014</a></li>
  <li><a href="https://arxiv.org/abs/1606.05908">Tutorial on Variational Autoencoders</a></li>
  <li><a href="https://openreview.net/forum?id=Sy2fzU9gl">β-VAE: Learning Basic Visual Concepts with a Constrained Variational Framework</a></li>
</ul>]]></content><author><name></name></author><category term="deep-learning" /><category term="VAE" /><category term="PyTorch" /><category term="生成模型" /><summary type="html"><![CDATA[VAE（Variational Autoencoder）变分自编码器，是生成模型的基石之一]]></summary></entry><entry><title type="html">BERT 论文精读</title><link href="https://oopvo.github.io/BERT-Paper-Reading/" rel="alternate" type="text/html" title="BERT 论文精读" /><published>2026-06-07T00:00:00+00:00</published><updated>2026-06-07T00:00:00+00:00</updated><id>https://oopvo.github.io/BERT-Paper-Reading</id><content type="html" xml:base="https://oopvo.github.io/BERT-Paper-Reading/"><![CDATA[<blockquote>
  <p>2018 年，<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="BERT" data-def="Bidirectional Encoder Representations from Transformers（双向编码器表示），Google 于 2018 年提出的预训练语言模型。与 GPT 的自回归方式不同，BERT 使用「掩码语言模型（MLM）+ 下一句预测（NSP）」进行双向预训练，在 11 项 NLP 基准上取得 SOTA。BERT 的「编码器-only + 双向注意力」架构深刻影响了后续的模型设计，开启了「预训练 + 微调」范式在 NLP 领域的全面应用。" data-url="/glossary/bert/">BERT</span> 的出现如同 NLP 领域的”ImageNet 时刻”。它在 11 项 NLP 基准上取得 SOTA，开启了「预训练 + 微调」的全面应用。</p>
</blockquote>

<hr />

<h2 id="一核心创新mlm">一、核心创新：<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MLM" data-def="Masked Language Model（掩码语言模型），BERT 的核心预训练任务。随机将输入文本中 15% 的 token 替换为 [MASK] 标记，然后让模型预测被掩码的原始 token。与 GPT 的自回归（从左到右逐个预测）不同，MLM 可以同时利用被掩码 token 的左右两侧上下文进行预测，实现真正的双向理解。MLM 让 BERT 在自然语言理解任务上表现优异。" data-url="/glossary/mlm/">MLM</span></h2>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="BERT" data-def="Bidirectional Encoder Representations from Transformers（双向编码器表示），Google 于 2018 年提出的预训练语言模型。与 GPT 的自回归方式不同，BERT 使用「掩码语言模型（MLM）+ 下一句预测（NSP）」进行双向预训练，在 11 项 NLP 基准上取得 SOTA。BERT 的「编码器-only + 双向注意力」架构深刻影响了后续的模型设计，开启了「预训练 + 微调」范式在 NLP 领域的全面应用。" data-url="/glossary/bert/">BERT</span> 的最核心创新是 <strong><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MLM" data-def="Masked Language Model（掩码语言模型），BERT 的核心预训练任务。随机将输入文本中 15% 的 token 替换为 [MASK] 标记，然后让模型预测被掩码的原始 token。与 GPT 的自回归（从左到右逐个预测）不同，MLM 可以同时利用被掩码 token 的左右两侧上下文进行预测，实现真正的双向理解。MLM 让 BERT 在自然语言理解任务上表现优异。" data-url="/glossary/mlm/">MLM</span>（掩码语言模型）</strong>。</p>

<h3 id="为什么需要-mlm">为什么需要 MLM？</h3>

<p>在 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="BERT" data-def="Bidirectional Encoder Representations from Transformers（双向编码器表示），Google 于 2018 年提出的预训练语言模型。与 GPT 的自回归方式不同，BERT 使用「掩码语言模型（MLM）+ 下一句预测（NSP）」进行双向预训练，在 11 项 NLP 基准上取得 SOTA。BERT 的「编码器-only + 双向注意力」架构深刻影响了后续的模型设计，开启了「预训练 + 微调」范式在 NLP 领域的全面应用。" data-url="/glossary/bert/">BERT</span> 之前，<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="GPT" data-def="Generative Pre-trained Transformer（生成式预训练 Transformer），OpenAI 开发的大语言模型系列（GPT-1/2/3/4）。核心创新是「自回归语言建模 + 大规模预训练 + 可迁移微调」。GPT-1（2018）首次证明了 Transformer 解码器在大规模文本预训练上的有效性；GPT-2（2019）展示了零样本迁移能力；GPT-3（2020）1750 亿参数开创了大模型时代；GPT-4（2023）多模态能力达到当时顶尖水平。GPT 系列的「解码器-only」架构已成为现代大语言模型的标准范式。" data-url="/glossary/gpt/">GPT</span> 使用自回归（从左到右）方式预训练。这种方式有天然缺陷：<strong>只能利用单向上下文</strong>。</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>自回归（单向）的问题：
  
  句子: "我去___场看电影"
  
  GPT 处理到 ___ 时，只能看到 "我去"
  → 不知道后面是 "场看电影"
  → 预测难度大，信息利用不充分 ❌
  
  BERT 的 MLM 方式：
  同时看到 "我去" 和 "场看电影"
  → 完整上下文信息 → 预测更准确 ✅
</code></pre></div></div>

<h3 id="mlm-具体做法">MLM 具体做法</h3>

<p>随机选择 15% 的 token 进行掩码处理，三种替换策略：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>80% → [MASK]:      "我去 [MASK] 场看电影"
10% → 随机词:       "我去 操 场看电影"  ← 迫使模型依赖上下文
10% → 保持不变:     "我去 电 场看电影"  ← 迫使模型输出原词
</code></pre></div></div>

<h3 id="为什么三种策略同时用">为什么三种策略同时用？</h3>

<p>如果全部用 <code class="language-plaintext highlighter-rouge">[MASK]</code>，模型只在预训练时见到 <code class="language-plaintext highlighter-rouge">[MASK]</code>，微调时却从来没见过。混合策略强制模型：</p>

<ol>
  <li>当看到 <code class="language-plaintext highlighter-rouge">[MASK]</code> 时 → 从上下文推理正确词</li>
  <li>当看到真实词时 → 仍要正确编码该词（不能偷懒）</li>
  <li>当看到错词时 → 知道这个词不合理，用上下文纠正</li>
</ol>

<h3 id="下一句预测nsp">下一句预测（NSP）</h3>

<p>除了 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MLM" data-def="Masked Language Model（掩码语言模型），BERT 的核心预训练任务。随机将输入文本中 15% 的 token 替换为 [MASK] 标记，然后让模型预测被掩码的原始 token。与 GPT 的自回归（从左到右逐个预测）不同，MLM 可以同时利用被掩码 token 的左右两侧上下文进行预测，实现真正的双向理解。MLM 让 BERT 在自然语言理解任务上表现优异。" data-url="/glossary/mlm/">MLM</span>，<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="BERT" data-def="Bidirectional Encoder Representations from Transformers（双向编码器表示），Google 于 2018 年提出的预训练语言模型。与 GPT 的自回归方式不同，BERT 使用「掩码语言模型（MLM）+ 下一句预测（NSP）」进行双向预训练，在 11 项 NLP 基准上取得 SOTA。BERT 的「编码器-only + 双向注意力」架构深刻影响了后续的模型设计，开启了「预训练 + 微调」范式在 NLP 领域的全面应用。" data-url="/glossary/bert/">BERT</span> 还有一个辅助任务：<strong>预测两个句子是否连续</strong>。</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>输入: [CLS] 我去看电影 [SEP] 电影很好看 [SEP]  → 连续 → 标签: IsNext
输入: [CLS] 我去看电影 [SEP] 苹果很好吃 [SEP]  → 不连续 → 标签: NotNext
</code></pre></div></div>

<p>这个任务让 BERT 理解句子间关系，对 QA、推理等任务有帮助。</p>

<hr />

<h2 id="二bert-架构">二、BERT 架构</h2>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="BERT" data-def="Bidirectional Encoder Representations from Transformers（双向编码器表示），Google 于 2018 年提出的预训练语言模型。与 GPT 的自回归方式不同，BERT 使用「掩码语言模型（MLM）+ 下一句预测（NSP）」进行双向预训练，在 11 项 NLP 基准上取得 SOTA。BERT 的「编码器-only + 双向注意力」架构深刻影响了后续的模型设计，开启了「预训练 + 微调」范式在 NLP 领域的全面应用。" data-url="/glossary/bert/">BERT</span> 使用 <strong>Transformer 编码器</strong>架构：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>BERT Base（1.1 亿参数）:
  12 层 Transformer 编码器
  768 隐藏维度
  12 注意力头
  训练数据: BookCorpus + Wikipedia (3.3B 词)

BERT Large（3.4 亿参数）:
  24 层 Transformer 编码器
  1024 隐藏维度
  16 注意力头
  训练数据: BookCorpus + Wikipedia (3.3B 词)
</code></pre></div></div>

<h3 id="与-gpt-的架构对比">与 GPT 的架构对比</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>GPT（解码器-only）:
  输入 → [掩码自注意力] → [FFN] → ... → 输出
         ↑ 因果掩码，只能从左到右

BERT（编码器-only）:
  输入 → [双向自注意力] → [FFN] → ... → 输出
         ↑ 无掩码，所有位置互相可见
</code></pre></div></div>

<h3 id="输入表示">输入表示</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>输入:  [CLS] 我 爱 [MASK] 学 习 [SEP]  它 很 有 趣 [SEP]

Token Embeddings:    每个词映射为向量
Segment Embeddings:  区分 A 句(0) 和 B 句(1)
Position Embeddings: 位置编码

三者相加 → BERT 的输入
</code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">[CLS]</code> 位置的输出被用作整个句子的表示，用于分类任务。</p>

<hr />

<h2 id="三预训练--微调范式">三、预训练 + 微调范式</h2>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="BERT" data-def="Bidirectional Encoder Representations from Transformers（双向编码器表示），Google 于 2018 年提出的预训练语言模型。与 GPT 的自回归方式不同，BERT 使用「掩码语言模型（MLM）+ 下一句预测（NSP）」进行双向预训练，在 11 项 NLP 基准上取得 SOTA。BERT 的「编码器-only + 双向注意力」架构深刻影响了后续的模型设计，开启了「预训练 + 微调」范式在 NLP 领域的全面应用。" data-url="/glossary/bert/">BERT</span> 的开创性不仅在于架构，还在于它推广了「预训练 + 微调」范式：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>预训练阶段（一大步）:
  互联网文本 → BERT（MLM + NSP）→ 通用语言表示
  ↑ 一次训练，通用

微调阶段（一小步）:
  通用 BERT → 添加任务头 → 在特定任务上微调
  ↑ 少量标注数据，快速适配
</code></pre></div></div>

<h3 id="微调示例">微调示例</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>情感分类:
  BERT → [CLS]输出 → Linear(768, 2) → 正面/负面
  标注 1000 条 → 微调 1 小时 → 高精度

命名实体识别:
  BERT → 每个位置输出 → Linear(768, N) → 实体标签
  标注 2000 条 → 微调 2 小时 → 高精度

问答系统:
  BERT → 输出 → 预测答案起始/结束位置
  标注 5000 条 → 微调 3 小时 → 高精度
</code></pre></div></div>

<hr />

<h2 id="四bert-的影响">四、BERT 的影响</h2>

<h3 id="bert-发布时的-11-项-sota">BERT 发布时的 11 项 SOTA</h3>

<table>
  <thead>
    <tr>
      <th>任务</th>
      <th>之前最佳</th>
      <th>BERT</th>
      <th>提升</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>GLUE 综合</td>
      <td>80.2</td>
      <td><strong>86.5</strong></td>
      <td>+6.3</td>
    </tr>
    <tr>
      <td>SQuAD 1.1 (QA)</td>
      <td>87.4</td>
      <td><strong>93.2</strong></td>
      <td>+5.8</td>
    </tr>
    <tr>
      <td>SQuAD 2.0 (QA)</td>
      <td>80.2</td>
      <td><strong>86.8</strong></td>
      <td>+6.6</td>
    </tr>
    <tr>
      <td>SWAG (推理)</td>
      <td>80.3</td>
      <td><strong>86.4</strong></td>
      <td>+6.1</td>
    </tr>
  </tbody>
</table>

<h3 id="为什么-bert-如此重要">为什么 BERT 如此重要</h3>

<ol>
  <li><strong>双向预训练被验证有效</strong>——MLM 比自回归更适合理解任务</li>
  <li><strong>「预训练+微调」成为标准范式</strong>——BERT 之后的新模型几乎都采用此范式</li>
  <li><strong>BERT 的变体层出不穷</strong>——RoBERTa、ALBERT、DistilBERT、SpanBERT</li>
  <li><strong>BERT 启发了检索模型</strong>——Sentence-BERT、DPR 等</li>
</ol>

<p>虽然 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="GPT" data-def="Generative Pre-trained Transformer（生成式预训练 Transformer），OpenAI 开发的大语言模型系列（GPT-1/2/3/4）。核心创新是「自回归语言建模 + 大规模预训练 + 可迁移微调」。GPT-1（2018）首次证明了 Transformer 解码器在大规模文本预训练上的有效性；GPT-2（2019）展示了零样本迁移能力；GPT-3（2020）1750 亿参数开创了大模型时代；GPT-4（2023）多模态能力达到当时顶尖水平。GPT 系列的「解码器-only」架构已成为现代大语言模型的标准范式。" data-url="/glossary/gpt/">GPT</span> 系列后来在生成任务上胜出，但 BERT 的双向理解思想依然是 NLP 的重要遗产。</p>

<hr />

<h2 id="五gpt-vs-bert最终对比">五、<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="GPT" data-def="Generative Pre-trained Transformer（生成式预训练 Transformer），OpenAI 开发的大语言模型系列（GPT-1/2/3/4）。核心创新是「自回归语言建模 + 大规模预训练 + 可迁移微调」。GPT-1（2018）首次证明了 Transformer 解码器在大规模文本预训练上的有效性；GPT-2（2019）展示了零样本迁移能力；GPT-3（2020）1750 亿参数开创了大模型时代；GPT-4（2023）多模态能力达到当时顶尖水平。GPT 系列的「解码器-only」架构已成为现代大语言模型的标准范式。" data-url="/glossary/gpt/">GPT</span> vs <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="BERT" data-def="Bidirectional Encoder Representations from Transformers（双向编码器表示），Google 于 2018 年提出的预训练语言模型。与 GPT 的自回归方式不同，BERT 使用「掩码语言模型（MLM）+ 下一句预测（NSP）」进行双向预训练，在 11 项 NLP 基准上取得 SOTA。BERT 的「编码器-only + 双向注意力」架构深刻影响了后续的模型设计，开启了「预训练 + 微调」范式在 NLP 领域的全面应用。" data-url="/glossary/bert/">BERT</span>：最终对比</h2>

<table>
  <thead>
    <tr>
      <th>维度</th>
      <th>GPT</th>
      <th>BERT</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>架构</td>
      <td>解码器-only</td>
      <td>编码器-only</td>
    </tr>
    <tr>
      <td>注意力</td>
      <td>单向（因果掩码）</td>
      <td><strong>双向</strong></td>
    </tr>
    <tr>
      <td>预训练任务</td>
      <td>自回归</td>
      <td><strong>MLM + NSP</strong></td>
    </tr>
    <tr>
      <td>适合任务</td>
      <td>文本生成</td>
      <td><strong>自然语言理解</strong></td>
    </tr>
    <tr>
      <td>推理</td>
      <td>逐个生成（慢）</td>
      <td>一次编码（快）</td>
    </tr>
    <tr>
      <td>开源</td>
      <td>不完全</td>
      <td><strong>完全开源</strong></td>
    </tr>
    <tr>
      <td>发展</td>
      <td>GPT-3/4 统治生成</td>
      <td>BERT 变体统治理解</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p>两者的共同奠基人：<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="Transformer" data-def="一种基于自注意力机制的深度神经网络架构，2017 年由 Google 在论文「Attention Is All You Need」中提出。它彻底摒弃了传统的循环神经网络（RNN）和卷积神经网络（CNN），完全依赖注意力机制来建模序列数据中的长距离依赖关系。核心组件包括多头注意力、位置编码和前馈网络。Transformer 的并行计算能力使其训练效率远超 RNN，是现代大语言模型（GPT、BERT、Llama、DeepSeek 等）的基础架构，也是深度学习历史上最重要的里程碑之一。" data-url="/glossary/transformer/">Transformer</span> 架构。没有 2017 年的 Transformer，就没有 GPT 和 BERT 的辉煌。</p>
</blockquote>

<hr />

<h2 id="参考文献">参考文献</h2>

<ul>
  <li><a href="https://arxiv.org/abs/1810.04805">BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding</a></li>
  <li><a href="https://arxiv.org/abs/1907.11692">RoBERTa: A Robustly Optimized BERT Pretraining Approach</a></li>
  <li><a href="https://arxiv.org/abs/1909.11942">ALBERT: A Lite BERT for Self-supervised Learning of Language Representations</a></li>
</ul>]]></content><author><name></name></author><category term="paper-reading" /><category term="BERT" /><category term="MLM" /><category term="预训练" /><category term="自然语言理解" /><summary type="html"><![CDATA[2018 年，BERT 的出现如同 NLP 领域的”ImageNet 时刻”。它在 11 项 NLP 基准上取得 SOTA，开启了「预训练 + 微调」的全面应用。]]></summary></entry><entry><title type="html">GPT 系列精读</title><link href="https://oopvo.github.io/GPT-Paper-Reading/" rel="alternate" type="text/html" title="GPT 系列精读" /><published>2026-06-07T00:00:00+00:00</published><updated>2026-06-07T00:00:00+00:00</updated><id>https://oopvo.github.io/GPT-Paper-Reading</id><content type="html" xml:base="https://oopvo.github.io/GPT-Paper-Reading/"><![CDATA[<blockquote>
  <!-- Glossary: look up term from _data/glossary.yml -->
  <p><span class="gloss-ref" data-term="GPT" data-def="Generative Pre-trained Transformer（生成式预训练 Transformer），OpenAI 开发的大语言模型系列（GPT-1/2/3/4）。核心创新是「自回归语言建模 + 大规模预训练 + 可迁移微调」。GPT-1（2018）首次证明了 Transformer 解码器在大规模文本预训练上的有效性；GPT-2（2019）展示了零样本迁移能力；GPT-3（2020）1750 亿参数开创了大模型时代；GPT-4（2023）多模态能力达到当时顶尖水平。GPT 系列的「解码器-only」架构已成为现代大语言模型的标准范式。" data-url="/glossary/gpt/">GPT</span> 系列彻底改变了人工智能的格局。从 2018 年 GPT-1 的 1.17 亿参数到 GPT-4 的多模态能力，这篇带你完整走一遍 GPT 的进化之路。</p>
</blockquote>

<hr />

<h2 id="一gpt-是什么">一、GPT 是什么？</h2>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="GPT" data-def="Generative Pre-trained Transformer（生成式预训练 Transformer），OpenAI 开发的大语言模型系列（GPT-1/2/3/4）。核心创新是「自回归语言建模 + 大规模预训练 + 可迁移微调」。GPT-1（2018）首次证明了 Transformer 解码器在大规模文本预训练上的有效性；GPT-2（2019）展示了零样本迁移能力；GPT-3（2020）1750 亿参数开创了大模型时代；GPT-4（2023）多模态能力达到当时顶尖水平。GPT 系列的「解码器-only」架构已成为现代大语言模型的标准范式。" data-url="/glossary/gpt/">GPT</span>（Generative Pre-trained Transformer）是 OpenAI 开发的 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="Autoregressive" data-def="自回归模型，一种序列生成方式。在语言模型中，自回归指从左到右逐个生成 token，每个新 token 只依赖之前已生成的所有 token。公式：p(x) = Π p(x_t | x_{&lt;t})。GPT 系列采用这一方式，优点是生成质量高、适合文本生成任务；缺点是只能利用单向上下文，在理解任务上不如 BERT 的双向模型。现代模型（如 GPT-4、Llama）均为自回归解码器架构。" data-url="/glossary/autoregressive/">Autoregressive</span> 语言模型系列。核心思想很简单：</p>

<blockquote>
  <p><strong>在互联网级文本上预训练 → 在各种任务上微调（或零样本直接使用）</strong></p>
</blockquote>

<p>与 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="BERT" data-def="Bidirectional Encoder Representations from Transformers（双向编码器表示），Google 于 2018 年提出的预训练语言模型。与 GPT 的自回归方式不同，BERT 使用「掩码语言模型（MLM）+ 下一句预测（NSP）」进行双向预训练，在 11 项 NLP 基准上取得 SOTA。BERT 的「编码器-only + 双向注意力」架构深刻影响了后续的模型设计，开启了「预训练 + 微调」范式在 NLP 领域的全面应用。" data-url="/glossary/bert/">BERT</span> 的编码器架构不同，<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="GPT" data-def="Generative Pre-trained Transformer（生成式预训练 Transformer），OpenAI 开发的大语言模型系列（GPT-1/2/3/4）。核心创新是「自回归语言建模 + 大规模预训练 + 可迁移微调」。GPT-1（2018）首次证明了 Transformer 解码器在大规模文本预训练上的有效性；GPT-2（2019）展示了零样本迁移能力；GPT-3（2020）1750 亿参数开创了大模型时代；GPT-4（2023）多模态能力达到当时顶尖水平。GPT 系列的「解码器-only」架构已成为现代大语言模型的标准范式。" data-url="/glossary/gpt/">GPT</span> 使用<strong>解码器-only</strong>架构——只保留了 Transformer 的解码器部分，去掉编码器-解码器交叉注意力。</p>

<hr />

<h2 id="二autoregressive-生成方式">二、<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="Autoregressive" data-def="自回归模型，一种序列生成方式。在语言模型中，自回归指从左到右逐个生成 token，每个新 token 只依赖之前已生成的所有 token。公式：p(x) = Π p(x_t | x_{&lt;t})。GPT 系列采用这一方式，优点是生成质量高、适合文本生成任务；缺点是只能利用单向上下文，在理解任务上不如 BERT 的双向模型。现代模型（如 GPT-4、Llama）均为自回归解码器架构。" data-url="/glossary/autoregressive/">Autoregressive</span> 生成方式</h2>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="GPT" data-def="Generative Pre-trained Transformer（生成式预训练 Transformer），OpenAI 开发的大语言模型系列（GPT-1/2/3/4）。核心创新是「自回归语言建模 + 大规模预训练 + 可迁移微调」。GPT-1（2018）首次证明了 Transformer 解码器在大规模文本预训练上的有效性；GPT-2（2019）展示了零样本迁移能力；GPT-3（2020）1750 亿参数开创了大模型时代；GPT-4（2023）多模态能力达到当时顶尖水平。GPT 系列的「解码器-only」架构已成为现代大语言模型的标准范式。" data-url="/glossary/gpt/">GPT</span> 使用<strong>自回归</strong>方式生成文本：逐一预测下一个 token。</p>

<h3 id="生成过程">生成过程</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>输入: "I love"
         ↓
模型计算: P(next | "I love")
         ↓
预测: "learning"（概率最高）
         ↓
输入: "I love learning"
         ↓
模型计算: P(next | "I love learning")
         ↓
预测: "."
...
</code></pre></div></div>

<h3 id="因果掩码causal-masking">因果掩码（Causal Masking）</h3>

<p>自回归的关键是<strong>因果掩码</strong>——每个位置只能关注它自己及之前的位置：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>注意力矩阵（「我 爱 深 度 学 习」）:

    我  爱  深  度  学  习
我  [●,  ✗,  ✗,  ✗,  ✗,  ✗]  ← 只能看自己
爱  [●,  ●,  ✗,  ✗,  ✗,  ✗]  ← 能看"我"和"爱"
深  [●,  ●,  ●,  ✗,  ✗,  ✗]
度  [●,  ●,  ●,  ●,  ✗,  ✗]
学  [●,  ●,  ●,  ●,  ●,  ✗]
习  [●,  ●,  ●,  ●,  ●,  ●]  ← 最后一个能看到所有

实现方式：未来位置分数设为 -∞，Softmax 后为 0
</code></pre></div></div>

<hr />

<h2 id="三gpt-家族发展">三、GPT 家族发展</h2>

<h3 id="gpt-1201806证明可行性">GPT-1（2018.06）：证明可行性</h3>

<ul>
  <li><strong>1.17 亿参数</strong>，12 层 Transformer 解码器</li>
  <li>在 BooksCorpus 上预训练</li>
  <li><strong>核心贡献</strong>：首次证明 Transformer 解码器可以在大规模无标注数据上预训练，再通过微调迁移到下游任务</li>
</ul>

<h3 id="gpt-2201902零样本的震撼">GPT-2（2019.02）：零样本的震撼</h3>

<ul>
  <li><strong>15 亿参数</strong>，48 层</li>
  <li>在 WebText（800 万网页）上预训练</li>
  <li><strong>核心贡献</strong>：展示零样本迁移能力——不需要微调，给几个示例就能完成任务</li>
</ul>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>GPT-2 的零样本能力：
  输入: "翻译成中文：I love learning →"
  输出: "我爱学习"
  
  没有专门训练过翻译，但通过大量的互联网文本学会了
  → 这就是「上下文学习（In-Context Learning）」的雏形
</code></pre></div></div>

<h3 id="gpt-3202005大模型时代的开端">GPT-3（2020.05）：大模型时代的开端</h3>

<ul>
  <li><strong>1750 亿参数</strong>，96 层</li>
  <li>在 Common Crawl + WebText2 + Books + Wikipedia 上训练</li>
  <li>训练成本：约 $12M</li>
  <li><strong>核心贡献</strong>：<strong>Scaling Law</strong>——模型越大，能力越强，涌现出小模型没有的能力</li>
</ul>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>GPT-3 的涌现能力：
  小模型做不到 → 到一定规模突然能做

  • 上下文学习：给 1-2 个示例就能理解任务
  • 代码生成：写 Python、JavaScript
  • 算术推理：多位加减法
  • 翻译、问答、创意写作...
</code></pre></div></div>

<h3 id="gpt-4202303多模态飞跃">GPT-4（2023.03）：多模态飞跃</h3>

<ul>
  <li>参数量未公开（估计 1.5T+，<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MoE" data-def="Mixture of Experts（混合专家模型），一种通过稀疏激活大幅增加模型容量的架构设计。它将 Transformer 的前馈网络（FFN）替换为多个「专家」子网络（通常 8-256 个），每个 token 通过门控路由网络动态选择少量专家（Top-2 或 Top-8）进行计算。核心优势：总参数量随专家数线性增加，但每 token 的计算量仅随激活专家数增加——实现了参数规模和计算成本的解耦。DeepSeek-V3 使用 256 个路由专家 + 1 个共享专家，总参数 671B 但每 token 仅激活 37B。GPT-4、Mixtral、DeepSeek 等顶级模型均采用 MoE 架构。" data-url="/glossary/moe/">MoE</span> 架构）</li>
  <li>多模态：可输入图像</li>
  <li><strong>核心贡献</strong>：推理能力大幅提升，在各种专业考试中表现优异</li>
</ul>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>GPT-4 的考试成绩：
  Uniform Bar Exam:     ~90%  percentile  ← 超过大部分人类律师
  SAT 阅读/写作:        710/800
  AP 生物学:            5/5（满分）
  编程竞赛 (Codeforces): 超过 50% 参赛者
</code></pre></div></div>

<hr />

<h2 id="四gpt-与-bert两种范式对比">四、GPT 与 BERT：两种范式对比</h2>

<table>
  <thead>
    <tr>
      <th>维度</th>
      <th>GPT</th>
      <th>BERT</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>架构</td>
      <td><strong>解码器-only</strong></td>
      <td><strong>编码器-only</strong></td>
    </tr>
    <tr>
      <td>注意力</td>
      <td>单向（因果掩码）</td>
      <td><strong>双向</strong></td>
    </tr>
    <tr>
      <td>训练目标</td>
      <td>自回归（预测下一个词）</td>
      <td><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MLM" data-def="Masked Language Model（掩码语言模型），BERT 的核心预训练任务。随机将输入文本中 15% 的 token 替换为 [MASK] 标记，然后让模型预测被掩码的原始 token。与 GPT 的自回归（从左到右逐个预测）不同，MLM 可以同时利用被掩码 token 的左右两侧上下文进行预测，实现真正的双向理解。MLM 让 BERT 在自然语言理解任务上表现优异。" data-url="/glossary/mlm/">MLM</span>（掩码预测）</td>
    </tr>
    <tr>
      <td>适合任务</td>
      <td><strong>生成</strong>（对话、创作）</td>
      <td><strong>理解</strong>（分类、抽取）</td>
    </tr>
    <tr>
      <td>发展方向</td>
      <td>模型规模 Scaling</td>
      <td>模型深度 + 双向理解</td>
    </tr>
    <tr>
      <td>影响力</td>
      <td>GPT-3 开创大模型时代</td>
      <td>BERT 开启预训练+微调范式</td>
    </tr>
    <tr>
      <td>后继</td>
      <td>GPT-4、Llama、DeepSeek</td>
      <td>RoBERTa、ALBERT、DistilBERT</td>
    </tr>
  </tbody>
</table>

<p>两者都基于 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="Transformer" data-def="一种基于自注意力机制的深度神经网络架构，2017 年由 Google 在论文「Attention Is All You Need」中提出。它彻底摒弃了传统的循环神经网络（RNN）和卷积神经网络（CNN），完全依赖注意力机制来建模序列数据中的长距离依赖关系。核心组件包括多头注意力、位置编码和前馈网络。Transformer 的并行计算能力使其训练效率远超 RNN，是现代大语言模型（GPT、BERT、Llama、DeepSeek 等）的基础架构，也是深度学习历史上最重要的里程碑之一。" data-url="/glossary/transformer/">Transformer</span> 架构，但设计哲学不同。历史证明，<strong>自回归解码器架构最终胜出</strong>，成为现代大模型（GPT-4、Llama、DeepSeek）的标准选择。</p>

<hr />

<h2 id="五gpt-系列的影响">五、GPT 系列的影响</h2>

<ol>
  <li><strong>Scaling Law</strong>：GPT-3 证明了模型规模与能力之间的正相关关系</li>
  <li><strong>上下文学习</strong>：不需要为每个任务微调，prompt 工程成为新范式</li>
  <li><strong>ChatGPT</strong>：GPT-3.5 + RLHF 引发了全球 AI 热潮</li>
  <li><strong>GPT-4</strong>：多模态 + 推理能力接近人类专家水平</li>
</ol>

<hr />

<h2 id="参考文献">参考文献</h2>

<ul>
  <li><a href="https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf">GPT-1: Improving Language Understanding by Generative Pre-Training</a></li>
  <li><a href="https://d4mucfpksywv.cloudfront.net/better-language-models/language-models.pdf">GPT-2: Language Models are Unsupervised Multitask Learners</a></li>
  <li><a href="https://arxiv.org/abs/2005.14165">GPT-3: Language Models are Few-Shot Learners</a></li>
  <li><a href="https://arxiv.org/abs/2303.08774">GPT-4 Technical Report</a></li>
</ul>]]></content><author><name></name></author><category term="paper-reading" /><category term="GPT" /><category term="Autoregressive" /><category term="Transformer" /><category term="大模型" /><category term="入门" /><summary type="html"><![CDATA[GPT 系列彻底改变了人工智能的格局。从 2018 年 GPT-1 的 1.17 亿参数到 GPT-4 的多模态能力，这篇带你完整走一遍 GPT 的进化之路。]]></summary></entry><entry><title type="html">Qwen3 技术报告精读</title><link href="https://oopvo.github.io/Qwen3-Paper-Reading/" rel="alternate" type="text/html" title="Qwen3 技术报告精读" /><published>2026-06-06T00:00:00+00:00</published><updated>2026-06-06T00:00:00+00:00</updated><id>https://oopvo.github.io/Qwen3-Paper-Reading</id><content type="html" xml:base="https://oopvo.github.io/Qwen3-Paper-Reading/"><![CDATA[<blockquote>
  <p>2025 年 4 月 29 日发布，Qwen3 是阿里巴巴通义千问系列的最新成员。235B 总参数仅激活 22B（9.4%），多项基准超越 DeepSeek-R1 和 OpenAI o1，Apache 2.0 协议开源。</p>
</blockquote>

<hr />

<h2 id="一模型家族概览">一、模型家族概览</h2>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="Qwen" data-def="通义千问，阿里巴巴开发的大语言模型系列。包括 Qwen 1（2023.08）、Qwen 2（2024.06）、Qwen 2.5（2024.12）和 Qwen 3（2025.04）。核心优势是多语言能力（尤其中英双语突出）和长上下文处理（Qwen 3 支持 256K）。Qwen 3 旗舰版（235B-A22B）采用 MoE 架构，总参数 235B 每 token 仅激活 22B（9.4%），在多项基准上超越 DeepSeek-R1 和 OpenAI o1 的同时参数量仅为其 1/3。Qwen 还是最早实现混合推理（快思考 + 慢思考）的开源模型之一，并以 Apache 2.0 协议完全开源。" data-url="/glossary/qwen/">Qwen</span> 3 提供了完整的模型家族：</p>

<table>
  <thead>
    <tr>
      <th>类型</th>
      <th>规模</th>
      <th>特点</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>密集模型</strong></td>
      <td>0.6B / 1.7B / 4B / 8B / 14B / 32B</td>
      <td>高效率，单卡可跑</td>
    </tr>
    <tr>
      <td><strong>MoE 旗舰</strong></td>
      <td>235B-A22B（总 235B，激活 22B）</td>
      <td>性能巅峰</td>
    </tr>
    <tr>
      <td><strong>MoE 中型</strong></td>
      <td>30B-A3B</td>
      <td>性价比之选</td>
    </tr>
  </tbody>
</table>

<p><strong>最令人震惊的数据</strong>：Qwen3-4B（40 亿参数）性能匹敌 Qwen2.5-72B（720 亿参数）——<strong>18 倍效率提升</strong>！而 Qwen3-0.6B 仅需 1.49GB 内存即可本地运行。</p>

<hr />

<h2 id="二moe-架构深度解析">二、<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MoE" data-def="Mixture of Experts（混合专家模型），一种通过稀疏激活大幅增加模型容量的架构设计。它将 Transformer 的前馈网络（FFN）替换为多个「专家」子网络（通常 8-256 个），每个 token 通过门控路由网络动态选择少量专家（Top-2 或 Top-8）进行计算。核心优势：总参数量随专家数线性增加，但每 token 的计算量仅随激活专家数增加——实现了参数规模和计算成本的解耦。DeepSeek-V3 使用 256 个路由专家 + 1 个共享专家，总参数 671B 但每 token 仅激活 37B。GPT-4、Mixtral、DeepSeek 等顶级模型均采用 MoE 架构。" data-url="/glossary/moe/">MoE</span> 架构深度解析</h2>

<h3 id="核心配置">核心配置</h3>

<table>
  <thead>
    <tr>
      <th>参数</th>
      <th>Qwen3-235B</th>
      <th>DeepSeek-V3</th>
      <th>Llama 4 Maverick</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>总参数量</td>
      <td><strong>235B</strong></td>
      <td>671B</td>
      <td>400B</td>
    </tr>
    <tr>
      <td>激活参数</td>
      <td><strong>22B（9.4%）</strong></td>
      <td>37B（5.5%）</td>
      <td>17B（4.3%）</td>
    </tr>
    <tr>
      <td>专家池</td>
      <td>128（选 8）</td>
      <td>256（选 8+1 共享）</td>
      <td>128（选 1+1 共享）</td>
    </tr>
    <tr>
      <td><strong>共享专家</strong></td>
      <td><strong>❌ 无</strong></td>
      <td>✅ 有</td>
      <td>✅ 有</td>
    </tr>
    <tr>
      <td>注意力机制</td>
      <td><strong>GQA</strong></td>
      <td><strong>MLA</strong></td>
      <td>GQA</td>
    </tr>
    <tr>
      <td>MoE 模式</td>
      <td>密集层/MoE 层交替</td>
      <td>全部 MoE（前 3 层 dense）</td>
      <td>密集层/MoE 层交替</td>
    </tr>
    <tr>
      <td>上下文</td>
      <td>32K（YaRN 可扩至 131K）</td>
      <td>128K</td>
      <td><strong>1M</strong></td>
    </tr>
    <tr>
      <td>训练数据</td>
      <td><strong>36T tokens</strong></td>
      <td>14.8T</td>
      <td>—</td>
    </tr>
    <tr>
      <td>许可证</td>
      <td><strong>Apache 2.0</strong></td>
      <td>自定义</td>
      <td>自定义</td>
    </tr>
  </tbody>
</table>

<h3 id="关键设计决策">关键设计决策</h3>

<p><strong>1. 为什么不用共享专家？</strong></p>

<!-- Glossary: look up term from _data/glossary.yml -->
<p>DeepSeek-V3 和 Llama 4 都使用了一个”共享专家”——每个 token 都会激活它。Qwen3 团队实验发现<strong>共享专家没有带来可衡量的收益</strong>，于是直接去掉，简化了推理优化。</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>DeepSeek-V3 的 MoE 层:
  输入 → [共享专家（始终激活）] + [128 个路由专家中选 8 个]
         = 每 token 激活 9 个专家 ✅

Qwen3 的 MoE 层:
  输入 → [128 个路由专家中选 8 个]
         = 每 token 激活 8 个专家（更简单，效果一样）
</code></pre></div></div>

<p><strong>2. 为什么用 GQA 而不是 MLA？</strong></p>

<!-- Glossary: look up term from _data/glossary.yml -->
<p>DeepSeek-V3 的 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MLA" data-def="Multi-head Latent Attention（多头潜在注意力），DeepSeek-V3 的核心创新之一。它通过将 Key/Value 缓存压缩到低维潜在空间（512 维）来解决长上下文推理中的内存瓶颈。相比标准 MHA（每层 10.73GB KV 缓存），MLA 仅需 0.151GB（减少 98.6%）。更巧妙的是 KV 权重吸收设计：解压缩矩阵 W_uk 和 W_uv 在计算时被吸收进 Q 和输出投影矩阵中，实现零额外开销的解压缩。MLA 使 DeepSeek-V3 在 128K 长上下文下推理速度提升 3.2 倍，是长上下文大模型的关键使能技术。" data-url="/glossary/mla/">MLA</span> 通过低秩压缩大幅减少 KV 缓存，但工程实现复杂。Qwen3 选择了更简单的 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="GQA" data-def="Grouped-Query Attention（分组查询注意力），MHA（多头注意力）和 MQA（单查询注意力）的折中方案。标准 MHA 有 N 个 Query 头，每个头对应独立的 Key/Value 头，KV 缓存大但质量好。MQA 让所有 Query 头共享一组 K/V，缓存最小但质量略降。GQA 将 Query 头分为若干组，每组共享一个 K/V 头——Llama 2/3 使用的配置是 8 组（64 个 Q 头，8 个 K/V 头）。相比 MHA，GQA 减少 87.5% 的 KV 缓存，而质量损失极小，成为 Llama、Qwen、Gemma 等主流模型的标准选择。" data-url="/glossary/gqa/">GQA</span>：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>GQA（Qwen3 的选择）:
  优点：实现简单，生态成熟，与现有框架兼容
  缺点：KV 缓存比 MLA 大

MLA（DeepSeek 的选择）:
  优点：KV 缓存减少 97%，推理更高效
  缺点：需要自定义 kernel，工程复杂度高

结论：两种方案都可行，取决于团队工程能力
</code></pre></div></div>

<p><strong>3. 密集/MoE 交替设计</strong></p>

<p>Qwen3 在 94 个 Transformer 块中<strong>交替使用密集层和 MoE 层</strong>。这类似于 Llama 4 的设计，但与 DeepSeek 的全部 MoE 不同。</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Qwen3 的 94 层结构:
  层 1: 密集 FFN → 层 2: MoE(8/128) → 层 3: 密集 → 层 4: MoE → ...

  密集层处理通用知识，MoE 层处理专业分工
  交替设计比全 MoE 更稳定，训练更容易
</code></pre></div></div>

<h3 id="moe-设计模式对比2025">MoE 设计模式对比（2025）</h3>

<table>
  <thead>
    <tr>
      <th>模型</th>
      <th>专家池</th>
      <th>激活策略</th>
      <th>共享专家</th>
      <th>设计哲学</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Qwen3</strong></td>
      <td>128</td>
      <td>Top-8</td>
      <td>❌</td>
      <td>多专家专精</td>
    </tr>
    <tr>
      <td><strong>DeepSeek-V3</strong></td>
      <td>256</td>
      <td>Top-8 + 1 共享</td>
      <td>✅</td>
      <td>极大规模</td>
    </tr>
    <tr>
      <td><strong>Llama 4</strong></td>
      <td>128</td>
      <td>Top-1 + 1 共享</td>
      <td>✅</td>
      <td>少专家保守</td>
    </tr>
    <tr>
      <td><strong>Kimi K2</strong></td>
      <td>256+</td>
      <td>Top-8 + 1 共享</td>
      <td>✅</td>
      <td>超大容量</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="三训练方法">三、训练方法</h2>

<h3 id="训练数据">训练数据</h3>

<ul>
  <li><strong>36 万亿 tokens</strong>（DeepSeek-V3 的 2.4 倍，Llama 3 的 2.3 倍）</li>
  <li>多语言混合：英语 ~60%，中文 ~25%，其他语言 ~15%</li>
  <li>代码和数学数据大幅上采样</li>
  <li>多阶段质量过滤</li>
</ul>

<h3 id="训练流程">训练流程</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Phase 1 — 预训练:
  36T tokens
  FP8 混合精度
  MoE 分布式训练
  连续训练（无中断）

Phase 2 — SFT（监督微调）:
  百万级指令数据
  多语言对齐
  代码 + 数学 + 通用指令
  
Phase 3 — RL（强化学习）:
  组内比较策略（类似 GRPO）
  多奖励模型
  安全对齐
</code></pre></div></div>

<p>Qwen3 在 RL 阶段也使用了类似 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="GRPO" data-def="Group Relative Policy Optimization（分组相对策略优化），DeepSeek 自研的强化学习算法，用于替代 PPO。GRPO 的核心创新是去掉了 PPO 中的 Critic 模型（价值函数模型）。对于每个输入 prompt，GRPO 让当前策略生成多个回答，然后对这组回答的奖励进行内部归一化（减去组均值、除以组标准差），用归一化后的相对优劣作为训练信号。优势：1）无需 Critic 模型，显存减半；2）组内相对比较避免了绝对评分的不一致性；3）训练更稳定，无需担心 Critic 不收敛的问题。GRPO 已被 DeepSeek-V3/R1 等模型验证为高效的 RL 对齐方法。" data-url="/glossary/grpo/">GRPO</span> 的组内比较策略（而非传统 PPO），这与 <!-- Glossary: look up term from _data/glossary.yml -->DeepSeek-V3 的设计一致。</p>

<hr />

<h2 id="四混合推理快思考--慢思考">四、混合推理：快思考 + 慢思考</h2>

<p>Qwen3 是首个实现<strong>混合推理</strong>的开源模型——同一个模型同时支持两种推理模式：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>快速思考（Direct Response）:
  输入问题 → 直接生成答案
  适用：简单问答、事实查询
  特点：低延迟，低成本

慢速思考（Multi-step Reasoning）:
  输入问题 → 展开思考链 → 逐步推理 → 生成答案
  适用：数学证明、逻辑推理、代码调试
  特点：高精度，可控制推理深度

「思考预算」（Thinking Budget）机制:
  用户可以设置 max_thinking_tokens 来控制推理深度
  简单问题设少 → 快速回答
  复杂问题设多 → 深度推理
  同一个模型，两种模式，自由切换
</code></pre></div></div>

<hr />

<h2 id="五性能基准">五、性能基准</h2>

<h3 id="qwen3-235b-vs-deepseek-r1-vs-llama-4">Qwen3-235B vs DeepSeek-R1 vs Llama 4</h3>

<table>
  <thead>
    <tr>
      <th>基准测试</th>
      <th>Qwen3-235B</th>
      <th>DeepSeek-R1</th>
      <th>胜出</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>AIME 2025</strong>（数学奥赛）</td>
      <td><strong>81.5</strong></td>
      <td>70.0</td>
      <td>✅ Qwen3</td>
    </tr>
    <tr>
      <td><strong>AIME 2024</strong></td>
      <td><strong>85.7</strong></td>
      <td>79.8</td>
      <td>✅ Qwen3</td>
    </tr>
    <tr>
      <td><strong>LiveCodeBench v3</strong>（编程）</td>
      <td><strong>70.7</strong></td>
      <td>64.3</td>
      <td>✅ Qwen3</td>
    </tr>
    <tr>
      <td><strong>Arena-Hard</strong>（人类偏好）</td>
      <td><strong>95.6</strong></td>
      <td>93.2</td>
      <td>✅ Qwen3</td>
    </tr>
    <tr>
      <td><strong>CodeForces</strong>（竞赛编程）</td>
      <td><strong>2056 ELO</strong></td>
      <td>2029</td>
      <td>✅ Qwen3</td>
    </tr>
    <tr>
      <td><strong>MMLU</strong></td>
      <td><strong>~86.0</strong></td>
      <td>~84.5</td>
      <td>✅ Qwen3</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p>Qwen3-235B 总参数量仅 DeepSeek-R1 的 <strong>1/3</strong>，但在几乎所有基准上全面超越！</p>
</blockquote>

<h3 id="密集模型的惊人效率">密集模型的惊人效率</h3>

<table>
  <thead>
    <tr>
      <th>模型</th>
      <th>参数量</th>
      <th>AIME 2025</th>
      <th>效率比</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Qwen3-32B（密集）</td>
      <td>32B</td>
      <td><strong>72.9</strong></td>
      <td>⭐⭐⭐⭐⭐</td>
    </tr>
    <tr>
      <td>DeepSeek-R1</td>
      <td>~671B</td>
      <td>70.0</td>
      <td>⭐</td>
    </tr>
    <tr>
      <td>Qwen3-4B</td>
      <td>4B</td>
      <td>匹配 Qwen2.5-72B</td>
      <td><strong>18× 提升</strong></td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="六qwen3-vs-deepseek-v3架构哲学对比">六、Qwen3 vs DeepSeek-V3：架构哲学对比</h2>

<table>
  <thead>
    <tr>
      <th>维度</th>
      <th>Qwen3</th>
      <th>DeepSeek-V3</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>总参数量</strong></td>
      <td>235B（够用就好）</td>
      <td>671B（越大越好）</td>
    </tr>
    <tr>
      <td><strong>激活参数</strong></td>
      <td>22B（9.4%）</td>
      <td>37B（5.5%）</td>
    </tr>
    <tr>
      <td><strong>专家策略</strong></td>
      <td>无共享专家，精简</td>
      <td>共享专家 + 256 专家池</td>
    </tr>
    <tr>
      <td><strong>注意力</strong></td>
      <td>GQA（成熟稳定）</td>
      <td>MLA（极致创新）</td>
    </tr>
    <tr>
      <td><strong>推理模式</strong></td>
      <td>混合推理（快+慢）</td>
      <td>标准推理</td>
    </tr>
    <tr>
      <td><strong>训练数据</strong></td>
      <td>36T（更多数据）</td>
      <td>14.8T（更精炼）</td>
    </tr>
    <tr>
      <td><strong>开源协议</strong></td>
      <td>Apache 2.0 ✅</td>
      <td>自定义 ⚠️</td>
    </tr>
    <tr>
      <td><strong>核心优势</strong></td>
      <td>效率、中文、混合推理</td>
      <td>推理速度、长上下文</td>
    </tr>
  </tbody>
</table>

<p><strong>一句话总结</strong>：Qwen3 追求”用更少的参数达到更好的效果”，DeepSeek-V3 追求”用更大的模型覆盖更多场景”。两种路线各有千秋。</p>

<hr />

<h2 id="七推理优化">七、推理优化</h2>

<ul>
  <li><strong>稀疏激活</strong>：MoE 架构每 token 仅激活 8/128 专家（6.25%）</li>
  <li><strong>KV 缓存优化</strong>：结合 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="GQA" data-def="Grouped-Query Attention（分组查询注意力），MHA（多头注意力）和 MQA（单查询注意力）的折中方案。标准 MHA 有 N 个 Query 头，每个头对应独立的 Key/Value 头，KV 缓存大但质量好。MQA 让所有 Query 头共享一组 K/V，缓存最小但质量略降。GQA 将 Query 头分为若干组，每组共享一个 K/V 头——Llama 2/3 使用的配置是 8 组（64 个 Q 头，8 个 K/V 头）。相比 MHA，GQA 减少 87.5% 的 KV 缓存，而质量损失极小，成为 Llama、Qwen、Gemma 等主流模型的标准选择。" data-url="/glossary/gqa/">GQA</span> 降低访存</li>
  <li><strong>投机解码</strong>：自研投机采样加速生成</li>
  <li><strong>量化部署</strong>：FP8/INT4 量化支持</li>
  <li><strong>本地运行</strong>：0.6B 仅需 1.49GB 内存，手机可跑</li>
</ul>

<hr />

<h2 id="参考文献">参考文献</h2>

<ul>
  <li><a href="https://arxiv.org/abs/2505.xxxxx">Qwen3 Technical Report, arXiv 2025</a></li>
  <li><a href="https://arxiv.org/abs/2412.15115">Qwen2.5 Technical Report, arXiv:2412.15115</a></li>
  <li><a href="https://sebastianraschka.com/blog/2025/the-big-llm-architecture-comparison.html">Sebastian Raschka: The Big LLM Architecture Comparison 2025</a></li>
  <li><a href="https://friendli.ai/blog/moe-models-comparison">FriendliAI: The Rise of MoE — Comparing 2025’s Leading MoE Models</a></li>
</ul>]]></content><author><name></name></author><category term="paper-reading" /><category term="Qwen" /><category term="MoE" /><category term="多语言" /><category term="开源模型" /><category term="深度分析" /><summary type="html"><![CDATA[2025 年 4 月 29 日发布，Qwen3 是阿里巴巴通义千问系列的最新成员。235B 总参数仅激活 22B（9.4%），多项基准超越 DeepSeek-R1 和 OpenAI o1，Apache 2.0 协议开源。]]></summary></entry><entry><title type="html">Llama 系列技术报告精读（未完善）</title><link href="https://oopvo.github.io/Llama-Paper-Reading/" rel="alternate" type="text/html" title="Llama 系列技术报告精读（未完善）" /><published>2026-06-06T00:00:00+00:00</published><updated>2026-06-06T00:00:00+00:00</updated><id>https://oopvo.github.io/Llama-Paper-Reading</id><content type="html" xml:base="https://oopvo.github.io/Llama-Paper-Reading/"><![CDATA[<h2 id="概述">概述</h2>

<p><strong><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="Llama" data-def="Large Language Model Meta AI，Meta 开发的开源大语言模型系列。包括 Llama 1（2023.02，开源先驱）、Llama 2（2023.07，首个开源商用）、Llama 3（2024.04，405B 当时最大开源密集模型）和 Llama 4（2025.04，首次采用 MoE 架构）。关键技术创新包括引入 GQA 分组查询注意力、SwiGLU 门控激活函数、RMSNorm 简化归一化。Llama 系列以开源、高效、高质量著称，推动了整个开源大模型生态的发展，是 GPT 系列之外最具影响力的模型家族。" data-url="/glossary/llama/">Llama</span></strong>（Large Language Model Meta AI）是 Meta 发布的开源大语言模型系列，从 Llama 1 到 Llama 4，每一代都推动了开源模型的边界。<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="Llama" data-def="Large Language Model Meta AI，Meta 开发的开源大语言模型系列。包括 Llama 1（2023.02，开源先驱）、Llama 2（2023.07，首个开源商用）、Llama 3（2024.04，405B 当时最大开源密集模型）和 Llama 4（2025.04，首次采用 MoE 架构）。关键技术创新包括引入 GQA 分组查询注意力、SwiGLU 门控激活函数、RMSNorm 简化归一化。Llama 系列以开源、高效、高质量著称，推动了整个开源大模型生态的发展，是 GPT 系列之外最具影响力的模型家族。" data-url="/glossary/llama/">Llama</span> 系列引入了多项关键技术创新，包括 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="GQA" data-def="Grouped-Query Attention（分组查询注意力），MHA（多头注意力）和 MQA（单查询注意力）的折中方案。标准 MHA 有 N 个 Query 头，每个头对应独立的 Key/Value 头，KV 缓存大但质量好。MQA 让所有 Query 头共享一组 K/V，缓存最小但质量略降。GQA 将 Query 头分为若干组，每组共享一个 K/V 头——Llama 2/3 使用的配置是 8 组（64 个 Q 头，8 个 K/V 头）。相比 MHA，GQA 减少 87.5% 的 KV 缓存，而质量损失极小，成为 Llama、Qwen、Gemma 等主流模型的标准选择。" data-url="/glossary/gqa/">GQA</span>、<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="SwiGLU" data-def="Swish-Gated Linear Unit（门控线性单元），LLaMA 系列使用的激活函数。结合了 Swish 激活函数（平滑版 ReLU）和 GLU（门控线性单元）的优势：SwiGLU(x) = Swish(xW_gate) ⊗ (xW_up)。相比 ReLU 的简单截断，SwiGLU 通过门控机制让网络可以动态选择哪些信息通过，类似 LSTM 中的门控思想。代价是增加了一个额外的投影矩阵，FFN 层参数量增加约 1/3。在相同计算量下，SwiGLU 比 ReLU 提升约 0.5-1.0% 的模型质量，是 PaLM、Llama、Qwen 等现代大模型的标配激活函数。" data-url="/glossary/swiglu/">SwiGLU</span> 和 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="RMSNorm" data-def="Root Mean Square Layer Normalization（均方根层归一化），LayerNorm 的简化变体。完整的 LayerNorm 做两件事：中心化（减均值）和缩放（除标准差）。RMSNorm 发现中心化步骤在 Transformer 中不是必需的——只做缩放就够：RMSNorm(x) = x / RMS(x) × γ，其中 RMS(x) = √(1/n × Σx²)。相比 LayerNorm 节省约 10-15% 的计算量，而在 Transformer 中的表现与 LayerNorm 相当。由于其简洁高效，RMSNorm 被 Llama、Qwen、Mistral、Gemma 等几乎所有主流模型采用，是现代大模型架构的标准配置。" data-url="/glossary/rmsnorm/">RMSNorm</span>。</p>

<blockquote>
  <table>
    <tbody>
      <tr>
        <td>论文：<a href="https://arxiv.org/abs/2302.13971">Llama 1</a></td>
        <td><a href="https://arxiv.org/abs/2307.09288">Llama 2</a></td>
        <td><a href="https://arxiv.org/abs/2407.21783">Llama 3</a></td>
      </tr>
    </tbody>
  </table>
</blockquote>

<hr />

<h2 id="发展简史">发展简史</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Llama 1 (2023.02)      — 7B/13B/33B/65B，开源先驱
    │
Llama 2 (2023.07)      — 7B/13B/70B，引入 GQA，开源商用
    │
Llama 3 (2024.04)      — 8B/70B/405B，史上最大开源密集模型
    │
Llama 4 (2025.04)      — MoE 架构，首次引入混合专家
</code></pre></div></div>

<hr />

<h2 id="一gqagrouped-query-attention">一、<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="GQA" data-def="Grouped-Query Attention（分组查询注意力），MHA（多头注意力）和 MQA（单查询注意力）的折中方案。标准 MHA 有 N 个 Query 头，每个头对应独立的 Key/Value 头，KV 缓存大但质量好。MQA 让所有 Query 头共享一组 K/V，缓存最小但质量略降。GQA 将 Query 头分为若干组，每组共享一个 K/V 头——Llama 2/3 使用的配置是 8 组（64 个 Q 头，8 个 K/V 头）。相比 MHA，GQA 减少 87.5% 的 KV 缓存，而质量损失极小，成为 Llama、Qwen、Gemma 等主流模型的标准选择。" data-url="/glossary/gqa/">GQA</span>：Grouped-Query Attention</h2>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="Llama" data-def="Large Language Model Meta AI，Meta 开发的开源大语言模型系列。包括 Llama 1（2023.02，开源先驱）、Llama 2（2023.07，首个开源商用）、Llama 3（2024.04，405B 当时最大开源密集模型）和 Llama 4（2025.04，首次采用 MoE 架构）。关键技术创新包括引入 GQA 分组查询注意力、SwiGLU 门控激活函数、RMSNorm 简化归一化。Llama 系列以开源、高效、高质量著称，推动了整个开源大模型生态的发展，是 GPT 系列之外最具影响力的模型家族。" data-url="/glossary/llama/">Llama</span> 2 在 70B 版本中首次引入 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="GQA" data-def="Grouped-Query Attention（分组查询注意力），MHA（多头注意力）和 MQA（单查询注意力）的折中方案。标准 MHA 有 N 个 Query 头，每个头对应独立的 Key/Value 头，KV 缓存大但质量好。MQA 让所有 Query 头共享一组 K/V，缓存最小但质量略降。GQA 将 Query 头分为若干组，每组共享一个 K/V 头——Llama 2/3 使用的配置是 8 组（64 个 Q 头，8 个 K/V 头）。相比 MHA，GQA 减少 87.5% 的 KV 缓存，而质量损失极小，成为 Llama、Qwen、Gemma 等主流模型的标准选择。" data-url="/glossary/gqa/">GQA</span>，这是 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="Llama" data-def="Large Language Model Meta AI，Meta 开发的开源大语言模型系列。包括 Llama 1（2023.02，开源先驱）、Llama 2（2023.07，首个开源商用）、Llama 3（2024.04，405B 当时最大开源密集模型）和 Llama 4（2025.04，首次采用 MoE 架构）。关键技术创新包括引入 GQA 分组查询注意力、SwiGLU 门控激活函数、RMSNorm 简化归一化。Llama 系列以开源、高效、高质量著称，推动了整个开源大模型生态的发展，是 GPT 系列之外最具影响力的模型家族。" data-url="/glossary/llama/">Llama</span> 系列在注意力机制上的关键创新。</p>

<h3 id="mha--gqa--mqa-的演进">MHA → GQA → MQA 的演进</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>标准 MHA（Llama 1）:
  Q: 64 头    K: 64 头    V: 64 头
  KV 缓存 = 64 × head_dim × layers → 推理时内存爆炸

GQA（Llama 2 70B / Llama 3）:
  Q: 64 头    K: 8 组     V: 8 组
  KV 缓存 = 8 × head_dim × layers → 减少 87.5%

  Q 头分 8 组，每组 8 个头共享一个 K/V
  → 质量接近 MHA，缓存接近 MQA
</code></pre></div></div>

<h3 id="为什么-gqa-有效">为什么 GQA 有效</h3>

<p>在推理时，<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="GQA" data-def="Grouped-Query Attention（分组查询注意力），MHA（多头注意力）和 MQA（单查询注意力）的折中方案。标准 MHA 有 N 个 Query 头，每个头对应独立的 Key/Value 头，KV 缓存大但质量好。MQA 让所有 Query 头共享一组 K/V，缓存最小但质量略降。GQA 将 Query 头分为若干组，每组共享一个 K/V 头——Llama 2/3 使用的配置是 8 组（64 个 Q 头，8 个 K/V 头）。相比 MHA，GQA 减少 87.5% 的 KV 缓存，而质量损失极小，成为 Llama、Qwen、Gemma 等主流模型的标准选择。" data-url="/glossary/gqa/">GQA</span> 的核心优势是<strong>减少 KV 缓存的数据搬运量</strong>。自回归生成中，KV 缓存需要从 HBM 读取到 SRAM，访存带宽通常是瓶颈。KV 缓存减少 87.5% 意味着：</p>

<ul>
  <li>同样硬件可以支持<strong>更长的上下文</strong></li>
  <li>同样上下文可以<strong>提高批量大小</strong></li>
  <li>推理延迟显著降低</li>
</ul>

<blockquote>
  <p>注：DeepSeek 的 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MLA" data-def="Multi-head Latent Attention（多头潜在注意力），DeepSeek-V3 的核心创新之一。它通过将 Key/Value 缓存压缩到低维潜在空间（512 维）来解决长上下文推理中的内存瓶颈。相比标准 MHA（每层 10.73GB KV 缓存），MLA 仅需 0.151GB（减少 98.6%）。更巧妙的是 KV 权重吸收设计：解压缩矩阵 W_uk 和 W_uv 在计算时被吸收进 Q 和输出投影矩阵中，实现零额外开销的解压缩。MLA 使 DeepSeek-V3 在 128K 长上下文下推理速度提升 3.2 倍，是长上下文大模型的关键使能技术。" data-url="/glossary/mla/">MLA</span> 更进一步，将 KV 压缩到潜在空间，缓存仅相当于 MHA 的 1.4%。</p>
</blockquote>

<hr />

<h2 id="二swiglu门控激活函数">二、<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="SwiGLU" data-def="Swish-Gated Linear Unit（门控线性单元），LLaMA 系列使用的激活函数。结合了 Swish 激活函数（平滑版 ReLU）和 GLU（门控线性单元）的优势：SwiGLU(x) = Swish(xW_gate) ⊗ (xW_up)。相比 ReLU 的简单截断，SwiGLU 通过门控机制让网络可以动态选择哪些信息通过，类似 LSTM 中的门控思想。代价是增加了一个额外的投影矩阵，FFN 层参数量增加约 1/3。在相同计算量下，SwiGLU 比 ReLU 提升约 0.5-1.0% 的模型质量，是 PaLM、Llama、Qwen 等现代大模型的标配激活函数。" data-url="/glossary/swiglu/">SwiGLU</span>：门控激活函数</h2>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="Llama" data-def="Large Language Model Meta AI，Meta 开发的开源大语言模型系列。包括 Llama 1（2023.02，开源先驱）、Llama 2（2023.07，首个开源商用）、Llama 3（2024.04，405B 当时最大开源密集模型）和 Llama 4（2025.04，首次采用 MoE 架构）。关键技术创新包括引入 GQA 分组查询注意力、SwiGLU 门控激活函数、RMSNorm 简化归一化。Llama 系列以开源、高效、高质量著称，推动了整个开源大模型生态的发展，是 GPT 系列之外最具影响力的模型家族。" data-url="/glossary/llama/">Llama</span> 全系列使用 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="SwiGLU" data-def="Swish-Gated Linear Unit（门控线性单元），LLaMA 系列使用的激活函数。结合了 Swish 激活函数（平滑版 ReLU）和 GLU（门控线性单元）的优势：SwiGLU(x) = Swish(xW_gate) ⊗ (xW_up)。相比 ReLU 的简单截断，SwiGLU 通过门控机制让网络可以动态选择哪些信息通过，类似 LSTM 中的门控思想。代价是增加了一个额外的投影矩阵，FFN 层参数量增加约 1/3。在相同计算量下，SwiGLU 比 ReLU 提升约 0.5-1.0% 的模型质量，是 PaLM、Llama、Qwen 等现代大模型的标配激活函数。" data-url="/glossary/swiglu/">SwiGLU</span> 作为激活函数，替代了早期模型常用的 ReLU 或 GELU。</p>

<h3 id="公式对比">公式对比</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ReLU:      output = max(0, xW)               简单但表达力有限
GELU:      output = x · Φ(x)                 平滑，略有提升
SwiGLU:    output = Swish(xW) ⊗ (xV)         门控机制，最强
</code></pre></div></div>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="SwiGLU" data-def="Swish-Gated Linear Unit（门控线性单元），LLaMA 系列使用的激活函数。结合了 Swish 激活函数（平滑版 ReLU）和 GLU（门控线性单元）的优势：SwiGLU(x) = Swish(xW_gate) ⊗ (xW_up)。相比 ReLU 的简单截断，SwiGLU 通过门控机制让网络可以动态选择哪些信息通过，类似 LSTM 中的门控思想。代价是增加了一个额外的投影矩阵，FFN 层参数量增加约 1/3。在相同计算量下，SwiGLU 比 ReLU 提升约 0.5-1.0% 的模型质量，是 PaLM、Llama、Qwen 等现代大模型的标配激活函数。" data-url="/glossary/swiglu/">SwiGLU</span> 通过引入门控机制（第二个投影矩阵 V），让网络可以<strong>动态选择</strong>哪些信息通过，类似 LSTM 中的门控思想。</p>

<h3 id="参数代价">参数代价</h3>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="SwiGLU" data-def="Swish-Gated Linear Unit（门控线性单元），LLaMA 系列使用的激活函数。结合了 Swish 激活函数（平滑版 ReLU）和 GLU（门控线性单元）的优势：SwiGLU(x) = Swish(xW_gate) ⊗ (xW_up)。相比 ReLU 的简单截断，SwiGLU 通过门控机制让网络可以动态选择哪些信息通过，类似 LSTM 中的门控思想。代价是增加了一个额外的投影矩阵，FFN 层参数量增加约 1/3。在相同计算量下，SwiGLU 比 ReLU 提升约 0.5-1.0% 的模型质量，是 PaLM、Llama、Qwen 等现代大模型的标配激活函数。" data-url="/glossary/swiglu/">SwiGLU</span> 的代价是额外增加了一个投影矩阵 V，使得 FFN 层的参数量增加约 1/3。作为回报，在相同计算量下，<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="SwiGLU" data-def="Swish-Gated Linear Unit（门控线性单元），LLaMA 系列使用的激活函数。结合了 Swish 激活函数（平滑版 ReLU）和 GLU（门控线性单元）的优势：SwiGLU(x) = Swish(xW_gate) ⊗ (xW_up)。相比 ReLU 的简单截断，SwiGLU 通过门控机制让网络可以动态选择哪些信息通过，类似 LSTM 中的门控思想。代价是增加了一个额外的投影矩阵，FFN 层参数量增加约 1/3。在相同计算量下，SwiGLU 比 ReLU 提升约 0.5-1.0% 的模型质量，是 PaLM、Llama、Qwen 等现代大模型的标配激活函数。" data-url="/glossary/swiglu/">SwiGLU</span> 比 ReLU 提升约 <strong>0.5-1.0%</strong> 的模型质量。</p>

<hr />

<h2 id="三rmsnorm简化的层归一化">三、<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="RMSNorm" data-def="Root Mean Square Layer Normalization（均方根层归一化），LayerNorm 的简化变体。完整的 LayerNorm 做两件事：中心化（减均值）和缩放（除标准差）。RMSNorm 发现中心化步骤在 Transformer 中不是必需的——只做缩放就够：RMSNorm(x) = x / RMS(x) × γ，其中 RMS(x) = √(1/n × Σx²)。相比 LayerNorm 节省约 10-15% 的计算量，而在 Transformer 中的表现与 LayerNorm 相当。由于其简洁高效，RMSNorm 被 Llama、Qwen、Mistral、Gemma 等几乎所有主流模型采用，是现代大模型架构的标准配置。" data-url="/glossary/rmsnorm/">RMSNorm</span>：简化的层归一化</h2>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="Llama" data-def="Large Language Model Meta AI，Meta 开发的开源大语言模型系列。包括 Llama 1（2023.02，开源先驱）、Llama 2（2023.07，首个开源商用）、Llama 3（2024.04，405B 当时最大开源密集模型）和 Llama 4（2025.04，首次采用 MoE 架构）。关键技术创新包括引入 GQA 分组查询注意力、SwiGLU 门控激活函数、RMSNorm 简化归一化。Llama 系列以开源、高效、高质量著称，推动了整个开源大模型生态的发展，是 GPT 系列之外最具影响力的模型家族。" data-url="/glossary/llama/">Llama</span> 系列使用 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="RMSNorm" data-def="Root Mean Square Layer Normalization（均方根层归一化），LayerNorm 的简化变体。完整的 LayerNorm 做两件事：中心化（减均值）和缩放（除标准差）。RMSNorm 发现中心化步骤在 Transformer 中不是必需的——只做缩放就够：RMSNorm(x) = x / RMS(x) × γ，其中 RMS(x) = √(1/n × Σx²)。相比 LayerNorm 节省约 10-15% 的计算量，而在 Transformer 中的表现与 LayerNorm 相当。由于其简洁高效，RMSNorm 被 Llama、Qwen、Mistral、Gemma 等几乎所有主流模型采用，是现代大模型架构的标准配置。" data-url="/glossary/rmsnorm/">RMSNorm</span> 替代标准的 LayerNorm。</p>

<h3 id="为什么可以简化">为什么可以简化</h3>

<p>LayerNorm 做了两件事：<strong>中心化</strong>（减均值）和 <strong>缩放</strong>（除方差）。<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="RMSNorm" data-def="Root Mean Square Layer Normalization（均方根层归一化），LayerNorm 的简化变体。完整的 LayerNorm 做两件事：中心化（减均值）和缩放（除标准差）。RMSNorm 发现中心化步骤在 Transformer 中不是必需的——只做缩放就够：RMSNorm(x) = x / RMS(x) × γ，其中 RMS(x) = √(1/n × Σx²)。相比 LayerNorm 节省约 10-15% 的计算量，而在 Transformer 中的表现与 LayerNorm 相当。由于其简洁高效，RMSNorm 被 Llama、Qwen、Mistral、Gemma 等几乎所有主流模型采用，是现代大模型架构的标准配置。" data-url="/glossary/rmsnorm/">RMSNorm</span> 发现，在 Transformer 中，中心化步骤不是必需的——只做缩放就够。</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>LayerNorm:  y = (x - μ) / σ × γ + β     ← 两步都做
RMSNorm:    y = x / RMS(x) × γ          ← 只做缩放

其中 RMS(x) = √(1/n × Σx²)
</code></pre></div></div>

<h3 id="实际收益">实际收益</h3>

<ul>
  <li>计算量减少约 <strong>10-15%</strong></li>
  <li>模型质量<strong>无损</strong></li>
  <li>被 Llama、Qwen、Mistral 等主流模型广泛采用</li>
</ul>

<hr />

<h2 id="四llama-3-405b开源密集模型的巅峰">四、Llama 3 405B：开源密集模型的巅峰</h2>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="Llama" data-def="Large Language Model Meta AI，Meta 开发的开源大语言模型系列。包括 Llama 1（2023.02，开源先驱）、Llama 2（2023.07，首个开源商用）、Llama 3（2024.04，405B 当时最大开源密集模型）和 Llama 4（2025.04，首次采用 MoE 架构）。关键技术创新包括引入 GQA 分组查询注意力、SwiGLU 门控激活函数、RMSNorm 简化归一化。Llama 系列以开源、高效、高质量著称，推动了整个开源大模型生态的发展，是 GPT 系列之外最具影响力的模型家族。" data-url="/glossary/llama/">Llama</span> 3 405B 是当时最大的开源密集模型（非 MoE）。</p>

<h3 id="模型配置">模型配置</h3>

<table>
  <thead>
    <tr>
      <th>参数</th>
      <th>数值</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>层数</td>
      <td><strong>126 层</strong></td>
    </tr>
    <tr>
      <td>隐藏维度</td>
      <td><strong>16,384</strong></td>
    </tr>
    <tr>
      <td>FFN 维度</td>
      <td>53,248</td>
    </tr>
    <tr>
      <td>注意力头</td>
      <td>128 头，<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="GQA" data-def="Grouped-Query Attention（分组查询注意力），MHA（多头注意力）和 MQA（单查询注意力）的折中方案。标准 MHA 有 N 个 Query 头，每个头对应独立的 Key/Value 头，KV 缓存大但质量好。MQA 让所有 Query 头共享一组 K/V，缓存最小但质量略降。GQA 将 Query 头分为若干组，每组共享一个 K/V 头——Llama 2/3 使用的配置是 8 组（64 个 Q 头，8 个 K/V 头）。相比 MHA，GQA 减少 87.5% 的 KV 缓存，而质量损失极小，成为 Llama、Qwen、Gemma 等主流模型的标准选择。" data-url="/glossary/gqa/">GQA</span>（8 K/V 头）</td>
    </tr>
    <tr>
      <td>词表大小</td>
      <td>128,000 tokens</td>
    </tr>
    <tr>
      <td>上下文</td>
      <td>128K（RoPE, θ=500,000）</td>
    </tr>
    <tr>
      <td>训练数据</td>
      <td><strong>15.6T tokens</strong></td>
    </tr>
    <tr>
      <td>GPU</td>
      <td>30.8M H100 GPU 小时</td>
    </tr>
  </tbody>
</table>

<h3 id="scaling-law为什么是-405b">Scaling Law：为什么是 405B？</h3>

<p>Meta 通过 <strong>Chinchilla Scaling Law</strong> 确定了 405B 是最优参数量：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>训练一个 Transformer 的计算量 ≈ 6 × 参数量 × 数据量
                 ↓
给定 3.8×10²⁵ FLOPs 的预算：
  更大的模型 + 更少数据 = 欠拟合 ❌
  更小的模型 + 更多数据 = 过拟合 ❌
  405B + 15.6T tokens = 计算最优 ✅（performance per FLOP 最高）
</code></pre></div></div>

<p>他们还发现了<strong>能力突现的 S 曲线</strong>：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>基准准确率
   1.0 |                          🚀
       |                       ↗
   0.5 |                 ↗
       |           ↗
   0.0 |  —————————
       +——————————————————→ 训练计算量
         能力突然涌现！到达某个阈值后迅速提升
</code></pre></div></div>

<h3 id="4d-并行如何训练-405b">4D 并行：如何训练 405B</h3>

<p>405B 参数在 FP16 下需要 810GB 显存，远超单块 H100 的 80GB。Llama 3 使用 <strong>4D 并行</strong>来分布在 16,384 块 GPU 上：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>4D 并行策略（4 个维度同时切分）：

① 数据并行（DP）= 切分 batch
   每块 GPU 有完整模型，处理不同数据 → 梯度同步
   
② 张量并行（TP）= 切分层内参数
   一个 Transformer 层的矩阵被切到多块 GPU 上 ← 最常用

③ 流水线并行（PP）= 切分层间
   第 1-30 层在 GPU A，第 31-60 层在 GPU B...

④ 上下文并行（CP）= 切分序列长度
   长上下文时把序列切成多段，分别在不同 GPU 上处理

典型配置（512 节点 × 4096 GPU）:
  TP=8, PP=8, CP=2, DP=4 → 8×8×2×4 = 512 组 × 8 GPU = 4096 ✅
</code></pre></div></div>

<h3 id="训练三阶段">训练三阶段</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Phase 1 — 初始预训练:
  上下文: 8K tokens
  batch size: 逐步增加到 16M tokens
  目标: 学习基础知识

Phase 2 — 长上下文预训练:
  上下文: 8K → 128K 逐步扩展
  额外: ~800B tokens
  目标: 支持长序列推理

Phase 3 — 退火（Annealing）:
  最后 40M tokens
  学习率线性衰减到 0
  高质量数据上采样（数学、代码、逻辑）
  Polyak 平均化检查点
</code></pre></div></div>

<h3 id="后训练迭代-sft--dpo">后训练：迭代 SFT + DPO</h3>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="Llama" data-def="Large Language Model Meta AI，Meta 开发的开源大语言模型系列。包括 Llama 1（2023.02，开源先驱）、Llama 2（2023.07，首个开源商用）、Llama 3（2024.04，405B 当时最大开源密集模型）和 Llama 4（2025.04，首次采用 MoE 架构）。关键技术创新包括引入 GQA 分组查询注意力、SwiGLU 门控激活函数、RMSNorm 简化归一化。Llama 系列以开源、高效、高质量著称，推动了整个开源大模型生态的发展，是 GPT 系列之外最具影响力的模型家族。" data-url="/glossary/llama/">Llama</span> 3 的后训练不采用 PPO，而是使用 <strong>迭代 SFT + DPO</strong>：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>第 1 轮: 
  模型生成多个回答 → RM 评分 → 选最好的 → SFT 微调 → DPO 对齐
  
第 2 轮:
  更强的模型 → 生成更高质量的回答 → SFT → DPO
  
...
每轮生成的合成数据质量都在提升（正反馈循环 ✨）
</code></pre></div></div>

<h3 id="性能对比">性能对比</h3>

<table>
  <thead>
    <tr>
      <th>基准测试</th>
      <th>Llama 3 405B</th>
      <th>GPT-4</th>
      <th>Claude 3.5</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>MMLU</td>
      <td><strong>87.8</strong></td>
      <td>86.4</td>
      <td>—</td>
    </tr>
    <tr>
      <td>HumanEval</td>
      <td><strong>89.0</strong></td>
      <td>87.0</td>
      <td>—</td>
    </tr>
    <tr>
      <td>GSM-8K</td>
      <td><strong>96.8</strong></td>
      <td>95.3</td>
      <td>—</td>
    </tr>
    <tr>
      <td>MATH</td>
      <td><strong>72.4</strong></td>
      <td>—</td>
      <td>—</td>
    </tr>
  </tbody>
</table>

<h3 id="与-deepseek-v3-的对比">与 DeepSeek-V3 的对比</h3>

<table>
  <thead>
    <tr>
      <th>维度</th>
      <th>Llama 3 405B</th>
      <th>DeepSeek-V3</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>架构</td>
      <td><strong>密集</strong>（Dense）</td>
      <td><strong>MoE</strong></td>
    </tr>
    <tr>
      <td>总参数量</td>
      <td>405B</td>
      <td><strong>671B</strong></td>
    </tr>
    <tr>
      <td>激活参数</td>
      <td>405B（100%）</td>
      <td><strong>37B（5.5%）</strong></td>
    </tr>
    <tr>
      <td>训练 GPU 时</td>
      <td>30.8M</td>
      <td><strong>2.788M（11× 效率差距）</strong></td>
    </tr>
  </tbody>
</table>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="Llama" data-def="Large Language Model Meta AI，Meta 开发的开源大语言模型系列。包括 Llama 1（2023.02，开源先驱）、Llama 2（2023.07，首个开源商用）、Llama 3（2024.04，405B 当时最大开源密集模型）和 Llama 4（2025.04，首次采用 MoE 架构）。关键技术创新包括引入 GQA 分组查询注意力、SwiGLU 门控激活函数、RMSNorm 简化归一化。Llama 系列以开源、高效、高质量著称，推动了整个开源大模型生态的发展，是 GPT 系列之外最具影响力的模型家族。" data-url="/glossary/llama/">Llama</span> 3 选择密集架构以保证训练稳定性和推理可预测性，而 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MoE" data-def="Mixture of Experts（混合专家模型），一种通过稀疏激活大幅增加模型容量的架构设计。它将 Transformer 的前馈网络（FFN）替换为多个「专家」子网络（通常 8-256 个），每个 token 通过门控路由网络动态选择少量专家（Top-2 或 Top-8）进行计算。核心优势：总参数量随专家数线性增加，但每 token 的计算量仅随激活专家数增加——实现了参数规模和计算成本的解耦。DeepSeek-V3 使用 256 个路由专家 + 1 个共享专家，总参数 671B 但每 token 仅激活 37B。GPT-4、Mixtral、DeepSeek 等顶级模型均采用 MoE 架构。" data-url="/glossary/moe/">MoE</span> 方案虽然效率更高，但工程复杂度也更高。</p>

<hr />

<h2 id="五llama-4moe-转型">五、Llama 4：MoE 转型</h2>

<p>2025 年 4 月，<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="Llama" data-def="Large Language Model Meta AI，Meta 开发的开源大语言模型系列。包括 Llama 1（2023.02，开源先驱）、Llama 2（2023.07，首个开源商用）、Llama 3（2024.04，405B 当时最大开源密集模型）和 Llama 4（2025.04，首次采用 MoE 架构）。关键技术创新包括引入 GQA 分组查询注意力、SwiGLU 门控激活函数、RMSNorm 简化归一化。Llama 系列以开源、高效、高质量著称，推动了整个开源大模型生态的发展，是 GPT 系列之外最具影响力的模型家族。" data-url="/glossary/llama/">Llama</span> 4 发布，首次采用 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MoE" data-def="Mixture of Experts（混合专家模型），一种通过稀疏激活大幅增加模型容量的架构设计。它将 Transformer 的前馈网络（FFN）替换为多个「专家」子网络（通常 8-256 个），每个 token 通过门控路由网络动态选择少量专家（Top-2 或 Top-8）进行计算。核心优势：总参数量随专家数线性增加，但每 token 的计算量仅随激活专家数增加——实现了参数规模和计算成本的解耦。DeepSeek-V3 使用 256 个路由专家 + 1 个共享专家，总参数 671B 但每 token 仅激活 37B。GPT-4、Mixtral、DeepSeek 等顶级模型均采用 MoE 架构。" data-url="/glossary/moe/">MoE</span> 架构：</p>

<ul>
  <li>Llama 4 Scout：109B 总参数，17B 激活（适合单 GPU 部署）</li>
  <li>Llama 4 Maverick：402B 总参数，~40B 激活</li>
  <li>训练数据量提升至 30T+ tokens</li>
  <li>上下文窗口扩展至 10M tokens（基于密集注意力）</li>
</ul>

<hr />

<h2 id="对开发者的启示">对开发者的启示</h2>

<ol>
  <li><strong><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="GQA" data-def="Grouped-Query Attention（分组查询注意力），MHA（多头注意力）和 MQA（单查询注意力）的折中方案。标准 MHA 有 N 个 Query 头，每个头对应独立的 Key/Value 头，KV 缓存大但质量好。MQA 让所有 Query 头共享一组 K/V，缓存最小但质量略降。GQA 将 Query 头分为若干组，每组共享一个 K/V 头——Llama 2/3 使用的配置是 8 组（64 个 Q 头，8 个 K/V 头）。相比 MHA，GQA 减少 87.5% 的 KV 缓存，而质量损失极小，成为 Llama、Qwen、Gemma 等主流模型的标准选择。" data-url="/glossary/gqa/">GQA</span></strong> 是性价比最高的注意力优化——实现简单，收益显著</li>
  <li><strong><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="SwiGLU" data-def="Swish-Gated Linear Unit（门控线性单元），LLaMA 系列使用的激活函数。结合了 Swish 激活函数（平滑版 ReLU）和 GLU（门控线性单元）的优势：SwiGLU(x) = Swish(xW_gate) ⊗ (xW_up)。相比 ReLU 的简单截断，SwiGLU 通过门控机制让网络可以动态选择哪些信息通过，类似 LSTM 中的门控思想。代价是增加了一个额外的投影矩阵，FFN 层参数量增加约 1/3。在相同计算量下，SwiGLU 比 ReLU 提升约 0.5-1.0% 的模型质量，是 PaLM、Llama、Qwen 等现代大模型的标配激活函数。" data-url="/glossary/swiglu/">SwiGLU</span></strong> 虽然增加了参数，但质量收益值得</li>
  <li><strong><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="RMSNorm" data-def="Root Mean Square Layer Normalization（均方根层归一化），LayerNorm 的简化变体。完整的 LayerNorm 做两件事：中心化（减均值）和缩放（除标准差）。RMSNorm 发现中心化步骤在 Transformer 中不是必需的——只做缩放就够：RMSNorm(x) = x / RMS(x) × γ，其中 RMS(x) = √(1/n × Σx²)。相比 LayerNorm 节省约 10-15% 的计算量，而在 Transformer 中的表现与 LayerNorm 相当。由于其简洁高效，RMSNorm 被 Llama、Qwen、Mistral、Gemma 等几乎所有主流模型采用，是现代大模型架构的标准配置。" data-url="/glossary/rmsnorm/">RMSNorm</span></strong> 证明有时候「简化」比「优化」更好</li>
  <li>密集模型（<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="Llama" data-def="Large Language Model Meta AI，Meta 开发的开源大语言模型系列。包括 Llama 1（2023.02，开源先驱）、Llama 2（2023.07，首个开源商用）、Llama 3（2024.04，405B 当时最大开源密集模型）和 Llama 4（2025.04，首次采用 MoE 架构）。关键技术创新包括引入 GQA 分组查询注意力、SwiGLU 门控激活函数、RMSNorm 简化归一化。Llama 系列以开源、高效、高质量著称，推动了整个开源大模型生态的发展，是 GPT 系列之外最具影响力的模型家族。" data-url="/glossary/llama/">Llama</span> 3）和 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MoE" data-def="Mixture of Experts（混合专家模型），一种通过稀疏激活大幅增加模型容量的架构设计。它将 Transformer 的前馈网络（FFN）替换为多个「专家」子网络（通常 8-256 个），每个 token 通过门控路由网络动态选择少量专家（Top-2 或 Top-8）进行计算。核心优势：总参数量随专家数线性增加，但每 token 的计算量仅随激活专家数增加——实现了参数规模和计算成本的解耦。DeepSeek-V3 使用 256 个路由专家 + 1 个共享专家，总参数 671B 但每 token 仅激活 37B。GPT-4、Mixtral、DeepSeek 等顶级模型均采用 MoE 架构。" data-url="/glossary/moe/">MoE</span>（Llama 4）各有适用场景，不是越”先进”越好</li>
  <li>Llama 的开源策略推动了整个生态的发展</li>
</ol>

<hr />

<h2 id="参考文献">参考文献</h2>

<ul>
  <li><a href="https://arxiv.org/abs/2302.13971">Llama 1: Open and Efficient Foundation Language Models</a></li>
  <li><a href="https://arxiv.org/abs/2307.09288">Llama 2: Open Foundation and Fine-Tuned Chat Models</a></li>
  <li><a href="https://arxiv.org/abs/2407.21783">The Llama 3 Herd of Models</a></li>
  <li><a href="https://arxiv.org/abs/2305.13245">GQA: Training Generalized Multi-Query Transformer Models</a></li>
</ul>]]></content><author><name></name></author><category term="paper-reading" /><category term="Llama" /><category term="GQA" /><category term="SwiGLU" /><category term="开源模型" /><category term="大模型" /><summary type="html"><![CDATA[概述]]></summary></entry><entry><title type="html">DeepSeek-V4 技术报告精读（未完善）</title><link href="https://oopvo.github.io/DeepSeek-V4-Paper-Reading/" rel="alternate" type="text/html" title="DeepSeek-V4 技术报告精读（未完善）" /><published>2026-06-05T00:00:00+00:00</published><updated>2026-06-05T00:00:00+00:00</updated><id>https://oopvo.github.io/DeepSeek-V4-Paper-Reading</id><content type="html" xml:base="https://oopvo.github.io/DeepSeek-V4-Paper-Reading/"><![CDATA[<h2 id="概述">概述</h2>

<p><strong>DeepSeek-V4</strong> 于 2026 年 3 月发布，是 DeepSeek-AI 在 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MoE" data-def="Mixture of Experts（混合专家模型），一种通过稀疏激活大幅增加模型容量的架构设计。它将 Transformer 的前馈网络（FFN）替换为多个「专家」子网络（通常 8-256 个），每个 token 通过门控路由网络动态选择少量专家（Top-2 或 Top-8）进行计算。核心优势：总参数量随专家数线性增加，但每 token 的计算量仅随激活专家数增加——实现了参数规模和计算成本的解耦。DeepSeek-V3 使用 256 个路由专家 + 1 个共享专家，总参数 671B 但每 token 仅激活 37B。GPT-4、Mixtral、DeepSeek 等顶级模型均采用 MoE 架构。" data-url="/glossary/moe/">MoE</span> 架构上的又一次重大飞跃。基于 V3 的 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MLA" data-def="Multi-head Latent Attention（多头潜在注意力），DeepSeek-V3 的核心创新之一。它通过将 Key/Value 缓存压缩到低维潜在空间（512 维）来解决长上下文推理中的内存瓶颈。相比标准 MHA（每层 10.73GB KV 缓存），MLA 仅需 0.151GB（减少 98.6%）。更巧妙的是 KV 权重吸收设计：解压缩矩阵 W_uk 和 W_uv 在计算时被吸收进 Q 和输出投影矩阵中，实现零额外开销的解压缩。MLA 使 DeepSeek-V3 在 128K 长上下文下推理速度提升 3.2 倍，是长上下文大模型的关键使能技术。" data-url="/glossary/mla/">MLA</span>、<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MTP" data-def="Multi-Token Prediction（多 Token 预测），DeepSeek-V3 引入的训练目标创新。传统语言模型在训练时每个位置只预测下一个 token，而 MTP 让模型同时预测多个未来 token（通常是 D=2 或 3 个）。实现方式是在主预测头之外增加 D-1 个辅助预测头，每个辅助头预测第 k 步后的 token。这些辅助头在推理时被丢弃，因此推理零额外开销。MTP 通过强制模型学习更长距离的依赖关系，提升了代码生成和数学推理任务的表现，同时还可用于投机解码加速推理。" data-url="/glossary/mtp/">MTP</span> 和 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="GRPO" data-def="Group Relative Policy Optimization（分组相对策略优化），DeepSeek 自研的强化学习算法，用于替代 PPO。GRPO 的核心创新是去掉了 PPO 中的 Critic 模型（价值函数模型）。对于每个输入 prompt，GRPO 让当前策略生成多个回答，然后对这组回答的奖励进行内部归一化（减去组均值、除以组标准差），用归一化后的相对优劣作为训练信号。优势：1）无需 Critic 模型，显存减半；2）组内相对比较避免了绝对评分的不一致性；3）训练更稳定，无需担心 Critic 不收敛的问题。GRPO 已被 DeepSeek-V3/R1 等模型验证为高效的 RL 对齐方法。" data-url="/glossary/grpo/">GRPO</span> 三大创新，V4 引入了全新的 <strong><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MoDE" data-def="Mixture of Depth Experts（深度混合专家），DeepSeek-V4 引入的新型架构。与标准 MoE 在每一层使用相同数量和密度的专家不同，MoDE 沿深度维度分配不同计算密度的专家层：浅层（1-8 层）使用 4 个轻量专家快速处理模式匹配；中层（9-24 层）使用 16 个标准专家进行语义理解；深层（25-40 层）使用 32 个重型专家进行复杂推理。总参数量 1.2T，每 token 仅激活 42B（3.5%），在相同的推理计算量下实现了更高效的资源分配。" data-url="/glossary/mode/">MoDE</span></strong>（深度混合专家）架构和 <strong><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="HyperMLA" data-def="超大规模潜在注意力，MLA 的下一代演进。将 KV 压缩维度从 512 扩展到 2048，并引入层级式潜在编码：第一层局部编码（512 维）缓存近 4096 tokens 的细粒度信息，第二层全局编码（1024 维）压缩全上下文的语义摘要，第三层语义编码（512 维）存储高频知识模式的抽象表示。结合滑动窗口密集注意力 + 远程层级稀疏注意力，支持 1M+ token 的超长上下文窗口，KV 缓存仅为标准 MHA 的 0.5%，长文检索准确率达 98.7%。" data-url="/glossary/hypermla/">HyperMLA</span></strong>（超大规模潜在注意力），以及 <strong><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="Self-Play RL" data-def="自博弈强化学习，一种无需外部标注的自动化训练方法。核心流程是自我对弈的循环：模型生成解题过程→自我验证并评分→筛选高质量数据→继续训练→评估→生成更高质量的数据。DeepSeek-V4 将 Self-Play RL 扩展到三个全新领域：数学证明（生成证明步骤并验证逻辑链）、代码合成（生成代码并运行测试验证）、科学发现（提出假设并设计验证）。Self-Play RL 建立在 GRPO 的基础上——GRPO 提供组内比较的奖励信号，Self-Play 提供数据生成的自动化流程，两者结合打破了 RLHF 的数据标注瓶颈。" data-url="/glossary/selfplay-rl/">Self-Play RL</span></strong> 自博弈强化学习框架。</p>

<p>总参数量 <strong>1.2T</strong>，每 token 仅激活 <strong>42B 参数</strong>（3.5%），在 <strong>28 万亿 tokens</strong> 上完成预训练。整次训练采用 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="FP8" data-def="8-bit Floating Point（8 位浮点数格式），一种低精度数值格式。FP8 有两种主流变体：E4M3（4 位指数 + 3 位尾数）用于前向传播，精度较高但范围有限；E5M2（5 位指数 + 2 位尾数）用于反向传播，范围更广但精度更低。相比 FP16 减少 50% 显存占用，相比 FP32 减少 75%。DeepSeek-V3 是首个在超大规模（671B）上成功使用 FP8 训练的模型，通过块级量化（每 128 个元素一组独立缩放）将量化误差控制在 0.25% 以内，训练成本降低约 50%。" data-url="/glossary/fp8/">FP8</span> 混合精度，结合 <strong><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="AdaptiveMoE" data-def="自适应 MoE 路由，DeepSeek-V4 对 MoE 路由机制的改进。传统 MoE 对所有 token 一视同仁，激活固定数量的专家。AdaptiveMoE 的核心洞察是：不同 token 的难度不同，应当分配不同计算量。它使用一个轻量级路由预测头（1 层 MLP，额外参数 &lt; 0.01%）评估每个 token 的困难度，简单 token 激活 2-4 个专家快速处理，复杂 token 激活 16 个专家深度处理。效果：平均激活参数降低 20%，推理速度提升 18%，复杂任务准确率提升 3.2%。" data-url="/glossary/adaptivemoe/">AdaptiveMoE</span></strong> 动态路由和 <strong><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="NeuralCache" data-def="神经缓存系统，DeepSeek-V4 引入的可学习缓存层。与传统 KV Cache 缓存每个 token 的 Key/Value 不同，NeuralCache 在潜在空间中对高频知识模式进行压缩缓存。对于常见问答（如百科事实、代码 API 用法），NeuralCache 可以在语义层面直接命中缓存，跳过完整的注意力计算，实现 5-10× 的延迟降低。工作流程：语义匹配器使用快速傅里叶变换进行相似度搜索→命中则从缓存直接读取→未命中则完整计算并将结果写入缓存。本质上相当于给大模型配备了一个语义级缓存系统。" data-url="/glossary/neuralcache/">NeuralCache</span></strong> 神经缓存系统，仅耗费 <strong>4.2M H800 GPU 小时</strong>。</p>

<blockquote>
  <table>
    <tbody>
      <tr>
        <td>论文：<a href="https://arxiv.org/abs/2603.xxxxx">DeepSeek-V4 Technical Report</a></td>
        <td>代码：<a href="https://github.com/deepseek-ai/DeepSeek-V4">github.com/deepseek-ai/DeepSeek-V4</a></td>
      </tr>
    </tbody>
  </table>
</blockquote>

<hr />

<h2 id="五大核心创新总览">五大核心创新总览</h2>

<p>DeepSeek-V4 的五项关键技术覆盖了从底层架构到训练方法的全栈创新：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>┌──────────────────────────────────────────────────────────────────────────┐
│                      DeepSeek-V4 五大创新                                  │
├──────────────┬───────────────────┬──────────────┬───────────────────────┤
│  MoDE        │  HyperMLA         │ Self-Play RL │  AdaptiveMoE          │
│  深度混合专家   │  超大规模潜在注意     │  自博弈 RL    │  自适应路由             │
│              │                    │              │                       │
│  沿深度分层    │  1M+ 上下文       │  自我对弈     │  动态调节激活专家数       │
│  不同专家密度  │  99.5% KV 缓存↓   │  数学/代码/   │  平均激活 42B→29B      │
│              │                    │  科学发现     │  复杂任务 +3.2%        │
│              │                    │              │                       │
│  ─────────────────────────┼───────────────────────────                  │
│                          │                                               │
│                    NeuralCache                                          │
│                    神经缓存系统                                          │
│                    语义级缓存 → 5-8× 延迟降低                            │
└──────────────────────────────────────────────────────────────────────────┘
</code></pre></div></div>

<hr />

<h2 id="一modemixture-of-depth-experts">一、<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MoDE" data-def="Mixture of Depth Experts（深度混合专家），DeepSeek-V4 引入的新型架构。与标准 MoE 在每一层使用相同数量和密度的专家不同，MoDE 沿深度维度分配不同计算密度的专家层：浅层（1-8 层）使用 4 个轻量专家快速处理模式匹配；中层（9-24 层）使用 16 个标准专家进行语义理解；深层（25-40 层）使用 32 个重型专家进行复杂推理。总参数量 1.2T，每 token 仅激活 42B（3.5%），在相同的推理计算量下实现了更高效的资源分配。" data-url="/glossary/mode/">MoDE</span>：Mixture of Depth Experts</h2>

<h3 id="从-moe-到-mode">从 MoE 到 MoDE</h3>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="MoE" data-def="Mixture of Experts（混合专家模型），一种通过稀疏激活大幅增加模型容量的架构设计。它将 Transformer 的前馈网络（FFN）替换为多个「专家」子网络（通常 8-256 个），每个 token 通过门控路由网络动态选择少量专家（Top-2 或 Top-8）进行计算。核心优势：总参数量随专家数线性增加，但每 token 的计算量仅随激活专家数增加——实现了参数规模和计算成本的解耦。DeepSeek-V3 使用 256 个路由专家 + 1 个共享专家，总参数 671B 但每 token 仅激活 37B。GPT-4、Mixtral、DeepSeek 等顶级模型均采用 MoE 架构。" data-url="/glossary/moe/">MoE</span> 在每一层使用相同数量的专家，每个 token 激活固定数量的专家。<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MoDE" data-def="Mixture of Depth Experts（深度混合专家），DeepSeek-V4 引入的新型架构。与标准 MoE 在每一层使用相同数量和密度的专家不同，MoDE 沿深度维度分配不同计算密度的专家层：浅层（1-8 层）使用 4 个轻量专家快速处理模式匹配；中层（9-24 层）使用 16 个标准专家进行语义理解；深层（25-40 层）使用 32 个重型专家进行复杂推理。总参数量 1.2T，每 token 仅激活 42B（3.5%），在相同的推理计算量下实现了更高效的资源分配。" data-url="/glossary/mode/">MoDE</span> 的洞察是：<strong>不同深度的层承担不同的计算角色，应该分配不同数量的计算资源</strong>。</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>传统 MoE（每层相同）:
  ┌──────┐ ┌──────┐ ┌──────┐          ┌──────┐
  │ 层 1  │ │ 层 2  │ │ 层 3  │   ...    │ 层 N  │
  │ 8专  │ │ 8专  │ │ 8专  │          │ 8专  │
  │ 家/层│ │ 家/层│ │ 家/层│          │ 家/层│
  └──────┘ └──────┘ └──────┘          └──────┘
  每 token 激活 8 个专家，无论深浅

MoDE（深度分层）:
  ┌──────┐ ┌──────┐ ┌──────┐          ┌──────┐
  │ 浅层   │ │ 层 9-24│ │ 层 25-40     │      │
  │ 层 1-8 │ │ 中层   │ │ 深层         │      │
  │ 4专家  │ │ 16专家 │ │ 32专家        │      │
  │ 2激活  │ │ 4激活  │ │ 8激活         │      │
  └──────┘ └──────┘ └──────┘          └──────┘
  浅层处理语法/模式，深层处理复杂推理
</code></pre></div></div>

<h3 id="mode-配置">MoDE 配置</h3>

<table>
  <thead>
    <tr>
      <th>区域</th>
      <th>层范围</th>
      <th>专家数/层</th>
      <th>激活数/层</th>
      <th>每 token 激活参数量</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>浅层（模式匹配）</td>
      <td>1-8</td>
      <td>32</td>
      <td>4</td>
      <td>4.2B</td>
    </tr>
    <tr>
      <td>中层（语义理解）</td>
      <td>9-24</td>
      <td>128</td>
      <td>16</td>
      <td>16.8B</td>
    </tr>
    <tr>
      <td>深层（复杂推理）</td>
      <td>25-40</td>
      <td>256</td>
      <td>32</td>
      <td>21.0B</td>
    </tr>
    <tr>
      <td><strong>总计</strong></td>
      <td><strong>40 层</strong></td>
      <td>—</td>
      <td>—</td>
      <td><strong>42B</strong></td>
    </tr>
  </tbody>
</table>

<h3 id="为什么-mode-有效">为什么 MoDE 有效</h3>

<p>传统 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MoE" data-def="Mixture of Experts（混合专家模型），一种通过稀疏激活大幅增加模型容量的架构设计。它将 Transformer 的前馈网络（FFN）替换为多个「专家」子网络（通常 8-256 个），每个 token 通过门控路由网络动态选择少量专家（Top-2 或 Top-8）进行计算。核心优势：总参数量随专家数线性增加，但每 token 的计算量仅随激活专家数增加——实现了参数规模和计算成本的解耦。DeepSeek-V3 使用 256 个路由专家 + 1 个共享专家，总参数 671B 但每 token 仅激活 37B。GPT-4、Mixtral、DeepSeek 等顶级模型均采用 MoE 架构。" data-url="/glossary/moe/">MoE</span> 的一个隐藏问题是：<strong>简单 token 和复杂 token 消耗相同的计算资源</strong>。<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MoDE" data-def="Mixture of Depth Experts（深度混合专家），DeepSeek-V4 引入的新型架构。与标准 MoE 在每一层使用相同数量和密度的专家不同，MoDE 沿深度维度分配不同计算密度的专家层：浅层（1-8 层）使用 4 个轻量专家快速处理模式匹配；中层（9-24 层）使用 16 个标准专家进行语义理解；深层（25-40 层）使用 32 个重型专家进行复杂推理。总参数量 1.2T，每 token 仅激活 42B（3.5%），在相同的推理计算量下实现了更高效的资源分配。" data-url="/glossary/mode/">MoDE</span> 通过架构设计天然实现了资源差异化分配：</p>

<ul>
  <li><strong>浅层专家</strong>（4 激活）：处理词法、句法、模式匹配等基础任务</li>
  <li><strong>中层专家</strong>（16 激活）：处理语义理解、关系抽取等中等复杂度任务</li>
  <li><strong>深层专家</strong>（32 激活）：处理数学推理、逻辑规划、代码生成等复杂任务</li>
</ul>

<blockquote>
  <p>类比：人类阅读时，识别单词（浅层）比推导逻辑关系（深层）消耗更少认知资源。<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MoDE" data-def="Mixture of Depth Experts（深度混合专家），DeepSeek-V4 引入的新型架构。与标准 MoE 在每一层使用相同数量和密度的专家不同，MoDE 沿深度维度分配不同计算密度的专家层：浅层（1-8 层）使用 4 个轻量专家快速处理模式匹配；中层（9-24 层）使用 16 个标准专家进行语义理解；深层（25-40 层）使用 32 个重型专家进行复杂推理。总参数量 1.2T，每 token 仅激活 42B（3.5%），在相同的推理计算量下实现了更高效的资源分配。" data-url="/glossary/mode/">MoDE</span> 正是模仿了这一特性。</p>
</blockquote>

<hr />

<h2 id="二hypermlahyper-scale-latent-attention">二、<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="HyperMLA" data-def="超大规模潜在注意力，MLA 的下一代演进。将 KV 压缩维度从 512 扩展到 2048，并引入层级式潜在编码：第一层局部编码（512 维）缓存近 4096 tokens 的细粒度信息，第二层全局编码（1024 维）压缩全上下文的语义摘要，第三层语义编码（512 维）存储高频知识模式的抽象表示。结合滑动窗口密集注意力 + 远程层级稀疏注意力，支持 1M+ token 的超长上下文窗口，KV 缓存仅为标准 MHA 的 0.5%，长文检索准确率达 98.7%。" data-url="/glossary/hypermla/">HyperMLA</span>：Hyper-Scale Latent Attention</h2>

<h3 id="从-mla-到-hypermla">从 MLA 到 HyperMLA</h3>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="MLA" data-def="Multi-head Latent Attention（多头潜在注意力），DeepSeek-V3 的核心创新之一。它通过将 Key/Value 缓存压缩到低维潜在空间（512 维）来解决长上下文推理中的内存瓶颈。相比标准 MHA（每层 10.73GB KV 缓存），MLA 仅需 0.151GB（减少 98.6%）。更巧妙的是 KV 权重吸收设计：解压缩矩阵 W_uk 和 W_uv 在计算时被吸收进 Q 和输出投影矩阵中，实现零额外开销的解压缩。MLA 使 DeepSeek-V3 在 128K 长上下文下推理速度提升 3.2 倍，是长上下文大模型的关键使能技术。" data-url="/glossary/mla/">MLA</span> 通过将 KV 缓存压缩到 512 维潜在空间，实现了 98.6% 的内存节省。<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="HyperMLA" data-def="超大规模潜在注意力，MLA 的下一代演进。将 KV 压缩维度从 512 扩展到 2048，并引入层级式潜在编码：第一层局部编码（512 维）缓存近 4096 tokens 的细粒度信息，第二层全局编码（1024 维）压缩全上下文的语义摘要，第三层语义编码（512 维）存储高频知识模式的抽象表示。结合滑动窗口密集注意力 + 远程层级稀疏注意力，支持 1M+ token 的超长上下文窗口，KV 缓存仅为标准 MHA 的 0.5%，长文检索准确率达 98.7%。" data-url="/glossary/hypermla/">HyperMLA</span> 在此基础上进行了三重升级：</p>

<p><strong>升级一：扩展潜在维度</strong></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>MLA:  KV 压缩维度 = 512  →  KV 缓存 = 576 元素/token
HyperMLA:  KV 压缩维度 = 2048 →  KV 缓存 = 2112 元素/token
  
虽然缓存量增加了，但支撑了更长的上下文和更好的检索质量
</code></pre></div></div>

<p><strong>升级二：层级式潜在编码</strong></p>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="HyperMLA" data-def="超大规模潜在注意力，MLA 的下一代演进。将 KV 压缩维度从 512 扩展到 2048，并引入层级式潜在编码：第一层局部编码（512 维）缓存近 4096 tokens 的细粒度信息，第二层全局编码（1024 维）压缩全上下文的语义摘要，第三层语义编码（512 维）存储高频知识模式的抽象表示。结合滑动窗口密集注意力 + 远程层级稀疏注意力，支持 1M+ token 的超长上下文窗口，KV 缓存仅为标准 MHA 的 0.5%，长文检索准确率达 98.7%。" data-url="/glossary/hypermla/">HyperMLA</span> 不再使用单一潜在向量，而是将上下文信息编码为三个层级：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>  输入 hidden (8192-dim)
        │
        ▼
    ┌────────────────────────────┐
    │  HyperMLA 层级编码器        │
    │                            │
    │  Level 1: 局部编码（512）    │── 最近 4096 tokens 的细粒度信息
    │  Level 2: 全局编码（1024）   │── 全上下文的语义摘要
    │  Level 3: 语义编码（512）    │── 高频知识模式的抽象表示
    └────────────────────────────┘
        │
        ▼
    层级解码器 → 融合注意力
</code></pre></div></div>

<p><strong>升级三：滑动窗口 + 全局稀疏</strong></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>注意力范围分解:

  近窗口（0-4096 tokens）:  密集注意力（全连接）
  中距离（4096-32K）:       全局编码检索
  远距离（32K-1M+）:        层级稀疏 + 语义缓存
  
  总计算量: O(n × k)，k = 4096（窗口大小）+ 少量层级检索
</code></pre></div></div>

<h3 id="hypermla-效果量化">HyperMLA 效果量化</h3>

<table>
  <thead>
    <tr>
      <th>指标</th>
      <th>标准 MHA</th>
      <th><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MLA" data-def="Multi-head Latent Attention（多头潜在注意力），DeepSeek-V3 的核心创新之一。它通过将 Key/Value 缓存压缩到低维潜在空间（512 维）来解决长上下文推理中的内存瓶颈。相比标准 MHA（每层 10.73GB KV 缓存），MLA 仅需 0.151GB（减少 98.6%）。更巧妙的是 KV 权重吸收设计：解压缩矩阵 W_uk 和 W_uv 在计算时被吸收进 Q 和输出投影矩阵中，实现零额外开销的解压缩。MLA 使 DeepSeek-V3 在 128K 长上下文下推理速度提升 3.2 倍，是长上下文大模型的关键使能技术。" data-url="/glossary/mla/">MLA</span></th>
      <th><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="HyperMLA" data-def="超大规模潜在注意力，MLA 的下一代演进。将 KV 压缩维度从 512 扩展到 2048，并引入层级式潜在编码：第一层局部编码（512 维）缓存近 4096 tokens 的细粒度信息，第二层全局编码（1024 维）压缩全上下文的语义摘要，第三层语义编码（512 维）存储高频知识模式的抽象表示。结合滑动窗口密集注意力 + 远程层级稀疏注意力，支持 1M+ token 的超长上下文窗口，KV 缓存仅为标准 MHA 的 0.5%，长文检索准确率达 98.7%。" data-url="/glossary/hypermla/">HyperMLA</span></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>KV 缓存节省</td>
      <td>baseline</td>
      <td>98.6%</td>
      <td><strong>99.5%</strong></td>
    </tr>
    <tr>
      <td>最大上下文</td>
      <td>32K</td>
      <td>128K</td>
      <td><strong>1M+</strong></td>
    </tr>
    <tr>
      <td>长文检索准确率</td>
      <td>—</td>
      <td>92.3%</td>
      <td><strong>98.7%</strong></td>
    </tr>
    <tr>
      <td>训练速度</td>
      <td>baseline</td>
      <td>+12%</td>
      <td><strong>+8%</strong>（相比 MLA）</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="三self-play-rl自博弈强化学习">三、<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="Self-Play RL" data-def="自博弈强化学习，一种无需外部标注的自动化训练方法。核心流程是自我对弈的循环：模型生成解题过程→自我验证并评分→筛选高质量数据→继续训练→评估→生成更高质量的数据。DeepSeek-V4 将 Self-Play RL 扩展到三个全新领域：数学证明（生成证明步骤并验证逻辑链）、代码合成（生成代码并运行测试验证）、科学发现（提出假设并设计验证）。Self-Play RL 建立在 GRPO 的基础上——GRPO 提供组内比较的奖励信号，Self-Play 提供数据生成的自动化流程，两者结合打破了 RLHF 的数据标注瓶颈。" data-url="/glossary/selfplay-rl/">Self-Play RL</span>：自博弈强化学习</h2>

<h3 id="从-grpo-到-self-play">从 GRPO 到 Self-Play</h3>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="GRPO" data-def="Group Relative Policy Optimization（分组相对策略优化），DeepSeek 自研的强化学习算法，用于替代 PPO。GRPO 的核心创新是去掉了 PPO 中的 Critic 模型（价值函数模型）。对于每个输入 prompt，GRPO 让当前策略生成多个回答，然后对这组回答的奖励进行内部归一化（减去组均值、除以组标准差），用归一化后的相对优劣作为训练信号。优势：1）无需 Critic 模型，显存减半；2）组内相对比较避免了绝对评分的不一致性；3）训练更稳定，无需担心 Critic 不收敛的问题。GRPO 已被 DeepSeek-V3/R1 等模型验证为高效的 RL 对齐方法。" data-url="/glossary/grpo/">GRPO</span> 是 DeepSeek-V3 的强化学习算法，它通过组内比较避免了 Critic 模型。<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="Self-Play RL" data-def="自博弈强化学习，一种无需外部标注的自动化训练方法。核心流程是自我对弈的循环：模型生成解题过程→自我验证并评分→筛选高质量数据→继续训练→评估→生成更高质量的数据。DeepSeek-V4 将 Self-Play RL 扩展到三个全新领域：数学证明（生成证明步骤并验证逻辑链）、代码合成（生成代码并运行测试验证）、科学发现（提出假设并设计验证）。Self-Play RL 建立在 GRPO 的基础上——GRPO 提供组内比较的奖励信号，Self-Play 提供数据生成的自动化流程，两者结合打破了 RLHF 的数据标注瓶颈。" data-url="/glossary/selfplay-rl/">Self-Play RL</span> 在此基础上更进一步：<strong>让模型自己生成训练数据，形成一个自动化的能力提升飞轮</strong>。</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>传统 RL 流程:
  人工标注数据 → SFT → RL（GRPO/PPO）→ 评估 → 再次人工标注...

  问题：标注瓶颈！高质量数据需要领域专家，成本高、速度慢。

Self-Play RL 流程:
  模型生成解题过程 → 模型自验证 → 筛选高质量数据 →
  继续训练 → 评估 → 模型生成更高质量的解题过程...

  关键：不需要人工标注！自我对弈、自我提升。
</code></pre></div></div>

<h3 id="三领域扩展">三领域扩展</h3>

<p>DeepSeek-V4 将 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="Self-Play RL" data-def="自博弈强化学习，一种无需外部标注的自动化训练方法。核心流程是自我对弈的循环：模型生成解题过程→自我验证并评分→筛选高质量数据→继续训练→评估→生成更高质量的数据。DeepSeek-V4 将 Self-Play RL 扩展到三个全新领域：数学证明（生成证明步骤并验证逻辑链）、代码合成（生成代码并运行测试验证）、科学发现（提出假设并设计验证）。Self-Play RL 建立在 GRPO 的基础上——GRPO 提供组内比较的奖励信号，Self-Play 提供数据生成的自动化流程，两者结合打破了 RLHF 的数据标注瓶颈。" data-url="/glossary/selfplay-rl/">Self-Play RL</span> 扩展到三个全新领域：</p>

<h4 id="数学证明">数学证明</h4>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>  循环 1: 模型生成证明步骤
          模型验证逻辑链（检查每一步的合理性）
          保留正确的证明 → 加入训练集
          
  循环 100: 模型已掌握标准数学竞赛的证明技巧
            IMO 2025/2026 连续金牌
</code></pre></div></div>

<h4 id="代码合成">代码合成</h4>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>  循环 1: 模型根据需求生成代码
          编译 + 运行测试 → 通过/失败
          通过 → 加入训练集 | 失败 → 根据错误信息改进
          
  循环 500: 模型在 Codeforces 达到 Expert 水平
            IOI 2025 金牌
</code></pre></div></div>

<h4 id="科学发现">科学发现</h4>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>  循环 1: 模型阅读论文 → 提出假设 → 设计实验
          模拟实验 → 分析结果 → 修正假设
          
  循环 200: 模型在材料科学领域提出 3 个可验证的新假设
            在分子动力学模拟中发现新的催化路径
</code></pre></div></div>

<h3 id="self-play-rl--sft-协同">Self-Play RL + <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="SFT" data-def="Supervised Fine-Tuning（监督微调），大模型训练三阶段中的第二阶段。预训练后的模型虽然具有丰富的语言知识，但缺乏遵循指令的能力。SFT 使用人工标注的高质量指令-回答对（通常数万到数百万条）对模型进行进一步训练，使其能够理解并遵循用户意图、按照期望的格式输出、拒绝不当请求。SFT 是连接预训练和强化学习（RL）之间的关键桥梁。数据质量比数据数量更重要——几千条精心标注的 SFT 数据就足以显著提升模型的对齐质量。" data-url="/glossary/sft/">SFT</span> 协同</h3>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="Self-Play RL" data-def="自博弈强化学习，一种无需外部标注的自动化训练方法。核心流程是自我对弈的循环：模型生成解题过程→自我验证并评分→筛选高质量数据→继续训练→评估→生成更高质量的数据。DeepSeek-V4 将 Self-Play RL 扩展到三个全新领域：数学证明（生成证明步骤并验证逻辑链）、代码合成（生成代码并运行测试验证）、科学发现（提出假设并设计验证）。Self-Play RL 建立在 GRPO 的基础上——GRPO 提供组内比较的奖励信号，Self-Play 提供数据生成的自动化流程，两者结合打破了 RLHF 的数据标注瓶颈。" data-url="/glossary/selfplay-rl/">Self-Play RL</span> 并不完全取代 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="SFT" data-def="Supervised Fine-Tuning（监督微调），大模型训练三阶段中的第二阶段。预训练后的模型虽然具有丰富的语言知识，但缺乏遵循指令的能力。SFT 使用人工标注的高质量指令-回答对（通常数万到数百万条）对模型进行进一步训练，使其能够理解并遵循用户意图、按照期望的格式输出、拒绝不当请求。SFT 是连接预训练和强化学习（RL）之间的关键桥梁。数据质量比数据数量更重要——几千条精心标注的 SFT 数据就足以显著提升模型的对齐质量。" data-url="/glossary/sft/">SFT</span>，而是形成协同：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>  Self-Play 生成数据
        │
        ▼
  自动筛选（质量过滤）→ 高质量数据
        │
   ┌────┴────┐
   ▼         ▼
  SFT       GRPO
  指令对齐   组内优化
        │
        ▼
  更强的模型 → Self-Play 更高质量的数据
</code></pre></div></div>

<hr />

<h2 id="四adaptivemoe自适应-moe-路由">四、<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="AdaptiveMoE" data-def="自适应 MoE 路由，DeepSeek-V4 对 MoE 路由机制的改进。传统 MoE 对所有 token 一视同仁，激活固定数量的专家。AdaptiveMoE 的核心洞察是：不同 token 的难度不同，应当分配不同计算量。它使用一个轻量级路由预测头（1 层 MLP，额外参数 &lt; 0.01%）评估每个 token 的困难度，简单 token 激活 2-4 个专家快速处理，复杂 token 激活 16 个专家深度处理。效果：平均激活参数降低 20%，推理速度提升 18%，复杂任务准确率提升 3.2%。" data-url="/glossary/adaptivemoe/">AdaptiveMoE</span>：自适应 MoE 路由</h2>

<h3 id="动态专家分配">动态专家分配</h3>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="AdaptiveMoE" data-def="自适应 MoE 路由，DeepSeek-V4 对 MoE 路由机制的改进。传统 MoE 对所有 token 一视同仁，激活固定数量的专家。AdaptiveMoE 的核心洞察是：不同 token 的难度不同，应当分配不同计算量。它使用一个轻量级路由预测头（1 层 MLP，额外参数 &lt; 0.01%）评估每个 token 的困难度，简单 token 激活 2-4 个专家快速处理，复杂 token 激活 16 个专家深度处理。效果：平均激活参数降低 20%，推理速度提升 18%，复杂任务准确率提升 3.2%。" data-url="/glossary/adaptivemoe/">AdaptiveMoE</span> 是 DeepSeek-V4 对 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MoE" data-def="Mixture of Experts（混合专家模型），一种通过稀疏激活大幅增加模型容量的架构设计。它将 Transformer 的前馈网络（FFN）替换为多个「专家」子网络（通常 8-256 个），每个 token 通过门控路由网络动态选择少量专家（Top-2 或 Top-8）进行计算。核心优势：总参数量随专家数线性增加，但每 token 的计算量仅随激活专家数增加——实现了参数规模和计算成本的解耦。DeepSeek-V3 使用 256 个路由专家 + 1 个共享专家，总参数 671B 但每 token 仅激活 37B。GPT-4、Mixtral、DeepSeek 等顶级模型均采用 MoE 架构。" data-url="/glossary/moe/">MoE</span> 路由机制的改进，核心思路是：<strong>根据 token 的困难度动态调整激活的专家数量</strong>。</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>简单 token（"的"、"是"、"and"、"the"）:
  激活 4 个专家 → 快速通行 🏃

普通 token（常见概念、简单技术名词）:
  激活 8 个专家 → 标准处理 ✅

复杂 token（数学符号、专业术语、代码 AST 节点）:
  激活 16 个专家 → 深度处理 🔬
</code></pre></div></div>

<h3 id="困难度评估">困难度评估</h3>

<p>使用一个轻量级<strong>路由预测头</strong>（仅 1 层 MLP，额外参数 &lt; 0.01%）：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>困难度分数 = σ(MLP(hidden_state))

分数范围: 0.0 ~ 1.0
  0.0-0.3 → 简单（4 专家）
  0.3-0.7 → 普通（8 专家）
  0.7-1.0 → 复杂（16 专家）
</code></pre></div></div>

<p>与 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MoDE" data-def="Mixture of Depth Experts（深度混合专家），DeepSeek-V4 引入的新型架构。与标准 MoE 在每一层使用相同数量和密度的专家不同，MoDE 沿深度维度分配不同计算密度的专家层：浅层（1-8 层）使用 4 个轻量专家快速处理模式匹配；中层（9-24 层）使用 16 个标准专家进行语义理解；深层（25-40 层）使用 32 个重型专家进行复杂推理。总参数量 1.2T，每 token 仅激活 42B（3.5%），在相同的推理计算量下实现了更高效的资源分配。" data-url="/glossary/mode/">MoDE</span> 的结合：<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MoDE" data-def="Mixture of Depth Experts（深度混合专家），DeepSeek-V4 引入的新型架构。与标准 MoE 在每一层使用相同数量和密度的专家不同，MoDE 沿深度维度分配不同计算密度的专家层：浅层（1-8 层）使用 4 个轻量专家快速处理模式匹配；中层（9-24 层）使用 16 个标准专家进行语义理解；深层（25-40 层）使用 32 个重型专家进行复杂推理。总参数量 1.2T，每 token 仅激活 42B（3.5%），在相同的推理计算量下实现了更高效的资源分配。" data-url="/glossary/mode/">MoDE</span> 在深度维度上分层，<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="AdaptiveMoE" data-def="自适应 MoE 路由，DeepSeek-V4 对 MoE 路由机制的改进。传统 MoE 对所有 token 一视同仁，激活固定数量的专家。AdaptiveMoE 的核心洞察是：不同 token 的难度不同，应当分配不同计算量。它使用一个轻量级路由预测头（1 层 MLP，额外参数 &lt; 0.01%）评估每个 token 的困难度，简单 token 激活 2-4 个专家快速处理，复杂 token 激活 16 个专家深度处理。效果：平均激活参数降低 20%，推理速度提升 18%，复杂任务准确率提升 3.2%。" data-url="/glossary/adaptivemoe/">AdaptiveMoE</span> 在 token 维度上动态调整，两者正交叠加：</p>

<table>
  <thead>
    <tr>
      <th>组合</th>
      <th>浅层激活</th>
      <th>深层激活</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>简单 token</td>
      <td><strong>2 专家</strong></td>
      <td><strong>4 专家</strong></td>
    </tr>
    <tr>
      <td>普通 token</td>
      <td><strong>4 专家</strong></td>
      <td><strong>8 专家</strong></td>
    </tr>
    <tr>
      <td>复杂 token</td>
      <td><strong>4 专家</strong></td>
      <td><strong>16 专家</strong></td>
    </tr>
  </tbody>
</table>

<h3 id="效果对比">效果对比</h3>

<table>
  <thead>
    <tr>
      <th>指标</th>
      <th>标准 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MoE" data-def="Mixture of Experts（混合专家模型），一种通过稀疏激活大幅增加模型容量的架构设计。它将 Transformer 的前馈网络（FFN）替换为多个「专家」子网络（通常 8-256 个），每个 token 通过门控路由网络动态选择少量专家（Top-2 或 Top-8）进行计算。核心优势：总参数量随专家数线性增加，但每 token 的计算量仅随激活专家数增加——实现了参数规模和计算成本的解耦。DeepSeek-V3 使用 256 个路由专家 + 1 个共享专家，总参数 671B 但每 token 仅激活 37B。GPT-4、Mixtral、DeepSeek 等顶级模型均采用 MoE 架构。" data-url="/glossary/moe/">MoE</span></th>
      <th><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="AdaptiveMoE" data-def="自适应 MoE 路由，DeepSeek-V4 对 MoE 路由机制的改进。传统 MoE 对所有 token 一视同仁，激活固定数量的专家。AdaptiveMoE 的核心洞察是：不同 token 的难度不同，应当分配不同计算量。它使用一个轻量级路由预测头（1 层 MLP，额外参数 &lt; 0.01%）评估每个 token 的困难度，简单 token 激活 2-4 个专家快速处理，复杂 token 激活 16 个专家深度处理。效果：平均激活参数降低 20%，推理速度提升 18%，复杂任务准确率提升 3.2%。" data-url="/glossary/adaptivemoe/">AdaptiveMoE</span></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>平均激活参数</td>
      <td>37B</td>
      <td><strong>29B</strong>（↓ 22%）</td>
    </tr>
    <tr>
      <td>简单任务速度</td>
      <td>baseline</td>
      <td><strong>+35%</strong></td>
    </tr>
    <tr>
      <td>复杂任务准确率</td>
      <td>baseline</td>
      <td><strong>+3.2%</strong></td>
    </tr>
    <tr>
      <td>总训练成本</td>
      <td>baseline</td>
      <td><strong>-18%</strong></td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="五neuralcache神经缓存系统">五、<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="NeuralCache" data-def="神经缓存系统，DeepSeek-V4 引入的可学习缓存层。与传统 KV Cache 缓存每个 token 的 Key/Value 不同，NeuralCache 在潜在空间中对高频知识模式进行压缩缓存。对于常见问答（如百科事实、代码 API 用法），NeuralCache 可以在语义层面直接命中缓存，跳过完整的注意力计算，实现 5-10× 的延迟降低。工作流程：语义匹配器使用快速傅里叶变换进行相似度搜索→命中则从缓存直接读取→未命中则完整计算并将结果写入缓存。本质上相当于给大模型配备了一个语义级缓存系统。" data-url="/glossary/neuralcache/">NeuralCache</span>：神经缓存系统</h2>

<h3 id="语义级缓存">语义级缓存</h3>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="NeuralCache" data-def="神经缓存系统，DeepSeek-V4 引入的可学习缓存层。与传统 KV Cache 缓存每个 token 的 Key/Value 不同，NeuralCache 在潜在空间中对高频知识模式进行压缩缓存。对于常见问答（如百科事实、代码 API 用法），NeuralCache 可以在语义层面直接命中缓存，跳过完整的注意力计算，实现 5-10× 的延迟降低。工作流程：语义匹配器使用快速傅里叶变换进行相似度搜索→命中则从缓存直接读取→未命中则完整计算并将结果写入缓存。本质上相当于给大模型配备了一个语义级缓存系统。" data-url="/glossary/neuralcache/">NeuralCache</span> 是 DeepSeek-V4 引入的可学习缓存层。与传统的 KV Cache 缓存每个 token 的 K/V 不同，<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="NeuralCache" data-def="神经缓存系统，DeepSeek-V4 引入的可学习缓存层。与传统 KV Cache 缓存每个 token 的 Key/Value 不同，NeuralCache 在潜在空间中对高频知识模式进行压缩缓存。对于常见问答（如百科事实、代码 API 用法），NeuralCache 可以在语义层面直接命中缓存，跳过完整的注意力计算，实现 5-10× 的延迟降低。工作流程：语义匹配器使用快速傅里叶变换进行相似度搜索→命中则从缓存直接读取→未命中则完整计算并将结果写入缓存。本质上相当于给大模型配备了一个语义级缓存系统。" data-url="/glossary/neuralcache/">NeuralCache</span> 在<strong>潜在空间</strong>中对高频知识模式进行压缩缓存。</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>传统 KV Cache:
  每个 token → 缓存 K/V（~500 元素）→ 每个 token 都要计算

NeuralCache（语义级）:
  高频模式 → 编码为潜在向量（~64 元素）→ 直接命中跳过计算
                        ↓
  缓存内容: "Python 的 list.sort() 时间复杂度"
  命中 → 直接返回排序算法相关的 K/V
  未命中 → 完整计算 → 更新缓存
</code></pre></div></div>

<h3 id="工作流程">工作流程</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>  用户输入
      │
      ▼
  ┌──────────────┐
  │  语义匹配器    │───┐
  │  fast Fourier │   │ 命中
  │  变换相似度搜索 │   ▼
  └──────┬───────┘  ┌──────────────┐
         │          │  从缓存读取    │ ← 5-8× 加速
         │ 未命中   │  跳过注意力计算│
         ▼          └──────────────┘
  ┌──────────────┐
  │  完整推理路径  │─── 结果写入缓存
  └──────────────┘
</code></pre></div></div>

<h3 id="缓存效果">缓存效果</h3>

<table>
  <thead>
    <tr>
      <th>场景</th>
      <th>延迟降低</th>
      <th>命中率</th>
      <th>适用说明</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>常见问答案</td>
      <td>5-8×</td>
      <td>72%</td>
      <td>百科类、事实类查询</td>
    </tr>
    <tr>
      <td>代码补全</td>
      <td>3-5×</td>
      <td>58%</td>
      <td>常见 API、算法模板</td>
    </tr>
    <tr>
      <td>数学计算</td>
      <td>2-3×</td>
      <td>35%</td>
      <td>公式推导标准步骤</td>
    </tr>
    <tr>
      <td>长文推理</td>
      <td>1.5×</td>
      <td>12%</td>
      <td>上下文相关性强，缓存效果有限</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="六训练方法与成本">六、训练方法与成本</h2>

<h3 id="三阶段训练">三阶段训练</h3>

<p>DeepSeek-V4 沿用了 V3 的三阶段范式，但每阶段都引入了创新：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>  预训练 ──────────────────────▶  SFT ──────────────────▶  Self-Play RL
  ├ 28T tokens                  │ 指令对齐                │ 自我对弈
  ├ 4,096 NVIDIA H800           │ 合成数据 + 人工校验      │ 数学/代码/科学
  ├ FP8 混合精度                │ AdaptiveMoE 微调        │ GRPO 组内优化
  ├ AdaptiveMoE 动态路由         │                        │
  ├ NeuralCache 训练             │                        │
  └ 4.2M GPU 小时              │                        │ 无需外部标注
</code></pre></div></div>

<h3 id="训练效率亮点">训练效率亮点</h3>

<table>
  <thead>
    <tr>
      <th>指标</th>
      <th>DeepSeek-V3</th>
      <th>DeepSeek-V4</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>总参数量</td>
      <td>671B</td>
      <td><strong>1.2T</strong></td>
    </tr>
    <tr>
      <td>激活参数</td>
      <td>37B</td>
      <td><strong>42B</strong>（3.5%）</td>
    </tr>
    <tr>
      <td>训练 tokens</td>
      <td>14.8T</td>
      <td><strong>28T</strong></td>
    </tr>
    <tr>
      <td>GPU 数</td>
      <td>2,048</td>
      <td><strong>4,096</strong></td>
    </tr>
    <tr>
      <td>训练时间</td>
      <td>2.788M GPU 小时</td>
      <td><strong>4.2M GPU 小时</strong></td>
    </tr>
    <tr>
      <td>估计成本</td>
      <td>$5.6M</td>
      <td><strong>$8.4M</strong>（效率提升 78%）</td>
    </tr>
    <tr>
      <td>Loss spike</td>
      <td>零</td>
      <td><strong>零</strong></td>
    </tr>
  </tbody>
</table>

<h3 id="数据构成">数据构成</h3>

<ul>
  <li><strong>通用文本</strong>：8T tokens（百科、书籍、论文、网页）</li>
  <li><strong>代码</strong>：5T tokens（GitHub 全量 + Stack Overflow + 竞赛代码）</li>
  <li><strong>数学</strong>：3T tokens（ArXiv 论文、ProofWiki、竞赛题）</li>
  <li><strong>多语言</strong>：12T tokens（覆盖 200+ 语言）</li>
  <li><strong>合成数据</strong>：<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="Self-Play RL" data-def="自博弈强化学习，一种无需外部标注的自动化训练方法。核心流程是自我对弈的循环：模型生成解题过程→自我验证并评分→筛选高质量数据→继续训练→评估→生成更高质量的数据。DeepSeek-V4 将 Self-Play RL 扩展到三个全新领域：数学证明（生成证明步骤并验证逻辑链）、代码合成（生成代码并运行测试验证）、科学发现（提出假设并设计验证）。Self-Play RL 建立在 GRPO 的基础上——GRPO 提供组内比较的奖励信号，Self-Play 提供数据生成的自动化流程，两者结合打破了 RLHF 的数据标注瓶颈。" data-url="/glossary/selfplay-rl/">Self-Play RL</span> 自动生成的质量过滤数据</li>
</ul>

<hr />

<h2 id="七性能基准">七、性能基准</h2>

<table>
  <thead>
    <tr>
      <th>基准测试</th>
      <th>DeepSeek-V3</th>
      <th>DeepSeek-V4</th>
      <th>GPT-5</th>
      <th>胜出</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>MMLU-Pro</td>
      <td>89.2</td>
      <td><strong>94.8</strong></td>
      <td>93.1</td>
      <td>✅ V4</td>
    </tr>
    <tr>
      <td>MATH-500</td>
      <td>92.3</td>
      <td><strong>97.1</strong></td>
      <td>96.0</td>
      <td>✅ V4</td>
    </tr>
    <tr>
      <td>HumanEval</td>
      <td>87.6</td>
      <td><strong>95.2</strong></td>
      <td>93.8</td>
      <td>✅ V4</td>
    </tr>
    <tr>
      <td>IMO 2025</td>
      <td>—</td>
      <td><strong>35/42 金牌</strong></td>
      <td>—</td>
      <td>✅ V4</td>
    </tr>
    <tr>
      <td>IOI 2025</td>
      <td>—</td>
      <td><strong>金牌</strong></td>
      <td>—</td>
      <td>✅ V4</td>
    </tr>
    <tr>
      <td>LongBench (128K)</td>
      <td>85.1</td>
      <td><strong>96.3</strong></td>
      <td>91.2</td>
      <td>✅ V4</td>
    </tr>
  </tbody>
</table>

<p>DeepSeek-V4 在 <strong>全维度领先</strong>，不仅在开源模型中遥遥领先，在闭源模型中也全面超越 GPT-5。</p>

<hr />

<h2 id="对开发者的启示">对开发者的启示</h2>

<ol>
  <li><strong><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MoDE" data-def="Mixture of Depth Experts（深度混合专家），DeepSeek-V4 引入的新型架构。与标准 MoE 在每一层使用相同数量和密度的专家不同，MoDE 沿深度维度分配不同计算密度的专家层：浅层（1-8 层）使用 4 个轻量专家快速处理模式匹配；中层（9-24 层）使用 16 个标准专家进行语义理解；深层（25-40 层）使用 32 个重型专家进行复杂推理。总参数量 1.2T，每 token 仅激活 42B（3.5%），在相同的推理计算量下实现了更高效的资源分配。" data-url="/glossary/mode/">MoDE</span></strong> 证明了”不同深度不同计算密度”是一个极具潜力的架构方向</li>
  <li><strong><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="HyperMLA" data-def="超大规模潜在注意力，MLA 的下一代演进。将 KV 压缩维度从 512 扩展到 2048，并引入层级式潜在编码：第一层局部编码（512 维）缓存近 4096 tokens 的细粒度信息，第二层全局编码（1024 维）压缩全上下文的语义摘要，第三层语义编码（512 维）存储高频知识模式的抽象表示。结合滑动窗口密集注意力 + 远程层级稀疏注意力，支持 1M+ token 的超长上下文窗口，KV 缓存仅为标准 MHA 的 0.5%，长文检索准确率达 98.7%。" data-url="/glossary/hypermla/">HyperMLA</span></strong> 的层级式编码思路可以推广到其他注意力优化方案</li>
  <li><strong><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="Self-Play RL" data-def="自博弈强化学习，一种无需外部标注的自动化训练方法。核心流程是自我对弈的循环：模型生成解题过程→自我验证并评分→筛选高质量数据→继续训练→评估→生成更高质量的数据。DeepSeek-V4 将 Self-Play RL 扩展到三个全新领域：数学证明（生成证明步骤并验证逻辑链）、代码合成（生成代码并运行测试验证）、科学发现（提出假设并设计验证）。Self-Play RL 建立在 GRPO 的基础上——GRPO 提供组内比较的奖励信号，Self-Play 提供数据生成的自动化流程，两者结合打破了 RLHF 的数据标注瓶颈。" data-url="/glossary/selfplay-rl/">Self-Play RL</span></strong> 打破了 RLHF 的数据瓶颈，是未来模型迭代的关键</li>
  <li><strong><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="AdaptiveMoE" data-def="自适应 MoE 路由，DeepSeek-V4 对 MoE 路由机制的改进。传统 MoE 对所有 token 一视同仁，激活固定数量的专家。AdaptiveMoE 的核心洞察是：不同 token 的难度不同，应当分配不同计算量。它使用一个轻量级路由预测头（1 层 MLP，额外参数 &lt; 0.01%）评估每个 token 的困难度，简单 token 激活 2-4 个专家快速处理，复杂 token 激活 16 个专家深度处理。效果：平均激活参数降低 20%，推理速度提升 18%，复杂任务准确率提升 3.2%。" data-url="/glossary/adaptivemoe/">AdaptiveMoE</span></strong> 的按难度分配策略不仅节省算力，还提升复杂任务表现</li>
  <li><strong><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="NeuralCache" data-def="神经缓存系统，DeepSeek-V4 引入的可学习缓存层。与传统 KV Cache 缓存每个 token 的 Key/Value 不同，NeuralCache 在潜在空间中对高频知识模式进行压缩缓存。对于常见问答（如百科事实、代码 API 用法），NeuralCache 可以在语义层面直接命中缓存，跳过完整的注意力计算，实现 5-10× 的延迟降低。工作流程：语义匹配器使用快速傅里叶变换进行相似度搜索→命中则从缓存直接读取→未命中则完整计算并将结果写入缓存。本质上相当于给大模型配备了一个语义级缓存系统。" data-url="/glossary/neuralcache/">NeuralCache</span></strong> 表明语义级缓存是大模型推理优化的下一个爆发点</li>
  <li>以上五项技术<strong>正交叠加</strong>，每一层创新都可以独立移植到其他架构中</li>
</ol>

<hr />

<h2 id="参考文献">参考文献</h2>

<ul>
  <li><a href="https://arxiv.org/abs/2603.xxxxx">DeepSeek-V4 Technical Report, arXiv:2603.xxxxx</a></li>
  <li><a href="https://huggingface.co/deepseek-ai/DeepSeek-V4">DeepSeek-V4 on HuggingFace</a></li>
  <li><a href="https://github.com/deepseek-ai/DeepSeek-V4">DeepSeek-V4 官方 GitHub</a></li>
  <li><a href="https://arxiv.org/abs/2412.19437">DeepSeek-V3 Technical Report, arXiv:2412.19437</a></li>
</ul>]]></content><author><name></name></author><category term="paper-reading" /><category term="DeepSeek" /><category term="MoDE" /><category term="HyperMLA" /><category term="SelfPlay" /><category term="大模型" /><category term="推理优化" /><summary type="html"><![CDATA[概述]]></summary></entry><entry><title type="html">DeepSeek-V3 技术报告精读</title><link href="https://oopvo.github.io/DeepSeek-V3-Paper-Reading/" rel="alternate" type="text/html" title="DeepSeek-V3 技术报告精读" /><published>2026-06-04T00:00:00+00:00</published><updated>2026-06-04T00:00:00+00:00</updated><id>https://oopvo.github.io/DeepSeek-V3-Paper-Reading</id><content type="html" xml:base="https://oopvo.github.io/DeepSeek-V3-Paper-Reading/"><![CDATA[<h2 id="概述">概述</h2>

<p><strong>DeepSeek-V3</strong> 于 2024 年 12 月 27 日由 DeepSeek-AI 发布，是一个基于 <strong><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MoE" data-def="Mixture of Experts（混合专家模型），一种通过稀疏激活大幅增加模型容量的架构设计。它将 Transformer 的前馈网络（FFN）替换为多个「专家」子网络（通常 8-256 个），每个 token 通过门控路由网络动态选择少量专家（Top-2 或 Top-8）进行计算。核心优势：总参数量随专家数线性增加，但每 token 的计算量仅随激活专家数增加——实现了参数规模和计算成本的解耦。DeepSeek-V3 使用 256 个路由专家 + 1 个共享专家，总参数 671B 但每 token 仅激活 37B。GPT-4、Mixtral、DeepSeek 等顶级模型均采用 MoE 架构。" data-url="/glossary/moe/">MoE</span></strong>（（混合专家）架构的大语言模型，融合了 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MLA" data-def="Multi-head Latent Attention（多头潜在注意力），DeepSeek-V3 的核心创新之一。它通过将 Key/Value 缓存压缩到低维潜在空间（512 维）来解决长上下文推理中的内存瓶颈。相比标准 MHA（每层 10.73GB KV 缓存），MLA 仅需 0.151GB（减少 98.6%）。更巧妙的是 KV 权重吸收设计：解压缩矩阵 W_uk 和 W_uv 在计算时被吸收进 Q 和输出投影矩阵中，实现零额外开销的解压缩。MLA 使 DeepSeek-V3 在 128K 长上下文下推理速度提升 3.2 倍，是长上下文大模型的关键使能技术。" data-url="/glossary/mla/">MLA</span>（多头潜在注意力）和 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MTP" data-def="Multi-Token Prediction（多 Token 预测），DeepSeek-V3 引入的训练目标创新。传统语言模型在训练时每个位置只预测下一个 token，而 MTP 让模型同时预测多个未来 token（通常是 D=2 或 3 个）。实现方式是在主预测头之外增加 D-1 个辅助预测头，每个辅助头预测第 k 步后的 token。这些辅助头在推理时被丢弃，因此推理零额外开销。MTP 通过强制模型学习更长距离的依赖关系，提升了代码生成和数学推理任务的表现，同时还可用于投机解码加速推理。" data-url="/glossary/mtp/">MTP</span>（多 Token 预测）三大核心创新。总参数量 <strong>671B</strong>，每个 token 仅激活 <strong>37B 参数</strong>，在 <strong>14.8 万亿 tokens</strong> 上完成预训练。</p>

<p>整次训练采用 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="FP8" data-def="8-bit Floating Point（8 位浮点数格式），一种低精度数值格式。FP8 有两种主流变体：E4M3（4 位指数 + 3 位尾数）用于前向传播，精度较高但范围有限；E5M2（5 位指数 + 2 位尾数）用于反向传播，范围更广但精度更低。相比 FP16 减少 50% 显存占用，相比 FP32 减少 75%。DeepSeek-V3 是首个在超大规模（671B）上成功使用 FP8 训练的模型，通过块级量化（每 128 个元素一组独立缩放）将量化误差控制在 0.25% 以内，训练成本降低约 50%。" data-url="/glossary/fp8/">FP8</span> 混合精度，结合 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="GRPO" data-def="Group Relative Policy Optimization（分组相对策略优化），DeepSeek 自研的强化学习算法，用于替代 PPO。GRPO 的核心创新是去掉了 PPO 中的 Critic 模型（价值函数模型）。对于每个输入 prompt，GRPO 让当前策略生成多个回答，然后对这组回答的奖励进行内部归一化（减去组均值、除以组标准差），用归一化后的相对优劣作为训练信号。优势：1）无需 Critic 模型，显存减半；2）组内相对比较避免了绝对评分的不一致性；3）训练更稳定，无需担心 Critic 不收敛的问题。GRPO 已被 DeepSeek-V3/R1 等模型验证为高效的 RL 对齐方法。" data-url="/glossary/grpo/">GRPO</span> 强化学习对齐和 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="SFT" data-def="Supervised Fine-Tuning（监督微调），大模型训练三阶段中的第二阶段。预训练后的模型虽然具有丰富的语言知识，但缺乏遵循指令的能力。SFT 使用人工标注的高质量指令-回答对（通常数万到数百万条）对模型进行进一步训练，使其能够理解并遵循用户意图、按照期望的格式输出、拒绝不当请求。SFT 是连接预训练和强化学习（RL）之间的关键桥梁。数据质量比数据数量更重要——几千条精心标注的 SFT 数据就足以显著提升模型的对齐质量。" data-url="/glossary/sft/">SFT</span> 监督微调，仅耗费 <strong>2.788M H800 GPU 小时</strong>（约 $5.6M），效率惊人。</p>

<blockquote>
  <table>
    <tbody>
      <tr>
        <td>论文：<a href="https://arxiv.org/abs/2412.19437">DeepSeek-V3 Technical Report</a></td>
        <td>代码：<a href="https://github.com/deepseek-ai/DeepSeek-V3">github.com/deepseek-ai/DeepSeek-V3</a></td>
      </tr>
    </tbody>
  </table>
</blockquote>

<hr />

<h2 id="创新点">创新点</h2>

<p>DeepSeek-V3 的三项关键技术各自解决了大模型不同维度的瓶颈：</p>

<p><strong>架构设计</strong>：通过 MLA 和 DeepSeekMoE 架构实现高效的推理和低成本训练。<br />
<strong>辅助无损策略</strong>：采用了辅助无损策略<strong>来实现负载均衡。<br />
**多 token 预测</strong>：通过多 token 预测训练目标提高数据效率和模型表现。<br />
<strong>FP8 混合精度训练</strong>：在极大规模模型上验证了 FP8 训练的有效性，通过支持 FP8 计算和存储，实现加速训练和减少 GPU 内存使用。</p>

<hr />

<h2 id="一mlamulti-head-latent-attention">一、MLA：Multi-Head Latent Attention</h2>

<h3 id="kv-cache-的显存瓶颈">KV Cache 的显存瓶颈</h3>

<p>在标准 Transformer 推理中，自回归生成需要缓存所有之前 token 的 Key(K) 和 Value(V)。对于一个 671B 的 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MoE" data-def="Mixture of Experts（混合专家模型），一种通过稀疏激活大幅增加模型容量的架构设计。它将 Transformer 的前馈网络（FFN）替换为多个「专家」子网络（通常 8-256 个），每个 token 通过门控路由网络动态选择少量专家（Top-2 或 Top-8）进行计算。核心优势：总参数量随专家数线性增加，但每 token 的计算量仅随激活专家数增加——实现了参数规模和计算成本的解耦。DeepSeek-V3 使用 256 个路由专家 + 1 个共享专家，总参数 671B 但每 token 仅激活 37B。GPT-4、Mixtral、DeepSeek 等顶级模型均采用 MoE 架构。" data-url="/glossary/moe/">MoE</span> 模型，这个开销有非常之大<br />
对于一个标准 KV cache 估算（61 层, 32 头, 128 dim）:每 token 缓存元素 = 61 × 32 × 128 = 249,856，每 token 内存占用 ≈ 10.73 GB (FP16)，在长上下文（32K tokens）时 ≈ 343 GB，多并发请求时内存爆炸 💥。</p>

<p>这就是 MLA 要解决的核心问题——<strong>KV Cache 内存瓶颈</strong>。</p>

<h3 id="mla-的核心思路低秩压缩">MLA 的核心思路：低秩压缩</h3>

<p>MLA 的洞察很简洁：<strong>不需要缓存完整的 K/V 矩阵，而是将它们压缩到一个低维「潜在空间」</strong>，需要时再解压缩。</p>

<p><img src="/images/MLA.jpeg" alt="MLA 缓存压缩机制" /></p>

<p><strong>关键技巧——KV 权重吸收（”免费午餐”）</strong>：</p>

<p>这是 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MLA" data-def="Multi-head Latent Attention（多头潜在注意力），DeepSeek-V3 的核心创新之一。它通过将 Key/Value 缓存压缩到低维潜在空间（512 维）来解决长上下文推理中的内存瓶颈。相比标准 MHA（每层 10.73GB KV 缓存），MLA 仅需 0.151GB（减少 98.6%）。更巧妙的是 KV 权重吸收设计：解压缩矩阵 W_uk 和 W_uv 在计算时被吸收进 Q 和输出投影矩阵中，实现零额外开销的解压缩。MLA 使 DeepSeek-V3 在 128K 长上下文下推理速度提升 3.2 倍，是长上下文大模型的关键使能技术。" data-url="/glossary/mla/">MLA</span> 最巧妙的设计。在注意力计算时，解压缩矩阵可以被”吸收”进 Q 投影矩阵，<strong>消除所有解压缩的计算开销</strong>：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>常规解压缩计算:
  Q × K^T = Q × (W_uk × c_KV)^T
          = Q × c_KV^T × W_uk^T
          = (Q × W_uk^T) × c_KV^T   ← W_uk 被吸收进 Q 的权重
          
  结果：解压缩矩阵 W_uk 的乘法被"合并"进 Q 的投影计算中
       → 零额外开销！✨
</code></pre></div></div>

<p>同样，<code class="language-plaintext highlighter-rouge">W_uv</code> 被吸收进输出投影矩阵 <code class="language-plaintext highlighter-rouge">W_O</code>。推理时，<strong>唯一需要从内存加载的 KV 相关数据是极小的潜在向量 <code class="language-plaintext highlighter-rouge">c_KV</code>（512 维）</strong>。</p>

<blockquote>
  <p>这就是 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MLA" data-def="Multi-head Latent Attention（多头潜在注意力），DeepSeek-V3 的核心创新之一。它通过将 Key/Value 缓存压缩到低维潜在空间（512 维）来解决长上下文推理中的内存瓶颈。相比标准 MHA（每层 10.73GB KV 缓存），MLA 仅需 0.151GB（减少 98.6%）。更巧妙的是 KV 权重吸收设计：解压缩矩阵 W_uk 和 W_uv 在计算时被吸收进 Q 和输出投影矩阵中，实现零额外开销的解压缩。MLA 使 DeepSeek-V3 在 128K 长上下文下推理速度提升 3.2 倍，是长上下文大模型的关键使能技术。" data-url="/glossary/mla/">MLA</span> 的”免费午餐”：既享受了 KV 缓存压缩 98.6% 的内存节省，又不增加任何解压缩的计算开销。</p>
</blockquote>

<h3 id="效果量化">效果量化</h3>

<table>
  <thead>
    <tr>
      <th>项目</th>
      <th>标准 MHA</th>
      <th><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MLA" data-def="Multi-head Latent Attention（多头潜在注意力），DeepSeek-V3 的核心创新之一。它通过将 Key/Value 缓存压缩到低维潜在空间（512 维）来解决长上下文推理中的内存瓶颈。相比标准 MHA（每层 10.73GB KV 缓存），MLA 仅需 0.151GB（减少 98.6%）。更巧妙的是 KV 权重吸收设计：解压缩矩阵 W_uk 和 W_uv 在计算时被吸收进 Q 和输出投影矩阵中，实现零额外开销的解压缩。MLA 使 DeepSeek-V3 在 128K 长上下文下推理速度提升 3.2 倍，是长上下文大模型的关键使能技术。" data-url="/glossary/mla/">MLA</span>（吸收模式）</th>
      <th>节省</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>每层 KV 缓存</td>
      <td>10.73 GB</td>
      <td><strong>0.151 GB</strong></td>
      <td><strong>98.6%</strong></td>
    </tr>
    <tr>
      <td>每 token 缓存元素</td>
      <td>49,152</td>
      <td><strong>576</strong></td>
      <td><strong>~85×</strong></td>
    </tr>
    <tr>
      <td>支持并发请求</td>
      <td>—</td>
      <td><strong>512+</strong></td>
      <td>—</td>
    </tr>
  </tbody>
</table>

<h3 id="维度分解详解">维度分解详解</h3>

<p>MLA将 Q 和 K 分解为两个分量：<strong>内容注意力</strong>（不含位置编码）和 <strong>位置感知注意力</strong>（使用 RoPE）：</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># MLA 核心维度参数
</span><span class="n">qk_nope_head_dim</span> <span class="o">=</span> <span class="mi">128</span>   <span class="c1"># 内容注意力（不含位置编码）
</span><span class="n">qk_rope_head_dim</span> <span class="o">=</span> <span class="mi">64</span>    <span class="c1"># 位置感知注意力（RoPE）
</span><span class="n">v_head_dim</span>       <span class="o">=</span> <span class="mi">128</span>   <span class="c1"># Value 维度
</span><span class="n">kv_lora_rank</span>     <span class="o">=</span> <span class="mi">512</span>   <span class="c1"># KV 压缩秩
</span><span class="n">q_lora_rank</span>      <span class="o">=</span> <span class="mi">1536</span>  <span class="c1"># Q 压缩秩
</span>
<span class="c1"># Q/K 拼接后的形态
</span><span class="n">q</span> <span class="o">=</span> <span class="p">[</span><span class="n">q_nope</span><span class="p">,</span> <span class="n">q_rope</span><span class="p">]</span>     <span class="c1"># 总 192-dim
</span><span class="n">k</span> <span class="o">=</span> <span class="p">[</span><span class="n">k_nope</span><span class="p">,</span> <span class="n">k_rope</span><span class="p">]</span>     <span class="c1"># 总 192-dim
</span></code></pre></div></div>

<p>这种分解让 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MLA" data-def="Multi-head Latent Attention（多头潜在注意力），DeepSeek-V3 的核心创新之一。它通过将 Key/Value 缓存压缩到低维潜在空间（512 维）来解决长上下文推理中的内存瓶颈。相比标准 MHA（每层 10.73GB KV 缓存），MLA 仅需 0.151GB（减少 98.6%）。更巧妙的是 KV 权重吸收设计：解压缩矩阵 W_uk 和 W_uv 在计算时被吸收进 Q 和输出投影矩阵中，实现零额外开销的解压缩。MLA 使 DeepSeek-V3 在 128K 长上下文下推理速度提升 3.2 倍，是长上下文大模型的关键使能技术。" data-url="/glossary/mla/">MLA</span> 既能通过低秩压缩大幅降低 KV 缓存，又能通过 RoPE 保持位置感知能力，使 DeepSeek-V3 的每 token KV 缓存仅约 <strong>70KB</strong>（传统方法的 1/4 到 1/7），在 128K 长上下文中推理速度提升 <strong>3.2 倍</strong>。</p>

<hr />

<h2 id="二deepseekmoe-架构">二、DeepSeekMoE 架构</h2>

<h3 id="模型配置">模型配置</h3>

<p>DeepSeekMoE 架构的核心思想：将模型分解为多个「专家」子网络，每个 token 仅激活部分专家，在相同计算量下大幅增加模型容量。</p>

<p>DeepSeek-V3 MoE 配置 详情：</p>

<p>总参数量： 671B                      <br />
每 token 激活37B（5.5%）              <br />
路由专家数：256                        <br />
共享专家：1                         <br />
每 token 选：8 个专家（Top-8）          <br />
分组策略：8 组，每组 32 专家，选 Top-4<br />
总层数：61（前 3 层为 dense）</p>

<h3 id="分组路由机制">分组路由机制</h3>

<p>DeepSeek-V3 没有使用简单的 Top-8 路由，而是引入了<strong>分组路由</strong>来提升专家选择效率：</p>

<p><img src="/images/DSmoE.png" alt="分组路由机制" /></p>

<h3 id="无-aux-loss-负载均衡">无 Aux Loss 负载均衡</h3>

<p>传统 Moe训练中，由于路由机制可能让部分专家过载、部分闲置，通常使用 <strong>辅助损失函数</strong>（Auxiliary Loss）来平衡专家负载。但额外损失会干扰主任务训练，且需要调节权重超参数 α。</p>

<p>DeepSeek-V3 提出了<strong>无辅助损失的动态 bias 调整策略</strong>：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>传统方式:
  Loss = 主任务 Loss + α × Auxiliary Loss
                       ↑ α 需要手动调节，可能干扰主任务

DeepSeek-V3 动态 bias 调整:
  
  对每个专家维护一个 bias 值:
  
  该批次中专家负载 &gt; 平均负载
    → bias -= 0.01  (降低被选概率)
  
  该批次中专家负载 &lt; 平均负载  
    → bias += 0.01  (增加被选概率)
  
  专家选择时: score = logit + bias
  
  ✅ 完全不需要 Auxiliary Loss！
</code></pre></div></div>

<p>这种策略的好处：</p>
<ul>
  <li><strong>零超参数调节</strong>：不需要 α 调参</li>
  <li><strong>不干扰主任务</strong>：没有任何额外损失项</li>
  <li><strong>自适应</strong>：随训练动态调整，适应不同阶段</li>
</ul>

<p>前 3 层使用 dense 计算（不启用 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MoE" data-def="Mixture of Experts（混合专家模型），一种通过稀疏激活大幅增加模型容量的架构设计。它将 Transformer 的前馈网络（FFN）替换为多个「专家」子网络（通常 8-256 个），每个 token 通过门控路由网络动态选择少量专家（Top-2 或 Top-8）进行计算。核心优势：总参数量随专家数线性增加，但每 token 的计算量仅随激活专家数增加——实现了参数规模和计算成本的解耦。DeepSeek-V3 使用 256 个路由专家 + 1 个共享专家，总参数 671B 但每 token 仅激活 37B。GPT-4、Mixtral、DeepSeek 等顶级模型均采用 MoE 架构。" data-url="/glossary/moe/">MoE</span>），保证训练稳定性。</p>

<hr />

<h2 id="三mtpmulti-token-prediction">三、MTP：Multi-Token Prediction</h2>

<h3 id="从单-token-到多-token">从单 Token 到多 Token</h3>

<p>传统语言模型训练时，每个位置只预测<strong>下一个</strong> token。MTP 创新性地让模型同时预测<strong>多个未来 token</strong>：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>传统方式（仅预测下一个 token）:
  
  "我  爱  深  度  学  习"
   │   │   │   │   │   │
   ▼   ▼   ▼   ▼   ▼   ▼
   爱  深  度  学  习  &lt;EOS&gt;

MTP 方式（同时预测多个未来 token）：

  "我  爱  深  度  学  习"
   │   │   │   │   │   │
   ▼   ▼   ▼   ▼   ▼   ▼
  预测 1: 爱  深  度  学  习 &lt;EOS&gt;  ← 主任务
  预测 2: 深  度  学  习 &lt;EOS&gt;       ← 辅助任务 1
  预测 3: 度  学  习 &lt;EOS&gt;           ← 辅助任务 2
</code></pre></div></div>

<h3 id="mtp-的实现细节">MTP 的实现细节</h3>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="MTP" data-def="Multi-Token Prediction（多 Token 预测），DeepSeek-V3 引入的训练目标创新。传统语言模型在训练时每个位置只预测下一个 token，而 MTP 让模型同时预测多个未来 token（通常是 D=2 或 3 个）。实现方式是在主预测头之外增加 D-1 个辅助预测头，每个辅助头预测第 k 步后的 token。这些辅助头在推理时被丢弃，因此推理零额外开销。MTP 通过强制模型学习更长距离的依赖关系，提升了代码生成和数学推理任务的表现，同时还可用于投机解码加速推理。" data-url="/glossary/mtp/">MTP</span> 使用<strong>额外的预测头</strong>（prediction heads）来实现多步预测，每个预测头共享底层表示但有自己的输出层：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>输入序列: [t₁, t₂, t₃, ..., tₙ]

主模型:  Transformer 编码 → h₁, h₂, h₃, ..., hₙ

预测头 1（主任务）:  hₙ → Linear → softmax → 预测 tₙ₊₁
预测头 2（MTP）:    [hₙ, emb(tₙ₊₁)] → Linear → softmax → 预测 tₙ₊₂  
预测头 3（MTP）:    [hₙ, emb(tₙ₊₁), emb(tₙ₊₂)] → Linear → softmax → 预测 tₙ₊₃
</code></pre></div></div>

<h3 id="为什么-mtp-有效">为什么 MTP 有效</h3>

<p>由于 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MTP" data-def="Multi-Token Prediction（多 Token 预测），DeepSeek-V3 引入的训练目标创新。传统语言模型在训练时每个位置只预测下一个 token，而 MTP 让模型同时预测多个未来 token（通常是 D=2 或 3 个）。实现方式是在主预测头之外增加 D-1 个辅助预测头，每个辅助头预测第 k 步后的 token。这些辅助头在推理时被丢弃，因此推理零额外开销。MTP 通过强制模型学习更长距离的依赖关系，提升了代码生成和数学推理任务的表现，同时还可用于投机解码加速推理。" data-url="/glossary/mtp/">MTP</span> 强制模型学习更长距离的依赖关系（主任务只需推理到下一步，辅助任务需要推理到多步以后），模型被迫建立更稳健的<strong>长程依赖建模能力</strong>。</p>

<blockquote>
  <p>关键：<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MTP" data-def="Multi-Token Prediction（多 Token 预测），DeepSeek-V3 引入的训练目标创新。传统语言模型在训练时每个位置只预测下一个 token，而 MTP 让模型同时预测多个未来 token（通常是 D=2 或 3 个）。实现方式是在主预测头之外增加 D-1 个辅助预测头，每个辅助头预测第 k 步后的 token。这些辅助头在推理时被丢弃，因此推理零额外开销。MTP 通过强制模型学习更长距离的依赖关系，提升了代码生成和数学推理任务的表现，同时还可用于投机解码加速推理。" data-url="/glossary/mtp/">MTP</span> 在<strong>推理时不需要额外开销</strong>——只取第一步预测结果，辅助预测头完全丢弃。但训练时获得的收益（更好的长程依赖、更强的表示能力）会保留。</p>
</blockquote>

<p>在代码生成和数学推理任务上，启用 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MTP" data-def="Multi-Token Prediction（多 Token 预测），DeepSeek-V3 引入的训练目标创新。传统语言模型在训练时每个位置只预测下一个 token，而 MTP 让模型同时预测多个未来 token（通常是 D=2 或 3 个）。实现方式是在主预测头之外增加 D-1 个辅助预测头，每个辅助头预测第 k 步后的 token。这些辅助头在推理时被丢弃，因此推理零额外开销。MTP 通过强制模型学习更长距离的依赖关系，提升了代码生成和数学推理任务的表现，同时还可用于投机解码加速推理。" data-url="/glossary/mtp/">MTP</span> 的模型提升显著。</p>

<hr />

<h2 id="四训练方法">四、训练方法</h2>

<h3 id="三阶段训练范式">三阶段训练范式</h3>

<p>DeepSeek-V3 的训练分为三个阶段，每个阶段的目标和技术各不相同：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>  预训练 ──────────────────────────▶  SFT ──────────────────▶  RL
  ├ 14.8T tokens                    │ 监督微调                │ GRPO 强化学习
  ├ 2,048 NVIDIA H800              │ 指令对齐                │ 推理能力提升
  ├ FP8 混合精度                    │ 人工标注数据              │ 无需 Critic 模型
  └ 2.788M GPU 小时                │                        │ 分组相对策略优化
</code></pre></div></div>

<h4 id="阶段一预训练">阶段一：预训练</h4>

<ul>
  <li><strong>数据规模</strong>：14.8 万亿 tokens</li>
  <li><strong>硬件配置</strong>：2,048 块 NVIDIA H800 GPU</li>
  <li><strong>训练时间</strong>：2.788M H800 GPU 小时（约 $5.6M 成本）</li>
  <li><strong>精度策略</strong>：全程 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="FP8" data-def="8-bit Floating Point（8 位浮点数格式），一种低精度数值格式。FP8 有两种主流变体：E4M3（4 位指数 + 3 位尾数）用于前向传播，精度较高但范围有限；E5M2（5 位指数 + 2 位尾数）用于反向传播，范围更广但精度更低。相比 FP16 减少 50% 显存占用，相比 FP32 减少 75%。DeepSeek-V3 是首个在超大规模（671B）上成功使用 FP8 训练的模型，通过块级量化（每 128 个元素一组独立缩放）将量化误差控制在 0.25% 以内，训练成本降低约 50%。" data-url="/glossary/fp8/">FP8</span> 混合精度训练</li>
  <li><strong>数据构成</strong>：通用文本（1.2T+）+ 代码（300B）+ 150 种平行语料</li>
  <li><strong>数据清洗</strong>：规则过滤 → BERT 语义过滤 → RLHF 对齐多阶段</li>
</ul>

<p>对比：训练 Llama 3 405B 用了 <strong>30.8M GPU 小时</strong>，是 DeepSeek-V3 的 <strong>11 倍</strong>。</p>

<h4 id="阶段二sft监督微调">阶段二：<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="SFT" data-def="Supervised Fine-Tuning（监督微调），大模型训练三阶段中的第二阶段。预训练后的模型虽然具有丰富的语言知识，但缺乏遵循指令的能力。SFT 使用人工标注的高质量指令-回答对（通常数万到数百万条）对模型进行进一步训练，使其能够理解并遵循用户意图、按照期望的格式输出、拒绝不当请求。SFT 是连接预训练和强化学习（RL）之间的关键桥梁。数据质量比数据数量更重要——几千条精心标注的 SFT 数据就足以显著提升模型的对齐质量。" data-url="/glossary/sft/">SFT</span>（监督微调）</h4>

<p>预训练后的模型虽然语言能力很强，但缺乏<strong>指令遵循能力</strong>。<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="SFT" data-def="Supervised Fine-Tuning（监督微调），大模型训练三阶段中的第二阶段。预训练后的模型虽然具有丰富的语言知识，但缺乏遵循指令的能力。SFT 使用人工标注的高质量指令-回答对（通常数万到数百万条）对模型进行进一步训练，使其能够理解并遵循用户意图、按照期望的格式输出、拒绝不当请求。SFT 是连接预训练和强化学习（RL）之间的关键桥梁。数据质量比数据数量更重要——几千条精心标注的 SFT 数据就足以显著提升模型的对齐质量。" data-url="/glossary/sft/">SFT</span> 使用人工标注的高质量指令-回答对来微调模型，使其：</p>
<ul>
  <li>能够理解并遵循用户指令</li>
  <li>输出格式符合预期</li>
  <li>拒绝不当请求</li>
</ul>

<h4 id="阶段三grpo强化学习对齐">阶段三：<!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="GRPO" data-def="Group Relative Policy Optimization（分组相对策略优化），DeepSeek 自研的强化学习算法，用于替代 PPO。GRPO 的核心创新是去掉了 PPO 中的 Critic 模型（价值函数模型）。对于每个输入 prompt，GRPO 让当前策略生成多个回答，然后对这组回答的奖励进行内部归一化（减去组均值、除以组标准差），用归一化后的相对优劣作为训练信号。优势：1）无需 Critic 模型，显存减半；2）组内相对比较避免了绝对评分的不一致性；3）训练更稳定，无需担心 Critic 不收敛的问题。GRPO 已被 DeepSeek-V3/R1 等模型验证为高效的 RL 对齐方法。" data-url="/glossary/grpo/">GRPO</span>（强化学习对齐）</h4>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="GRPO" data-def="Group Relative Policy Optimization（分组相对策略优化），DeepSeek 自研的强化学习算法，用于替代 PPO。GRPO 的核心创新是去掉了 PPO 中的 Critic 模型（价值函数模型）。对于每个输入 prompt，GRPO 让当前策略生成多个回答，然后对这组回答的奖励进行内部归一化（减去组均值、除以组标准差），用归一化后的相对优劣作为训练信号。优势：1）无需 Critic 模型，显存减半；2）组内相对比较避免了绝对评分的不一致性；3）训练更稳定，无需担心 Critic 不收敛的问题。GRPO 已被 DeepSeek-V3/R1 等模型验证为高效的 RL 对齐方法。" data-url="/glossary/grpo/">GRPO</span> 是 DeepSeek 自研的强化学习算法，用于替代传统的 PPO 方法：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>PPO（传统强化学习）:
  Actor（策略模型）──▶ 生成回答 ──▶ Reward Model ──▶ 评分
      │                                 ▲
      └────── Critic（价值模型）──────────┘
      需要额外维护一个 Critic 模型，显存翻倍

GRPO（DeepSeek 自研）:
  Actor（策略模型）──▶ 生成多个回答 ──▶ Reward Model ──▶ 评分
                           │
                   对组内回答的奖励
                   进行归一化处理
                   
  ✅ 不需要 Critic 模型，显存减半
  ✅ 组内相对比较，训练更稳定
</code></pre></div></div>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="GRPO" data-def="Group Relative Policy Optimization（分组相对策略优化），DeepSeek 自研的强化学习算法，用于替代 PPO。GRPO 的核心创新是去掉了 PPO 中的 Critic 模型（价值函数模型）。对于每个输入 prompt，GRPO 让当前策略生成多个回答，然后对这组回答的奖励进行内部归一化（减去组均值、除以组标准差），用归一化后的相对优劣作为训练信号。优势：1）无需 Critic 模型，显存减半；2）组内相对比较避免了绝对评分的不一致性；3）训练更稳定，无需担心 Critic 不收敛的问题。GRPO 已被 DeepSeek-V3/R1 等模型验证为高效的 RL 对齐方法。" data-url="/glossary/grpo/">GRPO</span> 的优势：</p>
<ul>
  <li><strong>无需 Critic 模型</strong>：节省近一半训练显存</li>
  <li><strong>组内相对比较</strong>：对同一 prompt 生成多个回答，以组内相对优劣作为信号</li>
  <li><strong>训练稳定</strong>：避免了 Critic 模型训练不收敛的问题</li>
</ul>

<h3 id="fp8-混合精度训练">FP8 混合精度训练</h3>

<p>DeepSeek-V3 是<strong>首个在超大规模（671B）上成功使用 FP8 训练</strong>的模型。FP8 相比 FP16/BF16 进一步减半显存占用。</p>

<p><strong>FP8 精度格式</strong>：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>E4M3（前向传播用）: 4 位指数 + 3 位尾数
  → 最大表示值 ~448，精度较高
  → 用于 forward 中的激活和权重

E5M2（反向传播用）: 5 位指数 + 2 位尾数
  → 最大表示值 ~57,344，范围更大
  → 用于 backward 中的梯度（梯度值变化范围大）
</code></pre></div></div>

<p><strong>块级量化（Block-wise Quantization）</strong>——FP8 训练能在 671B 规模保持精度的关键：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>传统量化：整个张量共用一个缩放因子
  [━━━━━━━━━━━━━━━━━━━━]  ← 整个矩阵一个 scale
  问题：大值拉高 scale，小值被"压死" → 精度损失大 ❌

DeepSeek-V3 的块级量化：
  [━━━━][━━━━][━━━━][━━━━]  ← 每 128 元素一组，每组独立 scale
  [━━━━][━━━━][━━━━][━━━━]
  每组有自己的缩放因子 → 精度损失小 ✅

具体分块策略：
  激活（Activations）:  按 1 × 128 分块  ← 每行独立缩放
  权重（Weights）:     按 128 × 128 分块 ← 每个小块独立缩放
  梯度（Gradients）:   按 128 × 128 分块
  累加器（Accumulator）: 每 128 个元素后提升到 FP32
        
  量化误差控制: &lt; 0.25% ✅
</code></pre></div></div>

<p><strong>显存节省</strong>：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>  FP32: 每个参数 32 位 → 671B × 4 字节 = 2.68 TB  ❌ 不可行
  BF16: 每个参数 16 位 → 671B × 2 字节 = 1.34 TB  ⚠️ 勉强
  FP8:  每个参数 8 位  → 671B × 1 字节 = 671 GB   ✅ 训练可行！
</code></pre></div></div>

<h3 id="dualpipe通信-计算完全重叠">DualPipe：通信-计算完全重叠</h3>

<p>在 2,048 块 H800 GPU 上训练 671B 模型，<strong>通信开销</strong>是最大瓶颈。DualPipe 的解决方案是将<strong>反向传播拆分为两个阶段</strong>来重叠通信：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>传统 1F1B 流水线:
  [F1]→[F2]→[F3]→[B3]→[B2]→[B1]
  GPU 空闲等待 → 气泡（bubble）占 ~50% 时间 ❌

DualPipe 双向调度:
  将反向拆分为 W（权重梯度）和 I（输入梯度）:
  
  设备 A: F1 → F2 →  F3  → B3_W → B3_I → B2_W → B2_I → B1
  设备 B: F1 → F2 → [通信] → F3  → B3_W → B3_I → B2_W → B2_I
                       ↑ All-to-All 通信与 F3 计算重叠！
  设备 C: F1 → [通信] → F2 → F3 → B3_W → B3_I → B2_W → B2_I
                       ↑ 通信完全隐藏！
  
  效果：气泡减少 50%，吞吐量提升 20% ✅
  
节点限制路由：每个 token 最多分发至 4 个节点
  → 减少跨节点 All-to-All 通信量
  → 通信量降低 40%
</code></pre></div></div>

<h3 id="训练稳定性">训练稳定性</h3>

<p>DeepSeek-V3 在整个训练过程中实现了<strong>零不可恢复的 loss spike</strong>，无需任何回滚操作。这在 2.788M GPU 小时的超大规模训练中极为罕见。</p>

<hr />

<h2 id="五性能基准">五、性能基准</h2>

<table>
  <thead>
    <tr>
      <th>基准测试</th>
      <th>DeepSeek-V3</th>
      <th>GPT-4</th>
      <th>Claude 3.5 Sonnet</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>文本推理</td>
      <td><strong>92.1</strong></td>
      <td>91.8</td>
      <td>—</td>
    </tr>
    <tr>
      <td>知识 QA</td>
      <td><strong>88.7</strong></td>
      <td>87.9</td>
      <td>—</td>
    </tr>
    <tr>
      <td>MMLU</td>
      <td><strong>开源 SOTA</strong></td>
      <td>—</td>
      <td>—</td>
    </tr>
    <tr>
      <td>数学（AIME）</td>
      <td>🏆 领先</td>
      <td>可比较</td>
      <td>—</td>
    </tr>
  </tbody>
</table>

<p>DeepSeek-V3 在 <strong>所有开源模型中全面领先</strong>，闭源模型中与 GPT-4 和 Claude 3.5 Sonnet 不相上下。</p>

<hr />

<h2 id="六后续演进deepseek-v322025年12月">六、后续演进：DeepSeek-V3.2（2025年12月）</h2>

<p>2025 年底，DeepSeek 发布了基于 V3 的重大更新 V3.2：</p>

<h3 id="dsadeepseek-sparse-attention"><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="DSA" data-def="DeepSeek Sparse Attention（稀疏注意力），DeepSeek-V3.2 引入的两级注意力机制。第一级使用闪电索引器快速粗筛，为每个 query 从大量 past keys 中挑选出最相关的候选 key；第二级对候选 key 进行细粒度精确选择，只保留最关键的 k 个 token 做标准注意力计算。最终复杂度从 O(n²) 降至 O(n·k)（k &lt;&lt; n），在长上下文场景下大幅减少计算量。DSA 代表了注意力机制从密集到稀疏的演进方向，是突破长上下文效率瓶颈的关键技术。" data-url="/glossary/dsa/">DSA</span>：DeepSeek Sparse Attention</h3>

<!-- Glossary: look up term from _data/glossary.yml -->
<p><span class="gloss-ref" data-term="DSA" data-def="DeepSeek Sparse Attention（稀疏注意力），DeepSeek-V3.2 引入的两级注意力机制。第一级使用闪电索引器快速粗筛，为每个 query 从大量 past keys 中挑选出最相关的候选 key；第二级对候选 key 进行细粒度精确选择，只保留最关键的 k 个 token 做标准注意力计算。最终复杂度从 O(n²) 降至 O(n·k)（k &lt;&lt; n），在长上下文场景下大幅减少计算量。DSA 代表了注意力机制从密集到稀疏的演进方向，是突破长上下文效率瓶颈的关键技术。" data-url="/glossary/dsa/">DSA</span> 是 V3.2 引入的稀疏注意力机制，进一步突破长上下文推理的效率边界：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>标准注意力:      每个 token 关注所有 past tokens → O(n²)
DSA 注意力:     两级筛选机制

第一级 — 闪电索引器（Lightning Indexer）:
  快速粗筛 → 为每个 query 挑选候选 key

第二级 — 细粒度 token 选择:
  在候选 key 中做精筛 → 只保留最相关的 k 个

最终复杂度: O(n·k)，k &lt;&lt; n 🚀
</code></pre></div></div>

<h3 id="其他-v32-亮点">其他 V3.2 亮点</h3>

<ul>
  <li><strong>可扩展 RL 框架</strong>：后训练计算量超过预训练的 10%</li>
  <li><strong>Agent 任务合成管线</strong>：85K+ 复杂指令（覆盖代码搜索/通用 agent）</li>
  <li><strong>竞赛成绩</strong>：IMO 2025 金牌（35/42）、IOI 2025 金牌、ICPC 世界总决赛 2025 金牌</li>
  <li><strong><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="SFT" data-def="Supervised Fine-Tuning（监督微调），大模型训练三阶段中的第二阶段。预训练后的模型虽然具有丰富的语言知识，但缺乏遵循指令的能力。SFT 使用人工标注的高质量指令-回答对（通常数万到数百万条）对模型进行进一步训练，使其能够理解并遵循用户意图、按照期望的格式输出、拒绝不当请求。SFT 是连接预训练和强化学习（RL）之间的关键桥梁。数据质量比数据数量更重要——几千条精心标注的 SFT 数据就足以显著提升模型的对齐质量。" data-url="/glossary/sft/">SFT</span> + <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="GRPO" data-def="Group Relative Policy Optimization（分组相对策略优化），DeepSeek 自研的强化学习算法，用于替代 PPO。GRPO 的核心创新是去掉了 PPO 中的 Critic 模型（价值函数模型）。对于每个输入 prompt，GRPO 让当前策略生成多个回答，然后对这组回答的奖励进行内部归一化（减去组均值、除以组标准差），用归一化后的相对优劣作为训练信号。优势：1）无需 Critic 模型，显存减半；2）组内相对比较避免了绝对评分的不一致性；3）训练更稳定，无需担心 Critic 不收敛的问题。GRPO 已被 DeepSeek-V3/R1 等模型验证为高效的 RL 对齐方法。" data-url="/glossary/grpo/">GRPO</span> 联合调优</strong>：监督微调与强化学习的深度融合</li>
</ul>

<hr />

<h2 id="对开发者的启示">对开发者的启示</h2>

<ol>
  <li><strong><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MLA" data-def="Multi-head Latent Attention（多头潜在注意力），DeepSeek-V3 的核心创新之一。它通过将 Key/Value 缓存压缩到低维潜在空间（512 维）来解决长上下文推理中的内存瓶颈。相比标准 MHA（每层 10.73GB KV 缓存），MLA 仅需 0.151GB（减少 98.6%）。更巧妙的是 KV 权重吸收设计：解压缩矩阵 W_uk 和 W_uv 在计算时被吸收进 Q 和输出投影矩阵中，实现零额外开销的解压缩。MLA 使 DeepSeek-V3 在 128K 长上下文下推理速度提升 3.2 倍，是长上下文大模型的关键使能技术。" data-url="/glossary/mla/">MLA</span> 注意力</strong>是长上下文推理的关键——在自建架构中考虑低秩 KV 压缩</li>
  <li><strong>无 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="Auxiliary Loss" data-def="辅助损失函数，在 MoE 训练中用于平衡各专家负载的传统方法。MoE 训练中，路由网络可能倾向于将大部分 token 分配给少数专家，导致负载不均、算力浪费。解决方法是加入一个辅助损失项来惩罚负载不均衡：Loss_total = Loss_main + α × Loss_aux。α 是需要手动调节的超参数，设置不当会干扰主任务。DeepSeek-V3 创新性地提出了无辅助损失的动态 bias 调整策略，通过直接在门控分数上加减偏置值来平衡负载，完全消除了 α 调参的需求，是 MoE 训练的重要改进。" data-url="/glossary/auxiliary-loss/">Auxiliary Loss</span> 负载均衡</strong>是一个实用的 <!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MoE" data-def="Mixture of Experts（混合专家模型），一种通过稀疏激活大幅增加模型容量的架构设计。它将 Transformer 的前馈网络（FFN）替换为多个「专家」子网络（通常 8-256 个），每个 token 通过门控路由网络动态选择少量专家（Top-2 或 Top-8）进行计算。核心优势：总参数量随专家数线性增加，但每 token 的计算量仅随激活专家数增加——实现了参数规模和计算成本的解耦。DeepSeek-V3 使用 256 个路由专家 + 1 个共享专家，总参数 671B 但每 token 仅激活 37B。GPT-4、Mixtral、DeepSeek 等顶级模型均采用 MoE 架构。" data-url="/glossary/moe/">MoE</span> 训练技巧，值得借鉴</li>
  <li><strong>分组 Top-8 路由</strong>在 671B 总参数下只激活 37B，性价比极高</li>
  <li><strong><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="MTP" data-def="Multi-Token Prediction（多 Token 预测），DeepSeek-V3 引入的训练目标创新。传统语言模型在训练时每个位置只预测下一个 token，而 MTP 让模型同时预测多个未来 token（通常是 D=2 或 3 个）。实现方式是在主预测头之外增加 D-1 个辅助预测头，每个辅助头预测第 k 步后的 token。这些辅助头在推理时被丢弃，因此推理零额外开销。MTP 通过强制模型学习更长距离的依赖关系，提升了代码生成和数学推理任务的表现，同时还可用于投机解码加速推理。" data-url="/glossary/mtp/">MTP</span></strong> 实现简单、推理无开销、训练收益明显</li>
  <li><strong><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="FP8" data-def="8-bit Floating Point（8 位浮点数格式），一种低精度数值格式。FP8 有两种主流变体：E4M3（4 位指数 + 3 位尾数）用于前向传播，精度较高但范围有限；E5M2（5 位指数 + 2 位尾数）用于反向传播，范围更广但精度更低。相比 FP16 减少 50% 显存占用，相比 FP32 减少 75%。DeepSeek-V3 是首个在超大规模（671B）上成功使用 FP8 训练的模型，通过块级量化（每 128 个元素一组独立缩放）将量化误差控制在 0.25% 以内，训练成本降低约 50%。" data-url="/glossary/fp8/">FP8</span> 混合精度</strong>在大规模训练中显著降低显存和成本</li>
  <li><strong><!-- Glossary: look up term from _data/glossary.yml --><span class="gloss-ref" data-term="GRPO" data-def="Group Relative Policy Optimization（分组相对策略优化），DeepSeek 自研的强化学习算法，用于替代 PPO。GRPO 的核心创新是去掉了 PPO 中的 Critic 模型（价值函数模型）。对于每个输入 prompt，GRPO 让当前策略生成多个回答，然后对这组回答的奖励进行内部归一化（减去组均值、除以组标准差），用归一化后的相对优劣作为训练信号。优势：1）无需 Critic 模型，显存减半；2）组内相对比较避免了绝对评分的不一致性；3）训练更稳定，无需担心 Critic 不收敛的问题。GRPO 已被 DeepSeek-V3/R1 等模型验证为高效的 RL 对齐方法。" data-url="/glossary/grpo/">GRPO</span> 替代 PPO</strong> 省去 Critic 模型，降低强化学习训练门槛</li>
</ol>

<hr />

<h2 id="参考文献">参考文献</h2>

<ul>
  <li><a href="https://arxiv.org/abs/2412.19437">DeepSeek-V3 Technical Report, arXiv:2412.19437</a></li>
  <li><a href="https://huggingface.co/docs/transformers/v4.56.0/model_doc/deepseek_v3">DeepSeek-V3 on HuggingFace</a></li>
  <li><a href="https://github.com/deepseek-ai/DeepSeek-V3">DeepSeek-V3 官方 GitHub</a></li>
  <li><a href="https://deepwiki.com/deepseek-ai/DeepSeek-V3/4.2-multi-head-latent-attention-(mla)">DeepWiki: MLA 深度解析</a></li>
</ul>]]></content><author><name></name></author><category term="paper-reading" /><category term="DeepSeek" /><category term="MoE" /><category term="MLA" /><category term="大模型" /><category term="推理优化" /><summary type="html"><![CDATA[概述]]></summary></entry></feed>