共计 1994 个字符,预计需要花费 5 分钟才能阅读完成。
概念辨析
自回归模型(Auto Regressive, AR)和自注意力机制(Self-Attention)是现代序列建模中的两大核心技术,但它们的核心思想和数学实现有着本质区别。

-
自回归模型的马尔可夫假设
AR 模型基于马尔可夫假设,即当前时刻的输出仅依赖于前 k 个时刻的输入。数学表达式为:P(x_t | x_{<t}) = P(x_t | x_{t-k}, ..., x_{t-1})这种局部依赖性限制了模型的全局信息获取能力。
-
自注意力机制的全局依赖建模
自注意力机制通过查询(Q)、键(K)、值(V)的交互计算,允许任意两个位置直接建立依赖关系:Attention(Q, K, V) = softmax(QK^T/√d_k)V这种机制可以捕获序列中任意距离的依赖关系,突破了 AR 模型的局部性限制。
示意图说明:
- AR 模型的计算路径是单向、局部的,信息只能从过去流向未来
- 自注意力机制的计算路径是全连接的,任意两个位置可以直接交互
工程影响
两种机制在实际工程中的表现差异显著:
- 训练效率
- AR 模型通常使用 teacher forcing 训练,即用真实标签作为下一步输入
-
自注意力机制可以并行计算所有位置的输出,训练效率更高
-
推理延迟
- AR 模型必须串行生成序列,导致推理延迟随序列长度线性增长
-
自注意力机制可以并行处理整个序列,推理速度更快
-
显存占用
- AR 模型的空间复杂度是 O(n),适合长序列
- 自注意力机制的空间复杂度是 O(n^2),长序列时显存压力大
代码实战
AR 序列生成实现
import torch
import torch.nn as nn
class ARModel(nn.Module):
def __init__(self, vocab_size, hidden_size):
super().__init__()
self.embed = nn.Embedding(vocab_size, hidden_size)
self.rnn = nn.LSTM(hidden_size, hidden_size)
self.out = nn.Linear(hidden_size, vocab_size)
def forward(self, x, temperature=1.0):
# x: [seq_len, batch]
embedded = self.embed(x) # [seq_len, batch, hidden]
output, _ = self.rnn(embedded) # [seq_len, batch, hidden]
logits = self.out(output) / temperature # [seq_len, batch, vocab]
return torch.softmax(logits, dim=-1)
自注意力层实现
import math
class SelfAttention(nn.Module):
def __init__(self, embed_dim, num_heads):
super().__init__()
self.mha = nn.MultiheadAttention(embed_dim, num_heads)
def forward(self, x, mask=None):
# x: [seq_len, batch, embed_dim]
attn_output, _ = self.mha(
x, x, x,
attn_mask=mask, # 防止信息泄漏
need_weights=False
)
return attn_output
生产考量
-
KV Cache 优化
在长序列推理中,可以缓存先前计算的 K、V 矩阵,避免重复计算,显著减少计算量。 -
混合架构设计
GPT 等模型采用 causal masking 的自注意力机制,既保留了并行计算优势,又保持了自回归特性:def create_causal_mask(size): mask = torch.triu(torch.ones(size, size) * float('-inf'), diagonal=1) return mask # 上三角矩阵,防止未来信息泄漏
避坑指南
- Attention Mask 配置
- 训练时务必正确设置 attention_mask,防止模型偷看未来信息
-
验证阶段关闭 dropout 以确保一致性
-
Exposure Bias 问题
- AR 模型训练时使用真实标签,但推理时依赖自身预测,可能导致误差累积
- 可通过计划采样(Scheduled Sampling)或强化学习缓解
总结
自回归模型和自注意力机制各有优劣,理解它们的本质区别对模型选型至关重要。在实践中,我们常常需要根据任务需求(如序列长度、实时性要求)和资源限制(如显存大小)做出权衡。现代架构如 Transformer 通过巧妙的设计将两者优势结合,这需要工程师深入理解底层机制才能灵活运用。
建议进一步阅读《Attention Is All You Need》和《Generating Sequences With Recurrent Neural Networks》等经典论文,以获得更系统的理论认识。
