返回博客列表
deep-learningTransformerAttentionNeural Networks架构设计

Transformer架构详解:注意力机制的革命性创新

2026-05-04
1分钟阅读
作者: CoLink Team

深入解析Transformer架构的核心机制,理解Self-Attention如何改变深度学习领域。

Transformer架构详解

Transformer架构自2017年提出以来,已成为现代深度学习的基石。

Self-Attention机制

Transformer的核心创新是自注意力机制(Self-Attention),它允许模型在处理序列时关注不同位置的信息。

数学原理

给定输入序列,Self-Attention计算三个矩阵:Query(Q)、Key(K)、Value(V)。

import torch
import torch.nn as nn

class SelfAttention(nn.Module):
    def __init__(self, embed_size, heads):
        super(SelfAttention, self).__init__()
        self.embed_size = embed_size
        self.heads = heads
        self.head_dim = embed_size // heads

        self.values = nn.Linear(self.head_dim, self.head_dim, bias=False)
        self.keys = nn.Linear(self.head_dim, self.head_dim, bias=False)
        self.queries = nn.Linear(self.head_dim, self.head_dim, bias=False)
        self.fc_out = nn.Linear(heads * self.head_dim, embed_size)

    def forward(self, values, keys, query, mask):
        N = query.shape[0]
        value_len, key_len, query_len = values.shape[1], keys.shape[1], query.shape[1]

        # Split into multiple heads
        values = values.reshape(N, value_len, self.heads, self.head_dim)
        keys = keys.reshape(N, key_len, self.heads, self.head_dim)
        queries = query.reshape(N, query_len, self.heads, self.head_dim)

        # Calculate attention scores
        energy = torch.einsum("nqhd,nkhd->nhqk", [queries, keys])

        if mask is not None:
            energy = energy.masked_fill(mask == 0, float("-1e20"))

        attention = torch.softmax(energy / (self.embed_size ** (1/2)), dim=3)

        out = torch.einsum("nhql,nlhd->nqhd", [attention, values])
        out = out.reshape(N, query_len, self.heads * self.head_dim)

        return self.fc_out(out)

Multi-Head Attention

多头注意力机制允许模型同时关注不同位置的不同表示子空间。

实际应用

Transformer架构广泛应用于:

  • GPT系列:生成式预训练模型
  • BERT:双向编码器表示
  • Vision Transformer(ViT):图像分类
  • ** Claude**:对话AI助手

性能优势

相比RNN/LSTM,Transformer的优势:

  1. 并行计算:不受序列长度限制
  2. 长距离依赖:直接连接任意位置
  3. 可扩展性:支持大规模参数

相关阅读