AI-10 注意力机制

10.1. 注意力提示

考虑一个相对简单的状况, 即只使用非自主性提示。 要想将选择偏向于感官输入, 则可以简单地使用参数化的全连接层, 甚至是非参数化的最大汇聚层或平均汇聚层。

在注意力机制的背景下,自主性提示被称为查询(query)。 给定任何查询,注意力机制通过注意力汇聚(attention pooling) 将选择引导至感官输入(sensory inputs,例如中间特征表示)。

练习:

1在机器翻译中通过解码序列词元时,其自主性提示可能是什么?非自主性提示和感官输入又是什么?

 query是自主性提示,key是非自主性提示,感官输入是value。

10.2. 注意力汇聚:Nadaraya-Watson 核回归

查询(自主提示)和键(非自主提示)之间的交互形成了注意力汇聚; 注意力汇聚有选择地聚合了值(感官输入)以生成最终的输出。 本节将介绍注意力汇聚的更多细节, 以便从宏观上了解注意力机制在实践中的运作方式。

平均汇聚忽略了输x。 于是Nadaraya (Nadaraya, 1964)和 Watson (Watson, 1964)提出了一个更好的想法, 根据输入的位置对输出y进行加权:如果一个键xi越是接近给定的查询x, 那么分配给这个键对应值yi的注意力权重就会越大, 也就“获得了更多的注意力”。

练习:

1增加训练数据的样本数量,能否得到更好的非参数的Nadaraya-Watson核回归模型?

增加数据量不能得到更好的回归模型。

n=50

n=500

n=5000

2在带参数的注意力汇聚的实验中学习得到的参数w的价值是什么?为什么在可视化注意力权重时,它会使加权区域更加尖锐?

w的值大概12左右,注意力大的区域和注意力小的区域产生明显差距。

3如何将超参数添加到非参数的Nadaraya-Watson核回归中以实现更好地预测结果?

布吉岛

4为本节的核回归设计一个新的带参数的注意力汇聚模型。训练这个新模型并可视化其注意力权重。

10.3. 注意力评分函数

上一小节使用了高斯核来对查询和键之间的关系建模。 (10.2.6)中的 高斯核指数部分可以视为注意力评分函数(attention scoring function), 简称评分函数(scoring function), 然后把这个函数的输出结果输入到softmax函数中进行运算。 通过上述步骤,将得到与键对应的值的概率分布(即注意力权重)。

两种常见的注意力评分函数:

掩蔽softmax操作:在某些情况下,并非所有的值都应该被纳入到注意力汇聚中。

加性注意力:一般来说,当查询和键是不同长度的矢量时,可以使用加性注意力作为评分函数。

缩放点积注意力:使用点积可以得到计算效率更高的评分函数, 但是点积操作要求查询和键具有相同的长度d。为确保无论向量长度如何, 点积的方差在不考虑向量长度的情况下仍然是1, 我们再将点积除以d^(1/2),

练习:

1修改小例子中的键,并且可视化注意力权重。可加性注意力和缩放的“点-积”注意力是否仍然产生相同的结果?为什么?

加性注意力

缩点注意力

“点-积”注意力产生的注意力群众更集中于某一个元素,而加性注意力的权重更加均匀。

2只使用矩阵乘法,能否为具有不同矢量长度的查询和键设计新的评分函数?

可以,映射

3当查询和键具有相同的矢量长度时,矢量求和作为评分函数是否比“点-积”更好?为什么

点积得到的结果更好,因为他是个二维张量,解空间更大。

10.4. Bahdanau 注意力

Bahdanau等人提出了一个没有严格单向对齐限制的 可微注意力模型 (Bahdanau et al., 2014).在预测词元时,如果不是所有输入词元都相关,模型将仅对齐(或参与)输入序列中与当前预测相关的部分。这是通过将上下文变量视为注意力集中的输出来实现的。

在预测词元时,如果不是所有输入词元都是相关的,那么具有Bahdanau注意力的循环神经网络编码器-解码器会有选择地统计输入序列的不同部分。这是通过将上下文变量视为加性注意力池化的输出来实现的。

练习:

1在实验中用LSTM替换GRU。

LSTM

GRU

2修改实验以将加性注意力打分函数替换为缩放点积注意力,它如何影响训练效率?

运算加快了

10.5. 多头注意力

  为此,与其只使用单独一个注意力汇聚, 我们可以用独立学习得到的h组不同的 线性投影(linear projections)来变换查询、键和值。然后,这h组变换后的查询、键和值将并行地送到注意力汇聚中。 最后,将这h个注意力汇聚的输出拼接在一起, 并且通过另一个可以学习的线性投影进行变换, 以产生最终输出。 这种设计被称为多头注意力(multihead attention)

 

练习:

1分别可视化这个实验中的多个头的注意力权重。

2假设有一个完成训练的基于多头注意力的模型,现在希望修剪最不重要的注意力头以提高预测速度。如何设计实验来衡量注意力头的重要性呢?

可以使用类似于Dropout的技术,随机地将某些注意力头从模型中删除,然后比较删除前后模型的性能差异。

优点:简单易行   缺点:可能会导致模型过拟合

10.6. 自注意力和位置编码

  有了注意力机制之后,我们将词元序列输入注意力池化中, 以便同一组词元同时充当查询、键和值。 具体来说,每个查询都会关注所有的键-值对并生成一个注意力输出。 由于查询、键和值来自同一组输入,因此被称为 自注意力(self-attention)。

  比较卷积神经网络、循环神经网络和自注意力:发现卷积神经网络和自注意力都拥有并行计算的优势, 而且自注意力的最大路径长度最短。 但是因为其计算复杂度是关于序列长度的二次方,所以在很长的序列中计算会非常慢。

  在处理词元序列时,循环神经网络是逐个的重复地处理词元的, 而自注意力则因为并行计算而放弃了顺序操作。 为了使用序列的顺序信息,通过在输入表示中添加 位置编码(positional encoding)来注入绝对的或相对的位置信息。

练习:

1假设设计一个深度架构,通过堆叠基于位置编码的自注意力层来表示序列。可能会存在什么问题?

模型参数较多,而且可能存在过长的依赖关系。

2请设计一种可学习的位置编码方法。

10.7. Transformer

心心念念的transformer,Transformer模型完全基于注意力机制,没有任何卷积层或循环神经网络层。

Transformer是编码器-解码器架构的一个实例,其整体架构如图所示。

Transformer的编码器是由多个相同的层叠加而成的,每个层都有两个子层(子层表示为sublayer)。第一个子层是多头自注意力(multi-head self-attention)汇聚;第二个子层是基于位置的前馈网络(positionwise feed-forward network)。

Transformer解码器也是由多个相同的层叠加而成的,并且层中使用了残差连接和层规范化。

练习:

1在实验中训练更深的Transformer将如何影响训练速度和翻译效果?

两层

八层

2在Transformer中使用加性注意力取代缩放点积注意力是不是个好办法?为什么?

  使用加性注意力取代缩放点积注意力取决于具体情况。如果需要处理更长的序列,则可以考虑使用加性注意力,但需要权衡计算成本和模型性能。如果需要较快的计算则点积注意力更合适。

3对于语言模型,应该使用Transformer的编码器还是解码器,或者两者都用?如何设计?

Transformer模型通常使用编码器,因为编码器可以将输入序列映射到一个语义空间中,从而提取输入序列的语义信息。在语言模型中,通常使用Transformer编码器。

4如果输入序列很长,Transformer会面临什么挑战?为什么?

可能会带来较多的运算负担,因为它需要记住所有输入的位置注意力权重。

5如何提高Transformer的计算速度和内存使用效率?提示:可以参考论文 (Tay et al., 2020)

参数共享等方式

6如果不使用卷积神经网络,如何设计基于Transformer模型的图像分类任务?提示:可以参考Vision Transformer (Dosovitskiy et al., 2021)

卷积这种操作缺乏对图像本身的全局理解,无法建模特征之间的依赖关系,从而不能充分地利用上下文信息。此外,卷积的权重是固定的,并不能动态地适应输入的变化。因此,研究人员尝试将自然语言处理领域中的Transformer模型迁移到计算机视觉任务。Vision Transformer(简称:VIT):一种完全基于自注意力机制的图像分类方法,将自然语言处理领域中的Transformer模型迁移到计算机视觉任务。相比CNN,Transformer的自注意力机制不受局部相互作用的限制,既能挖掘长距离的依赖关系又能并行计算。

posted @ 2023-08-01 09:46  浪矢-CL  阅读(304)  评论(0编辑  收藏  举报