注意力机制 讨论区

http://zh.diveintodeeplearning.org/chapter_natural-language-processing/attention.html

在计算energy
e_{t’ t} = a(s_{t’ - 1}, h_t), t=1 ,…,T.
的时候为什么是用decoder的前一时刻的隐藏状态来计算当前时刻的energy?

既然attention的目的是做对齐,感觉上最好是用当前时刻的隐藏状态来计算,但实际上又无法获得当前时刻的隐藏状态。

因为你要用当前时刻的energy计算decoder当前时刻的隐藏状态

是这样的。可是我理解应该用是decoder当前时刻的隐藏状态来算energy最合适吧,因为它与当前的输出是最相关的。如公式所示,我们想要计算的是decoder在 t’ 时刻的energy,但是由于目前的结构设计我们暂时得不到s(t’), 只好退而求其次用了s(t’-1)。e(t’_t) 和 s(t’) 其实是相互依赖,有点儿先鸡还是先蛋的感觉,不知道我的理解对不对?

当我 模型训练好了 在测试集上进行翻译,如何知道测试集上每个单词的注意力?

测试集上的单词是不停变化的,而模型已经训练好

可以讲讲自注意力机制吗

http://en.d2l.ai/chapter_attention-mechanism/transformer.html

多头注意的实现里面,MultiHeadAttention 的 forward 函数里面,最后 concat 了 所有 header,但是没有 经过 一个 dense layer,而是直接返回
return transpose_output(output, self.num_heads)

在 注意力机制 里面,公式描述与代码实现好像有出入。。。

请教一下,既然decoder的输出是不固定长度的,那么每一个新的output是不是就会对应新的attention里面的weight? 那么在训练的时候我们是怎么能够知道attention需要到哪里的

这不是加权求和吗?