Attention Mechanism (注意力机制)
定义:
注意力机制(Attention Mechanism)源于人类视觉的工作原理。在处理信息时,人类不会关注所有信息,而是集中注意力在关键部分上,忽略不相关的部分。注意力机制试图模拟这种行为,允许神经网络在计算时关注输入的不同部分,从而提升性能。
在深度学习中,尤其是在自然语言处理(NLP)和计算机视觉(CV)中,注意力机制被广泛应用。
形式化
假设我们有一个输入序列 x = [ x 1 , x 2 , . . . , x n ] \mathbf{x} = [x_1, x_2, ..., x_n] x=[x1,x2,...,xn],以及对应的隐藏状态 h = [ h 1 , h 2 , . . . , h n ] \mathbf{h} = [h_1, h_2, ..., h_n] h=[h1,h2,...,hn],每个 h i h_i hi 是由某个 RNN 或其他模型生成的特征表示。注意力机制的核心思想是为每个输入的 x i x_i xi 计算一个 权重 α i \alpha_i αi,表示模型对该输入的关注程度,然后根据这些权重加权输入特征,得到一个加权的上下文向量。
具体步骤:
-
计算注意力权重 α i \alpha_i αi:可以通过计算输入与某个查询(Query)之间的相似度来得出。假设我们有一个查询向量 q q q(如当前的解码器状态),通过一个兼容函数(如点积、加性函数等)计算相似度。
-
计算加权上下文向量:
c = ∑ i = 1 n α i h i c = \sum_{i=1}^{n} \alpha_i h_i c=∑i=1nαihi
其中, α i \alpha_i αi 是通过兼容函数计算出的权重, h i h_i hi 是对应输入 x i x_i xi 的隐藏状态。
常见的兼容函数:
-
点积注意力:计算查询向量与每个键(Key)向量的点积,然后通过 Softmax 得到权重。
α i = exp ( q ⋅ k i ) ∑ j = 1 n exp ( q ⋅ k j ) \alpha_i = \frac{\exp(q \cdot k_i)}{\sum_{j=1}^{n} \exp(q \cdot k_j)} αi=∑j=1nexp(q⋅kj)exp(q⋅ki)
其中, k i k_i ki 是输入的键向量。 -
加性注意力(Bahdanau Attention):通过计算查询与键的加性组合来计算注意力权重。
α i = exp ( score ( q , k i ) ) ∑ j = 1 n exp ( score ( q , k j ) ) \alpha_i = \frac{\exp(\text{score}(q, k_i))}{\sum_{j=1}^{n} \exp(\text{score}(q, k_j))} αi=∑j=1nexp(score(q,kj))exp(score(q,ki))
其中, score ( q , k i ) \text{score}(q, k_i) score(q,ki) 是查询向量 q q q 和键向量 k i k_i ki 之间的兼容函数,通常是一个前馈神经网络。
例子:
- 机器翻译:在机器翻译中,注意力机制可以帮助模型在翻译过程中,针对源语言句子的不同部分,分配不同的权重。对于当前要翻译的单词,模型会根据源句子中的每个单词计算一个权重,然后根据这些权重加权源句子中的单词特征,生成翻译。
Cross-modal Attention Mechanism (跨模态注意力机制)
定义:
跨模态注意力机制是注意力机制的一种扩展,它用于处理多模态数据(如文本、图像、音频等),尤其是在多个模态之间进行信息融合时。不同模态的特征可能存在差异,因此跨模态注意力机制通过在一个模态(如图像)中根据另一个模态(如文本)的信息来加权特征,从而增强两者之间的联系。
形式化
假设有两个模态的输入:文本表示 T = [ t 1 , t 2 , . . . , t m ] \mathbf{T} = [t_1, t_2, ..., t_m] T=[t1,t2,...,tm] 和图像表示 I = [ i 1 , i 2 , . . . , i n ] \mathbf{I} = [i_1, i_2, ..., i_n] I=[i1,i2,...,in],文本和图像分别经过编码得到的特征序列。我们希望通过跨模态注意力机制,结合文本和图像之间的相关性来生成一个加权的特征表示。
-
计算跨模态注意力权重:
- 对于每个图像特征 i j i_j ij,我们计算它与文本特征 t i t_i ti 之间的相关性(例如,使用点积或加性函数)。然后通过 Softmax 来得到注意力权重 α i j \alpha_{ij} αij,表示文本特征 t i t_i ti 对图像特征 i j i_j ij 的影响程度。
α i j = exp ( score ( i j , t i ) ) ∑ i = 1 m exp ( score ( i j , t i ) ) \alpha_{ij} = \frac{\exp(\text{score}(i_j, t_i))}{\sum_{i=1}^{m} \exp(\text{score}(i_j, t_i))} αij=∑i=1mexp(score(ij,ti))exp(score(ij,ti))
-
加权图像特征:
- 使用计算得到的权重 α i j \alpha_{ij} αij,对图像特征进行加权,得到跨模态的上下文向量 c j c_j cj。
c j = ∑ i = 1 m α i j t i c_j = \sum_{i=1}^{m} \alpha_{ij} t_i cj=∑i=1mαijti
这就意味着每个图像特征 i j i_j ij 会根据文本信息的不同部分进行加权融合,从而得到一个更丰富的图像特征表示。
例子:
-
视觉-语言任务(如图像字幕生成):
- 在图像字幕生成中,跨模态注意力机制可以将图像和文本特征进行融合。例如,对于每个图像区域(比如某个物体或场景),根据当前生成的文本信息,跨模态注意力机制会调整图像区域的权重,使得生成的文本更加符合图像中的内容。
-
多模态情感分析:
- 在情感分析中,跨模态注意力机制可以将文本(如社交媒体上的评论)和图像(如配图)结合,通过对文本和图像信息的加权融合,提供更准确的情感判断。