当前位置: 首页 > news >正文

Transformer架构的编码器和解码器介绍

Transformer 架构是一种基于自注意力机制(Self-Attention)的深度学习模型,由 Google 团队在 2017 年的论文《Attention Is All You Need》中首次提出。

Transformer 彻底改变了自然语言处理(NLP)领域,并成为现代大语言模型(如GPT、BERT等)的核心基础。

Transformer 与循环神经网络(RNN)类似,旨在处理自然语言等顺序输入数据,适用于机器翻译、文本摘要等任务。然而,与 RNN 不同,Transformer 无需逐步处理序列,而是可以一次性并行处理整个输入。

 

1.1 整体架构

Transformer是由编码器和解码器组成的。 Transformer的编码器和解码器是基于自注意力的模块叠加而成的,源(输入)序列和目标(输出)序列的嵌入(embedding)表示将加上位置编码(positional encoding),再分别输入到编码器和解码器中。

1.2 编码器架构

从宏观角度来看,Transformer的编码器是由多个相同的层叠加而成的,每个层都有两个子层(子层表示为sublayer)。第一个子层是多头自注意力(multi-head self-attention)汇聚;第二个子层是基于位置的前馈网络(positionwise feed-forward network)。具体来说,在计算编码器的自注意力时,查询、键和值都来自前一个编码器层的输出。每个子层都采用了残差连接(residual connection)。在Transformer中,对于序列中任何位置的任何输入 �∈�� ,都要求满足 ��������(�)∈�� ,以便残差连接满足�+��������(�)∈��。在残差连接的加法计算之后,紧接着应用层规范化(layer normalization)。因此,输入序列对应的每个位置,Transformer编码器都将输出一个d维表示向量。

1.3 解码器架构

Transformer解码器也是由多个相同的层叠加而成的,并且层中使用了残差连接和层规范化。除了编码器中描述的两个子层之外,解码器还在这两个子层之间插入了第三个子层,称为编码器-解码器注意力(encoder-decoder attention)层。在编码器-解码器注意力中,查询来自前一个解码器层的输出,而键和值来自整个编码器的输出。在解码器自注意力中,查询、键和值都来自上一个解码器层的输出。但是,解码器中的每个位置只能考虑该位置之前的所有位置。这种掩蔽(masked)注意力保留了自回归(auto-regressive)属性,确保预测仅依赖于已生成的输出词元。

1. 输入处理(底部)

  • Embeddings/Projections(嵌入/投影层)
    • 作用:将输入的单词(或 token)转换成数字向量(比如 "猫" → [0.2, -0.5, 0.7…])。
    • 类比:就像给每个单词分配一个独特的"身份证号码",但更智能(包含语义信息)。

2. 编码器(左侧)

  • Multi-Headed Self-Attention(多头自注意力)

    • 作用:让模型同时关注输入中的所有单词,并计算它们之间的关系。
    • 举例:在句子"猫追老鼠"中,模型会学习"猫"和"老鼠"的关联比"猫"和"追"更强。
    • 关键:并行处理所有单词,不像RNN需要逐个计算。
  • Norm(层归一化)

    • 作用:稳定训练过程,防止数值过大或过小(类似"调音量"到合适范围)。
  • Feed-Forward Network(前馈神经网络)

    • 作用:对每个单词的表示进行进一步加工(比如提取更复杂的特征)。
    • 类比:像对"猫"的向量做一次深度解读,补充细节(比如"猫是哺乳动物")。

3. 解码器(右侧)

  • Masked Multi-Headed Self-Attention(掩码多头自注意力)

    • 作用:训练时防止模型"作弊"(只能看到当前和之前的单词,不能看未来的)。
    • 举例:生成"我爱__"时,模型只能基于"我""爱"预测下一个词,不能提前知道答案是"你"。
  • Multi-Headed Cross-Attention(多头交叉注意力)

    • 作用:让解码器询问编码器:"关于输入,我应该重点关注什么?"
    • 场景:翻译任务中,解码器生成英文时,会参考编码器处理的中文输入。
  • Norm 和 Feed-Forward Network

    • 与编码器类似,对解码器的表示进行归一化和深度处理。

4. 输出(顶部)

  • Linear(线性层)
    • 作用:将解码器的输出映射到词表(比如预测下一个词是"你"的概率最高)。
    • 举例:输入"我爱",模型输出"你"的概率可能是80%,"吃饭"的概率是10%…
http://www.dtcms.com/a/337189.html

相关文章:

  • 管理本地用户和组:红帽企业 Linux 系统安全的基础
  • TDengine `count_window` 指定列计数功能用户手册
  • 数据泵实施VPS海外:跨国数据同步的完整解决方案
  • elasticsearch-集成prometheus监控(k8s)
  • 【iOS】锁的原理
  • Flutter 多功能列表项:图标、文字与Switch组合
  • Highcharts for Flutter 正式发布
  • 云原生俱乐部-docker知识点归纳(1)
  • MySQL的多版本并发控制(MVCC):
  • 【Java基础常见辨析】重载与重写,深拷贝与浅拷贝,抽象类与普通类
  • 基于 JSP+Mysql实现MVC房屋租赁系统
  • Word 中 MathType 公式编号问题与解决
  • 自定义table
  • SpringBoot--Spring MVC 拦截器注入与 new 的区别
  • OSCP - Proving Grounds - Vanity
  • 分布式系统的“不可能三角”:CAP定理深度解析
  • 【数据结构】堆中插入数据,删除数据
  • Android Handler 线程执行机制
  • python遇到异常流程
  • 【Langchain系列二】LangChain+Prompt +LLM智能问答入门
  • Unix Domain Socket(UDS)和 TCP/IP(使用 127.0.0.1)进程间通信(IPC)的比较
  • Baumer高防护相机如何通过YoloV8深度学习模型实现网球运动员和网球速度的检测分析(C#代码UI界面版)
  • Spring AI Alibaba 项目接入兼容 OpenAI API 的大模型
  • Midjourney绘画创作入门操作创作(在线教育背景系列)
  • IOPaint 远程修图:cpolar 内网穿透服务实现跨设备图片编辑
  • Ansible文件部署与大项目多主机管理
  • 【Git】windows系统删除同名路径
  • 机器翻译论文阅读方法:顶会(ACL、EMNLP)论文解析技巧
  • IntelliJ IDEA中Maven的“Sync“与“Reload“详解:小白的避坑指南
  • python DataFrame基础操作