说明Transformer 的工作流程并配图
时间: 2025-03-05 15:32:22 浏览: 20
### Transformer架构详解及工作原理
#### 一、整体架构概述
Transformer是一种完全基于注意力机制的神经网络模型,摒弃了传统的循环神经网络(RNN)和卷积神经网络(CNN),通过自注意力(self-attention)机制来捕捉序列中的依赖关系[^1]。
#### 二、编码器部分
编码器由多个相同的层堆叠而成。每一层有两个子层组成:一个多头自注意力(multi-head self-attention)机制和一个简单的位置前馈全连接(feed-forward)网络。为了防止这些子层输出过大,在每个子层周围都应用了一个残差连接(residual connection),随后进行了Layer Normalization操作。
多头自注意力允许模型共同关注来自不同表示子空间的信息。对于每一个输入token,它会计算三个向量:查询(query)Q、键(key)K以及值(value)V。这三个矩阵分别对应着不同的线性变换权重W_Q,W_K,W_V:
```python
import torch.nn as nn
class MultiHeadedAttention(nn.Module):
def __init__(self, h, d_model, dropout=0.1):
"Take in model size and number of heads."
super(MultiHeadedAttention, self).__init__()
assert d_model % h == 0
# We assume d_v always equals d_k
self.d_k = d_model // h
self.h = h
self.linears = clones(nn.Linear(d_model, d_model), 4)
self.attn = None
self.dropout = nn.Dropout(p=dropout)
def forward(x, mask=None):
...
```
#### 三、解码器部分
解码器也包含了重复的层次结构,不过每层有三个子层而不是两个。除了与编码器相同类型的两层外,还有一个额外的“encoder-decoder attention”层用于处理源句子和目标句子之间的交互。这使得解码过程可以有条件地访问整个输入序列。
#### 四、位置编码(Positional Encoding)
由于自注意力机制本身并不具备理解顺序的能力,因此引入了位置编码(position encoding)的概念。该方法给定长度为L的词嵌入E∈R^(L×d),其中d代表维度大小,则第pos个单词的位置编码PE(pos,:)定义如下:
\[ PE_{(pos,2i)}=\sin \left(\frac{pos}{10000^{2i/d}}\right)\]
\[ PE_{(pos,2i+1)}=\cos \left(\frac{pos}{10000^{2i/d}}\right)[^1]\]
这种正弦波形式的位置编码能够使模型学习到相对距离而非绝对位置信息。
#### 五、训练细节
在训练过程中采用了标签平滑(label smoothing)技术,即不把真实分布设为目标而是稍微放宽条件;同时使用Adam优化算法并设置特定的学习率策略以加速收敛速度。

阅读全文
相关推荐

















