汕头网站建设推广哪家好,北京百度搜索优化,个人网站主页设计模板,传媒公司注册经营范围有哪些一、注意力机制的起源#xff1a;为什么需要它#xff1f;
问题背景#xff1a; Seq2Seq的瓶颈2014年之前#xff0c;序列到序列任务#xff08;如机器翻译#xff09;用的是编码器-解码器架构#xff1a;
输入: 我 爱 北京↓[Encoder RNN]↓
固定长度向量 …一、注意力机制的起源为什么需要它问题背景Seq2Seq的瓶颈2014年之前序列到序列任务如机器翻译用的是编码器-解码器架构输入: 我 爱 北京 ↓ [Encoder RNN] ↓ 固定长度向量 c上下文向量 ↓ [Decoder RNN] ↓ 输出: I love Beijing致命问题无论输入多长都要压缩成一个固定长度的支撑。这就像让你用百年整本《红楼梦》——信息必然大量损失。解决思路动态关注人类翻译时不会先把整词“压缩记忆”而是边看边译翻译词每个时候都会真相看来源句子的相关部分。 注意力机制就是模拟这个过程让模型在生成每个输出的时候动态决定应该关注输入的哪些部分。二、第一代加性注意力Bahdanau Attention2014核心思想生成每个输出词时将其与所有输入词的“相关性分数”进行计算然后加权求和。输入序列: h1, h2, h3, h4 (encoder隐藏状态) 当前decoder状态: s_t 对于每个输入位置i: score_i 打分函数(s_t, h_i) ← 计算相关性 attention权重 softmax(scores) ← 归一化 context Σ(attention_i × h_i) ← 加权求和 输出 基于(s_t, context)生成可视化理解翻译 “I love Beijing” 时的注意力分布生成 I 时: 我[0.8] 爱[0.1] 北京[0.1] ← 主要看我 生成 love 时: 我[0.1] 爱[0.8] 北京[0.1] ← 主要看爱 生成 Beijing 时: 我[0.05] 爱[0.05] 北京[0.9] ← 主要看北京三、第二代点积注意力 (Luong Attention, 2015)改进更简单的打分函数Bahdanau用的加性打分需要额外参数Luong提出直接用积分def luong_attention(query, keys, values): # 点积打分: score q · k scores torch.bmm(query.unsqueeze(1), keys.transpose(1, 2)) # [B, 1, L] scores scores.squeeze(1) # [B, L] attention_weights F.softmax(scores, dim-1) context torch.bmm(attention_weights.unsqueeze(1), values) return context四、革命性突破Self-Attention (Transformer, 2017)核心创新之前的注意力是Encoder→Decoder的跨序列注意力。Transformer提出序列内部也可以互相注意——这就是自注意力。传统RNN: 每个词只能看到前面的词顺序处理 我 → 爱 → 北京 Self-Attention: 每个词可以直接看到所有词并行处理 我 ←→ 爱 ←→ 北京Query-Key-Value 框架这是理解现代注意力的关键Query (Q): 我想查询什么信息 Key (K): 每个位置提供什么索引 Value (V): 每个位置包含什么内容 注意力 softmax(Q × K^T) × V缩放点积注意力Pythondef scaled_dot_product_attention(Q, K, V, maskNone): Q: [B, L_q, D] 查询 K: [B, L_k, D] 键 V: [B, L_k, D] 值 d_k K.size(-1) # 1. 计算注意力分数 scores torch.matmul(Q, K.transpose(-2, -1)) # [B, L_q, L_k] # 2. 缩放防止点积值过大导致softmax梯度消失 scores scores / math.sqrt(d_k) # 3. 可选应用mask用于因果注意力等 if mask is not None: scores scores.masked_fill(mask 0, -1e9) # 4. Softmax归一化 attention_weights F.softmax(scores, dim-1) # [B, L_q, L_k] # 5. 加权求和 output torch.matmul(attention_weights, V) # [B, L_q, D] return output, attention_weights为什么要缩放当维度d很大时点积q⋅k的支撑力很大导致softmax输出接近one-hot某个值接近1其他值接近0中间几乎为0。五、Multi-Head Attention多角度看问题动机单一注意力只能学习一种相关性模式。但语言中的关系是多种多样的关系语法、语义关系、指关系代…多头注意力让模型同时学习多种注意力模式。多头的作用可视化原始输入: The cat sat on the mat because it was tired Head 1 (语法关系): cat ← 强关注 → sat (主谓) sat ← 强关注 → mat (动宾) Head 2 (指代关系): it ← 强关注 → cat (代词指代) Head 3 (位置关系): 每个词关注相邻词 Head 4 (语义关系): cat ← 关注 → tired (猫累了)