偏置型 RPE一个标量就够了#T5 的 RPE 做法可以说简单到令人怀疑这里多出来的 是一个偏置矩阵 表示位置 和 之间的标量偏置。再展开注意力分数部分就是这里的 是一个可学习的标量它只依赖于相对距离 。公式本身非常简单但这极简的设计下却有很多细节我们分点展开一下1.1 为什么一个标量就够#一个首当其冲的问题是一个标量偏置真的能提供多少位置信息这里需要理解的是注意力机制的最终产物是权重分布而权重分布本身就是一些标量值。所以从根本上说我们最终需要的就是在每个 Query-Key 对上打个位置标签告诉模型这个距离应该怎么影响注意力权重。而 T5 的想法是我不再去重构你的过程只要让不同的位置对最终的权重有不同的影响就够了。就像这样相对距离Token 对语义分数偏置最终分数近(我, 爱)0.50.30.8远(我, 它)0.5-0.20.3为一种相对位置提供一个可学习的标量它同样可以在反向传播中学到相应的语义影响最终的权重分布。同时这种偏置型 RPE 继承了 Transformer-XL 删去 V 的 RPE 的逻辑其想法也是一样的位置只需要指导关注谁不需要修改传递什么。1.2 如何改善可学习编码的外推能力#再回到最开始说的是可学习的标量。展开这部分我们需要简单回顾一下之前的两组 RPE 的逻辑首先Shaw 的加法型 RPE 是可学习向量它要分别去适配 Q 和 V 的维度同时又要保证可更新因此我们最终为其额外建立了两张 PRE 向量表。然后Transformer-XL 为实现跨窗口的能力将可学习编码改为正余弦固定编码来获得外推能力同时提出了注意力的四项重构式来增加交互。通过二者的逻辑我们可以总结出一对互斥选择希望更加自适应就要让编码可学习但代价是建表空间、计算量以及外推能力而希望获得更好的外推能力就要使用相对来说更死板的固定编码。而 T5 选择了可学习的标量其实本身就是在说它不相信“固定公式”能适应所有任务所以把相对位置偏置改成了可学习参数。这种设置拥有自适应能力而且对每个注意力头只需要维护一行向量即可。但只要是可学习编码就逃不开外推能力的限制每个不同的相对距离都学一个独立的标量训练时最大长度之外的相对距离完全没见过增加最大长度的计算成本又高如何取舍T5 的解决方案是分桶策略。2. 分桶策略Bucketing#2.1 分桶思想#可以用我们的生活例子来理解分桶思想我们对面有两个人一个人在面前 1 米处另一个人在 2 米处我们能清晰感觉出1米近、2米远的区别。但如果一位在 100 米外一位在 101 米外我们根本不会在意它们之间的距离差异。而注意力也有类似的规律一个 token 对邻近 token 的相对距离极其敏感但对远处的 token大概方向上的远近就够了。T5 根据这个规律把相对距离分成了两个区间区间描述分桶方式近距离需要精确区分每个距离独享一桶远距离只需要模糊感知对数压缩多距离共享一桶这就是分桶策略的核心思想近精细远模糊。2.2 具体的分桶计算#在实际中分桶逻辑如下首先先计算绝对相对距离在实际应用中这其实是解码器的逻辑在下面就会展开说第二步我们要判断距离落在哪个区间如果即近距离区间直接使用第 个桶。如果进入对数压缩区间映射为其中 是精确分桶的边界默认一般取 8 是最大距离阈值默认 128它控制着分桶的粒度。我们用一个详细的例子来理解假设 桶数 来看看不同距离对应的桶桶编号对应距离范围所属阶段典型计算00精确区间直接映射到桶 011精确区间直接映射到桶 122精确区间直接映射到桶 233精确区间直接映射到桶 344精确区间直接映射到桶 455精确区间直接映射到桶 566精确区间直接映射到桶 677精确区间直接映射到桶 78对数区间9对数区间10对数区间对数压缩后落入桶 1011对数区间对数压缩后落入桶 1112对数区间对数压缩后落入桶 1213对数区间对数压缩后落入桶 1314对数区间对数压缩后落入桶 1415最大桶/截断区间超过后统一映射到最后桶其实说到底这还是一个粒度问题对数空间的特性让极远的距离被自然压缩模型只需要学习极远的都差不多就足够了。原本我们为每种相对距离都单独维护对应编码代价就是参数量大增加表长的代价高。而现在我们用分桶算法把距离划分为了几个不同大小的区间极大降低了可学习编码的外推成本实现了能力和成本的均衡而且更加符合实际认知。3. 双向注意力与单向注意力下的分桶差异#T5 的偏置型 RPE 还有一个非常关键的细节分桶逻辑会随着注意力掩码的方向性发生变化。这是因为编码器是双向注意力解码器是单向因果注意力。两者对“相对位置方向”的需求并不相同。我们具体展开来说3.1 编码器中的双向分桶#在编码器Encoder中注意力是双向的任意两个 token 都能互相看到。因此相对位置既可能为正也可能为负例如表示目标 token 位于当前位置左侧。表示目标 token 位于当前位置右侧。因此T5 在编码器中会先区分方向再分别进行分桶。就像这样假设 那么桶通常会被均分为方向bucket 范围负方向右侧0~15正方向左侧16~31随后每个方向内部再独立使用上面的近距离精确分桶。远距离对数压缩大概就像这样相对距离方向对应 bucket说明右侧方向3右侧近距离精确分桶右侧方向1右侧最近 token右侧方向8进入右侧对数压缩区右侧方向11右侧远距离共享桶右侧方向15右侧最大距离桶左侧方向17左侧最近 token左侧方向19左侧近距离精确分桶左侧方向24左侧进入对数压缩区左侧方向27左侧远距离共享桶左侧方向31左侧最大距离桶也就是说T5 并不会把“左边 3 个 token”和“右边 3 个 token”视为同一种关系。因为在自然语言中左边通常是历史上下文右边通常是后续补充信息两者语义作用并不对称这是一种很合理的设计。3.2 解码器中的单向分桶#而在解码器Decoder中由于因果掩码的存在当前 token 只能看到自己之前的 token。因此一定满足
深度学习进阶(二十三)偏置型 RPE
偏置型 RPE一个标量就够了#T5 的 RPE 做法可以说简单到令人怀疑这里多出来的 是一个偏置矩阵 表示位置 和 之间的标量偏置。再展开注意力分数部分就是这里的 是一个可学习的标量它只依赖于相对距离 。公式本身非常简单但这极简的设计下却有很多细节我们分点展开一下1.1 为什么一个标量就够#一个首当其冲的问题是一个标量偏置真的能提供多少位置信息这里需要理解的是注意力机制的最终产物是权重分布而权重分布本身就是一些标量值。所以从根本上说我们最终需要的就是在每个 Query-Key 对上打个位置标签告诉模型这个距离应该怎么影响注意力权重。而 T5 的想法是我不再去重构你的过程只要让不同的位置对最终的权重有不同的影响就够了。就像这样相对距离Token 对语义分数偏置最终分数近(我, 爱)0.50.30.8远(我, 它)0.5-0.20.3为一种相对位置提供一个可学习的标量它同样可以在反向传播中学到相应的语义影响最终的权重分布。同时这种偏置型 RPE 继承了 Transformer-XL 删去 V 的 RPE 的逻辑其想法也是一样的位置只需要指导关注谁不需要修改传递什么。1.2 如何改善可学习编码的外推能力#再回到最开始说的是可学习的标量。展开这部分我们需要简单回顾一下之前的两组 RPE 的逻辑首先Shaw 的加法型 RPE 是可学习向量它要分别去适配 Q 和 V 的维度同时又要保证可更新因此我们最终为其额外建立了两张 PRE 向量表。然后Transformer-XL 为实现跨窗口的能力将可学习编码改为正余弦固定编码来获得外推能力同时提出了注意力的四项重构式来增加交互。通过二者的逻辑我们可以总结出一对互斥选择希望更加自适应就要让编码可学习但代价是建表空间、计算量以及外推能力而希望获得更好的外推能力就要使用相对来说更死板的固定编码。而 T5 选择了可学习的标量其实本身就是在说它不相信“固定公式”能适应所有任务所以把相对位置偏置改成了可学习参数。这种设置拥有自适应能力而且对每个注意力头只需要维护一行向量即可。但只要是可学习编码就逃不开外推能力的限制每个不同的相对距离都学一个独立的标量训练时最大长度之外的相对距离完全没见过增加最大长度的计算成本又高如何取舍T5 的解决方案是分桶策略。2. 分桶策略Bucketing#2.1 分桶思想#可以用我们的生活例子来理解分桶思想我们对面有两个人一个人在面前 1 米处另一个人在 2 米处我们能清晰感觉出1米近、2米远的区别。但如果一位在 100 米外一位在 101 米外我们根本不会在意它们之间的距离差异。而注意力也有类似的规律一个 token 对邻近 token 的相对距离极其敏感但对远处的 token大概方向上的远近就够了。T5 根据这个规律把相对距离分成了两个区间区间描述分桶方式近距离需要精确区分每个距离独享一桶远距离只需要模糊感知对数压缩多距离共享一桶这就是分桶策略的核心思想近精细远模糊。2.2 具体的分桶计算#在实际中分桶逻辑如下首先先计算绝对相对距离在实际应用中这其实是解码器的逻辑在下面就会展开说第二步我们要判断距离落在哪个区间如果即近距离区间直接使用第 个桶。如果进入对数压缩区间映射为其中 是精确分桶的边界默认一般取 8 是最大距离阈值默认 128它控制着分桶的粒度。我们用一个详细的例子来理解假设 桶数 来看看不同距离对应的桶桶编号对应距离范围所属阶段典型计算00精确区间直接映射到桶 011精确区间直接映射到桶 122精确区间直接映射到桶 233精确区间直接映射到桶 344精确区间直接映射到桶 455精确区间直接映射到桶 566精确区间直接映射到桶 677精确区间直接映射到桶 78对数区间9对数区间10对数区间对数压缩后落入桶 1011对数区间对数压缩后落入桶 1112对数区间对数压缩后落入桶 1213对数区间对数压缩后落入桶 1314对数区间对数压缩后落入桶 1415最大桶/截断区间超过后统一映射到最后桶其实说到底这还是一个粒度问题对数空间的特性让极远的距离被自然压缩模型只需要学习极远的都差不多就足够了。原本我们为每种相对距离都单独维护对应编码代价就是参数量大增加表长的代价高。而现在我们用分桶算法把距离划分为了几个不同大小的区间极大降低了可学习编码的外推成本实现了能力和成本的均衡而且更加符合实际认知。3. 双向注意力与单向注意力下的分桶差异#T5 的偏置型 RPE 还有一个非常关键的细节分桶逻辑会随着注意力掩码的方向性发生变化。这是因为编码器是双向注意力解码器是单向因果注意力。两者对“相对位置方向”的需求并不相同。我们具体展开来说3.1 编码器中的双向分桶#在编码器Encoder中注意力是双向的任意两个 token 都能互相看到。因此相对位置既可能为正也可能为负例如表示目标 token 位于当前位置左侧。表示目标 token 位于当前位置右侧。因此T5 在编码器中会先区分方向再分别进行分桶。就像这样假设 那么桶通常会被均分为方向bucket 范围负方向右侧0~15正方向左侧16~31随后每个方向内部再独立使用上面的近距离精确分桶。远距离对数压缩大概就像这样相对距离方向对应 bucket说明右侧方向3右侧近距离精确分桶右侧方向1右侧最近 token右侧方向8进入右侧对数压缩区右侧方向11右侧远距离共享桶右侧方向15右侧最大距离桶左侧方向17左侧最近 token左侧方向19左侧近距离精确分桶左侧方向24左侧进入对数压缩区左侧方向27左侧远距离共享桶左侧方向31左侧最大距离桶也就是说T5 并不会把“左边 3 个 token”和“右边 3 个 token”视为同一种关系。因为在自然语言中左边通常是历史上下文右边通常是后续补充信息两者语义作用并不对称这是一种很合理的设计。3.2 解码器中的单向分桶#而在解码器Decoder中由于因果掩码的存在当前 token 只能看到自己之前的 token。因此一定满足