《动手学》:注意力机制与Seq2seq模型_课后作业

注意力机制

在“编码器—解码器(seq2seq)”⼀节⾥,解码器在各个时间步依赖相同的背景变量(context vector)来获取输⼊序列信息。当编码器为循环神经⽹络时,背景变量来⾃它最终时间步的隐藏状态。将源序列输入信息以循环单位状态编码,然后将其传递给解码器以生成目标序列。然而这种结构存在着问题,尤其是RNN机制实际中存在长程梯度消失的问题,对于较长的句子,我们很难寄希望于将输入的序列转化为定长的向量而保存所有的有效信息,所以随着所需翻译句子的长度的增加,这种结构的效果会显著下降。

与此同时,解码的目标词语可能只与原输入的部分词语有关,而并不是与所有的输入有关。例如,当把“Hello world”翻译成“Bonjour le monde”时,“Hello”映射成“Bonjour”,“world”映射成“monde”。在seq2seq模型中,解码器只能隐式地从编码器的最终状态中选择相应的信息。然而,注意力机制可以将这种选择过程显式地建模。


具体内容(附代码)链接:https://www.kesci.com/org/boyuai/project/5e43cb9a5f2816002ceadf6d

代码讲解视频链接:伯禹学习平台


选择题

1.

以下对于注意力机制叙述错误的是:

A.注意力机制借鉴了人类的注意力思维方式,以获得需要重点关注的目标区域。

B.在计算注意力权重时,key 和 query 对应的向量维度需相等。

C.点积注意力层不引入新的模型参数。

D.注意力掩码可以用来解决一组变长序列的编码问题。

答案:B

在Dot-product Attention中,key与query维度需要一致,在MLP Attention中则不需要。

2.

以下对于加入Attention机制的seq2seq模型的陈述正确的是:

A.seq2seq模型不可以生成无穷长的序列。

B.每个时间步,解码器输入的语境向量(context vector)相同

C.解码器RNN仍由编码器最后一个时间步的隐藏状态初始化。

D.引入注意力机制可以加速模型训练。

答案:C

选项A:seq2seq模型的预测需人为设定终止条件,设定最长序列长度或者输出[EOS]结束符号,若不加以限制则可能生成无穷长度序列

选项B:不同,每个位置都会计算各自的attention输出

选项D:注意力机制本身有高效的并行性,但引入注意力并不能改变seq2seq内部RNN的迭代机制,因此无法加速。

3.

关于点积注意力机制描述错误的是:

A.高维张量的矩阵乘法可用于并行计算多个位置的注意力分数。

B.计算点积后除以​ 以减轻向量维度对注意力权重的影响。

C.可视化注意力权重的二维矩阵有助于分析序列内部的依赖关系。

D.对于两个有效长度不同的输入序列,若两组键值对完全相同,那么对于同一个query的输出一定相同。

答案:D

有效长度不同导致 Attention Mask 不同,屏蔽掉无效位置后进行attention,会导致不同的输出。参考代码Dot-Product Attention的测试部分。

你可能感兴趣的:(《动手学》:注意力机制与Seq2seq模型_课后作业)