2026/1/6 16:59:25
网站建设
项目流程
云南免费网站建设,wordpress虚拟阅读量,seo优化技术厂家,太原市给企业做网站整体架构概览Transformer由编码器栈#xff08;Encoder Stack#xff09;和解码器栈#xff08;Decoder Stack#xff09;组成#xff1a;编码器#xff1a;理解输入序列的双向上下文解码器#xff1a;基于编码器的理解#xff0c;自回归地生成输出序列结构对比1. Enco…整体架构概览Transformer由编码器栈Encoder Stack和解码器栈Decoder Stack组成编码器理解输入序列的双向上下文解码器基于编码器的理解自回归地生成输出序列结构对比1. Encoder编码器核心组件按顺序Input Embedding Positional Encoding ↓ Multi-Head Self-Attention自注意力 ↓ Add Norm ↓ Feed-Forward Network ↓ Add Norm关键特点双向注意力每个位置可以看到整个输入序列的所有token并行计算所有位置可以同时处理无mask注意力矩阵是完全可见的2. Decoder解码器核心组件按顺序Output Embedding Positional Encoding ↓ Masked Multi-Head Self-Attention掩码自注意力 ↓ Add Norm ↓ Multi-Head Cross-Attention交叉注意力← 连接Encoder输出 ↓ Add Norm ↓ Feed-Forward Network ↓ Add Norm关键特点单向注意力使用causal mask每个位置只能看到之前的token串行生成必须逐个token生成自回归Cross-Attention额外的注意力层连接编码器信息核心区别详解区别1注意力机制的可见范围Encoder的Self-Attention无mask# 注意力矩阵3个token示例 # 每个位置都能看到所有位置 [[✓, ✓, ✓], # token 0 看到 0,1,2 [✓, ✓, ✓], # token 1 看到 0,1,2 [✓, ✓, ✓]] # token 2 看到 0,1,2Decoder的Masked Self-Attention# 使用下三角mask [[✓, ✗, ✗], # token 0 只看到 0 [✓, ✓, ✗], # token 1 只看到 0,1 [✓, ✓, ✓]] # token 2 只看到 0,1,2为什么这样设计Encoder理解阶段需要全局信息比如翻译bank需要看整个句子判断是银行还是河岸Decoder生成阶段不能偷看未来的词否则训练时会作弊区别2Cross-AttentionDecoder独有这是Decoder最关键的组件# Cross-Attention的计算 Q Decoder当前层的输出 # Query来自解码器 K, V Encoder最后一层的输出 # Key和Value来自编码器 Attention(Q, K, V) softmax(Q·K^T / √d_k) · V具体例子机器翻译Encoder输入: I love cats Encoder输出: [h_I, h_love, h_cats] # 编码后的表示 Decoder生成 我 时: Q_我 当前解码状态 K, V [h_I, h_love, h_cats] → 注意力权重可能是 [0.8, 0.1, 0.1] # 主要关注I为什么需要Cross-Attention连接源序列和目标序列让解码器在生成每个词时动态地查阅输入信息这就是Seq2Seq任务的核心从源语言映射到目标语言区别3计算方式特性EncoderDecoder并行度完全并行训练时并行推理时串行输入依赖仅依赖输入序列依赖编码器输出已生成的token训练效率高一次前向计算整个序列相对低需要teacher forcing联系与协作1. 信息流动路径输入序列 → Encoder Stack6层 → 最终表示 [h1, h2, ..., hn] → 送入Decoder的每一层的Cross-Attention → 指导输出序列的生成2. 共享的设计模式两者都使用Multi-Head Attention多头注意力机制残差连接 Layer NormAdd NormPosition-wise FFN相同的前馈网络结构Positional Encoding位置信息编码3. 为什么要分开设计场景类比Encoder 理解材料的学生可以反复阅读前后对照理解目标形成完整的知识表示Decoder 答题的学生不能先看答案可以参考理解的材料Cross-Attention必须逐步写出答案实际例子机器翻译输入The cat sat on the mat输出猫坐在垫子上Encoder阶段# 所有词同时处理建立上下文理解 h_The Attention(The, [The, cat, sat, on, the, mat]) h_cat Attention(cat, [The, cat, sat, on, the, mat]) # ... 每个词都能看到全句Decoder阶段# 生成猫时 Q_猫 f([BOS]) # 只基于开始符 Cross-Attn([BOS], [h_The, h_cat, ...]) # 查询Encoder关注The cat # 生成坐时 Q_坐 f([BOS, 猫]) # 基于已生成的猫 Cross-Attn([BOS, 猫], [h_The, h_cat, ...]) # 关注sat现代变体值得注意的是Encoder-only模型BERT, ViT只用编码器适合理解任务分类、检测双向上下文Decoder-only模型GPT, LLaMA只用解码器用Causal Mask模拟单向简化架构扩展性更好去掉Cross-Attention因为没有独立的编码器Encoder-Decoder模型T5, BART保留完整结构适合Seq2Seq任务总结对比表维度EncoderDecoder注意力类型双向Self-Attention单向Masked Self-Attention Cross-Attention可见范围看到整个输入只看到已生成的部分处理方式并行处理全序列自回归逐个生成主要任务理解和编码生成和解码是否依赖对方独立依赖Encoder输出典型应用特征提取、分类文本生成、翻译核心联系Decoder通过Cross-Attention桥梁将Encoder的理解能力转化为生成能力。我来系统地帮你梳理三种Transformer架构的任务分布和设计理念。架构核心特性对比架构类型注意力机制处理方式核心能力计算效率Encoder-only双向Self-Attention并行处理全序列深度理解高单次前向Decoder-only单向Causal Attention自回归生成序列生成中逐tokenEncoder-Decoder双向单向Cross编码→解码序列转换低两阶段一、Encoder-only 架构设计理念目标深度理解输入建立全局表示特点每个token都能看到整个序列的上下文输出固定维度的向量表示用于分类/检索核心优势双向建模能力强同时利用前后文信息并行效率高一次前向传播处理整个序列表示质量高适合需要深度语义理解的任务适合的任务类型1. 文本分类任务情感分析这部电影真棒 → 正面情感新闻分类文章 → 体育/科技/财经意图识别帮我订张机票 → 预订意图为什么适合需要理解全文语义不需要生成双向上下文帮助消歧义代表模型BERT, RoBERTa, ALBERT# 典型实现 class TextClassifier(nn.Module): def __init__(self): self.encoder BertModel.from_pretrained(bert-base) self.classifier nn.Linear(768, num_classes) def forward(self, input_ids): # 获取[CLS] token的表示 outputs self.encoder(input_ids) cls_embedding outputs.last_hidden_state[:, 0, :] # [CLS]位置 logits self.classifier(cls_embedding) return logits2. 序列标注任务命名实体识别NER苹果公司在加州 → [苹果-ORG, 加州-LOC]词性标注POS每个词标注名词/动词/形容词语义角色标注识别谁对谁做了什么为什么适合需要为序列中每个位置输出标签双向信息帮助准确判断比如苹果需要看后文公司才知道是组织代表模型BERT-NER, BioBERT# 输入输出示例 输入: 张三在北京大学学习 BERT输出: [h_张, h_三, h_在, h_北, h_京, h_大, h_学, h_学, h_习] Token分类: [B-PER, I-PER, O, B-ORG, I-ORG, I-ORG, I-ORG, O, O]3. 问答任务抽取式机器阅读理解给定文章问题抽取答案片段FAQ匹配问题匹配到知识库中的答案典型任务SQuAD数据集文章: 特斯拉由埃隆·马斯克于2003年创立... 问题: 特斯拉的创始人是谁 答案: 埃隆·马斯克从文章中抽取为什么适合不需要生成新内容只需定位答案位置需要同时理解问题和文章的语义代表模型BERT-QA, ELECTRA4. 语义相似度/检索任务文本匹配判断两个句子是否语义相同语义检索找到与查询最相关的文档重复问题检测识别相似问题应用场景搜索引擎query与document的匹配推荐系统用户兴趣与内容的匹配代表模型Sentence-BERT, SimCSE, DPR# 双塔模型 query_emb encoder(query) # [768] doc_emb encoder(document) # [768] similarity cosine_sim(query_emb, doc_emb)5. 计算机视觉任务Vision Transformer图像分类ImageNet分类目标检测DETR图像分割SegFormer为什么Encoder适合CV图像patch之间没有时序依赖需要全局感受野理解图像代表模型ViT, Swin Transformer, DeiT二、Decoder-only 架构设计理念目标自回归生成序列特点Causal Mask只能看到前文输出下一个token的概率分布核心优势架构简单去掉Cross-Attention易于扩展统一框架所有任务都变成续写训练稳定单一优化目标语言建模适合的任务类型1. 文本生成任务故事/文章生成给定开头续写内容代码生成根据注释生成代码对话生成聊天机器人回复典型例子输入: 从前有座山山里有座庙 输出: 庙里有个老和尚在讲故事...为什么适合生成任务本质就是自回归预测Causal Mask防止偷看未来代表模型GPT-3/4, LLaMA, PaLM, Claude2. Zero-shot/Few-shot学习指令跟随用莎士比亚风格写诗情境学习给几个示例就能完成新任务GPT的惊人能力Prompt: 翻译成英文 苹果 - Apple 香蕉 - Banana 橙子 - 输出: Orange为什么Decoder-only强大预训练时见过海量文本模式可以通过prompt调用不同能力代表模型GPT-3.5, GPT-4, Llama-2/33. 条件生成任务虽然Decoder-only没有Cross-Attention但可以通过Prompt实现条件生成摘要生成Summarize: [长文本] Summary:翻译Translate to English: 中文你好 English: Hello 中文再见 English:问答Context: [文章] Question: [问题] Answer:关键思想把条件信息放在prompt里用Causal Attention统一处理4. 代码生成/补全GitHub Copilot根据注释和上下文生成代码代码补全光标后续代码预测例子# 计算斐波那契数列 def fibonacci(n): # GPT生成↓ if n 1: return n return fibonacci(n-1) fibonacci(n-2)代表模型Codex, Code Llama, StarCoder5. 多模态生成扩展现代Decoder-only可以处理多模态图像生成文本图像→文本描述通过视觉encoder提取特征作为prefix文本生成图像DALL-E自回归生成image tokens代表模型LLaVA, GPT-4V, Flamingo三、Encoder-Decoder 架构设计理念目标序列到序列的转换特点源序列和目标序列不同空间输出通过Cross-Attention连接两者核心优势显式建模源-目标映射Cross-Attention专门负责对齐灵活处理不同长度输入输出长度可以差异很大适合结构化转换明确的理解→生成流程适合的任务类型1. 机器翻译这是Encoder-Decoder的经典应用源语言Encoder: I love natural language processing ↓ Cross-Attention连接 目标语言Decoder: 我 爱 自然 语言 处理为什么需要Encoder-Decoder源语言和目标语言是不同的语言空间需要对齐机制生成我时重点关注I长度差异大中文4个词英文5个词代表模型Transformer原论文, mBART, NLLBCross-Attention的作用生成爱时: Query Decoder状态已生成我 Key, Value Encoder输出 [h_I, h_love, h_NLP, ...] → 注意力权重: [0.1, 0.7, 0.1, 0.1] # 聚焦love2. 文本摘要抽象式摘要生成新的概括性句子不是简单抽取输入文章500词→ Encoder理解 ↓ 输出摘要50词→ Decoder生成为什么适合输入输出长度差异极大10:1压缩比需要理解重组而非简单复制代表模型BART, PEGASUS, T53. 语法纠错/改写语法修正I has a cat → I have a cat文本润色口语化 → 正式书面语风格迁移现代文 → 古文例子输入: 这个东西挺好的哈哈哈 输出: 该产品质量优良表现出色为什么需要Encoder-Decoder不是简单替换需要理解语义后重组输入输出可能长度变化代表模型T5-GEC, GECToR混合架构4. 问答任务生成式开放域问答不限于抽取原文可以生成新答案输入: 问题地球为什么是圆的 文档[相关知识] 输出: 因为引力使得大质量天体趋向于球形...vs Encoder-only问答Encoder-only只能抽取原文片段Encoder-Decoder可以综合多处信息生成新答案代表模型T5-QA, FiD (Fusion-in-Decoder)5. 多任务统一框架T5的Text-to-Text理念把所有NLP任务都变成文本转换翻译: translate English to German: Hello → Hallo 摘要: summarize: [长文本] → [摘要] 分类: sentiment: This movie sucks → negative 问答: question: Who is the CEO? context: [文章] → John Doe优势统一训练框架任务间知识共享新任务零样本迁移代表模型T5, UL2, Flan-T56. 序列标注生成式传统用Encoder做token分类但也可以用Encoder-Decoder生成标签序列输入: 张三在北京大学学习 输出: B-PER I-PER O B-ORG I-ORG I-ORG I-ORG O O优势可以生成更复杂的结构化输出架构选择的决策树你的任务是什么 │ ├─ 只需要理解/分类不需要生成 │ → Encoder-only (BERT系) │ 适合分类、NER、QA抽取、检索 │ ├─ 需要生成文本且输入输出在同一空间 │ → Decoder-only (GPT系) │ 适合续写、对话、代码生成、指令跟随 │ └─ 需要不同空间的序列转换 → Encoder-Decoder (T5系) 适合翻译、摘要、改写、结构化转换现代趋势Decoder-only的崛起为什么GPT模型越来越流行架构简洁去掉Cross-Attention减少复杂度易于扩展到百亿/千亿参数统一范式所有任务用prompt统一成文本续写不需要任务特定的架构修改涌现能力参数量到达临界点后出现zero-shot推理、思维链等能力Instruction tuning后可以替代大部分NLP任务训练效率只需要无标注文本语言建模数据规模可以无限扩大具体例子对比场景中译英Encoder-Decoder方式T5输入: translate Chinese to English: 我爱你 Encoder处理: 理解我爱你的语义 Decoder生成: I → love → you Cross-Attention: 生成每个词时查询源语言对应位置Decoder-only方式GPT输入prompt: Translate to English: 中文你好 English: Hello 中文我爱你 English: 模型续写: I love you区别T5有专门的注意力机制处理翻译对齐GPT通过in-context learning模拟翻译能力T5在专门微调后翻译质量更高GPT更灵活可以zero-shot翻译多种语言总结表格任务类型Encoder-onlyDecoder-onlyEncoder-Decoder最佳选择文本分类✅ 最佳⚠️ 可用prompt❌ 过重BERT序列标注✅ 最佳⚠️ 可用生成⚠️ 可用BERT抽取式QA✅ 最佳❌ 不适合⚠️ 可用BERT文本生成❌ 不能✅ 最佳✅ 很好GPT/T5机器翻译❌ 不能⚠️ 可用✅ 最佳T5/mBART文本摘要❌ 不能⚠️ 可用✅ 最佳BART/T5对话系统❌ 不能✅ 最佳✅ 很好GPT/Claude代码生成❌ 不能✅ 最佳⚠️ 可用Codex多任务学习⚠️ 有限✅ 很好✅ 最佳T5/GPT-4图例✅ 非常适合⚠️ 可以但非最优❌ 不适合/不能做实际应用建议你在做算法工程师面试准备可以这样理解传统NLP任务分类、NER、检索答用BERT系Encoder-only理由双向建模并行效率高生成任务对话、写作、代码答用GPT系Decoder-only理由自回归生成大模型涌现能力Seq2Seq任务翻译、摘要专业场景用T5系Encoder-Decoder通用场景用GPT-4等大模型更方便工业实践资源有限小模型任务特定架构BERT-NER资源充足大模型prompt工程GPT-4你对哪个架构的具体实现细节更感兴趣比如Cross-Attention的梯度流动或者GPT如何通过prompt统一不同任务