1. Attention 机制介绍

1.1 为什么要引入 Attention?

在 Attention 出现之前,处理序列数据(比如句子、语音、时间序列)主要用 RNN/LSTM,但它们有个致命问题:记不住长句子

举个例子:你读一句话:“我昨天去了北京,那里的长城真壮观,我还拍了很多照片,打算以后给我的孙子看。”

RNN/LSTM 要从左到右一步步读,读到 “那里” 的时候,早就忘了 “那里” 指的是 “北京” 了。

就像你背课文,背到最后一句,早就忘了第一句是什么了。

这就是长距离依赖问题:句子越长,RNN/LSTM 越记不住前面的信息,效果越差。

Attention 机制就是为了解决这个问题:让模型在处理每个词的时候,都能 “回头看” 整个句子,重点关注和当前词相关的部分

比如处理 “那里” 的时候,模型会自动把注意力集中在 “北京” 这个词上,知道 “那里” 指代的是 “北京”,就像你读课文的时候,遇到 “那里”,会回头看前面的 “北京”。

生活化类比:

以前的 RNN/LSTM 就像 “盲人摸象”,只能一步步摸,看不到整体;

Attention 机制就像 “正常人看大象”,能一眼看到整个大象,重点关注和当前问题相关的部分。

1.2 Attention 机制的核心原理

Attention 机制的本质是 **“加权求和”**:给序列里的每个元素分配一个权重,重点关注的元素权重高,不重要的元素权重低,然后把所有元素按权重加起来,得到当前的输出。

核心公式:

Attention(Q,K,V)=softmax(dk​​QKT​)V

简单拆解:

  1. Q(Query 查询):当前我在看的词,比如 “那里”,代表 “我现在想知道什么”。
  2. K(Key 键):句子里的所有词,比如 “我、昨天、去了、北京、那里……”,代表 “我能提供什么信息”。
  3. V(Value 值):句子里所有词的信息,和 K 一一对应,代表 “信息的具体内容”。
  4. 计算相似度:用 Q 和每个 K 计算相似度,比如 “那里” 和 “北京” 的相似度高,和 “我” 的相似度低。
  5. 归一化权重:用 softmax 把相似度转成 0-1 之间的权重,加起来等于 1,重点关注的词权重高。
  6. 加权求和:把 V 按权重加起来,得到当前词的输出,比如 “那里” 的输出就会包含 “北京” 的信息。

举个具体例子:句子:“我昨天去了北京,那里的长城真壮观。”

Q = “那里”

K = [“我”, “昨天”, “去了”, “北京”, “那里”, “的”, “长城”, …]

计算 Q 和每个 K 的相似度:“那里” 和 “北京” 的相似度最高(0.8),和 “长城” 的相似度次之(0.1),和其他词的相似度很低。

归一化权重:“北京” 的权重是 0.8,“长城” 的权重是 0.1,其他词的权重加起来是 0.1。

加权求和:把 “北京” 和 “长城” 的信息按权重加起来,得到 “那里” 的输出,就知道 “那里” 指代的是 “北京的长城”。

生活化类比:你在看一篇文章,遇到一个不懂的词(Q),你会回头看整篇文章(K),找到和这个词相关的句子(相似度高),重点看这些句子(权重高),把这些句子的信息整合起来(加权求和),理解这个词的意思。

1.3 为什么要除以√d_k?

公式里有个 √d_k,这是为了防止梯度消失

Q 和 K 的维度是 d_k,如果不除以 √d_k,QK^T 的值会很大,softmax 之后的权重会变成 “一个权重接近 1,其他权重接近 0”,梯度就会消失,模型学不到东西。

除以 √d_k 之后,QK^T 的值会被缩放到合适的范围,softmax 之后的权重会更均匀,梯度能正常传播。

类比:就像你给学生打分,如果满分是 1000 分,大家的分数都会很高,差距很小,老师看不出谁好谁坏;如果满分是 100 分,大家的分数差距会更明显,老师能更好地区分学生的水平。

1.4 Scaled Dot-Product Attention(缩放点积注意力)

这是最常用的 Attention 类型,就是我们上面讲的公式,特点是:

计算快:用矩阵乘法,能并行计算,速度快。

效果好:能捕捉长距离依赖,效果远超 RNN/LSTM。

1.5 Multi-Head Attention(多头注意力)

Multi-Head Attention 就是把 Attention 分成多个 “头”,每个头关注不同类型的语义关系,然后把所有头的输出拼起来。

举个例子:句子:“我昨天去了北京,那里的长城真壮观,我还拍了很多照片。”

头 1:关注 “指代关系”,比如 “那里”→“北京”。

头 2:关注 “时间关系”,比如 “昨天”→“拍了照片”。

头 3:关注 “地点关系”,比如 “长城”→“北京”。

头 4:关注 “动作关系”,比如 “去了”→“拍了照片”。

每个头都能捕捉不同类型的语义关系,然后把所有头的信息拼起来,模型就能理解更复杂的句子结构。

类比:就像你看一幅画,一个人只看颜色,一个人只看线条,一个人只看构图,然后把三个人的看法拼起来,就能更全面地理解这幅画。

1.6 Self-Attention(自注意力)

Self-Attention 就是Q、K、V 都来自同一个序列,比如处理句子的时候,Q、K、V 都来自这句话本身,让模型能自己和自己对话,理解句子内部的语义关系。

这是 Transformer 的核心,也是现在大模型的基础,能捕捉句子内部的长距离依赖,效果远超 RNN/LSTM。


2. Transformer 详解

2.1 什么是 Transformer?

Transformer 是 2017 年 Google 提出的全新序列模型架构,完全抛弃了 RNN/LSTM,只用 Attention 机制,能并行计算,处理长序列的效果更好,是现在所有大模型(比如 BERT、GPT、文心一言)的基础。

核心思想:用 Self-Attention 捕捉序列的全局依赖,用 Encoder-Decoder 结构处理序列到序列的任务(比如机器翻译)

类比:

Transformer 就像 “全新的汽车发动机”,以前的 RNN/LSTM 是 “老式蒸汽机”,Transformer 更快、更强、更省油。

2.2 Transformer 的整体架构

Transformer 由两大部分组成:Encoder(编码器)Decoder(解码器)

2.2.1 Encoder(编码器)

  • 作用:把输入序列(比如中文句子)转成语义向量,捕捉输入序列的全局依赖。
  • 结构:由 N 层(比如 6 层)相同的层堆叠而成,每层包含:
    1. Multi-Head Self-Attention:捕捉输入序列内部的语义关系。
    2. Feed Forward Network(FFN):一个两层的全连接网络,对每个位置的向量做非线性变换。
    3. Residual Connection(残差连接):防止梯度消失,让模型能训练得更深。
    4. Layer Normalization(层归一化):让每层的输出分布更稳定,加速训练。

2.2.2 Decoder(解码器)

  • 作用:根据 Encoder 输出的语义向量,生成目标序列(比如英文句子)。
  • 结构:由 N 层(比如 6 层)相同的层堆叠而成,每层包含:
    1. Masked Multi-Head Self-Attention:防止模型在生成当前词的时候,看到后面的词(比如生成第一个词的时候,不能看到第二个词),保证生成的顺序性。
    2. Multi-Head Encoder-Decoder Attention:让 Decoder 关注 Encoder 的输出,把输入序列的信息和目标序列的信息结合起来。
    3. Feed Forward Network(FFN):和 Encoder 的 FFN 一样。
    4. Residual Connection + Layer Normalization:和 Encoder 的一样。

2.2.3 整体流程(以机器翻译为例)

  1. 输入处理:把中文句子转成词嵌入,加上位置编码(因为 Transformer 没有时序信息,需要手动加位置)。
  2. Encoder 编码:把中文句子的词嵌入输入 Encoder,得到语义向量。
  3. Decoder 解码:把英文句子的前缀(比如 “我”)输入 Decoder,Decoder 根据语义向量,生成下一个词(比如 “爱”),然后把 “我爱” 输入 Decoder,生成下一个词(比如 “中”),直到生成结束符。
  4. 输出处理:把 Decoder 的输出转成英文句子。

类比:Encoder 就像 “翻译官读中文句子,理解意思”,Decoder 就像 “翻译官根据理解的意思,写英文句子”。

2.3 位置编码(Positional Encoding)

Transformer 没有 RNN/LSTM 的时序信息,不知道词的顺序,所以需要位置编码,给每个词加上位置信息,让模型知道词的顺序。

位置编码的公式:

PEpos,2i​=sin(100002i/dmodel​pos​)PEpos,2i+1​=cos(100002i/dmodel​pos​)

pos:词的位置(比如第 0 个词、第 1 个词)。

i:向量的维度。

d_model:词嵌入的维度(比如 512)。

这个公式的特点是:

不同位置的词,位置编码不同。

相同位置的词,位置编码相同。

位置编码能捕捉相对位置信息,比如 “第 1 个词和第 2 个词的距离” 和 “第 5 个词和第 6 个词的距离” 是一样的。

类比:就像你给课文里的每个词标上序号,让模型知道 “我” 是第 1 个词,“爱” 是第 2 个词,“中” 是第 3 个词,“国” 是第 4 个词,这样模型就知道词的顺序了。

2.4 Transformer 的优势

并行计算:能同时处理整个序列,不像 RNN/LSTM 要一步步处理,速度快好几倍。

长距离依赖:用 Self-Attention 能捕捉任意长度的依赖,效果远超 RNN/LSTM。

可解释性:Attention 权重能可视化,能看到模型重点关注了哪些词,方便排查问题。

通用性:能处理所有序列任务,比如机器翻译、文本分类、问答系统、文本生成等。

2.5 Transformer 的变种

BERT:只用 Encoder,适合理解类任务(比如文本分类、NER、情感分析)。

GPT:只用 Decoder,适合生成类任务(比如文本生成、对话系统、机器翻译)。

T5:用 Encoder-Decoder,把所有 NLP 任务都看成 “文本到文本”,通用性更强。

ViT(Vision Transformer):把 Transformer 用到图像领域,把图片切成小块,当成词嵌入,效果远超 CNN。

Conformer:结合 CNN 和 Transformer,适合语音处理,效果更好。


3. DeepSeek 算法解析及工程优化

3.1 什么是 DeepSeek?

DeepSeek 是深度求索公司开发的大模型系列,包括对话大模型、代码大模型、数学大模型等,主打 “高效、可控、可定制”,在中文场景下效果很好,是国内领先的大模型之一。

核心定位:面向企业和开发者的通用大模型,提供从训练到部署的全栈解决方案,让企业能快速定制自己的大模型。

类比:DeepSeek 就像 “国产的 ChatGPT”,效果接近 ChatGPT,而且更适合中文场景,部署更简单,成本更低。

3.2 DeepSeek 的核心算法

3.2.1 基于 Transformer 的 Decoder-only 架构

DeepSeek 和 GPT 一样,用Decoder-only 架构,适合生成类任务,能处理对话、写作、代码、数学等各种任务。

核心改进:

更长的上下文窗口:支持 128K/256K 甚至更长的上下文,能处理更长的文本,比如一本书、一份长文档。

更高效的 Attention:用 FlashAttention、PagedAttention 等优化技术,减少内存占用,加快推理速度,能处理更长的上下文。

更好的中文预训练:用海量中文数据预训练,中文理解和生成效果更好,比如成语、文言文、方言的处理。

3.2.2 预训练(Pre-training)

预训练就是在海量无标注文本上训练模型,学到通用语言能力,就像你上小学、中学、大学,学到通用知识。

DeepSeek 的预训练数据包括:

中文互联网数据:新闻、博客、论坛、小说等。

专业领域数据:代码、数学、法律、医疗等。

多语言数据:英文、日文、韩文等,支持多语言。

预训练目标:Causal Language Modeling(CLM),给前面的词,预测下一个词,比如 “我爱吃”→预测 “苹果”。

3.2.3 指令微调(Instruction Tuning)

指令微调就是在预训练模型的基础上,用 “指令 + 输出” 的数据微调,让模型能听懂人类的指令,就像你上大学后,学习具体的专业技能。

DeepSeek 的指令微调数据包括:

通用对话数据:比如 “你好,今天天气怎么样?”→“你好,今天北京晴,气温 10-20℃”。

任务型数据:比如 “写一篇关于春天的作文”→作文内容;“帮我写一个 Python 爬虫”→代码。

对齐数据:让模型的输出符合人类的价值观,比如不生成有害内容、公平对待不同群体。

3.2.4 强化学习(RLHF/PPO)

强化学习就是用人类反馈优化模型,让模型的输出更符合人类的偏好,就像你工作后,根据用户的反馈,不断优化自己的工作。

DeepSeek 用 RLHF(Reinforcement Learning from Human Feedback):

收集人类反馈:让人类给模型的输出打分,比如 “这个回答很好”“这个回答不好”。

训练奖励模型:用人类反馈的数据,训练一个奖励模型,给模型的输出打分。

PPO 优化:用 PPO 算法,根据奖励模型的分数,优化大模型,让模型的输出得分更高,更符合人类的偏好。

3.3 DeepSeek 的工程优化

大模型的工程优化是让模型能跑起来、跑得更快、更省资源,是大模型落地的关键。

3.3.1 训练优化

分布式训练:把模型拆到多卡 / 多机上,用数据并行、模型并行、流水线并行,训千亿参数大模型。

混合精度训练:用 FP16/FP8 混合精度,减少内存占用,加快训练速度,精度损失很小。

激活重计算:重新计算中间激活值,减少内存占用,能训更大的模型。

FlashAttention:优化 Attention 计算,减少内存带宽占用,加快训练速度,支持更长的上下文。

3.3.2 推理优化

量化(Quantization):把模型的参数从 FP16 转成 INT8/INT4,模型体积缩小 4-8 倍,推理速度加快 2-4 倍,精度损失很小。

剪枝(Pruning):去掉模型里没用的参数 / 通道,减少计算量,加快推理速度。

蒸馏(Distillation):用大模型教小模型,让小模型保持大模型的精度,体积更小,推理更快。

PagedAttention:把 KV 缓存分页存储,减少内存碎片,支持更长的上下文,推理速度更快。

张量并行:把模型拆到多张卡上,并行推理,加快推理速度。

3.3.3 部署优化

端侧部署:把模型压缩到手机 / 边缘设备上,实现离线推理,保护隐私。

云侧部署:用容器化、K8s 编排,实现弹性扩缩容,应对高并发。

推理引擎:用 vLLM、TensorRT-LLM 等推理引擎,优化推理流程,加快推理速度,支持更高的并发。

服务化封装:把模型封装成 REST API,方便企业接入,比如智能客服、写作助手、代码助手等。

3.4 DeepSeek 的典型应用场景

智能对话:企业智能客服、个人助手、虚拟主播,能自由聊天,回答问题。

内容创作:写作文、写小说、写邮件、写代码、写文案,提高创作效率。

代码开发:代码生成、代码补全、代码调试、代码解释,提高开发效率。

数学推理:解数学题、物理题、化学题,辅助学生学习。

专业领域:法律文书生成、医疗辅助诊断、金融分析、工业质检,辅助专业人士工作。

多模态交互:图文理解、语音对话、视频理解,实现更自然的人机交互。

3.5 DeepSeek vs 其他大模型

表格

维度 DeepSeek GPT-4 文心一言 通义千问
上下文窗口 128K/256K 128K 128K 128K
中文效果 优秀 良好 优秀 优秀
代码能力 优秀 优秀 良好 良好
数学能力 优秀 优秀 良好 良好
部署成本 低(国产 / 开源) 高(闭源) 中(云服务) 中(云服务)
可定制性 高(支持企业定制) 低(闭源) 中(云服务定制) 中(云服务定制)

总结:

如果你需要中文场景、代码 / 数学能力强、可定制、部署成本低,DeepSeek 是很好的选择。

如果你需要最顶尖的通用能力,GPT-4 还是最好的,但成本很高。


第七章核心知识点总结

  1. Attention 机制:解决 RNN/LSTM 的长距离依赖问题,核心是 “加权求和”,让模型重点关注相关的词,分为 Scaled Dot-Product Attention、Multi-Head Attention、Self-Attention。
  2. Transformer:2017 年提出的序列模型架构,完全抛弃 RNN/LSTM,用 Self-Attention 捕捉全局依赖,由 Encoder 和 Decoder 组成,是所有大模型的基础,优势是并行计算、长距离依赖、通用性强。
  3. 位置编码:给词加上位置信息,让 Transformer 知道词的顺序,用正弦 / 余弦函数生成,能捕捉相对位置信息。
  4. 大模型基础:大模型都是基于 Transformer 的,分为 Encoder-only(BERT)、Decoder-only(GPT/DeepSeek)、Encoder-Decoder(T5),核心是预训练 + 指令微调 + 强化学习。
  5. DeepSeek 算法:Decoder-only 架构,支持长上下文,中文效果好,核心是预训练、指令微调、RLHF 强化学习。
  6. 工程优化:大模型落地的关键,包括训练优化(分布式、混合精度、FlashAttention)、推理优化(量化、剪枝、蒸馏、PagedAttention)、部署优化(端侧 / 云侧、推理引擎、服务化)。
  7. 典型应用:智能对话、内容创作、代码开发、数学推理、专业领域、多模态交互,覆盖各行各业。

 

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐