databites.tech绘制的机器学习(ML)中Transformer模型的编码器部分(The Encoder)的工作原理。
编码器(Encoder)是Transformer架构中的一部分,负责处理输入的token(即输入数据的一部分,如单词或字符)。编码器通过自注意力机制(Self-Attention)和前馈神经网络(Feed-Forward Layers)生成上下文感知的表示。这些表示随后可以用于各种任务,比如机器翻译、文本生成等。
🌟STEP 1 - 输入嵌入和位置编码
1.1 输入嵌入(Input Embedding)
作用:将每个输入单词转化为一个固定长度的向量。在图中,单词被转化为大小为512的向量。
嵌入过程:这个过程只发生在最底层的编码器中,即输入序列的第一个编码器。输入数据(通常是文本)首先通过嵌入层被转化为向量,形成“嵌入输入”。
1.2 位置编码(Positional Encoding)
问题:Transformer缺乏像循环神经网络(RNN)那样的顺序信息,因此需要一种方式来表示输入的顺序。
解决方案:通过加入位置编码,向量中每个位置上的值根据单词在序列中的位置进行调整。位置编码使用正弦和余弦函数来生成,以确保编码能捕获序列中的位置信息。
🌟STEP 2 - 编码器层堆叠(Stack of Encoders Layers)
结构:编码器由N个相同的层堆叠而成,每一层都有相同的结构,包括多头自注意力机制(Multi-Head Self-Attention)和前馈神经网络(Feed-Forward Neural Network)。
输入和输出:嵌入输入和位置编码的组合被传递给第一个编码器,然后输出被传递给下一个编码器层,依次类推。
2.1 多头自注意力机制(Multi-Headed Self-Attention Mechanism)
作用:计算序列中每个单词与其他单词之间的相关性。自注意力机制可以让模型关注序列中其他相关单词,为每个输入单词生成一个上下文感知的表示。
过程:使用查询(Query)、键(Key)和值(Value)三个向量来计算注意力得分,以确定哪些单词应该被重点关注。
2.2 矩阵乘法(Matrix Multiplication)
作用:对查询(Q)和键(K)进行矩阵乘法以计算注意力得分。每个单词都会获得与序列中其他单词的关联得分。
2.3 注意力得分缩放(Scaling the Attention Scores)
问题:未经缩放的得分值可能过大,导致Softmax的梯度变得很小,阻碍模型的训练。
解决方案:将得分除以键向量维度的平方根(通常是向量维度的平方根)来缩放得分。
2.4 应用Softmax(Applying Softmax)
作用:使用Softmax函数将得分转化为概率分布。较高的得分被放大,较低的得分被压缩,得到的概率表示每个单词在序列中的重要性。
2.5 结合Softmax结果(Combining Softmax Results)
作用:用Softmax得出的注意力权重乘以值向量(V),以生成输出向量。这个过程为每个单词生成上下文感知的表示。
2.6 归一化和残差连接(Normalization and Residuals)
作用:每个子层都有一个归一化层(Layer Normalization),其输出与输入相加以形成残差连接。这有助于缓解梯度消失问题。
2.7 前馈神经网络(Feed-Forward Neural Network)
作用:在自注意力层之后,每个编码器层还包含一个前馈神经网络。每个输入向量通过两个线性变换和一个ReLU激活函数,进行进一步的特征提取。
🌟STEP 3 - 输出(Output)
作用:编码器的输出是一组向量,每个向量捕获了输入序列的丰富上下文信息。
传递给解码器:编码器的输出随后被传递给解码器,用于生成最终的预测或输出。
总结
编码器的主要作用:通过自注意力机制和前馈神经网络,将输入序列转换为一组上下文感知的表示。
编码器结构:多个编码器层堆叠,每层包含多头自注意力机制、前馈神经网络、归一化和残差连接。
自注意力机制:关键步骤包括矩阵乘法、缩放得分、应用Softmax和加权求和,生成序列中每个单词的上下文感知表示。