深入理解大语言模型的核心架构
Transformer是2017年Google提出的革命性神经网络架构,论文《Attention is All You Need》标志着NLP领域的重大突破。
不像RNN需要顺序处理,可以并行训练,大幅提升效率
通过注意力机制直接建立任意位置间的联系
易于堆叠更多层,支持超大规模模型
适用于NLP、CV、语音等多个领域
2017年Transformer的出现,彻底改变了自然语言处理的发展轨迹。要理解它的重要性,我们需要先看看之前的困境。
主流技术:
通俗理解:它们都像“人读书”,必须按顺序读。读到后面时,要记住前面信息就会变难。
共同点:把一句话看成序列 x1, x2, x3...,一步一步处理。
基本思路:像人读书一样,一个词一个词地顺序处理
🐌 串行处理,速度极慢
🧠 长距离依赖难题
例句:"我在北京工作了五年,然后搬到上海,那里的生活节奏很快,我非常喜欢____。"
传统RNN的困境:
• 处理到"非常喜欢"时,可能已经忘了"上海"
• 无法准确预测应该填"上海"还是"北京"
• 信息在长距离传递中衰减严重
性能瓶颈:
• 翻译长段落:需要几分钟
• 训练大型语料:需要几周甚至几个月
• 实时应用:延迟过高,用户体验差
上面三张卡片是“结论”。如果你想真正理解它们为什么会被 Transformer 取代,可以用下面三个生活场景建立直觉。
你让同学听你读一段话,他不能回看原文,只能靠“脑子里当前那点印象”继续听下一句。
h同学边听边记笔记,但他会做两件事:不重要的删掉,重要的留下并反复看。
以前翻译靠“听完一句话,脑内总结一下再翻”。Attention 的改进是:翻译到某个词时,允许你回头看原文的关键位置。
| 方法 | 怎么记住上下文? | 最痛的问题 |
|---|---|---|
| RNN | 用一个隐藏状态 h 递推传下去 |
长距离依赖差 + 顺序计算慢 |
| LSTM/GRU | 门控决定记/忘(更能保留关键信息) | 仍顺序、仍慢,超长序列仍吃力 |
| Seq2Seq+Attention | 每一步“回看输入”,动态取重点 | 仍有 RNN 顺序瓶颈,推理易错误累积 |
你可以把 h 理解为“脑海里的当前印象”。LSTM/GRU 的关键是:给这份印象加了可学习的开关,决定哪些信息应该留下、哪些该丢掉。
Seq2Seq 的瓶颈是:把整句输入压成一个向量 context(信息挤在一个“背包”里)。Attention 的改进是:Decoder 每翻译一步,都能回头看整句输入里更相关的位置,临时拼出当前需要的上下文。
之前:串行处理,一个接一个
Transformer:所有词同时处理
效果:训练速度提升10-100倍
影响:大规模模型训练成为可能
之前:信息在传递中丢失
Transformer:任意位置直接连接
效果:完美解决长距离依赖
影响:长文本理解能力大幅提升
之前:固定的信息传递路径
Transformer:动态学习词间关系
效果:更精准的语义理解
影响:模型表达能力质的飞跃
| 任务 | 传统方法 | Transformer | 提升幅度 |
|---|---|---|---|
| 机器翻译 | BLEU: 25-30 | BLEU: 40-45 | 🚀 +60% |
| 训练速度 | 串行,缓慢 | 并行,极速 | ⚡ +1000% |
| 长文本处理 | 信息丢失严重 | 保持全局信息 | 🎯 质的飞跃 |
Transformer采用编码器-解码器(Encoder-Decoder)架构,彻底革新了序列建模的方法。它完全摒弃了传统的循环结构,仅基于注意力机制构建,实现了真正的并行化和长距离依赖捕捉。
用注意力机制替代RNN的所有功能,包括序列建模和依赖关系捕捉
句子:"小明喜欢苹果,因为它们很甜"
注意力分析:
效果:无需RNN的记忆机制,直接通过注意力建立联系
摆脱序列处理的束缚,所有位置可以同时计算,大幅提升训练效率
RNN处理方式:
Transformer处理方式:
速度提升:训练时间从几天缩短到几小时
任意两个位置之间都可以直接建立联系,不受距离限制
长句案例:"我在北京工作了五年之后搬到了上海,在那里我找到了新的工作,虽然薪水不如以前,但是我很喜欢这座城市的生活节奏,特别是______"
全局连接:
优势:解决长距离依赖问题
通过堆叠相同的层来增加模型深度,提升表达能力
逐层抽象:
实际效果:
• 串行处理
• 信息逐级传递
• 长距离依赖弱
• 训练速度慢
• 并行处理
• 直接全局连接
• 长距离依赖强
• 训练速度快
示例句子:"猫追老鼠,因为它饿了"
理解:模型通过注意力权重理解"它"指的是"猫"而不是"老鼠"
Transformer无法直接处理文本,需要将词语转换为数字向量,同时还要告诉模型每个词的位置信息。这是理解Transformer的第一步!
作用:将离散的词语转换为连续的向量表示
# 文本到向量的转换示例
输入文本: "我爱学习"
词汇表映射: {"我": 156, "爱": 892, "学习": 2341}
数字序列: [156, 892, 2341]
嵌入向量:
"我" → [0.12, -0.45, 0.78, ..., 0.23]
"爱" → [-0.34, 0.67, -0.12, ..., 0.89]
"学习"→ [0.56, -0.23, 0.41, ..., -0.67]💡 核心概念:
作用:为每个词向量添加位置信息,让模型知道词的顺序
# 正弦/余弦位置编码
PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
其中:
- pos: 位置索引 (0, 1, 2, ...)
- i: 向量维度索引 (0, 1, 2, ...)
- d_model: 模型维度 (如512)🎯 为什么需要位置编码?
将词向量与位置向量相加,得到既包含语义信息又包含位置信息的最终输入向量。
# 完整的输入处理流程
输入文本: "机器学习很有趣"
步骤1: 分词
["机器", "学习", "很", "有趣"]
步骤2: 词汇映射
[234, 567, 123, 890]
步骤3: 词嵌入
Embeddings = [
[0.1, -0.2, 0.3, ...], # "机器"
[0.4, 0.1, -0.1, ...], # "学习"
[-0.2, 0.3, 0.2, ...], # "很"
[0.0, -0.1, 0.4, ...] # "有趣"
]
步骤4: 位置编码
Positional = [
[0.5, 0.0, -0.5, ...], # 位置0
[0.0, 0.5, 0.0, ...], # 位置1
[-0.5, 0.0, 0.5, ...], # 位置2
[0.0, -0.5, 0.0, ...] # 位置3
]
步骤5: 相加得到最终输入
Final_Input = Embeddings + Positional = [
[0.6, -0.2, -0.2, ...], # "机器" + 位置0
[0.4, 0.6, -0.1, ...], # "学习" + 位置1
[-0.7, 0.3, 0.7, ...], # "很" + 位置2
[0.0, -0.6, 0.4, ...] # "有趣" + 位置3
]将词转为向量
Multi-Head Attention
Feed Forward
已生成的词
Masked Attention
Cross Attention
Feed Forward
预测下一个词
× N 层?为什么不只用 1 层?
编码器负责将输入序列转换为富含上下文信息的表示,每个位置的输出都包含了对整个输入序列的理解。
编码器层输出 = LayerNorm(X + MultiHeadAttention(X))
最终输出 = LayerNorm(中间输出 + FeedForward(中间输出))
其中:
- X: 输入嵌入 + 位置编码
- MultiHeadAttention: 多头自注意力机制
- FeedForward: 前馈神经网络
- LayerNorm: 层归一化🔍 简单理解:自注意力就像一个"智能关系网"
想象你在读一句话时,大脑会自动分析每个词与其他词的关系。 自注意力机制就是让计算机具备这种能力,找出词与词之间的"关联度"!
句子:"小明的妈妈给他买了玩具"
关系分析:
自注意力:自动计算这些关系的强弱
句子:"苹果公司发布了新手机"
自注意力分析:
结果:每个词都获得了丰富的上下文信息
# 自注意力的简单理解
1. 每个词提出问题:"谁与我关系最密切?"
2. 计算与其他所有词的"相似度分数"
3. 把分数转换成"注意力权重"(0-1之间)
4. 用权重对所有词进行"加权平均"
就像:投票选举,关系越密切投票权重越大💡 记忆技巧:自注意力 = "智能关系分析器",让每个词都"认识"其他词
🎯 简单理解:前馈网络就像一个"信息加工厂"
想象一下,注意力机制已经帮我们找到了哪些词很重要,但还需要进一步"消化"这些信息, 提取出更深层的特征。前馈网络就是做这个工作的!
原材料:注意力机制的输出(已经知道哪些词重要)
加工过程:前馈网络处理(提取深层特征)
成品:更丰富的特征表示(用于下一层处理)
输入:"机器学习" + 注意力权重
前馈网络处理:
输出:包含丰富语义信息的特征向量
# 前馈网络的简单结构
输入向量 → [扩展维度] → [激活函数] → [压缩维度] → 输出向量
例如:
512维 → 2048维 → ReLU激活 → 512维
就像:先"发散思维"再"聚焦总结"💡 记忆技巧:注意力机制 = "找重点",前馈网络 = "深加工"
这些模型只使用Transformer的编码器部分,专注于理解和分析文本,而不是生成文本。
全称:Bidirectional Encoder Representations from Transformers
发布:Google 2018年
特点:双向理解,上下文感知
🎯 主要用途:
💡 实际应用:搜索引擎、客服系统、内容审核
全称:Robustly Optimized BERT Pretraining Approach
发布:Facebook 2019年
特点:BERT的优化版本,训练更充分
🎯 主要用途:
💡 实际应用:Facebook内容理解、学术研究
全称:A Lite BERT
发布:Google 2019年
特点:参数共享,更小更高效
🎯 主要用途:
💡 实际应用:手机输入法、轻量级NLP服务
代表:mBERT, XLM-RoBERTa
发布:Google, Facebook
特点:支持104种语言,跨语言理解
🎯 主要用途:
💡 实际应用:跨境电商、国际社交平台
领域:生物医学、临床医疗
发布:学术界 2019-2020年
特点:医学文献预训练,专业术语理解
🎯 主要用途:
💡 实际应用:医疗诊断辅助、药物研发
领域:金融财经
发布:清华大学 2020年
特点:金融文本预训练,财经术语理解
🎯 主要用途:
💡 实际应用:证券分析、风险管理
解码器比编码器更复杂,包含三种不同的注意力机制,分别处理不同的信息源。让我们通过可视化的方式来理解这个精妙的设计!
作用:防止"作弊"
例子:预测"❓"时只能看"我、爱、你"
效果:确保生成过程的正确性
作用:连接输入和输出
例子:"I" → "我", "❤️" → "爱"
效果:实现翻译对齐
你可以把注意力想成:每个位置先把自己“变成一个提问者Q”,再去和所有“候选信息K”做匹配,最后把对应的信息V按权重汇总。
最关键的一句话:Q决定“我想找什么”,K决定“我是谁/我有啥特征”,V决定“真正要带走的内容”。
想象解码器是一个聪明的厨师,要做一道翻译"菜":
厨师动作:看看自己已经做了什么
实际例子:
技术称呼:掩码自注意力
厨师动作:对照原文找灵感
实际例子:
技术称呼:交叉注意力
厨师动作:综合所有信息做菜
实际例子:
技术称呼:前馈网络
每生成一个新词,解码器都要做三件事:
💡 记忆技巧:
阶段1: 掩码自注意力(回头看)
MaskedAttention = MultiHeadAttention(Q, K, V, mask=true)
阶段2: 交叉注意力(对照看)
CrossAttention = MultiHeadAttention(Q_dec, K_enc, V_enc)
阶段3: 前馈网络(深度想)
Output = FeedForward(CrossAttention + MaskedAttention)💡 提示:理解了上面的比喻,再看代码就简单了!
任务:将 "I love you" 翻译成中文
编码器输出:[I的向量, love的向量, you的向量]
• 掩码自注意力:只能看到[开始]
• 交叉注意力:关注编码器的"I"
• 掩码自注意力:可以看到"我"
• 交叉注意力:关注编码器的"love"
• 掩码自注意力:可以看到"我、爱"
• 交叉注意力:关注编码器的"you"
目的:防止解码器在预测第i个词时"看到"第i个词及其之后的词
🎯 核心原因:模拟真实的生成过程
在实际应用中,模型是一个词一个词生成的,就像我们说话一样:
⚠️ 如果不掩码会怎样?
训练和实际使用保持一致,避免"训练时作弊,使用时不行"
强制模型基于已有信息推理,生成更合理的内容
确保模型在各种场景下都能正常工作
支持实时生成,如聊天机器人、同声传译等
📝 考试比喻:
🗣️ 对话比喻:
# 掩码矩阵示例(下三角矩阵)
mask = [
[1, 0, 0, 0], # 位置1只能看到自己
[1, 1, 0, 0], # 位置2能看到位置1和2
[1, 1, 1, 0], # 位置3能看到位置1,2,3
[1, 1, 1, 1] # 位置4能看到所有位置
]比喻:就像考试时不能提前看后面的题目
效果:确保模型按顺序生成,不会"偷看"答案
💡 总结:掩码自注意力确保了模型训练和实际使用的一致性,是Transformer能够成功应用于生成任务的关键设计!
目的:让解码器关注编码器的输出,建立输入与输出的联系
一句话解释:解码器做翻译时,需要不断回头看原文
🤔 为什么要这样做?
📚 翻译官比喻:
🎨 画画比喻:
📋 三个角色分工:
来自解码器:"我现在需要翻译什么?"
例:我要翻译"is"
来自编码器:"原文有哪些词?"
例:Machine, learning, is, useful
来自编码器:"每个词的具体含义"
例:机器,学习,是,有用的
🔄 翻译任务:"The cat sits on the mat" → "猫坐在垫子上"
💬 对话任务:用户问"今天天气怎么样?" → AI回答
# Q来自解码器,K,V来自编码器
Q = decoder_output # 查询:当前需要什么信息
K = encoder_output # 键:编码器提供了什么信息
V = encoder_output # 值:编码器的具体内容例子:"Machine learning is useful" → "机器学习很有用"
效果:实现输入输出的精确对齐
💡 总结:交叉注意力就像翻译时的"对照检查",确保输出与输入保持正确的对应关系!
输入:"I love machine learning"
输出:"我爱机器学习"
编码器:理解英文句子的语法结构和语义
解码器:生成对应的中文表达
交叉注意力:对齐"love"和"爱"等对应关系
用户:"今天天气怎么样?"
系统:"今天晴朗,温度25度,适合外出"
上下文理解:编码器理解用户意图
知识检索:注意力机制激活相关知识
生成回复:解码器生成自然流畅的回答
原文:长篇新闻报道...
摘要:"某公司发布新产品,创新功能获好评"
信息抽取:编码器识别关键信息
重要性判断:注意力权重评估内容重要性
压缩表达:解码器生成简洁摘要
| 模型 | 时间复杂度 | 空间复杂度 | 并行能力 |
|---|---|---|---|
| RNN/LSTM | O(n·d²) | O(n·d) | ❌ 串行 |
| Transformer | O(n²·d) | O(n²) | ✅ 并行 |
说明:n=序列长度,d=模型维度。Transformer虽然复杂度更高,但并行化带来的实际训练速度提升远超理论复杂度。
仅编码器架构
仅解码器架构
完整编码器-解码器
Sparse Attention, Longformer
Distillation, Quantization
Vision-Language, Audio-Text
Mixture of Experts, MoE
自注意力是Transformer的核心创新,它让模型能够关注输入序列中的不同位置,理解词与词之间的关系。
例句:"The animal didn't cross the street because it was too tired."
注意力机制会计算"it"与句子中每个词的相关性:
✅ 结论: 模型通过注意力权重判断"it"最可能指代"animal"(85%),而不是"street"。
查询向量:当前词想要查找什么信息
键向量:每个词提供的索引信息
值向量:每个词的实际内容信息
Q = 技术风险大不大?
K = [技术部负责人, 财务部负责人, 人力资源负责人, 法务负责人, ...]
softmax 过于极端(接近 one-hot)、梯度变小,训练更不稳定。Attention(Q, K, V) = softmax(QK^T / √d_k) VL=2(2个词),向量维度 d_k=4。
Q (2,4) = [
[ 0.02, -0.01, 0.03, -0.02],
[-0.01, 0.04, -0.02, 0.01]
]
K (2,4) = [
[ 0.03, -0.02, 0.01, 0.04],
[-0.02, 0.01, -0.03, 0.02]
]
V (2,2) = [
[0.1, 0.2],
[0.3, 0.4]
](L,d_k),V 的形状是 (L,d_v)(这里 d_v=2)。
K^T (4,2) = [
[ 0.03, -0.02],
[-0.02, 0.01],
[ 0.01, -0.03],
[ 0.04, 0.02]
]
QK^T (2,2) ≈ [
[ 0.0015, -0.0022],
[-0.0022, 0.0031]
](L,d_k) × (d_k,L) → (L,L),这里是 (2,4)×(4,2)→(2,2)。
√d_k = √4 = 2
Scaled = QK^T / 2 (2,2) ≈ [
[ 0.00075, -0.00110],
[-0.00110, 0.00150]
](L,L)。
A = softmax(Scaled) (2,2) ≈ [
[0.5005, 0.4995],
[0.4995, 0.5005]
](L,L)。
O = A V (2,2) ≈ [
[0.200, 0.300],
[0.200, 0.300]
](L,L) × (L,d_v) → (L,d_v),这里是 (2,2)×(2,2)→(2,2)。
Q · KT → 得到每个词之间的相关性分数
例如:"it" 与 "animal" 的相似度 = 0.85除以√dk,然后用softmax转为概率分布
softmax([0.85, 0.15, 0.45]) = [0.52, 0.12, 0.36]用注意力权重对V进行加权平均,得到最终输出
输出 = 0.52 × V_animal + 0.12 × V_street + 0.36 × V_tired多头注意力是对自注意力的扩展,让模型能够从多个角度关注信息。
就像人类理解句子时会从多个维度思考:语法结构、语义关系、情感色彩等。
主语、谓语、宾语的关系
词与词的意义联系
跨越多个词的关系
Attention₁
Attention₂
Attention₃
Attentionₙ
MultiHead(Q, K, V) = Concat(head₁, head₂, ..., headₕ) W^O
其中:
head_i = Attention(QW_i^Q, KW_i^K, VW_i^V)
典型配置:
- GPT-3: 96个注意力头
- BERT-base: 12个注意力头Transformer没有RNN的顺序处理机制,需要位置编码来告诉模型词的位置信息。
问题:没有位置信息,模型无法区分词序:
"我爱你" 和 "你爱我"
在没有位置编码的情况下,模型会认为它们完全相同!PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
其中:
- pos: 词在序列中的位置(0, 1, 2, ...)
- i: 向量维度的索引
- d_model: 模型的维度(如512)位置编码的热力图示意(不同位置、不同维度的值)
除了注意力机制,Transformer还有几个重要的"辅助工具",它们让整个模型更好地工作!
想象Transformer是在建一座智能房子:
像房子的安全通道
即使高层出了问题,也能通过安全通道回到地面
像房子的空调系统
保持每个房间的温度稳定,不会太热或太冷
像房子的加工车间
对信息进行深度加工,提取更多有用特征
🎯 一句话解释:给信息一条"捷径",防止在深层网络中丢失
想象你在玩传话游戏:
输出 = LayerNorm(输入 + SubLayer(输入))
# ↑原始信息 ↑处理后的信息 ↑融合在一起🎯 一句话解释:让所有特征保持在相似的"数值范围"内
想象你在调节房间的温度:
# 简单理解:把所有特征缩放到相似范围
normalized_value = (value - mean) / std_dev
# (当前值-平均值) / 标准差🎯 一句话解释:对信息进行"深度加工",提取更复杂的特征
就像大脑处理信息的过程:
FFN(x) = max(0, xW₁ + b₁)W₂ + b₂
# ↑激活函数 ↑第一层变换 ↑第二层变换
#
# 简单理解:
# 输入 → 扩展特征 → 压缩总结 → 输出🔄 工作流程:
💡 记忆技巧:
这一节用“图 + 案例”的方式,把两个经常被提到但容易抽象的概念讲清楚: 为什么 LLM 的“向量表征”像在洞穴里看影子,以及 为什么大模型训练常常遵循缩放规律。
一句话直觉:世界很复杂,但模型把世界“投影”到一个可计算的空间(向量/表征)。
像洞穴寓言:我们看不到事物本体,只能看到“影子”。LLM 的向量表征也类似——它不是事实本身,但能保留足够多的结构信息,让我们做推理、类比、检索。
经验上,很多模型的损失(Loss)随参数量 N、数据量 D、算力 C按幂律下降: Loss ≈ a·N^{-α} + b(对数坐标下近似是一条直线)。
这一节专门回答大家最容易卡住的几个点:多头注意力 vs 堆 N 层、梯度消失/爆炸、Q/K/V 到底是什么、为什么要除以 √dk、以及 Seq2Seq + Attention 和 Transformer 的本质区别。
一句话直觉:多头是同一层里“同时用多个视角看一句话”;堆 N 层是把“看懂这句话”的过程反复做 N 次,每次都更抽象、更深入。
一句话直觉:RNN 像一个人逐词读一句话,每读一个词就更新一次“脑海印象”(隐藏状态 h),然后把旧印象丢掉,只保留新印象。
RNN 的隐藏状态 h 是一个固定大小的向量,每一步都要把“旧印象 + 新词”塞进同一个向量里,就像把越来越多的书塞进一个固定大小的背包。
梯度是什么:训练时我们要让损失函数 Loss 变小,所谓“梯度”就是 Loss 对模型参数的导数/变化率,例如 ∂Loss/∂W。它决定了参数更新的方向和步幅。
在 RNN 这类“链式依赖很长”的结构里,梯度要沿着时间/层级一路乘过去, 很容易出现:
最核心的直觉:Q 是“我现在想找什么”,K 是“每个词能提供的线索标签”,V 是“真正要取走的信息内容”。
注意力就是用 Q 去和每个 K 匹配,匹配得越像权重越大,然后用这些权重对 V 做加权求和。
x 经过三套线性变换得到 Q= XW_Q、K= XW_K、V= XW_V关键点:softmax 虽然会把分数归一化成概率,但如果输入分数(logits)本身太大,softmax 会变得“极端”,几乎变成 one-hot(只有一个位置≈1,其他≈0),这会导致梯度变小,训练不稳定。
Q·K 的数值规模会随着维度 d_k 增大而变大,维度越高,分数越容易被“放大”。
先澄清:Seq2Seq + Attention 的 attention 通常是交叉注意力(cross-attention): Decoder 在生成第 t 个词时,去“看”Encoder 输出的各位置。
⚠️ 重要提醒:请认真完成以下作业,下节课开始前会进行考核测试!
详细说明Transformer相比RNN/LSTM的三大核心优势,并解释每个优势的技术原理。
给定句子"机器学习很有趣",手动计算"学习"这个词对其他词的注意力权重(假设维度已简化)。
为什么需要多头注意力?如果只用单头注意力会有什么局限性?请举例说明。
为什么选择正弦/余弦函数作为位置编码?相比可学习的位置编码有什么优缺点?
🌟 特别说明:这些都是入门级练习,不需要深度学习基础,只需要基本的Python知识!
用Python计算两个词向量的相似度,理解注意力机制的基础概念。
# 计算点积的函数
def dot_product(vec1, vec2):
return sum(a * b for a, b in zip(vec1, vec2))
# 测试你的函数
similarity = dot_product(vector1, vector2)
print(f"相似度: {similarity}")为句子中的每个词分配位置信息,理解位置编码的作用。
# 为句子添加位置信息
def add_position(sentence):
words = sentence.split()
return [(word, i) for i, word in enumerate(words)]
# 测试你的函数
result = add_position("我爱学习")
print(result)手动计算简单的注意力权重,理解注意力机制如何分配"关注度"。
import math
# 简单的softmax函数
def softmax(scores):
exp_scores = [math.exp(score) for score in scores]
total = sum(exp_scores)
return [score/total for score in exp_scores]
# 测试你的函数
weights = softmax([2, 8, 3])
print(f"注意力权重: {weights}")通过简单的数学运算理解残差连接如何保留原始信息。
# 残差连接演示
def residual_connection(original, processed):
return [orig + proc for orig, proc in zip(original, processed)]
# 测试残差连接
original = [1, 2, 3]
processed = [0.9, 2.1, 2.8]
result = residual_connection(original, processed)
print(f"残差连接结果: {result}")⏰ 时间安排:
💡 完成建议:
🌟 完成奖励:这些练习将帮助你深入理解Transformer的核心原理,为后续学习打下坚实基础!
🌟 思考提示:这些问题没有标准答案,旨在培养你的批判性思维和创新能力!
分析自注意力机制的计算复杂度O(n²),当处理超长文本时会有什么问题?有哪些改进方案?
为什么Transformer架构在不同领域(NLP、CV、语音)都能取得好效果?这种通用性的本质是什么?
从2017年Transformer诞生到现在,出现了哪些重要的改进?未来可能的发展方向是什么?
下节课开始前会进行15分钟的理论测试,内容包括:
请务必认真完成作业,确保对每个概念都有深入理解!