微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

了解巴赫达瑙的注意力线性代数

如何解决了解巴赫达瑙的注意力线性代数

下图中,巴赫达瑙的加法注意力被视为等式4的第二部分。


enter image description here


我试图找出矩阵w1w2hthsv的形状,以便找出this paper

中使用了机制
  1. hths的最终尺寸可以不同吗?说(批量大小,总单位)和(批量大小,时间窗口)。上面提到的论文中的公式8似乎正在这样做。

  2. 上式中的方程式8具有以下表示法:

    enter image description here

这将扩展到什么位置?

(W1 . ht-1) + (W1 . Ct-1)

W1 . concatenation(ht-1,ct-1)

我已经看到两者都被使用了。 对于上述矩阵形状的任何快速解释,将不胜感激。

解决方法

也许通过一个特定的例子来理解这一点可能会有所帮助:假设您有一条19字的推文,并且想要将其转换为另一种语言。您为这些单词创建嵌入,然后将其通过128个单元的双向LSTM层传递。现在,编码器为每个推文输出19个256个尺寸的隐藏状态。 假设解码器是单向的,具有128个单位。它开始翻译单词,同时在每个时间步并行输出隐藏状态。

现在,您要引起巴赫达瑙对上述方程式的关注。您想要馈送解码器的s_tminus1和编码器(hj)的所有隐藏状态,并想要使用以下步骤获取上下文:

生成v *(w * s_tminus1 + u * hj)

采用上面的softmax来获取每个推文的19个注意权重,然后将这些注意权重与编码器隐藏状态相乘,以得到加权和,仅是上下文。

请注意,在Bahdanau模型中,解码器应该是单向的。然后形状如下:

假设n = 10个单位,用于对齐层确定w,u。然后:s_tminus1和hj的形状为(?,128)和(?,19,256)。请注意,s_tminus1是t-1处的单个解码器隐藏状态,hj是双向编码器的19个隐藏状态。

我们必须将stminus1扩展为(?,1,128),之后沿时间轴进行加法运算。 w,u,v的层权重将由框架分别自动确定为(?,128,10),(?,256,10)和(?,10,1)。注意self.w(stminus1)如何计算为(?,1,10)。将其添加到self.u(hj)的每一个中,以得到(?,19,10)的形状。结果被馈送到self.v,输出为(?,19,1),它是我们想要的形状-一组19个权重。 Softmaxing会赋予注意力权重。

将此注意力权重与每个编码器的隐藏状态相乘并求和会返回上下文。

希望这可以弄清各种张量和重量形状的形状。

要回答您的其他问题-如上例所示,ht和hs的尺寸可以不同。至于您的其他问题,我已经看到两个向量被连接在一起,然后对其施加一个权重。至少这是我记得在原始论文中读到的

,

我发现this在显示每个方程的输出以及编码器和解码器的形状如何方面更有用。 Flow of calculating Attention weights in Bahdanau Attention enter image description here

我们可以看到您可以得到不同形状的编码器或解码器,并且Attention专注于序列的最重要部分,而不是整个序列。另外,您可以使用this code来显示如何应用这些方程式

FC =完全连接(密集)层 EO =编码器输出 H =隐藏状态 X =解码器的输入

score = FC(tanh(FC(EO) + FC(H)))

,

要直接回答您的问题:

  1. hths可以具有不同的形状。重要的是,在矩阵相乘之后,它们是相同的,否则不能将它们加在一起。也就是说,W1W2需要映射到相同的尺寸大小。
  2. 这应视为hc的串联。我不认为将两者都乘以相同的矩阵再相加会很有意义。

注意:第1部分)还可以通过在特征维度上同时包含hths并应用单个矩阵乘法来实现。这可能比两个单独的效率更高。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。