DeepSeek模型架构和损失函数介绍
下面深入剖析一下DeepSeek训练过程中所使用的损失函数。与标准的GPT类似,但其最新的MoE架构(以DeepSeek-V2为例)引入了关键的创新,这使得其损失函数变得更加复杂和精巧。DeepSeek的训练同样分为预训练和微调/对齐两个主要阶段,不同阶段的损失函数有不同的侧重点。特性DeepSeek (以V2为例)说明与优势核心架构混合专家(MoE)以少量激活参数(21B)实现巨大模型容量(23
目录
一、核心架构:混合专家模型 (Mixture-of-Experts, MoE)
阶段一:大规模预训练 (Large-Scale Pre-training)
阶段二:监督微调与对齐 (Supervised Fine-Tuning & Alignment)
1. 主损失:语言建模损失 (Language Modeling Loss)
2. 辅助损失:负载均衡损失 (Load Balancing Loss) - MoE的核心
第二阶段:微调与对齐 (Fine-tuning & Alignment) 的损失函数
DeepSeek是深度求索公司推出的一系列大型语言模型,以其卓越的性能和开源精神受到了广泛关注。DeepSeek的核心技术理念与GPT类似,都基于Transformer Decoder架构,并在其基础上进行了诸多创新和优化。以下内容主要基于目前已公开的DeepSeek-V2和DeepSeek-V1(LLM)的技术细节。
与GPT的对比:
一、核心架构:混合专家模型 (Mixture-of-Experts, MoE)
DeepSeek最新的V2版本采用了一种非常先进且高效的架构:混合专家模型(MoE)。这与标准的密集型模型(如GPT-3)有显著区别。
1. 核心思想:稀疏激活
-
传统模型(密集型): 每次处理一个输入(Token)时,模型的所有参数(如1760亿)都会被激活和使用。这导致计算和显存开销巨大。
-
MoE模型(稀疏型): 模型的总参数规模非常大(DeepSeek-V2总参数量为2360亿),但针对每个具体的输入,只会激活其中的一小部分专家进行计算。这实现了“用更小的计算成本,撬动更大模型容量”的效果。
2. DeepSeek-V2的架构组成
DeepSeek-V2的架构可以分解为几个关键部分:
-
总参数量: 236B (2360亿)
-
激活参数量: 仅 21B (210亿)。这意味着处理每个Token时,实际参与计算的参数只有总参数的约1/10,极大地提升了推理效率。
-
专家数量: 模型包含了 64个 前馈网络(FFN)作为“专家”。
-
路由机制: 一个聪明的路由器(Router) 会根据当前输入的特征,选择最相关的2个专家(Top-2 Gating)来处理它。其他62个专家处于“休眠”状态,不参与计算。
-
注意力机制: 与标准Transformer一样,自注意力层(Self-Attention)是密集型的,即每个Token都会经过注意力层。这意味着模型保留了强大的上下文建模能力。
-
MLP层被替换: 在Transformer块中,传统的密集型前馈网络(FFN)被MoE层(即多个FFN专家) 所取代。这是实现参数稀疏化的关键。
简单比喻: 想象一个拥有2360名专家的顾问团(总参数)。每次你提出一个问题(输入一个Token),会有一位聪明的协调员(Router)根据问题领域,只请出2位最顶尖的专家(激活参数)来为你解答,而不是让所有2360人都来开会。这样既高效又专业。
3. 其他关键架构细节
-
词汇表(Vocabulary): 采用与GPT-4类似的分词器(Tokenizer),大小为128,256,对中英文编码效率都很高。
-
上下文长度(Context Length): 支持128K字符的超长上下文,非常适合处理长文档、代码库分析等任务。
-
激活函数: 使用SwiGLU激活函数,这是现代大模型常见的选择,相比传统的ReLU能提供更好的性能。
二、训练过程:高效的两阶段预训练
DeepSeek的训练同样遵循“预训练 + 微调”的范式,但在数据、规模和策略上极具特色。
阶段一:大规模预训练 (Large-Scale Pre-training)
这是最核心、最耗资源的阶段,目标是让模型吸收海量知识,获得通用能力。
-
训练数据:
-
规模巨大: 在2万亿个高质量中英双语Token上进行了训练。
-
高质量过滤: 数据来源包括互联网文本、代码、书籍、学术论文等,并经过了严格的清洗和去重,确保数据质量。
-
中英平衡: 特别注重中文和英文数据的平衡与质量,这使得DeepSeek在中英文任务上都表现出色。
-
-
训练基础设施:
-
使用了大规模的GPU集群(数千张NVIDIA H800等顶级显卡)。
-
采用了ZeRO(零冗余优化器)、3D并行(数据并行、流水线并行、张量并行) 等分布式训练技术,才能将如此巨大的模型成功训练起来。
-
-
训练目标:
-
标准的自回归语言建模,即预测下一个Token。模型在庞大的文本序列上学习语言的语法、逻辑、事实和推理能力。
-
阶段二:监督微调与对齐 (Supervised Fine-Tuning & Alignment)
预训练后的模型是一个“知识渊博但未经驯化”的基座模型(Base Model)。微调阶段旨在教会它如何更好地遵循指令、与人对话,并变得有用、诚实和无害。
-
指令微调(Instruction Tuning):
-
使用大量人工精心编写的指令-回复对数据对模型进行有监督训练。
-
例如,输入:“写一首关于春天的诗”,输出是人工写好的诗。通过这种方式,模型学会了如何理解和执行人类的指令。
-
-
人类反馈强化学习(RLHF):
-
这是打造像ChatGPT一样流畅对话模型的关键技术,DeepSeek也采用了类似流程。
-
训练奖励模型(Reward Model, RM): 收集人类标注员对不同模型回复的质量排序(哪个回复更好),然后训练一个单独的奖励模型来学习人类的偏好。
-
强化学习优化: 使用PPO(近端策略优化)等强化学习算法,以奖励模型的打分作为指导,优化语言模型的策略,使其生成的回复越来越符合人类的喜好。
-
三、损失函数介绍
下面深入剖析一下DeepSeek训练过程中所使用的损失函数。与标准的GPT类似,但其最新的MoE架构(以DeepSeek-V2为例)引入了关键的创新,这使得其损失函数变得更加复杂和精巧。DeepSeek的训练同样分为预训练和微调/对齐两个主要阶段,不同阶段的损失函数有不同的侧重点。
第一阶段:预训练 (Pre-training) 的损失函数
预训练的核心目标依然是自回归语言建模,即预测下一个token。因此,其主损失函数与GPT一样,是交叉熵损失(Cross-Entropy Loss)。
1. 主损失:语言建模损失 (Language Modeling Loss)
对于一个长度为 T 的序列 ,其损失函数定义为:
其中:
-
是模型基于之前所有token
后,预测下一个真实token
的概率。
-
Θ 代表模型的所有参数(包括共享参数和专家参数)。
-
这个损失衡量的是模型预测分布与真实“one-hot”分布之间的差异。
对于MoE模型: 计算 时,只使用了被路由器(Router)选中的那少数几个专家(如Top-2)。这意味着主损失
只用于更新这些被激活的专家参数和模型的所有共享参数(如Attention层、Router本身)。
2. 辅助损失:负载均衡损失 (Load Balancing Loss) - MoE的核心
这是MoE模型相较于稠密模型最关键的增加项。如果只有主损失 ,路由器(Router)会倾向于总是选择那几个表现最好的专家,形成“强者恒强”的马太效应。而其他专家因为得不到训练,会永远保持随机初始化的状态,导致模型容量无法被有效利用。
负载均衡损失的目的是鼓励所有专家都能被平等地利用起来,确保训练的均衡性。DeepSeek-V2采用了常见的辅助损失(Auxiliary Loss) 设计:
其中:
-
N:专家总数(DeepSeek-V2中 N=64N=64)。
-
:第 i 个专家在当前训练批次(Batch) 中被选中的频率(即处理了多少个token)。
-
:第 i 个专家在当前批次上路由器输出概率的平均值。
-
α:一个超参数,用于控制辅助损失的重要性强度(例如0.01)。
这个损失如何工作?
-
理想情况:所有专家都被平等利用,
和
都很小且均匀,
的值较小。
-
不平衡情况:如果某些专家被过度使用(
和
很大),而其他专家被忽视,
的值会很大,导致
显著增大。
-
通过最小化
,路由器会被激励以更均衡的方式分配任务,从而让所有专家都参与到学习中来。
3. 预训练的总损失
预训练阶段最终需要最小化的总损失函数是主损失和辅助损失的加权和:
通过这个总损失,模型同时优化了两个目标:
-
语言建模能力(通过
):确保模型输出的预测准确。
-
模型效率与均衡(通过
):确保巨大的模型容量能被充分且高效地利用。
第二阶段:微调与对齐 (Fine-tuning & Alignment) 的损失函数
预训练得到的是“知识渊博但未驯化”的基座模型。微调阶段的目标是让其遵循指令、安全、有用。此阶段损失函数的形式可能与预训练相同,但训练数据和目标发生了变化。
1. 监督微调 (SFT) 损失
使用人工编写的优质指令-回复对 (X,Y) 进行训练。
-
输入:指令 X (例如:“写一首关于秋天的诗”)
-
目标:期望的回复 Y (例如:“秋风送爽,稻谷金黄...”)
-
损失计算:损失函数依然是交叉熵,但只计算回复部分 Y 的损失,指令部分 X 的损失会被掩码(mask)掉,不参与梯度计算。
其中 L 是回复 Y 的长度。这样,模型学会了如何基于指令生成高质量回复。
2. 人类反馈强化学习 (RLHF) 损失
这是打造ChatGPT式对话模型的关键,DeepSeek几乎必然使用了此技术。RLHF不直接使用交叉熵损失,而是涉及一个全新的优化框架。
其损失函数由三部分组成:
(1)策略损失:最大化奖励模型 给出的得分。
其中 是当前需要优化的语言模型策略。
(2)KL惩罚项:防止优化后的策略 偏离原始SFT模型
太远,以避免过度优化或生成无意义的文本(“模式崩溃”)。
其中 β 是控制惩罚强度的超参数。
(3)价值函数损失(可选):如果训练框架包含价值函数(Value Function),还会有一个均方误差损失,用于让价值函数的预测更准确。
RLHF的总损失可以看作是:
通过PPO等强化学习算法优化这个损失,模型生成的回复会越来越符合人类的偏好。
训练阶段 | 主要损失函数 | 目的与说明 |
---|---|---|
预训练 | ||
监督微调 | 学习如何遵循指令并生成高质量回复。只计算回复部分的损失。 | |
对齐 | 基于人类偏好进一步优化模型,使其回复更加有用、诚实、无害。 |
总而言之,DeepSeek的损失函数设计体现了现代大模型训练的精巧之处:
-
预训练:在经典语言建模损失的基础上,为MoE架构量身定制了辅助损失,解决了大规模分布式训练中的负载均衡难题。
-
微调与对齐:采用与业界前沿(如OpenAI)一致的RLHF技术,其损失函数旨在优化一个更复杂、更主观的“人类偏好”目标。
这种组合使得DeepSeek既能高效地从海量数据中学习,又能最终对齐到人类的价值观和需求上。
总结与特点
特性 | DeepSeek (以V2为例) | 说明与优势 |
---|---|---|
核心架构 | 混合专家(MoE) | 以少量激活参数(21B)实现巨大模型容量(236B),推理效率极高,成本更低。 |
关键技术 | Top-2 Gating, 稀疏激活 | 智能路由,保证性能的同时大幅降低计算开销。 |
语言优势 | 中英双语深度优化 | 训练数据中英平衡,在中文理解和生成任务上表现世界领先。 |
上下文长度 | 高达128K | 具备强大的长文本处理能力,适用于长文档阅读、代码分析等复杂场景。 |
训练数据 | 2万亿Token,高质量中英数据 | 规模大、质量高,为模型能力奠定了坚实基础。 |
开放性 | 开源 | 发布了模型权重,供研究者和开发者免费商用,极大地推动了AI社区发展。 |
总而言之,DeepSeek的成功源于其在尖端架构(MoE)、海量高质量数据和大规模工程实现三方面的深度融合。它不仅是技术实力的体现,更是其开源精神和对中英文社区巨大贡献的体现。
更多推荐
所有评论(0)