1616| $$ \mathbf{Q} = \mathbf{X}\mathbf{W}^q \in \mathbb{R}^{L \times d_k} $$ | 查询嵌入输入。 |
1717| $$ \mathbf{K} = \mathbf{X}\mathbf{W}^k \in \mathbb{R}^{L \times d_k} $$ | 键嵌入输入。 |
1818| $$ \mathbf{V} = \mathbf{X}\mathbf{W}^v \in \mathbb{R}^{L \times d_v} $$ | 值嵌入输入。 |
19- | $$ S_i $$ | 第 $$ i $$ 个查询 $$ \mathbf{q}\ _i $$ 关注的键位置集合。 |
19+ | $$ S_i $$ | 第 $$ i $$ 个查询 $$ \mathbf{q}_i $$ 关注的键位置集合。 |
2020| $$ \mathbf{A} \in \mathbb{R}^{L \times L} $$ | 长度为 $$ L $$ 的输入序列与其自身的自注意力矩阵。 $$ \mathbf{A} = \text{softmax}(\mathbf{Q}\mathbf{K}^\top / \sqrt{d_k}) $$ 。 |
21- | $$ a\_ {ij} \in \mathbf{A} $$ | 查询 $$ \mathbf{q}\ _i $$ 与键 $$ \mathbf{k}\ _j $$ 之间的标量注意力得分。 |
22- | $$ \mathbf{P} \in \mathbb{R}^{L \times d} $$ | 位置编码矩阵,其中第 $$ i $$ 行 $$ \mathbf{p}\ _i $$ 是输入 $$ \mathbf{x}\ _i $$ 的位置编码。 |
21+ | $$ a_ {ij} \in \mathbf{A} $$ | 查询 $$ \mathbf{q}_i $$ 与键 $$ \mathbf{k}_j $$ 之间的标量注意力得分。 |
22+ | $$ \mathbf{P} \in \mathbb{R}^{L \times d} $$ | 位置编码矩阵,其中第 $$ i $$ 行 $$ \mathbf{p}_i $$ 是输入 $$ \mathbf{x}_i $$ 的位置编码。 |
2323
2424## 注意力与自注意力
2525
@@ -29,7 +29,7 @@ _自注意力_ 是一种注意力机制,模型通过使用同一数据样本
2929
3030注意力/自注意力有多种形式,Transformer([ Vaswani 等人,2017] ( https://arxiv.org/abs/1706.03762 ) )依赖于* 缩放点积注意力* :给定查询矩阵 $$ \mathbf{Q} $$ 、键矩阵 $$ \mathbf{K} $$ 和值矩阵 $$ \mathbf{V} $$ ,输出是值向量的加权和,其中每个值槽的权重由查询与对应键的点积决定:
3131$$ \text{Attention}(\mathbf{Q}, \mathbf{K}, \mathbf{V}) = \text{softmax}(\frac{\mathbf{Q} {\mathbf{K}}^\top}{\sqrt{d_k}})\mathbf{V} $$
32- 对于查询和键向量 $$ \mathbf{q}\ _i, \mathbf{k}\ _j \in \mathbb{R}^d $$ (查询和键矩阵中的行向量),我们得到一个标量得分:
32+ 对于查询和键向量 $$ \mathbf{q}_i, \mathbf{k}_j \in \mathbb{R}^d $$ (查询和键矩阵中的行向量),我们得到一个标量得分:
3333
3434$$
3535a_{ij} = \text{softmax}(\frac{\mathbf{q}_i {\mathbf{k}_j}^\top}{\sqrt{d_k}})
@@ -117,7 +117,7 @@ y_t^n &= W_y s_t^n + b_y
117117\end{aligned}
118118$$
119119
120- 其中 $$ \delta\_ {n,1} $$ 是一个二进制标志,指示输入步骤是否已递增。
120+ 其中 $$ \delta_ {n,1} $$ 是一个二进制标志,指示输入步骤是否已递增。
121121
122122步骤数 $$ N(t) $$ 由一个额外的 sigmoid 停止单元 $$ h $$ 决定,其具有关联的权重矩阵 $$ W_h $$ 和偏置 $$ b_h $$ ,在第 $$ t $$ 个输入元素的第 $$ n $$ 次中间步骤输出停止概率 $$ p_t^n $$ :
123123$$ h_t^n = \sigma(W_h s_t^n + b_h) $$
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 $$
140140![ ACT计算图] ( /posts/transformer-family-2/ACT-computation-graph.png )
141- * 图 5. 具有ACT机制的RNN的计算图。(图片来源:[ Graves, 2016] ( https://arxiv.org/abs/1603.08983 ) )\ _
141+ * 图 5. 具有ACT机制的RNN的计算图。(图片来源:[ Graves, 2016] ( https://arxiv.org/abs/1603.08983 ) )_
142142
143- 为了避免对每个输入进行不必要的思考,ACT在损失函数中添加了* 思考成本* $$ \mathcal{P}(x) = \sum\_ {t=1}^L N(t) + R(t) $$ ,以鼓励减少中间计算步骤的数量。
143+ 为了避免对每个输入进行不必要的思考,ACT在损失函数中添加了* 思考成本* $$ \mathcal{P}(x) = \sum_ {t=1}^L N(t) + R(t) $$ ,以鼓励减少中间计算步骤的数量。
144144
145145## 改进注意力跨度
146146
@@ -168,7 +168,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^
168168![ 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
171- 我们将模型中第 $$ (\tau + 1) $$ 段的第 $$ n $$ 层隐藏状态标记为 $$ \mathbf{h}_{\tau+1}^{(n)} \in \mathbb{R}^{L \times d} $$ 。除了依赖于同一段的上一层隐藏状态 $$ \mathbf{h}_{\tau+1}^{(n-1)} $$ 外,它还依赖于前一段的同一层隐藏状态 $$ \mathbf{h}\ _{\tau}^{(n)} $$ 。通过纳入前几隐藏状态的信息,模型将注意力跨度扩展到更长的过去,跨越多个段。
171+ 我们将模型中第 $$ (\tau + 1) $$ 段的第 $$ n $$ 层隐藏状态标记为 $$ \mathbf{h}_{\tau+1}^{(n)} \in \mathbb{R}^{L \times d} $$ 。除了依赖于同一段的上一层隐藏状态 $$ \mathbf{h}_{\tau+1}^{(n-1)} $$ 外,它还依赖于前一段的同一层隐藏状态 $$ \mathbf{h}_{\tau}^{(n)} $$ 。通过纳入前几隐藏状态的信息,模型将注意力跨度扩展到更长的过去,跨越多个段。
172172
173173$$
174174\begin{aligned}
@@ -209,7 +209,7 @@ a_{ij}^\text{rel} =
209209$$
210210
211211- 将 $$ \mathbf{p}_j $$ 替换为相对位置编码 $$ \mathbf{r}_{i-j} \in \mathbf{R}^{d} $$ ;
212- - 将 $$ \mathbf{p}\ _i\mathbf{W}^q $$ 替换为两个可训练参数 $$ \mathbf{u} $$ (用于内容)和 $$ \mathbf{v} $$ (用于位置);
212+ - 将 $$ \mathbf{p}_i\mathbf{W}^q $$ 替换为两个可训练参数 $$ \mathbf{u} $$ (用于内容)和 $$ \mathbf{v} $$ (用于位置);
213213- 将 $$ \mathbf{W}^k $$ 分成两个矩阵,$$ \mathbf{W}^k_E $$ 用于内容信息,$$ \mathbf{W}^k_R $$ 用于位置信息。
214214
215215### 自适应注意力跨度
@@ -240,9 +240,9 @@ _图 8. 自适应注意力跨度中使用的软掩码函数。(图片来源:
240240
241241软掩码函数应用于注意力权重中的softmax元素:
242242$$ a*{ij} = \frac{m_z(i-j)\exp(s*{ij})}{\sum*{r=i-s}^{i-1}m_z(i-r) \exp(s*{ir})} $$
243- 在上述方程中,$$ z $$ 是可微的,因此它与其他模型部分一起训练。参数 $$ z^{(i)}, i=1, \dots, h $$ 为每个头* 单独* 学习。此外,损失函数对 $$ \sum\_ {i=1}^h z^{(i)} $$ 有一个额外的L1惩罚。
243+ 在上述方程中,$$ z $$ 是可微的,因此它与其他模型部分一起训练。参数 $$ z^{(i)}, i=1, \dots, h $$ 为每个头* 单独* 学习。此外,损失函数对 $$ \sum_ {i=1}^h z^{(i)} $$ 有一个额外的L1惩罚。
244244
245- 使用[ 自适应计算时间] ( #adaptive-computation-time-act ) ,该方法可以进一步增强,以具有灵活的注意力跨度长度,动态适应当前输入。注意力头在时间 $$ t $$ 的跨度参数 $$ z_t $$ 是一个sigmoid函数,$$ z_t = S \sigma(\mathbf{v} \cdot \mathbf{x}\ _t +b) $$ ,其中向量 $$ \mathbf{v} $$ 和偏置标量 $$ b $$ 与其他参数一起学习。
245+ 使用[ 自适应计算时间] ( #adaptive-computation-time-act ) ,该方法可以进一步增强,以具有灵活的注意力跨度长度,动态适应当前输入。注意力头在时间 $$ t $$ 的跨度参数 $$ z_t $$ 是一个sigmoid函数,$$ z_t = S \sigma(\mathbf{v} \cdot \mathbf{x}_t +b) $$ ,其中向量 $$ \mathbf{v} $$ 和偏置标量 $$ b $$ 与其他参数一起学习。
246246
247247在具有自适应注意力跨度的Transformer实验中,[ Sukhbaatar 等人,2019] ( https://arxiv.org/abs/1905.07799 ) 发现了一个普遍趋势:较低层不需要很长的注意力跨度,而较高层中的一些注意力头可能使用异常长的跨度。自适应注意力跨度还大大减少了FLOPS的数量,特别是在具有许多注意力层和大上下文长度的大模型中。
248248
287287\end{aligned}
288288$$
289289
290- 注意,尽管 $$ S_i $$ 的大小不固定,$$ a(\mathbf{x}\ _i, S_i) $$ 始终是 $$ d_v $$ 的大小,因此 $$ \text{Attend}(\mathbf{X}, \mathcal{S}) \in \mathbb{R}^{L \times d_v} $$ 。
290+ 注意,尽管 $$ S_i $$ 的大小不固定,$$ a(\mathbf{x}_i, S_i) $$ 始终是 $$ d_v $$ 的大小,因此 $$ \text{Attend}(\mathbf{X}, \mathcal{S}) \in \mathbb{R}^{L \times d_v} $$ 。
291291
292292在自回归模型中,一个注意力跨度定义为 $$ S_i = \{j: j \leq i\} $$ ,因为它允许每个标记关注过去的所有位置。
293293
294- 在分解自注意力中,集合 $$ S*i $$ 被分解为一个* 树 \_ 依赖结构 ,使得对于每对 $$ (i, j) $$ (其中 $$ j \leq i $$ ),存在一条从 $$ i $$ 回到 $$ j $$ 的路径,$$ i $$ 可以直接或间接关注 $$ j $$ 。
294+ 在分解自注意力中,集合 $$ S*i $$ 被分解为一个* 树_依赖结构 ,使得对于每对 $$ (i, j) $$ (其中 $$ j \leq i $$ ),存在一条从 $$ i $$ 回到 $$ j $$ 的路径,$$ i $$ 可以直接或间接关注 $$ j $$ 。
295295
296- 具体来说,集合 $$ S*i $$ 被分成 $$ p $$ 个* 非重叠 \_ 子集 ,其中第 $$ m $$ 个子集表示为 $$ A^{(m)}\ _i \subset S_i, m = 1,\dots, p $$ 。因此,输出位置 $$ i $$ 和任何 $$ j $$ 之间的路径最大长度为 $$ p + 1 $$ 。例如,如果 $$ (j, a, b, c, \dots, i) $$ 是 $$ i $$ 和 $$ j $$ 之间的索引路径,我们会有 $$ j \in A_a^{(1)}, a \in A_b^{(2)}, b \in A_c^{(3)}, \dots $$ ,依此类推。
296+ 具体来说,集合 $$ S*i $$ 被分成 $$ p $$ 个* 非重叠_子集 ,其中第 $$ m $$ 个子集表示为 $$ A^{(m)}_i \subset S_i, m = 1,\dots, p $$ 。因此,输出位置 $$ i $$ 和任何 $$ j $$ 之间的路径最大长度为 $$ p + 1 $$ 。例如,如果 $$ (j, a, b, c, \dots, i) $$ 是 $$ i $$ 和 $$ j $$ 之间的索引路径,我们会有 $$ j \in A_a^{(1)}, a \in A_b^{(2)}, b \in A_c^{(3)}, \dots $$ ,依此类推。
297297
298298** 稀疏分解注意力**
299299
3293291 . 每个残差块使用一种注意力类型,然后交错使用,<br />
330330 $$ \text{attention}(\mathbf{X}) = \text{Attend}(\mathbf{X}, A^{(n \mod p)}) \mathbf{W}^o $$ ,其中 $$ n $$ 是当前残差块的索引。
3313312 . 设置一个单一的头,关注所有分解头关注的位置,<br />
332- $$ \text{attention}(\mathbf{X}) = \text{Attend}(\mathbf{X}, \cup\_ {m=1}^p A^{(m)}) \mathbf{W}^o $$ 。
332+ $$ \text{attention}(\mathbf{X}) = \text{Attend}(\mathbf{X}, \cup_ {m=1}^p A^{(m)}) \mathbf{W}^o $$ 。
3333333 . 使用多头注意力机制,但与原始Transformer不同,每个头可能采用上述模式1或2。=> 此选项通常表现最佳。
334334
335335Sparse Transformer还提出了一组更改,以便将Transformer训练到数百层,包括梯度检查点、在反向传播期间重新计算注意力与FF层、混合精度训练、有效的块稀疏实现等。详情请查看[ 论文] ( https://arxiv.org/abs/1904.10509 ) 。
@@ -350,18 +350,18 @@ Reformer提出了两个主要更改:
350350<a name =" LSH " />
351351** 局部敏感哈希注意力**
352352
353- 在[ 注意力公式] ( #attention-and-self-attention ) 的 $$ \mathbf{Q} \mathbf{K}^\top $$ 部分,我们只对最大元素感兴趣,因为只有大元素在softmax后贡献较多。对于每个查询 $$ \mathbf{q}\ _i \in \mathbf{Q} $$ ,我们寻找 $$ \mathbf{K} $$ 中与 $$ \mathbf{q}\ _i $$ 最接近的行向量。为了在高维空间中快速找到最近邻,Reformer将[ 局部敏感哈希 (LSH)] ( https://en.wikipedia.org/wiki/Locality-sensitive_hashing ) 纳入其注意力机制。
353+ 在[ 注意力公式] ( #attention-and-self-attention ) 的 $$ \mathbf{Q} \mathbf{K}^\top $$ 部分,我们只对最大元素感兴趣,因为只有大元素在softmax后贡献较多。对于每个查询 $$ \mathbf{q}_i \in \mathbf{Q} $$ ,我们寻找 $$ \mathbf{K} $$ 中与 $$ \mathbf{q}_i $$ 最接近的行向量。为了在高维空间中快速找到最近邻,Reformer将[ 局部敏感哈希 (LSH)] ( https://en.wikipedia.org/wiki/Locality-sensitive_hashing ) 纳入其注意力机制。
354354
355355哈希方案 $$ x \mapsto h(x) $$ 如果保留了数据点之间的距离信息,则称为* 局部敏感* ,使接近的向量获得相似的哈希,而远离的向量具有非常不同的哈希。Reformer采用了这样的哈希方案,给定一个固定的随机矩阵 $$ \mathbf{R} \in \mathbb{R}^{d \times b/2} $$ (其中 $$ b $$ 是一个超参数),哈希函数为 $$ h(x) = \arg\max([xR; -xR]) $$ 。
356356
357357![ LSH注意力矩阵] ( /posts/transformer-family-2/LSH-attention-matrix.png )
358358_ 图 11. 局部敏感哈希 (LSH) 注意力的示意图。(图片来源:[ Kitaev 等人,2020] ( https://arxiv.org/abs/2001.04451 ) 图1右半部分)。_
359359
360- 在LSH注意力中,查询只能关注同一哈希桶中的位置,$$ S_i = \{j: h(\mathbf{q}\ _i) = h(\mathbf{k}\ _j)\} $$ 。其执行过程如下,如图11所示:
360+ 在LSH注意力中,查询只能关注同一哈希桶中的位置,$$ S_i = \{j: h(\mathbf{q}_i) = h(\mathbf{k}_j)\} $$ 。其执行过程如下,如图11所示:
361361
362362- (a) 完整注意力的注意力矩阵通常是稀疏的。
363363- (b) 使用LSH,我们可以根据哈希桶对键和查询进行排序对齐。
364- - (c) 设置 $$ \mathbf{Q} = \mathbf{K} $$ (精确地说 $$ \mathbf{k}\ _j = \mathbf{q}\ _j / \|\mathbf{q}\ _j\| $$ ),以便一个桶中有相等数量的键和查询,便于批处理。有趣的是,这种"共享QK"配置不影响Transformer的性能。
364+ - (c) 设置 $$ \mathbf{Q} = \mathbf{K} $$ (精确地说 $$ \mathbf{k}_j = \mathbf{q}_j / \|\mathbf{q}_j\| $$ ),以便一个桶中有相等数量的键和查询,便于批处理。有趣的是,这种"共享QK"配置不影响Transformer的性能。
365365- (d) 应用批处理,将 $$ m $$ 个连续查询分组在一起。
366366
367367![ LSH注意力] ( /posts/transformer-family-2/LSH-attention.png )
0 commit comments