深度学习进阶(二十三)偏置型 RPE
上一篇我们先容了 T5 的主干逻辑,实际上,T5 的核生理念可以概括为“同一、简化” 。那么标题来了:
一个寻求同一和简便的框架,会选择什么样的位置编码?
终极,T5 没有走 Transformer-XL 的四项重构门路,也没有相沿原始的加法型 RPE,而是提出了一种极简的方案:偏置型 RPE。
它第一次把相对编码做成了一个极其稳固、极其工程友好的标准模块,可以说到达了范式层级的操持,从而广泛传播和应用。
1. 偏置型 RPE:一个标量就够了
T5 的 RPE 做法可以说简单到令人猜疑:
\
这里多出来的 \(B\) 是一个 偏置矩阵,\(B_{ij}\) 表现位置 \(i\) 和 \(j\) 之间的标量偏置。
再睁开留意力分数部分就是:
\[\text{score}_{ij} = \frac{Q_i \cdot K_j}{\sqrt d} + b_{i-j}\]
这里的 \(b_{i-j}\) 是一个可学习的标量,它只依靠于相对隔断 \(i - j\)。
公式本身非常简单,但这极简的操持下却有很多细节,我们分点睁开一下:
1.1 为什么一个标量就够?
一个首当其冲的标题是:
一个标量偏置,真的能提供多少位置信息?
这里必要明白的是,留意力机制的终极产物是权重分布,而权重分布本身就是一些标量值。以是从根本上说:
我们终极必要的,就是在每个 Query-Key 对上打个"位置标签",告诉模子这个隔断应该怎么影响留意力权重。
而 T5的想法是:
我不再去重构你的过程,只要让差别的位置对终极的权重有差别的影响就够了。
就像如许:
相对隔断Token 对语义分数偏置终极分数近("我", "爱")0.5+0.30.8远("我", "它")0.5-0.20.3为一种相对位置提供一个可学习的标量,它同样可以在反向传播中学到相应的语义,影响终极的权重分布。
同时,这种偏置型 RPE 继承了 Transformer-XL 删去 V 的 RPE 的逻辑,其想法也是一样的:位置只必要引导"关注谁",不必要修改"通报什么"。
1.2 怎样改善可学习编码的外推本领?
再回到最开始说的: \(b_{i-j}\) 是可学习的标量。
睁开这部分,我们必要简单回顾一下之前的两组 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 具体的分桶盘算
在实际中,分桶逻辑如下:
起首,先盘算绝对相对隔断(在实际应用中,这着实是解码器的逻辑,在下面就会睁开说):
\
第二步,我们要判定隔断落在哪个区间:
[*]如果 \(r < N\):即近隔断区间,直接利用第 \(r\) 个桶。
[*]如果 \(r \geq N\):进入对数压缩区间,映射为:
\[\text{bucket} = N + \left\lfloor \frac{\log(r / N)}{\log(D_{max} / N)} \times (num_{buckets} - N - 1) \right\rfloor\]
此中 \(N\) 是准确分桶的界限(默认一样寻常取 8),\(D_{max}\) 是最大隔断阈值(默认 128),它控制着分桶的粒度。
我们用一个具体的例子来明白,假设 \(N = 8\),桶数 \(num_{buckets} = 16\),\(D_{max}=128\) ,来看看差别隔断对应的桶:
桶编号对应隔断范围 \(r\)所属阶段典范盘算00准确区间\(r
页:
[1]