attention机制_一文看懂 Bahdanau 和 Luong 两种 Attention 机制的区别
时间: 2023-06-19 17:07:53 浏览: 116
Attention 机制是一种用于序列到序列模型的技术,它使得模型可以关注输入序列中与当前输出相关的部分。Bahdanau 和 Luong 是两种常用的 Attention 机制,它们的区别主要在于计算注意力分配时所使用的方法。
Bahdanau Attention
Bahdanau Attention 是一种基于内容的注意力机制,它将注意力分配看作是一种给定上下文向量和一组查询向量的加权求和。在 Bahdanau Attention 中,上下文向量是由编码器输出的所有隐藏状态的加权和,而查询向量则是由解码器当前隐藏状态计算得出的。
具体来说,Bahdanau Attention 的计算过程如下:
1. 对于解码器当前隐藏状态 $s_t$,计算一组查询向量 $q_t$。
2. 对于编码器的所有隐藏状态 $h_i$,计算其对应的注意力得分 $e_{ti}$。
3. 将注意力得分 $e_{ti}$ 通过 softmax 函数转化为注意力权重 $a_{ti}$。
4. 将编码器所有隐藏状态 $h_i$ 与注意力权重 $a_{ti}$ 做加权求和,得到当前时间步的上下文向量 $c_t$。
Luong Attention
Luong Attention 是一种基于位置的注意力机制,它将注意力分配看作是一种根据解码器当前隐藏状态和编码器所有隐藏状态之间的相似度计算得出的权重分布。在 Luong Attention 中,有三种不同的计算方式:点乘注意力、拼接注意力和缩放点积注意力。
具体来说,Luong Attention 的计算过程如下:
1. 对于解码器当前隐藏状态 $s_t$,计算一组查询向量 $q_t$。
2. 对于编码器的所有隐藏状态 $h_i$,计算其对应的特征向量 $z_i$。
3. 根据解码器当前隐藏状态 $s_t$ 和编码器的所有特征向量 $z_i$,计算相似度得分 $e_{ti}$。
4. 根据相似度得分 $e_{ti}$,使用 softmax 函数计算注意力权重 $a_{ti}$。
5. 将编码器所有隐藏状态 $h_i$ 与注意力权重 $a_{ti}$ 做加权求和,得到当前时间步的上下文向量 $c_t$。
简而言之,Bahdanau Attention 是基于内容的注意力机制,而 Luong Attention 则是基于位置的注意力机制,它们在计算注意力分配时所使用的方法有所不同。