机器学习笔记(11): RDT (Reccurent Depth Transfomer)
- Universal Transformer
类似于 RNN 的思路,但是对于一般的 Transformer 引入循环,也就是重复思考:

特殊的设计有两点:
- Depth/Time PE
由于有 loop 的存在,所以实际上除了位置,还有一个时间维度的编码,那么每次 loop 回来之后,在每次 self-attention 之前,都要嵌入该时间编码,其中 \(\ ^t\) 表示轮次
\(P^t_{i, 2j} = \sin\left(\frac{i}{10000^{2j/d}}\right) + \sin\left(\frac{t}{10000^{2j/d}}\right)\)
\(P^t_{i, 2j+1} = \cos\left(\frac{i}{10000^{2j/d}}\right) + \cos\left(\frac{t}{10000^{2j/d}}\right)\)
- ACT(Adaptive Computation Time)
也就是可以动态的调整 loop times,分成 每位置独立的标量停止概率预测 + 累积阈值判定 + 余量插值 三个机制协同
具体来说,也就是对于每一个时间,额外训练一个参数,用于计算每一次循环后的停止概率:
\[p_i^t = \sigma(W_h h_i^t + b)
\]
当 \(p_i^t\) 累计大于某个值 \(\tau\),或者步数大于某一步,那么就终止循环。
同样,每一层的状态,也是基于这个 \(p_i^t\) 的加权平均:
\[\begin{aligned}
w_i^t &= \begin{cases}
1 - H_i^t + p_i^t & 首次跨越阈值或者达到循环最大次数 \\
0 & 停止循环
\end{cases}
\\
transformed &= TransitionFunction(SelfAttention(state_i^{t-1})) \\
state_i^t &= w_i^t · transformed + (1 - w_i^t) · state_i^{t-1} \\
\end{aligned}
\]

浙公网安备 33010602011771号