attention中计算权重值的几种方法

权重 α i \alpha_i αi

decoder的初始状态是encoder的最后一个状态 h m h_m hm,在attention下,encoder的所有状态都要保留下来。首先需要计算 s 0 s_0 s0与encoder的每一个 h i h_i hi的相关性(权重) α i = a l i g n ( h i , s 0 ) \alpha_i = align(h_i, s_0) αi=align(hi,s0)。最终算出来 α 1 , α 2 , ⋯   , α m \alpha_1, \alpha_2, \cdots, \alpha_m α1,α2,,αm a l p h a i alpha_i alphai都是介于01之间的实数,且所有 α \alpha α的和为1
在这里插入图片描述

计算方法

方法一(attention第一篇论文中提出的)

在这里插入图片描述
首先将 h i h_i hi s 0 s_0 s0作concatenation得到一个更高维的向量。然后求矩阵 w w w与这个向量的乘积,得到一个向量,然后将tanh应用于向量的每一个元素上,将每一个元素压缩到[-1,1],将tanh的输出与 v v v求内积,结果为一个实数 α i ~ \tilde{\alpha_i} αi~
需要注意的是,图中的矩阵 w w w v v v都是参数,需要通过训练数据学习。
求出 m m m个参数 α 1 ~ , α 2 ~ , ⋯   , α m ~ \tilde{\alpha_1}, \tilde{\alpha_2}, \cdots , \tilde{\alpha_m} α1~,α2~,,αm~需要对他们使用softmax变换(和为1):
[ α 1 , α 2 , ⋯   , α m ] = S o f t m a x ( [ α 1 ~ , α 2 ~ , ⋯   , α m ~ ] ) [\alpha_1, \alpha_2, \cdots, \alpha_m] = Softmax([\tilde{\alpha_1}, \tilde{\alpha_2}, \cdots , \tilde{\alpha_m}]) [α1,α2,,αm]=Softmax([α1~,α2~,,αm~])

方法二(更常用)

  1. Linear maps( W k , W Q W_k,W_Q Wk,WQ通过训练得到):
    k i = W k ⋅ h i k_i = W_k \cdot h_i ki=Wkhi, for i = 1  to  m i = 1 \text{ to } m i=1 to m
    q 0 = W Q ⋅ s 0 q_0 = W_Q \cdot s_0 q0=WQs0
  2. Inner product:
    α i ~ = k i T q 0 \tilde{\alpha_i} = k^{T}_{i}q_0 αi~=kiTq0, for i = 1  to  m i = 1 \text{ to } m i=1 to m
  3. Normalization:
    [ α 1 , α 2 , ⋯   , α m ] = S o f t m a x ( [ α 1 ~ , α 2 ~ , ⋯   , α m ~ ] ) [\alpha_1, \alpha_2, \cdots, \alpha_m] = Softmax([\tilde{\alpha_1}, \tilde{\alpha_2}, \cdots , \tilde{\alpha_m}]) [α1,α2,,αm]=Softmax([α1~,α2~,,αm~])
### 回答1: CBAM (Convolutional Block Attention Module) 的 attention 矩阵通过卷积和最大池化来计算特征图上每个位置的权重。在这个过程中,维度可能会发生变化,具体取决于使用的卷积核大小和步长以及最大池化窗口大小。 ### 回答2: CBAM(Convolutional Block Attention Module)是一种用于图像分类任务的注意力机制模块。其attention矩阵是一个用于提取特征的关注度矩阵,用于加权特征图中的不同区域。 在CBAM模块中,注意力矩阵的维度变换是通过两个关键步骤实现的:通道注意力和空间注意力。 首先,通过通道注意力操作,CBAM模块将输入的特征图映射到通道注意力图。这一操作主要是通过全局平均池化和全连接层来实现的。全局平均池化通过对每个通道的特征进行池化操作,将通道维度压缩到1。然后,通过一个全连接层将通道特征映射到一个具有与输入特征图相同通道数的注意力权重向量。这样,通道注意力图就能够编码每个通道对于提取重要特征的重要程度。 接下来,通过空间注意力操作,CBAM模块将输入特征图与通道注意力图相乘,从而加权不同通道的特征图。这一操作通过使用一个卷积层和Sigmoid激活函数来实现。卷积层将通道注意力图补充到与输入特征图相同的空间维度,然后通过Sigmoid激活函数将每个位置的限制在0到1之间,以表示该位置对应的特征的重要程度。最后,将加权后的特征图与输入特征图相乘,即得到了经过空间注意力操作后的特征图。 通过通道注意力和空间注意力两个步骤的操作,CBAM模块能够提取到更有代表性的特征图。这种注意力矩阵的维度变换使得模块能够根据输入数据的特点来自适应地调整特征图的表征方式,进而提升图像分类任务的性能。 ### 回答3: CBAM(Convolutional Block Attention Module,卷积块注意力模块)是一种用于图像处理的注意力机制模型。它引入了两个注意力机制:通道注意力和空间注意力。 CBAM的注意力矩阵维度变换主要包括以下几个步骤。 首先,输入特征经过两个不同的处理分支进行处理,分别是通道处理分支和空间处理分支。 对于通道处理分支,输入特征经过全局平均池化操作,将每个通道的特征图转换为一个数表示。然后,该数经过一个全连接层,产生一个与通道数相同的注意力权重向量。这个过程将注意力权重从通道维度转换到了一个数表示的维度。 对于空间处理分支,输入特征先经过一个平均池化操作,将每个通道上的特征图转换为一个全局代表特征图。然后,该全局代表特征图分别经过一个共享的全连接层和一个sigmoid函数,得到一个与输入特征图尺寸相同的空间注意力矩阵。这个过程将注意力权重从通道维度转换为了输入特征图尺寸维度。 最后,将通道注意力和空间注意力两个矩阵进行元素级别相乘,得到最终的注意力矩阵。这个注意力矩阵与输入特征具有相同的维度,表示了每个位置和通道上的注意力权重。 综上所述,CBAM的注意力矩阵的维度变换包括将注意力权重从通道维度转换为数表示的维度,以及将注意力权重从通道维度转换为输入特征图尺寸的维度。最终得到的注意力矩阵与输入特征具有相同的维度,表征了位置和通道上的注意力权重
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜色如墨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值