人工智能概念:RNN中的注意力机制详解

RNN家族的介绍网页链接

一、注意力机制介绍

1.1 注意力机制的本质

注意力机制源于对人类认知过程的模拟:当人处理信息时,会有选择地聚焦于关键部分而忽略次要信息。例如看到"锦江饭店"照片时,大脑会优先关注牌匾文字而非背景细节:

原始输入
注意力聚焦
关键信息提取
信息处理

在深度学习中,注意力机制通过为输入的不同部分分配权重系数实现这种聚焦效果:

  • 高权重:重点关注
  • 低权重:次要关注
  • 零权重:完全忽略

1.2 语义融合方法

注意力机制的核心是融合不同来源的语义信息,常见方法如下:

融合方法计算公式特点
拼接 [ h i ; s j ] [h_i; s_j] [hi;sj]保留原始特征但增加维度
累加 h i + s j h_i + s_j hi+sj特征混合但可能信息冲突
加权融合 ∑ α i ⋅ h i \sum \alpha_i \cdot h_i αihi注意力机制核心方法

1.3 相似性计算方法

计算注意力权重的核心是度量向量间相似性,常见方法如下:

计算方法公式特点
点积 score ( Q , K ) = Q ⋅ K \text{score}(Q,K) = Q \cdot K score(Q,K)=QK计算简单高效
缩放点积 Q ⋅ K d k \frac{Q \cdot K}{\sqrt{d_k}} dk QK避免梯度消失(Transformer使用)
余弦相似度 Q ⋅ K ∣ Q ∣ ∣ K ∣ \frac{Q \cdot K}{|Q| |K|} Q∣∣KQK不受向量长度影响
加性模型 v T tanh ⁡ ( W [ Q ; K ] ) v^T \tanh(W[Q; K]) vTtanh(W[Q;K])早期RNN常用方法

二、注意力机制分类

2.1 软注意(全局注意)

核心特性

  • 权重分配:生成 0~1 连续值的注意力权重(如 [0.2, 0.3, 0.5] ),对输入元素全局考量。
  • 关注范围:覆盖所有输入元素,无信息丢弃,充分利用序列语义。
  • 计算方式:可微,支持反向传播,便于模型端到端训练优化。

数学表达与计算规则
软注意通过计算查询(Q)、键(K)间相似度得到注意力权重,再加权融合值(V),常见实现形式有以下几种(符号说明:Q 为查询向量/矩阵,K 为键向量/矩阵,V 为值向量/矩阵,Linear 代表线性变换操作,Softmax 为归一化函数,d_kK 的维度,用于缩放点积 ):

  1. 拼接线性变换型
    先将 QK 沿纵轴拼接([Q, K] 表示拼接操作 ),经线性变换提取特征,再用 Softmax 生成权重,最后与 V 做张量乘法(若为批量数据,当注意力权重矩阵和 V 第一维代表 batch 条数时,采用 bmm 批量矩阵乘法 ),公式为:
    Attention ( Q , K , V ) = Softmax ( Linear ( [ Q , K ] ) ) ⋅ V \text{Attention}(Q, K, V) = \text{Softmax}\big(\text{Linear}([Q, K])\big) \cdot V Attention(Q,K,V)=Softmax(Linear([Q,K]))V

  2. 拼接线性变换 + tanh 激活型
    在拼接线性变换基础上,增加 tanh 激活函数引入非线性,内部求和(sum 对变换后结果维度压缩 )后再用 Softmax 归一化,最终与 V 融合,公式为:
    Attention ( Q , K , V ) = Softmax ( sum ( tanh ⁡ ( Linear ( [ Q , K ] ) ) ) ) ⋅ V \text{Attention}(Q, K, V) = \text{Softmax}\Big(\text{sum}\big(\tanh\big(\text{Linear}([Q, K])\big)\big)\Big) \cdot V Attention(Q,K,V)=Softmax(sum(tanh(Linear([Q,K]))))V

  3. 点积缩放型(Transformer 常用)
    直接计算 QK 转置(K^T )的点积,除以 \sqrt{d_k}d_kK 单个向量维度,缩放避免点积值过大 ),经 Softmax 生成权重后与 V 相乘,公式为:
    Attention ( Q , K , V ) = Softmax ( Q ⋅ K T d k ) ⋅ V \text{Attention}(Q, K, V) = \text{Softmax}\Big(\frac{Q \cdot K^T}{\sqrt{d_k}}\Big) \cdot V Attention(Q,K,V)=Softmax(dk QKT)V

从通用框架看,软注意可统一描述为:先计算注意力权重 α i = Softmax ( score ( Q , K i ) ) \alpha_i = \text{Softmax}(\text{score}(Q, K_i)) αi=Softmax(score(Q,Ki))score 为上述各类相似度计算方式 ),再通过 Attention = ∑ i = 1 n α i V i \text{Attention} = \sum_{i=1}^n \alpha_i V_i Attention=i=1nαiVi 加权融合 V 中信息,实现对输入的动态聚焦。

2.2 硬注意(局部注意)

核心特性

  • 权重分配:生成非 0 即 1 的离散权重(如 [0, 0, 1] ),仅聚焦部分关键输入元素。
  • 关注范围:选择性丢弃部分输入信息,只保留权重为 1 对应元素的语义。
  • 计算方式:不可微,无法直接通过反向传播优化,通常结合强化学习(如策略梯度 )训练。

两种实现方式

  1. 贪心选择:计算输入元素与查询的相似度,直接选取相似度最高(权重最大为 1 )的单个元素,公式可简化为 Attention = V argmax ( score ( Q , K i ) ) \text{Attention} = V_{\text{argmax}(\text{score}(Q, K_i))} Attention=Vargmax(score(Q,Ki))argmax 选取权重最大元素索引 )。
  2. 随机采样:依据相似度计算的概率分布,随机选取一个元素(权重为 1 ,其余为 0 ),通过引入随机性探索更多可能,公式为 Attention = V i \text{Attention} = V_i Attention=Vii 为按概率分布采样的索引 )。

2.3 自注意(内注意)

核心特性

  • 关注范围:聚焦同一序列内部元素间的关系,无需外部查询,QKV 均来自序列自身。
  • 核心能力:高效捕获长距离依赖,突破传统循环神经网络(RNN )逐词传递信息的局限。
  • 革命性影响:成为 Transformer 架构的核心,推动自然语言处理等领域模型性能大幅提升,其计算常基于上述点积缩放型等规则,公式可复用软注意的点积缩放形式(如 Transformer 中自注意力 ):
    Self-Attention ( X , X , X ) = Softmax ( X ⋅ X T d x ) ⋅ X \text{Self-Attention}(X, X, X) = \text{Softmax}\Big(\frac{X \cdot X^T}{\sqrt{d_x}}\Big) \cdot X Self-Attention(X,X,X)=Softmax(dx XXT)X
    (符号说明:X 为序列自身的词嵌入矩阵,同时作为 QKVd_xX 单个向量维度 ) ,通过这种方式挖掘序列内部复杂的语义关联。

三、软注意案例:机器翻译详解

RNN中的RNN中的基础Encoder-Decoder框架介绍网页链接

3.1 任务场景

  • 输入序列["欢迎", "来", "北京"]
  • 目标输出["Welcome", "to", "Beijing"]
  • 模型架构:带注意力机制的Encoder-Decoder(GRU单元)

3.2 编码器处理流程

  1. 初始状态h0 为三维零向量
  2. 时间步1(输入“欢迎”)
    • 词嵌入:emb("欢迎") = [0.2, 0.5, 0.3](维度3,随机初始化示例)
    • GRU计算:h1 = GRU(emb("欢迎"), h0),输出 h1 = [0.6, 0.7, 0.8](编码“欢迎”语义)
  3. 时间步2(输入“来”)
    • 词嵌入:emb("来") = [0.1, 0.4, 0.2]
    • GRU计算:h2 = GRU(emb("来"), h1),输出 h2 = [0.5, 0.6, 0.7](编码“来”语义,融合“欢迎”上下文)
  4. 时间步3(输入“北京”)
    • 词嵌入:emb("北京") = [0.3, 0.2, 0.9]
    • GRU计算:h3 = GRU(emb("北京"), h2),输出 h3 = [0.7, 0.8, 0.9](编码“北京”语义,融合前两词上下文)

编码器输出隐藏状态序列 H = [h1, h2, h3],其中 h3 作为解码器初始状态 H0,且 V = [h1, h2, h3] = [[0.6,0.7,0.8], [0.5,0.6,0.7], [0.7,0.8,0.9]](形状 3×3 ,作为注意力机制的 V

3.3 解码器生成“to”时的注意力计算(模型已生成“Welcome”)

编码器部分结构图
在这里插入图片描述

解码器部分结构图
在这里插入图片描述

自注意力机制部分结构图
在这里插入图片描述

完整结构图
在这里插入图片描述

注意力组件定义

组件形状意义
Q1×3上一步输出“Welcome”的语义张量,代表已生成内容的语义预期
K1×3解码器上一时间步隐藏状态 H1(生成“Welcome”后的隐层输出)
V3×3编码器隐藏状态拼接矩阵 [[0.6,0.7,0.8], [0.5,0.6,0.7], [0.7,0.8,0.9]]

注意力计算步骤(详细推导)

步骤1:Q与K拼接(融合已生成语义与当前查询)

  • Q(“Welcome”语义张量):假设为 [0.9, 0.8, 0.7](模型训练后学习到的首词语义)
  • K(解码器上一步隐层输出 H1):假设为 [0.8, 0.9, 0.9](携带“Welcome”生成后的上下文)
  • 拼接后形状:[Q; K] = [0.9, 0.8, 0.7, 0.8, 0.9, 0.9]1×6 ,融合“已生成语义”与“当前查询需求”)

计算意义
将“Welcome”的语义(Q)与解码器内部状态(K)结合,让模型知道“当前需要生成与‘Welcome’衔接的词”,为聚焦“来”做准备。

步骤2:线性变换(提取关键语义特征)

  • 线性变换矩阵 W1:假设为 [[0.1, 0.2, 0.3], [0.4, 0.5, 0.6], [0.7, 0.8, 0.9]]3×6 ,模型训练学习的参数)
  • 偏置 b1:假设为 [0.0, 0.0, 0.0](简化演示)
  • 计算:
    score = tanh ⁡ ( [ Q ; K ] ⋅ W 1 T + b 1 ) \text{score} = \tanh\left( [Q; K] \cdot W1^T + b1 \right) score=tanh([Q;K]W1T+b1)
    代入数据:
    [ Q ; K ] ⋅ W 1 T = [ 0.9 , 0.8 , 0.7 , 0.8 , 0.9 , 0.9 ] ⋅ [ 0.1 0.4 0.7 0.2 0.5 0.8 0.3 0.6 0.9 0.8 0.9 0.1 0.9 0.2 0.3 0.9 0.3 0.4 ] T [Q; K] \cdot W1^T = [0.9, 0.8, 0.7, 0.8, 0.9, 0.9] \cdot \begin{bmatrix} 0.1 & 0.4 & 0.7 \\ 0.2 & 0.5 & 0.8 \\ 0.3 & 0.6 & 0.9 \\ 0.8 & 0.9 & 0.1 \\ 0.9 & 0.2 & 0.3 \\ 0.9 & 0.3 & 0.4 \end{bmatrix}^T [Q;K]W1T=[0.9,0.8,0.7,0.8,0.9,0.9] 0.10.20.30.80.90.90.40.50.60.90.20.30.70.80.90.10.30.4 T
    (实际计算需按矩阵乘法展开,结果形状 1×3 ,假设输出 [1.2, 0.8, 0.5]
    tanh 激活后:score = [tanh(1.2), tanh(0.8), tanh(0.5)] ≈ [0.83, 0.69, 0.46]

计算意义
通过线性变换学习“Welcome + 隐层状态”到“目标词需求”的映射,突出与“来→to”关联的特征(如动作、介词语义)。

步骤3:Softmax归一化(生成注意力权重)

  • 计算:
    α = Softmax ( score ) = [ e 0.83 , e 0.69 , e 0.46 ] e 0.83 + e 0.69 + e 0.46 \alpha = \text{Softmax}(\text{score}) = \frac{[e^{0.83}, e^{0.69}, e^{0.46}]}{e^{0.83} + e^{0.69} + e^{0.46}} α=Softmax(score)=e0.83+e0.69+e0.46[e0.83,e0.69,e0.46]
    代入指数计算:
    e 0.83 ≈ 2.29 , e 0.69 ≈ 1.99 , e 0.46 ≈ 1.58 e^{0.83}≈2.29, \quad e^{0.69}≈1.99, \quad e^{0.46}≈1.58 e0.832.29,e0.691.99,e0.461.58
    求和:2.29 + 1.99 + 1.58 = 5.86
    归一化后:α ≈ [0.39, 0.34, 0.27](实际训练后会调整,使“来”的权重更高,这里简化演示)

计算意义
将特征分数转化为概率分布,让模型“投票”选择与生成“to”最相关的编码器隐藏状态(理想中“来”的权重应最高)。

步骤4:加权点积(融合编码器语义)

  • 计算:
    c = α ⋅ V = 0.39 ⋅ [ 0.6 , 0.7 , 0.8 ] + 0.34 ⋅ [ 0.5 , 0.6 , 0.7 ] + 0.27 ⋅ [ 0.7 , 0.8 , 0.9 ] c = \alpha \cdot V = 0.39 \cdot [0.6,0.7,0.8] + 0.34 \cdot [0.5,0.6,0.7] + 0.27 \cdot [0.7,0.8,0.9] c=αV=0.39[0.6,0.7,0.8]+0.34[0.5,0.6,0.7]+0.27[0.7,0.8,0.9]
    展开计算:
    c 1 = 0.39 × 0.6 + 0.34 × 0.5 + 0.27 × 0.7 ≈ 0.23 + 0.17 + 0.19 = 0.59 c 2 = 0.39 × 0.7 + 0.34 × 0.6 + 0.27 × 0.8 ≈ 0.27 + 0.20 + 0.22 = 0.69 c 3 = 0.39 × 0.8 + 0.34 × 0.7 + 0.27 × 0.9 ≈ 0.31 + 0.24 + 0.24 = 0.79 c_1 = 0.39×0.6 + 0.34×0.5 + 0.27×0.7 ≈ 0.23 + 0.17 + 0.19 = 0.59 \\ c_2 = 0.39×0.7 + 0.34×0.6 + 0.27×0.8 ≈ 0.27 + 0.20 + 0.22 = 0.69 \\ c_3 = 0.39×0.8 + 0.34×0.7 + 0.27×0.9 ≈ 0.31 + 0.24 + 0.24 = 0.79 \\ c1=0.39×0.6+0.34×0.5+0.27×0.70.23+0.17+0.19=0.59c2=0.39×0.7+0.34×0.6+0.27×0.80.27+0.20+0.22=0.69c3=0.39×0.8+0.34×0.7+0.27×0.90.31+0.24+0.24=0.79
    结果:c ≈ [0.59, 0.69, 0.79](形状 1×3 ,融合编码器语义,突出“来”的关联)

计算意义
根据注意力权重,强化与“to”关联的编码器状态(如“来”的 h2),让解码器知道“当前应聚焦‘来’的动作语义”。

步骤5:二次线性变换(适配GRU输入)

  • 线性变换矩阵 W2:假设为 [[0.2, 0.3, 0.4], [0.5, 0.6, 0.7], [0.8, 0.9, 0.1]]3×3 ,模型训练学习的参数)
  • 偏置 b2:假设为 [0.0, 0.0, 0.0](简化演示)
  • 计算:
    attn = c ⋅ W 2 T + b 2 = [ 0.59 , 0.69 , 0.79 ] ⋅ [ 0.2 0.5 0.8 0.3 0.6 0.9 0.4 0.7 0.1 ] T \text{attn} = c \cdot W2^T + b2 = [0.59, 0.69, 0.79] \cdot \begin{bmatrix} 0.2 & 0.5 & 0.8 \\ 0.3 & 0.6 & 0.9 \\ 0.4 & 0.7 & 0.1 \end{bmatrix}^T attn=cW2T+b2=[0.59,0.69,0.79] 0.20.30.40.50.60.70.80.90.1 T
    (实际计算后形状 1×3 ,假设输出 [0.6, 0.7, 0.8]

计算意义
将融合后的语义向量 c 转换为解码器GRU可处理的格式,确保输入维度匹配。

步骤6:GRU生成“to”

  • GRU输入:[attn; K] = [0.6, 0.7, 0.8, 0.8, 0.9, 0.9]1×6 ,融合注意力语义与解码器隐层状态)
  • GRU计算:H2 = GRU([attn; K], H1),输出新隐藏状态 H2(融合“Welcome + 来”的语义)
  • 全连接层+Softmax:生成词概率分布,“to”的概率最高(因注意力强化了“来”的动作语义,匹配“to”的介词功能)

计算意义
通过GRU门控机制,选择性保留“来”的动作信息,抑制无关特征(如“北京”的地点细节),最终精准生成“to”。

3.4 注意力权重动态变化(训练后理想状态)

目标词“欢迎”权重“来”权重“北京”权重语义关联说明
Welcome0.70.20.1聚焦“欢迎”的情感语义,完成首词对齐
to0.10.60.3聚焦“来”的动作属性,建立“Welcome to”搭配
Beijing0.10.10.8聚焦“北京”实体特征,准备地点翻译

3.5 关键逻辑说明

  1. “Welcome”的生成逻辑

    • 编码器 h3(北京)作为解码器初始状态,结合 <GO> 标记
    • 注意力机制通过权重(如“欢迎”权重0.7)聚焦首词,实现“欢迎→Welcome”语义对齐
  2. “to”的生成逻辑

    • 注意力权重(如“来”权重0.6)聚焦动作词,捕捉“Welcome to”的固定搭配
    • 线性变换强化“来”的动作特征,使GRU生成方向介词“to”

四、硬注意案例:"欢迎到北京"的简化应用

4.1 任务假设

  • 输入:假设“欢迎来北京”对应图像的三个区域特征(“欢迎”区域、"来"区域、"北京"区域)
  • 输出:生成关键词“北京”(仅演示硬注意逻辑,实际翻译需软注意配合)

4.2 硬注意工作流程

  1. 重要性评分:计算各区域特征对生成“北京”的得分(如“北京”区域得分 0.9,其他区域 0.1
  2. 单一选择:通过 argmax 选择得分最高的“北京”区域特征
  3. 信息丢弃:完全忽略“欢迎”和“来”的特征

4.3 关键特点

  • 权重特性:仅“北京”区域权重为1,其他为0
  • 计算优势:无需加权求和,直接取用单一特征
  • 应用局限:无法捕捉“欢迎来北京”的完整语义链,仅适用于简单实体识别

五、自注意案例:"欢迎来北京"的语义关联(适配任务逻辑,略调整)

5.1 任务场景

输入文本:“欢迎来北京”,理解“来”与“北京”的语义关联,辅助翻译时“来→to”“北京→Beijing”的精准映射

5.2 自注意计算要点

  1. 生成QKV

    • QKV 均来自文本的词嵌入向量(假设维度为 3 ,经模型训练学习得到),例如:
      • Q_来:“来”的词嵌入向量,承载“动作趋向”语义,如 [0.3, 0.6, 0.2]
      • K_北京:“北京”的词嵌入向量,承载“地点实体”语义,如 [0.2, 0.1, 0.7]
      • V:整个输入序列的词嵌入矩阵(含“欢迎”“来”“北京”),形状 3×3 ,这里聚焦“来”与“北京”的交互,取对应向量参与计算
  2. 相似度计算
    计算“来”与“北京”的语义相似度(以点积为例):
    score ( " 来 " , " 北京 " ) = Q 来 ⋅ K 北京 = 0.3 × 0.2 + 0.6 × 0.1 + 0.2 × 0.7 = 0.32 \text{score}("来", "北京") = Q_{\text{来}} \cdot K_{\text{北京}} = 0.3×0.2 + 0.6×0.1 + 0.2×0.7 = 0.32 score("","北京")=QK北京=0.3×0.2+0.6×0.1+0.2×0.7=0.32
    对比“来”与“欢迎”的相似度(假设为 0.2 ),可见“来”与“北京”语义关联更紧密。

  3. 权重分配
    将“来”与序列中各词(“欢迎”“来”“北京” )的相似度经 Softmax 归一化,生成注意力权重。因“来”与“北京”得分最高,“北京”的权重会突出(如 0.6 ),表明二者强关联。

5.3 关键价值

  • 长距离依赖捕获:直接建立“来”(第2词)与“北京”(第3词)的语义连接,突破传统 RNN 需逐词传递信息的局限,清晰捕捉“动作趋向 + 地点”的搭配逻辑
  • 翻译连贯性提升:让模型学习到“来”的动作语义需关联“北京”的地点语义,翻译时能更精准生成“Welcome to Beijing” ,强化“来→to”“北京→Beijing”的对应关系,避免语义断裂
  • 语法模式学习:辅助模型掌握中文里“动词 + 地点”(如来北京)到英文“介词 + 地点”(to Beijing )的语法转换规律,提升翻译质量

六、总结:注意力机制的核心价值

6.1 三类注意力的本质差异

类型核心操作"欢迎到北京"案例表现
软注意加权融合全部输入生成 “to” 时聚焦“到”(权重 0.6),同时保留“欢迎”和“北京”的语义信息
硬注意单选最高权重元素仅选择“北京”特征,丢失“欢迎到”的语义链条,导致翻译不连贯
自注意计算序列内部元素关联建立“到”与“北京”的位置依赖,辅助生成“to Beijing”的正确语序

6.2 工程实践意义

  1. 信息处理范式

    • 软注意:动态分配资源,通过权重系数平衡信息保留与聚焦,适用于需要完整语义的翻译任务(如BLEU分数提升3-5分)。
    • 硬注意:极端轻量化,牺牲信息完整性换取效率,适用于实时场景(如移动端翻译APP)。
    • 自注意:打破序列长度限制,通过全局关联建模长距离依赖,是Transformer架构的基石。
  2. 翻译任务映射

    • 软注意:解决“欢迎→Welcome”的语义对齐,通过加权融合避免直译错误。
    • 自注意:强化“到→to”与“北京→Beijing”的语法关联,提升语序准确性。
    • 硬注意:可用于快速定位地名实体(如“北京”),但需与软注意结合使用以保证语义完整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值