文章目录
1. 注意力分数
1. 查询、键和值
-
只使用非自主性提示。要想将选择偏向于感官输入,则可以简单地使用
参数化的全连接层,甚至是非参数化的最大汇聚层或平均汇聚层。 -
**“是否包含自主性提示”**将注意力机制与全连接层或汇聚层区别开来。
-
自主性提示被称为查询(query),感官输入被称为值(value),每个值都与一个键(key)配对,这可以想象为感官输入的非自主提示。
-
注意力机制通过注意力汇聚将查询(自主性提示)和键(非自主性提示)结合在一起,实现对值(感官输入)的选择倾向。
2. Addictive Attention
- 等价于将key和vlue合并起来后放入到一个隐藏大小为h输出大小为1的单隐藏层MLP。
3. 小结
-
• 人类的注意力是有限的、有价值和稀缺的资源。
-
• 受试者使用非自主性和自主性提示有选择性地引导注意力。前者基于突出性,后者则依赖于意识。
-
• 注意力机制与全连接层或者汇聚层的区别源于增加的自主提示。
-
• 由于包含了自主性提示,注意力机制与全连接的层或汇聚层不同。
-
• 注意力机制通过注意力汇聚使选择偏向于值(感官输入),其中包含查询(自主性提示)和键(非自主
性提示)。键和值是成对的。 -
• 可视化查询和键之间的注意力权重是可行的。
2. 使用注意力机制的seq2seq
1. 动机
- seq2seq传入的只是最后一个隐藏单元。
2. 怎么做
3. 小结
3. 自注意力
1. 前提
-
在深度学习中,经常使用卷积神经网络(CNN)或循环神经网络(RNN)对序列进行编码。
-
有了注意力机制之后,我们将词元序列输入注意力池化中,以便同一组词元同时充当查询、键和值。
-
每个查询都会关注所有的键-值对并生成一个注意力输出。
-
由于查询、键和值来自同一组输入,因此被称为 自注意力,也被称为内部注意力。
2. 多头注意力
-
当给定相同的查询、键和值的集合时,我们希望模型可以基于相同的注意力机制学习到不同的行为,然后将不同的行为作为知识组合起来,捕获序列内各种范围的依赖关系(例如,短距离依赖和长距离依赖关系)。
-
与其只使用单独一个注意力汇聚,我们可以用独立学习得到的h组不同的 线性投影(linear projections)来变换查询、键和值。
-
这h组变换后的查询、键和值将并行地送到注意力汇聚中。最后,将这h个注意力汇聚的输出拼接在一起,并且通过另一个可以学习的线性投影进行变换,以产生最终输出。
3. 自注意力
4. 与CNN,RNN对比
- 目标都是将由n个词元组成的序列映射到另一个长度相等的序列,其中的每个输入词元或输出词元都由d维向量表示。
5. 位置编码
- 在处理词元序列时,循环神经网络是逐个的重复地处理词元的,而自注意力则因为并行计算而放弃了顺序操作。为了使用序列的顺序信息,通过在输入表示中添加 位置编码(positional encoding)来注入绝对的或相对的位置信息。
1. 方法
-
为了使用序列的顺序信息,通过在输入表示中添加位置编码(positional encoding)来注入绝对的或相对的位置信息。位置编码可以通过学习得到也可以直接固定得到。
-
假设输入表示X ∈ Rn×d 包含一个序列中n个词元的d维嵌入表示。位置编码使用相同形状的位置嵌入矩阵P ∈ Rn×d输出X + P。
-
在位置嵌入矩阵P中,行代表词元在序列中的位置,列代表位置编码的不同维度。
6. 总结
-
在自注意力中,查询、键和值都来自同一组输入。
-
卷积神经网络和自注意力都拥有并行计算的优势,而且自注意力的最大路径长度最短。但是因为其计算复杂度是关于序列长度的二次方,所以在很长的序列中计算会非常慢。
-
为了使用序列的顺序信息,可以通过在输入表示中添加位置编码,来注入绝对的或相对的位置信息。