1. Attention机制的本质与核心思想
Attention机制最初源于人类视觉系统的工作方式——我们不会同时处理视野中的所有信息,而是有选择性地聚焦于关键部分。在深度学习领域,这一思想被抽象为:让模型在处理序列数据时,能够动态地分配不同权重给输入的不同部分。
1.1 从RNN到Attention的演进
传统RNN在处理长序列时面临梯度消失问题,LSTM/GRU虽然有所改善,但仍存在信息压缩瓶颈。以机器翻译为例,编码器需要将整个源语句压缩成一个固定维度的向量,这必然导致信息损失。
Attention的突破性在于:
- 允许解码器直接访问编码器的所有隐藏状态
- 通过计算相关性分数动态决定关注哪些隐藏状态
- 每次生成新词时都能重新调整关注重点
1.2 关键数学表达
Attention的核心计算包含三个步骤:
- 计算相似度得分(score function):
python复制# 常用点积计算 score(h_t, h_s) = h_t^T * W * h_s - 归一化得到注意力权重:
python复制
alpha = softmax(score) - 生成上下文向量:
python复制context = sum(alpha_i * h_i)
提示:在实际实现中,通常会加入缩放因子(scale factor)防止softmax进入梯度饱和区。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 自注意力与Transformer架构
2.1 自注意力机制详解
自注意力(Self-Attention)是Attention的进阶形式,其核心特点是:
- Q(Query)、K(Key)、V(Value)都来自同一输入
- 允许序列中的每个位置与其他所有位置建立联系
- 计算公式:
python复制
Attention(Q,K,V) = softmax(QK^T/sqrt(d_k))V
2.2 Transformer的完整架构
典型Transformer包含以下组件:
- 输入嵌入层 + 位置编码
- 多头注意力层(Multi-Head Attention)
- 并行多个注意力头
- 每个头学习不同的关注模式
