1. Transformer嵌入层实现详解
1.1 词嵌入的核心作用
词嵌入(Word Embedding)是自然语言处理中的基础技术,它将离散的词语映射到连续的向量空间。在Transformer架构中,嵌入层扮演着至关重要的角色:
- 语义表示:将词汇ID转换为稠密向量,每个维度都隐式编码了某种语义特征
- 维度统一:无论输入词汇量多大,输出维度都固定为d_model(论文中为512)
- 可学习性:通过训练过程不断调整向量值,使相似语义的词在向量空间中距离更近
PyTorch中的nn.Embedding模块本质上是一个可训练的查找表,其初始化方式为:
python复制self.lut = nn.Embedding(vocab_size, d_model) # 形状为[vocab_size, d_model]
1.2 嵌入层的完整实现
以下是嵌入层的完整实现代码,包含关键细节说明:
python复制import torch
import torch.nn as nn
import math
class Embeddings(nn.Module):
def __init__(self, d_model, vocab_size):
"""
Args:
d_model: 词向量维度 (通常512)
vocab_size: 词表大小
"""
super().__init__()
self.lut = nn.Embedding(vocab_size, d_model)
self.d_model = d_model
def forward(self, x):
# x形状: [batch_size, seq_len]
embeddings = self.lut(x) # [batch_size, seq_len, d_model]
return embeddings * math.sqrt(self.d_model)
关键实现细节:
- 缩放因子:输出前
