机器学习与深度学习

Attention 机制的相关疑问及其解答

2019-12-11  本文已影响0人  LCG22

1、Attention 机制可以并行运算吗?如果可以,那原因是什么?如果不可以,那原因是什么?

在 Encoder 部分:

在 Attention 层与层之间不可以并行,因为第 n 层的输入依赖于第 n - 1 层的输入,故不可以并行。

但在 Attention 层之内是可以并行的,因为根据公式 y_{j} = \sum_{i}^m\alpha _{ij}x _{ij} 可以得知,在某一层内,第 j 个输出就由全部的输入所决定,换言之,在梯度反向传播时,可以将梯度同时传给所有的输入神经节点,故可以并行更新所有的参数。而此时可以将所有的输入同时输入神经节点,即可避免像 RNN 那样,第 n 个输出需要依赖第 n - 1 个输出,从而可以实现并行。事实上 RNN 也可以同时传入所有的输入给输入神经节点,但是由于梯度反向传播时,仍然需要从第 n 层传给第 n - 1 层,从而无法实现梯度的并行更新。而并行输入数据和并行更新参数的梯度均满足,才是 Attention 在层内可以实行并行计算的关键。

在 Decoder 部分:

因为 Decoder 在生成第 n 个输出的时候是需要依赖第 n - 1 个输出的,故而 Decoder 部分虽然也是由 Attention block (Attention 块)组成的,但却不可以并行计算。

Decoder 生成序列的过程:

图 1.1

2、k和v的来源总是相同的,q在encoder及第一级decoder中与k,v来源相同,在encoder-decoder attention layer中与k,v来源不同。为什么呢?

图 2.1

如图 2.1 所示,在第一个 decoder (一个 decoder 共包含两层,第二层被称作 encoder-decoder attention layer )中,

第一层的 Q、K、V 均来自 Input,而第二层中的 Q 则来自第一层的 Output,K 和 V 则来自 encoder 的输出。

3、为什么说 Attention 机制不会发生梯度消失呢?

因为使用了残差连接

4、最后一个 encoder 的输出是传给 Decoder 中的所有 decoder 作为输入吗?

是的

5、为什么 Q、K、V 的大小要是 batch_size 呢?是为了能够在整个批次样本中进行并行计算吗?

上一篇下一篇

猜你喜欢

热点阅读