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 模块的代码复现视频

您可能感兴趣的与本文相关的镜像

Seed-Coder-8B-Base

Seed-Coder-8B-Base

文本生成
Seed-Coder

Seed-Coder是一个功能强大、透明、参数高效的 8B 级开源代码模型系列,包括基础变体、指导变体和推理变体,由字节团队开源

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值