Reading Notes: “Annotated Transformer”
date
Jul 27, 2024
slug
annotated-transformer
status
Published
tags
NLP
summary
type
Post
本文是阅读 Annotated Transformer 以及 The illustrated Transformer 的一些简单记录,以便日后回顾之用。
Annotated Transformer: https://nlp.seas.harvard.edu/annotated-transformer/
The illustrated Transformer: https://jalammar.github.io/illustrated-transformer/
子层以及模型的代码实现:
Transfomer: A Black Box View
一个用于序列翻译任务的模型(至少最初在 Attention is All you Need 中是作为这个用途)。
Model Architecture
上图很好地概括了 Transfomer 的模型结构:
- 由一个 Encoder 和一个 Decoder 组成
- Encoder 和 Decoder 都由若干个相同的 Encoder Block / Decoder Block 组成(除了 Decoder 最后的 projection layer)
- 进入 Encoder 或 Decoder 之前 embedding 需要加上 positional encoding
Encoder Block
Encoder Block 主要由三类子层组成:
- Multi-Head Attention: 多头自注意力,用于产生序列编码表示
- Feed-Forward Network: 全连接层,用于引入非线性
- Add & Norm: 残差连接和 LayerNorm
Decoder Block
图来自 illustrated Transformer,这里 Encoder-Decoder 应该是 Cross Attention.
Decoder Block 的构成和 Encoder Block 相同,不同之处在与注意力的应用:
- 自注意力层使用 mask,在计算第 i 个 token 的表示的时候只能看到前 i-1 个 token
- 第二个注意力层是 cross attention, key 和 value 都来自 encoder 的输出
Positional Encoding
目前为止,上述的架构中并没有考虑位置信息,这在处理序列问题时是不合适的,因此需要一种方式加入位置信息。位置编码是一个嵌入矩阵,序列中的每个位置对应一个 positional encoding, 在进入 encoder 或者 decoder 处理之前需要把 token 的 embedding 和对应的 positional encoding 相加以考虑位置信息。