From 311fa8fe04e622fcb7e227e001541781276f8f5c Mon Sep 17 00:00:00 2001 From: KMnO4-zx <1021385881@qq.com> Date: Wed, 7 May 2025 23:15:05 +0800 Subject: [PATCH] =?UTF-8?q?Fix=EF=BC=9A=E7=AC=AC=E4=BA=8C=E7=AB=A0=20Trans?= =?UTF-8?q?formers=E6=9E=B6=E6=9E=84=20=E5=9B=BE=E7=89=87=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E3=80=81=E5=8F=82=E8=80=83=E6=96=87=E7=8C=AE=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/chapter2/第二章 Transformer架构.md | 41 +++++++++++++++++++------ 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/docs/chapter2/第二章 Transformer架构.md b/docs/chapter2/第二章 Transformer架构.md index 1c0294b..4840c20 100644 --- a/docs/chapter2/第二章 Transformer架构.md +++ b/docs/chapter2/第二章 Transformer架构.md @@ -8,15 +8,24 @@ - 全连接网络(FNN),即每一层的神经元都和上下两层的每一个神经元完全连接: -![全连接网络](./figures/1-0.png) +
+ 图片描述 +

图1. 全链接网络

+
- 卷积神经网络(CNN),即训练参数量远小于全连接层的卷积层来进行特征提取和学习: -![卷积神经网络](./figures/1-1.png) +
+ 图片描述 +

图2. 卷积神经网络

+
- 循环神经网络(RNN),能够使用历史信息作为输入、包含环和自重复的网络: -![循环神经网络](./figures/1-2.png) +
+ 图片描述 +

图3. 循环神经网络

+
由于 NLP 任务所需要处理的文本往往是序列,因此专用于处理序列、时序数据的 RNN 往往能够在 NLP 任务上取得最优的效果。事实上,在注意力机制横空出世之前,RNN 以及 RNN 的衍生架构 LSTM 是 NLP 领域当之无愧的霸主。例如,我们在第一章讲到过的开创了预训练思想的文本表示模型 ELMo,就是使用的双向 LSTM 作为网络架构。 @@ -198,7 +207,10 @@ scores = F.softmax(scores.float(), dim=-1).type_as(xq) 在原论文中,作者也通过实验证实,多头注意力计算中,每个不同的注意力头能够拟合语句中的不同信息,如下图: -![Multihead Attention](./figures/1-3.jpeg) +
+ 图片描述 +

图4. 多头注意力机制

+
​上层与下层分别是两个注意力头对同一段语句序列进行自注意力计算的结果,可以看到,对于不同的注意力头,能够拟合不同层次的相关信息。通过多个注意力头同时计算,能够更全面地拟合语句关系。 @@ -319,7 +331,10 @@ Seq2Seq,即序列到序列,是一种经典 NLP 任务。具体而言,是 Transformer 中的 Encoder,就是用于上述的编码过程;Decoder 则用于上述的解码过程。Transformer 结构如下图: -![Encoder-Decoder](./figures/2-0.jpg) +
+ 图片描述 +

图5. 编码器-解码器结构

+
Transformer 由 Encoder 和 Decoder 组成,每一个 Encoder(Decoder)又由 6个 Encoder(Decoder)Layer 组成。输入源序列会进入 Encoder 进行编码,到 Encoder Layer 的最顶层再将编码结果输出给 Decoder Layer 的每一层,通过 Decoder 解码后就可以得到输出目标序列了。 @@ -664,7 +679,11 @@ $$ 上述​编码结果示例如下: -![Positional Embedding](./figures/3-0.png) +
+ 图片描述 +

图6. 编码结果

+
+ 基于上述原理,我们实现一个​位置编码层: @@ -701,7 +720,10 @@ class PositionalEncoding(nn.Module): 上述所有组件,再按照下图的 Tranfromer 结构拼接起来就是一个完整的 Transformer 模型啦: -![Transformer 结构](./figures/3-1.png) +
+ 图片描述 +

图7. Transformer 模型结构

+
如图,经过 tokenizer 映射后的输出先经过 Embedding 层和 Positional Embedding 层编码,然后进入上一节讲过的 N 个 Encoder 和 N 个 Decoder(在 Transformer 原模型中,N 取为6),最后经过一个线性层和一个 Softmax 层就得到了最终输出。 @@ -804,5 +826,6 @@ class Transformer(nn.Module): **参考文献** -1. [Attention is all you need](https://arxiv.org/abs/1706.03762) -2. [An Intuition for Attention](https://jaykmody.com/blog/attention-intuition/) +[1] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin. (2023). *Attention Is All You Need.* arXiv preprint arXiv:1706.03762. + +[2] Jay Mody 的文章 “An Intuition for Attention”.