首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >跟着DeepSeek看懂 Transformer如何生成答案的

跟着DeepSeek看懂 Transformer如何生成答案的

作者头像
烟雨平生
发布2026-04-14 18:55:02
发布2026-04-14 18:55:02
400
举报

当你向 DeepSeek 提问 “什么是 Transformer?” 时,一串 Token 就踏上了一场穿越架构图的奇幻漂流。

它们从左下角的输入口出发,经过编码器的层层淬炼,再进入解码器的单向迷宫,最后从顶部的 Softmax 出口,化作你看到的答案。

如下图所示:

Transformer 的架构图就像一张精密的 “数字地图”,左边是编码器(理解问题),右边是解码器(生成答案),顶部是输出头(把向量变成文字)。让我们跟着 Token 的足迹,一步步拆解这个过程。

第一章:DeepSeek 是按这个流程跑的吗?

是的,DeepSeek等大语言模型的核心推理流程,本质上就是 Transformer架构的自回归生成过程。

不过,不同模型的实现细节会有差异:

  • GPT 类模型(如 DeepSeek):采用纯解码器架构,没有独立的编码器。它通过堆叠解码器层,利用掩码自注意力和交叉注意力,直接从输入序列生成输出序列。
  • BERT 类模型:采用纯编码器架构,主要用于理解和表示文本,不直接生成答案。
  • T5 等模型:采用编码器 - 解码器架构,和原始 Transformer 论文中的结构更接近。

对于 DeepSeek 来说,当你输入 “什么是 Transformer?” 时,流程是这样的:

  1. 输入处理:问题被 Token 化、嵌入并加上位置编码,形成初始向量序列。
  2. 多层解码器处理:向量序列依次通过 N 层解码器。每层包含掩码自注意力(只能看已生成的 Token)、交叉注意力(关注输入问题的上下文)和前馈网络,同时通过残差连接和层归一化保持训练稳定。
  3. 输出预测:最后一层的输出通过线性层和 Softmax,得到下一个 Token 的概率分布。
  4. 自回归生成:选择概率最高的 Token 作为输出,将其拼接到输入序列末尾,重复步骤 2-3,直到生成结束符或达到最大长度。

所以,虽然DeepSeek的架构是纯解码器,但它的核心逻辑和原始 Transformer 是一脉相承的:通过注意力机制建模上下文依赖,通过自回归方式生成连贯文本。

第二章:Token 化与位置编码 —— 给文字穿上数字外衣

一切始于模型的输入层。

你的问题 “什么是 Transformer?” 首先被分词器切成更小的单元:

代码语言:javascript
复制
["什么", "是", "Transformer", "?"]

模型不认识汉字,只认识数字。每个 Token 会被映射成一个唯一的 ID(比如 “什么” 对应 1024),再转换成一个高维的嵌入向量(Embedding)。这个向量就像 Token 的 “基因”,承载了它的初始语义。

但此时这些向量是孤立的 ——“苹果好吃” 和 “好吃苹果” 会得到完全相同的向量序列。于是,位置编码(Positional Encoding) 被注入到每个向量中,给每个位置打上独一无二的 “时间戳”。这样,模型不仅能知道每个词的含义,还能知道它出现在句子的哪个位置。

第三章:自注意力——Token之间的 “社交网络”

带位置信息的向量序列进入Transformer的核心模块 ——多头自注意力(Multi-Head Self-Attention)

自注意力的目标是让每个 Token 根据整个序列的其他 Token 来调整自己的表示。以 “是” 为例:它需要知道前面的 “什么” 和后面的 “Transformer” 才能准确理解自己的角色。

这个过程通过三个变换矩阵完成:

  • 查询(Query):qᵢ = xᵢ W_Q —— 每个 Token 的 “问题”
  • 键(Key):kᵢ = xᵢ W_K —— 每个 Token 的 “答案”
  • 值(Value):vᵢ = xᵢ W_V —— 每个 Token 的 “信息”
图片
图片

Transformer灵魂1问:如何理解Attention中的Q,K,V?你会了吗?一文讲清楚

“是” 会用自己的查询 q₂ 与所有 Token 的键 k₁, k₂, k₃, k₄ 做点积,得到注意力分数,再经过 Softmax 归一化。这个分数反映了 “是” 应该给予每个 Token 多少关注:

  • 对 “什么” 的注意力很高(理解疑问对象)
  • 对 “Transformer” 的注意力也高(疑问的核心)
  • 对自己和 “?” 的注意力较低

然后,用这些分数加权求和所有 Token 的值向量,得到 “是” 的注意力输出。这个过程在多个 “头” 中并行进行(比如 12 个头),每个头关注不同的关系模式(比如一个头关注语法,另一个头关注指代)。最后将所有头的输出拼接,得到该 Token 的最终自注意力表示。

第四章:前馈网络 —— 每个 Token 的 “私人加工厂”

自注意力输出的向量接着进入前馈网络(FFN),对每个 Token 独立处理:

代码语言:javascript
复制
FFN(x) = W₂ · σ(W₁ · x + b₁) + b₂

这个网络就像每个 Token 的 “私人加工厂”,对语义进行更复杂的变换,提取高阶特征。比如,它可能将 “Transformer” 的表示中强化 “模型”“架构” 等属性,或者将 “是” 的表示中融入 “系动词” 的语法信息。

在每个子层之后,都紧跟着残差连接层归一化

代码语言:javascript
复制
输出 = LayerNorm(输入 + 子层(输入))
  • 残差连接:让梯度可以直接流过,避免深层网络梯度消失,同时允许模型在需要时绕过子层(直接复制输入)。
  • 层归一化:把每层的输出拉回到均值为 0、方差为 1 的分布,加速训练并稳定激活值。

这种设计让我们可以堆叠几十甚至上百层,每一层都在前一层的基础上逐步精炼语义。

第五章:1M 上下文:DeepSeek 如何把交互范围扩展到 “整个图书馆”?

DeepSeek 新版本支持的 1M 上下文窗口,意味着模型可以一次性处理长达 100 万个 Token 的输入 —— 相当于一本长篇小说的全部内容。这需要在多个环节加强处理能力:

1. 注意力机制:从 O (n²) 到线性复杂度

传统的自注意力机制时间复杂度是 O (n²),当 n 从 4k 扩展到 1M 时,计算量会爆炸式增长。为了支持长上下文,DeepSeek 等模型采用了以下优化:

  • FlashAttention:通过分块计算和优化内存访问,将注意力计算的时间和空间复杂度降低,同时保持精度。
  • 滑动窗口注意力:只让每个 Token 关注窗口内的最近 Token,而不是整个序列,将复杂度降低到 O (n × window_size)。
  • 稀疏注意力:通过设计稀疏的注意力模式(如只关注前 k 个 Token 或特定位置),减少计算量。

2. 内存管理:处理海量向量

1M 个 Token 的嵌入向量(假设维度为 4096)需要约 4GB 的内存,再加上注意力分数、中间激活值等,总内存需求会达到数十 GB。DeepSeek 通过以下方式优化:

  • 量化技术:将浮点数从 FP32 压缩到 FP16 或 INT8,减少内存占用。
  • 分块推理:将长序列分成多个块,逐块处理,避免一次性加载全部数据。
  • KV 缓存优化:重用之前计算的键值(Key-Value)缓存,避免重复计算。

3. 训练与微调:让模型学会 “长记性”

长上下文能力不是凭空而来的,需要在训练和微调阶段专门优化:

  • 长文本预训练:在预训练阶段使用更长的文本序列,让模型适应长距离依赖。
  • 位置编码扩展:将位置编码的最大长度从 512 或 2048 扩展到 1M,确保模型能理解长序列中的位置信息。
  • 微调任务设计:使用需要长上下文理解的任务(如文档摘要、长对话、代码生成)进行微调,强化模型的长距离建模能力。

第六章:自回归生成 —— 像写作文一样逐字输出

生成答案是一个自回归的过程:逐个 Token 地生成,每次用已生成的 Token 序列预测下一个 Token。

具体流程是:

  1. 输入问题 “什么是 Transformer?” → 模型处理 → 得到问题的上下文表示。
  2. 初始输入是一个特殊的开始 Token(如<s>)。
  3. 掩码自注意力:只能看开始 Token。
  4. 交叉注意力:用开始 Token 去查询问题的上下文表示。
  5. 前馈网络加工 → 输出头生成第一个 Token(如 “Transformer”)。
  6. 把这个 Token 拼到输入里,重复步骤 3-5,直到生成结束 Token(如</s>)。

在这个过程中,每一步的注意力机制都会让模型关注之前生成的所有内容(包括问题和已生成的答案),从而保证上下文连贯。

第七章:为什么 Transformer 能 “理解” 并生成答案?

从Token的视角看,整个过程就是一个不断汇聚信息、变换表示、逐层抽象的旅程:

  • 编码器 / 解码器:把问题变成一个包含所有上下文信息的向量表示。
  • 自回归生成:根据这个表示,逐个生成答案 Token,同时保证逻辑连贯。
  • 输出头:把向量翻译回人类能懂的文字。

模型并不像人类那样拥有意识,但它通过数学运算捕捉到了语言中统计规律和结构。当你得到答案时,那并不是某个神经元在 “思考”,而是一系列精心设计的矩阵乘法、激活函数和注意力加权的结果。

Transformer的强大,在于它把序列处理变成了并行的向量运算,让每个 Token都能直接与所有其他Token交互,从而高效建模长距离依赖。而 DeepSeek新版本的 1M 上下文,不过是把这种交互的范围从几页书扩展到了整个图书馆 ——Token 们的旅行,才刚刚开始。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-02-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 的数字化之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一章:DeepSeek 是按这个流程跑的吗?
  • 第二章:Token 化与位置编码 —— 给文字穿上数字外衣
  • 第五章:1M 上下文:DeepSeek 如何把交互范围扩展到 “整个图书馆”?
    • 1. 注意力机制:从 O (n²) 到线性复杂度
    • 2. 内存管理:处理海量向量
    • 3. 训练与微调:让模型学会 “长记性”
  • 第六章:自回归生成 —— 像写作文一样逐字输出
  • 第七章:为什么 Transformer 能 “理解” 并生成答案?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档