password
type
Last edited time
Aug 7, 2023 08:21 AM
status
slug
summary
tags
category
Created time
Jul 12, 2023 10:49 AM
icon
Transformer是一种用于自然语言处理中的神经网络模型,其设计基于self-attention机制。下面将推导Transformer的公式。

1. Self-Attention

Self-Attention是一种机制,用于计算一个序列中每个位置与其他位置的相互作用权重。假设 是一个输入序列,其中每个元素 表示为一个维向量。对于每个位置,我们使用中所有元素计算一个加权和,其中每个元素的权重由一个权重向量给出,的长度等于序列长度。权重向量由以下公式计算:
其中,表示位置与所有其他位置的相互作用得分,计算公式如下:
其中,表示位置之间的相互作用权重,计算公式如下:
其中,分别表示的线性变换矩阵。Self-Attention的输出是一个加权和,计算公式如下:
其中,表示输出序列,每个元素是一个维向量。

2. Multi-Head Self-Attention

为了提高Self-Attention的表达能力,我们可以使用多个Self-Attention并行计算。具体来说,我们将输入序列分别经过个不同的Self-Attention模块,并将它们的输出拼接在一起。在每个Self-Attention模块中,我们使用不同的线性变换矩阵。Multi-Head Self-Attention的计算公式如下:
其中,

3. Position-wise Feed-Forward Network

除了Self-Attention模块外,Transformer还包含一个Position-wise Feed-Forward Network(FFN)模块。该模块对每个位置的输入进行线性变换和非线性变换,并输出一个新的向量。具体来说,FFN的计算公式如下:
其中,分别表示两个线性变换矩阵,表示修正线性单元函数。FFN的输出是一个维向量。

4. Transformer Encoder

基于上述模块,我们可以构建一个Transformer编码器。编码器由多个相同的模块堆叠而成,每个模块包含Multi-Head Self-Attention和FFN两个子模块。具体来说,每个模块的计算公式如下:
其中,表示输入序列,表示Self-Attention的输出,表示FFN的输出,表示归一化层。

5. Transformer Decoder

除了编码器外,Transformer还包含一个解码器。解码器也由多个相同的模块堆叠而成,每个模块包含Multi-Head Self-Attention、Encoder-Decoder Attention和FFN三个子模块。具体来说,每个模块的计算公式如下:
其中,表示输入序列,表示Self-Attention的输出,表示Encoder-Decoder Attention的输出,表示FFN的输出,表示编码器的输出序列。
GIT基本操作RNG湍流模型公式推导