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

Transformer 模型

本文内容基于 Attention is all you need 论文。

工作流

本节对 Transformer 的训练推理工作流、Encoder 和 Decoder 工作流做出解释。

训练推理工作流

训练阶段,输入序列经过 N 个 Encoder 模块输出矩阵 K K K V V V,这些矩阵包含了输入序列的全局信息,不会再重复生成。

第一个 Decoder 模块接收起始提示符经过基于掩码的多头注意力块,生成矩阵 Q Q Q,和来自 Encoder 模块的矩阵 K K K V V V 一起输入到多头注意力块,后面经过前馈全连接网络等模块,并将结果输出给第二个 Decoder 模块,重复过程,直到第 N 个模块输出。

Encoder 工作流

整个 Encoder 模块由 6 个相同的子 Encoder 模块顺序连接构成,第一个 Encoder 接收输入,经过多头注意力、前馈全连接网络、残差连接和正则化后,输出给下一个 Encoder 模块,最后一个 Encoder 模块输出 Q、V 矩阵给 Decoder 模块。

Decoder 工作流

模块详解

本节对 Transformer 中每个最小单位的模块做出解释。

输入及编码

位置编码

位置编码(Postional Encoding)

Attention

缩放点积注意力

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

操作步骤:

输入一个序列 X X X,分别与 W Q W_Q WQ W K W_K WK W V W_V WV 三个权重矩阵做矩阵乘法,计算得到三个矩阵 Q Q Q K K K V V V

然后矩阵 Q Q Q K K K 做矩阵乘法,缩放因子 d k d_k dk,softmax,和矩阵 V V V 做乘法

数学公式:

A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q,K,V)=softmax(\frac{Q K^T}{\sqrt{d_k}})V Attention(Q,K,V)=softmax(dk QKT)V

上式中,缩放因子 d k \sqrt{d_k} dk 用于标准化为 N ( 0 , 1 ) N(0,1) N(0,1)

Multi-head attention

多头注意力机制允许模型在不同的子空间中学习不同的特征,每个头都有不同的 Q Q Q K K K V V V,最后将所有头的输出通过一个线性层拼接。

M u l t i H e a d ( Q , K , V ) = C o n c a t ( h e a d 1 , . . . , h e a d h ) W O h e a d i = A t t e n t i o n ( Q W i Q , K W i K , V W i V ) \begin{align*} & MultiHead(Q,K,V)=Concat(head_1, ..., head_h)W^O \\ & head_i = Attention(QW_i^Q,KW_i^K,VW_i^V) \end{align*} MultiHead(Q,K,V)=Concat(head1,...,headh)WOheadi=Attention(QWiQ,KWiK,VWiV)

问题:下面三个 Linear 是什么?

增加解释:self-attention、解码器和编码器中的几个 attention 的区别

前馈全连接网络

前馈全链接网络(Position-wise Feed-Forward Networks)用于变换数据维度,包括:两个全连接层和一个 RELU 激活层,数学上表示为:

F F N ( x ) = m a x ( 0 , W 1 x + b 1 ) W 2 + b 2 FFN(x)=max(0, W_1 x + b_1)W_2 + b_2 FFN(x)=max(0,W1x+b1)W2+b2
上式中, W 1 x + b 1 W_1 x + b_1 W1x+b1 为第一层全连接层, m a x ( 0 , W 1 x + b 1 ) max(0, W_1 x + b_1) max(0,W1x+b1) 为 RELU 激活函数, ( ) W 2 + b 2 ()W_2 + b_2 ()W2+b2 为第二层全连接层。 W 1 W_1 W1 为, W 2 W_2 W2

Add & Norm

这部分由残差连接(Residual Connection)和层归一化(Layer Norm)构成。

残差连接是一种常见的深度学习技巧,它将输出和其输入相连来实现,数学上表示为:

R e s i d u a l = x + R e s i d u a l ( x ) Residual = x + Residual(x) Residual=x+Residual(x)

上式中, x x x 为残差连接层的输入, R e s i d u a l ( x ) Residual(x) Residual(x) 为残差连接层的输出。

作用:缓解深层网络中的梯度消失问题。

层归一化可以理解为对同样本的不同特征维度的归一化。

作用:稳定训练过程、提高模型稳定性、减少梯度消失和爆炸

自注意力机制

自注意力机制(Self Attention)定义为将单个序列或句子的不同位置关联起来获得更有效表示的机制。

Transformer 相较于 RNN 的改进

  1. 并行计算
  2. 因为 attention 机制能一次获取全局信息,所以最长计算路径短
  3. 可以捕捉长距离依赖关系
Layer TypeComplexity per LayerSequential OperationsMaximum Path Length
Self-Attention O ( n 2 ⋅ d ) O(n²·d) O(n2d) O ( 1 ) O(1) O(1) O ( 1 ) O(1) O(1)
Recurrent O ( n ⋅ d 2 ) O(n·d²) O(nd2) O ( n ) O(n) O(n) O ( n ) O(n) O(n)
Convolutional O ( k ⋅ n ⋅ d 2 ) O(k·n·d²) O(knd2) O ( 1 ) O(1) O(1) O ( l o g k ( n ) ) O(log_k(n)) O(logk(n))
Self-Attention (restricted) O ( r ⋅ n ⋅ d ) O(r·n·d) O(rnd) O ( 1 ) O(1) O(1) O ( n / r ) O(n/r) O(n/r)

参考资料:

The Illustrated Transformer – Jay Alammar – Visualizing machine learning one concept at a time. 该文章的中译版本:细节拉满,全网最详细的Transformer介绍(含大量插图)! - 知乎、Transformer 的训练与推理 | 暗香画楼

Transformer常见问题与回答总结 - 知乎:用于检测是否理解了 Transformer 模型

Encoder 模块的代码复现视频


http://www.kler.cn/a/552089.html

相关文章:

  • Word中接入大模型教程
  • Layui 列表中switch按钮的使用
  • 首都国际会展中心启用,首展聚焦汽车后市场全产业链
  • 小程序类毕业设计选题题目推荐 (29)
  • ✨2.快速了解HTML5的标签类型
  • 【开源免费】基于SpringBoot+Vue.JS智能家居系统(JAVA毕业设计)
  • 记录一点关于前端安装依赖的东西
  • 解析浏览器中JavaScript与Native交互原理:以WebGPU为例
  • 【分布式理论13】分布式存储:数据存储难题与解决之道
  • jvm相关问题 - 基于c老师
  • Java 集成 Redis 实战
  • PHP 网络编程介绍
  • 【Github每日推荐】-- 2024 年项目汇总
  • 【Leetcode】环形链表
  • 使用LightGBM与Apache Spark进行多分类任务
  • 使用html css js 来实现一个服装行业的企业站源码-静态网站模板
  • 开源模型应用落地-DeepSeek-R1-Distill-Qwen-7B-LoRA微调-LLaMA-Factory-单机单卡-V100(一)
  • 学习总结2.18
  • SpringAI系列 - RAG篇(三) - ETL
  • Qt的QPushButton样式设置