5353
5454其中 $$ [.;.] $$ 是拼接操作。$$ \mathbf{W}^q_i, \mathbf{W}^k_i \in \mathbb{R}^{d \times d_k/h}, \mathbf{W}^v_i \in \mathbb{R}^{d \times d_v/h} $$ 是将大小为 $$ L \times d $$ 的输入嵌入映射为查询、键和值矩阵的权重矩阵。$$ \mathbf{W}^o \in \mathbb{R}^{d_v \times d} $$ 是输出线性变换。所有权重都应在训练期间学习。
5555
56- ![ 多头缩放点积注意力] ( /img /transformer/multi-head-attention.png )
56+ ![ 多头缩放点积注意力] ( /posts /transformer-family-2 /multi-head-attention.png )
5757_ 图 1. 多头缩放点积注意力机制的示意图。(图片来源:[ Vaswani 等人,2017] ( https://arxiv.org/abs/1706.03762 ) 图2)_
5858
5959## Transformer
@@ -66,7 +66,7 @@ _图 1. 多头缩放点积注意力机制的示意图。(图片来源:[Vaswa
6666
6767Transformer ** 解码器** 的功能是从编码表示中检索信息。其架构与编码器相似,不同之处在于解码器的每个重复模块包含两个多头注意力子模块,而不是一个。第一个多头注意力子模块是* 掩码* 的,以防止位置关注未来的信息。
6868
69- ![ Transformer] ( /img /transformer/transformer.png )
69+ ![ Transformer] ( /posts /transformer-family-2 /transformer.png )
7070_ 图 2. 原始Transformer模型的架构。(图片来源:[ 图17] )_
7171
7272** 位置编码**
8585
8686这样,位置编码的每个维度对应于不同维度中的不同波长的正弦波,从 $$ 2\pi $$ 到 $$ 10000 \cdot 2\pi $$ 。
8787
88- ![ Transformer] ( /img /transformer/sinoidual-positional-encoding.png )
88+ ![ Transformer] ( /posts /transformer-family-2 /sinoidual-positional-encoding.png )
8989_ 图 3. 正弦位置编码,$$ L=32 $$ 和 $$ d=128 $$ 。值在-1(黑色)和1(白色)之间,值为0时为灰色。_
9090
9191(2) _ 学习位置编码_ ,顾名思义,为每个元素分配一个学习的列向量,编码其* 绝对* 位置([ Gehring 等人,2017] ( https://arxiv.org/abs/1705.03122 ) )。
@@ -98,7 +98,7 @@ _图 3. 正弦位置编码,$$ L=32 $$ 和 $$ d=128 $$。值在-1(黑色)
9898- 每个中间Transformer层也用于进行预测。随着训练的进行,较低层的权重对总损失的贡献逐渐减少。
9999- 序列中的每个位置可以预测多个目标,即未来标记的两个或更多预测。
100100
101- ![ Transformer] ( /img /transformer/transformer-aux-losses.png )
101+ ![ Transformer] ( /posts /transformer-family-2 /transformer-aux-losses.png )
102102_ 图 4. 深度Transformer用于字符级语言建模的辅助预测任务。(图片来源:[ Al-Rfou 等人,2018] ( https://arxiv.org/abs/1808.04444 ) )_
103103
104104## 自适应计算时间 (ACT)
137137
138138最终状态和输出是均值场更新:
139139$$ s*t = \sum*{n=1}^{N(t)} p*t^n s_t^n, \quad y_t = \sum*{n=1}^{N(t)} p*t^n y_t^n $$
140- ![ ACT计算图] ( /img /transformer/ACT-computation-graph.png )
140+ ![ ACT计算图] ( /posts /transformer-family-2 /ACT-computation-graph.png )
141141* 图 5. 具有ACT机制的RNN的计算图。(图片来源:[ Graves, 2016] ( https://arxiv.org/abs/1603.08983 ) )\_
142142
143143为了避免对每个输入进行不必要的思考,ACT在损失函数中添加了* 思考成本* $$ \mathcal{P}(x) = \sum\_{t=1}^L N(t) + R(t) $$ ,以鼓励减少中间计算步骤的数量。
@@ -165,7 +165,7 @@ $$ s*t = \sum*{n=1}^{N(t)} p*t^n s_t^n, \quad y_t = \sum*{n=1}^{N(t)} p*t^n y_t^
165165
166166通过持续使用前几段的隐藏状态,在模型中引入了段之间的循环连接。
167167
168- ![ Transformer-XL的训练阶段] ( /img /transformer/transformer-XL-training.png )
168+ ![ Transformer-XL的训练阶段] ( /posts /transformer-family-2 /transformer-XL-training.png )
169169_ 图 6. 原始Transformer与Transformer-XL的训练阶段比较,段长度为4。(图片来源:[ Dai 等人,2019] ( https://arxiv.org/abs/1901.02860 ) 图2左半部分)。_
170170
171171我们将模型中第 $$ (\tau + 1) $$ 段的第 $$ n $$ 层隐藏状态标记为 $$ \mathbf{h}_{\tau+1}^{(n)} \in \mathbb{R}^{L \times d} $$ 。除了依赖于同一段的上一层隐藏状态 $$ \mathbf{h}_{\tau+1}^{(n-1)} $$ 外,它还依赖于前一段的同一层隐藏状态 $$ \mathbf{h}\_{\tau}^{(n)} $$ 。通过纳入前几隐藏状态的信息,模型将注意力跨度扩展到更长的过去,跨越多个段。
@@ -218,7 +218,7 @@ Transformer的一个关键优势是捕捉长期依赖的能力。根据上下文
218218
219219这就是** 自适应注意力跨度** 的动机。[ Sukhbaatar 等人,2019] ( https://arxiv.org/abs/1905.07799 ) 提出了一种自注意力机制,寻求最优的注意力跨度。他们假设不同的注意力头可能在同一上下文窗口内以不同方式分配得分(见图7),因此最优跨度将为每个头单独训练。
220220
221- ![ 每个头的注意力] ( /img /transformer/attention-per-head.png )
221+ ![ 每个头的注意力] ( /posts /transformer-family-2 /attention-per-head.png )
222222_ 图 7. 同一模型中的两个注意力头A和B在同一上下文窗口内分配注意力的方式不同。头A更多关注最近的标记,而头B均匀地关注更远的过去。(图片来源:[ Sukhbaatar 等人,2019] ( https://arxiv.org/abs/1905.07799 ) )_
223223
224224给定第 $$ i $$ 个标记,我们需要计算该标记与其他键位置 $$ j \in S_i $$ 之间的注意力权重,其中 $$ S_i $$ 定义了第 $$ i $$ 个标记的上下文窗口。
235235$$ m_z(x) = \text{clamp}(\frac{1}{R}(R+z-x), 0, 1) $$
236236其中 $$ R $$ 是一个超参数,定义了 $$ m_z $$ 的柔和度。
237237
238- ![ 软掩码函数] ( /img /transformer/soft-masking-function.png )
238+ ![ 软掩码函数] ( /posts /transformer-family-2 /soft-masking-function.png )
239239_ 图 8. 自适应注意力跨度中使用的软掩码函数。(图片来源:[ Sukhbaatar 等人,2019] ( https://arxiv.org/abs/1905.07799 ) )。_
240240
241241软掩码函数应用于注意力权重中的softmax元素:
@@ -261,7 +261,7 @@ Transformer最初也是最流行的用例是进行语言建模。文本序列是
261261
262262Image Transformer引入了两种局部化的 $$ \mathbf{M} $$ ,如下图所示。
263263
264- ![ Image Transformer中的注意力模式] ( /img /transformer/image-transformer-attention.png )
264+ ![ Image Transformer中的注意力模式] ( /posts /transformer-family-2 /image-transformer-attention.png )
265265_ 图 9. Image Transformer中视觉输入的1D和2D注意力跨度的示意图。黑色线条标记查询块,青色轮廓标记像素q的实际注意力跨度。(图片来源:[ Parmer 等人,2018] ( https://arxiv.org/abs/1802.05751 ) 图2)_
266266
267267(1) _ 1D局部注意力_ :输入图像按[ 光栅扫描] ( https://en.wikipedia.org/wiki/Raster_scan#Scanning_pattern ) 顺序展平,即从左到右、从上到下。线性化的图像然后被分割成非重叠的查询块。上下文窗口包括与 $$ \mathbf{q} $$ 相同的查询块中的像素以及在此查询块之前生成的固定数量的额外像素。
299299
300300Sparse Transformer提出了两种分解注意力类型。以2D图像输入为例,图10更容易理解这些概念。
301301
302- ![ 稀疏注意力] ( /img /transformer/sparse-attention.png )
302+ ![ 稀疏注意力] ( /posts /transformer-family-2 /sparse-attention.png )
303303_ 图 10. 顶部行展示了(a) Transformer、(b) 具有跨步注意力的Sparse Transformer和(c) 具有固定注意力的Sparse Transformer的注意力连接模式。底部行包含相应的自注意力连接矩阵。注意,顶部和底部行不是同一比例。(图片来源:[ Child 等人,2019] ( https://arxiv.org/abs/1904.10509 ) + 一些额外注释。)_
304304
305305(1) * 跨步* 注意力,跨步 $$ \ell \sim \sqrt{n} $$ 。这在图像数据上效果很好,因为结构与跨步对齐。在图像情况下,每个像素将关注光栅扫描顺序中的前 $$ \ell $$ 个像素(自然覆盖整个图像宽度),然后这些像素关注同一列中的其他像素(由另一个注意力连接子集定义)。
@@ -354,7 +354,7 @@ Reformer提出了两个主要更改:
354354
355355哈希方案 $$ x \mapsto h(x) $$ 如果保留了数据点之间的距离信息,则称为* 局部敏感* ,使接近的向量获得相似的哈希,而远离的向量具有非常不同的哈希。Reformer采用了这样的哈希方案,给定一个固定的随机矩阵 $$ \mathbf{R} \in \mathbb{R}^{d \times b/2} $$ (其中 $$ b $$ 是一个超参数),哈希函数为 $$ h(x) = \arg\max([xR; -xR]) $$ 。
356356
357- ![ LSH注意力矩阵] ( /img /transformer/LSH-attention-matrix.png )
357+ ![ LSH注意力矩阵] ( /posts /transformer-family-2 /LSH-attention-matrix.png )
358358_ 图 11. 局部敏感哈希 (LSH) 注意力的示意图。(图片来源:[ Kitaev 等人,2020] ( https://arxiv.org/abs/2001.04451 ) 图1右半部分)。_
359359
360360在LSH注意力中,查询只能关注同一哈希桶中的位置,$$ S_i = \{j: h(\mathbf{q}\_i) = h(\mathbf{k}\_j)\} $$ 。其执行过程如下,如图11所示:
@@ -364,7 +364,7 @@ _图 11. 局部敏感哈希 (LSH) 注意力的示意图。(图片来源:[Kit
364364- (c) 设置 $$ \mathbf{Q} = \mathbf{K} $$ (精确地说 $$ \mathbf{k}\_j = \mathbf{q}\_j / \|\mathbf{q}\_j\| $$ ),以便一个桶中有相等数量的键和查询,便于批处理。有趣的是,这种"共享QK"配置不影响Transformer的性能。
365365- (d) 应用批处理,将 $$ m $$ 个连续查询分组在一起。
366366
367- ![ LSH注意力] ( /img /transformer/LSH-attention.png )
367+ ![ LSH注意力] ( /posts /transformer-family-2 /LSH-attention.png )
368368_ 图 12. LSH注意力包括4个步骤:分桶、排序、分块和注意力计算。(图片来源:[ Kitaev 等人,2020] ( https://arxiv.org/abs/2001.04451 ) 图1左半部分)。_
369369
370370** 可逆残差网络**
@@ -405,7 +405,7 @@ Universal Transformer不经过固定数量的层,而是使用[自适应计算
405405
406406在高层次上,Universal Transformer可以看作是学习每个标记的隐藏状态表示的循环函数。循环函数在标记位置上并行演化,位置之间的信息通过自注意力共享。
407407
408- ![ Universal Transformer循环步骤] ( /img /transformer/universal-transformer-loop.png )
408+ ![ Universal Transformer循环步骤] ( /posts /transformer-family-2 /universal-transformer-loop.png )
409409_ 图 13. Universal Transformer如何并行地为每个位置反复精炼一组隐藏状态表示。(图片来源:[ Dehghani 等人,2019] ( https://arxiv.org/abs/1807.03819 ) 图1)。_
410410
411411给定长度为 $$ L $$ 的输入序列,Universal Transformer在可调数量的步骤中迭代更新表示 $$ \mathbf{H}^t \in \mathbb{R}^{L \times d} $$ 在步骤 $$ t $$ 。在步骤0,$$ \mathbf{H}^0 $$ 初始化为与输入嵌入矩阵相同。所有位置在多头自注意力机制中并行处理,然后通过循环转换函数。
429429\end{cases}
430430$$
431431
432- ![ Universal Transformer] ( /img /transformer/universal-transformer.png )
432+ ![ Universal Transformer] ( /posts /transformer-family-2 /universal-transformer.png )
433433_ 图 14. Universal Transformer的简化示意图。编码器和解码器共享相同的基本循环结构。但解码器还关注最终编码器表示 $$ \mathbf{H}^T $$ 。(图片来源:[ Dehghani 等人,2019] ( https://arxiv.org/abs/1807.03819 ) 图2)。_
434434
435435在Universal Transformer的自适应版本中,循环步骤数 $$ T $$ 由[ ACT] ( #adaptive-computation-time-act ) 动态确定。每个位置配备动态ACT停止机制。一旦逐标记循环块停止,它不再接受更多循环更新,而只是将当前值复制到下一步,直到所有块停止或模型达到最大步骤限制。
454454
455455门控函数参数明确初始化为接近恒等映射——这就是为什么有 $$ b_g $$ 项。$$ b_g > 0 $$ 大大有助于学习加速。
456456
457- ![ GTrXL] ( ../public/img/ transformer/gated-transformer-XL.png)
457+ ![ GTrXL] ( /posts/ transformer-family-2 /gated-transformer-XL.png)
458458_ 图 15. Transformer-XL、具有重新排序层归一化的Transformer-XL和门控Transformer-XL的模型架构比较。(图片来源:[ Parisotto 等人,2019] ( https://arxiv.org/abs/1910.06764 ) 图1)。_
459459
460460---
0 commit comments