研究问题
固定长度的上下文设置对于模型的限制。
文章贡献
Vanilla Transformer
为解决问题:如何将任意长度的上下文输入表示为有限大小的上下文。
方法1:给一个无限内存和计算能力,用一个无条件的Transformer处理整个上下文序列,类似于前馈神经网络。
方法2:而可行的方法是划分整个语料库为更短的可控制的片段大小,并且只在各序列上训练模型,忽略先前划分的上下文信息。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ROLBG3xD-1669618280242)(C:\Users\Liu\Desktop\Learning\研究生\截图\image-20221107144415043.png)]
存在问题:无论在前向还是后向中都无法获取片段划分之间的信息。
局限性1:模型最大依赖长度受限于划分长度。
局限性2:简单地将序列划分为固定长度的片段会导致上下文碎片化问题。
在评估阶段,使用类似滑动窗口的方法进行预测,每次滑动只预测一个word。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zcp1pcvw-1669618280243)(C:\Users\Liu\Desktop\Learning\研究生\截图\image-20221107144527713.png)]
Segment-level Recurrence with state reuse
解决问题:使用有限长度上下文的局限性。
方法:在Transformer结构中引入循环机制。
计算方式:
h ~ τ + 1 n − 1 = [ S G ( h τ n − 1 ) ∘ h τ + 1 n − 1 ] q τ + 1 n , k τ + 1 n , v τ + 1 n = h τ + 1 n − 1 W q ⊤ , h ~ τ + 1 n − 1 W k ⊤ , h ~ τ + 1 n − 1 W v ⊤ , h τ + 1 n = Transformer-Layer ( q τ + 1 n , k τ + 1 n , v τ + 1 n ) . \begin{aligned} &\widetilde{\mathbf{h}}_{\tau+1}^{n-1}=\left[\mathrm{SG}\left(\mathbf{h}_\tau^{n-1}\right) \circ \mathbf{h}_{\tau+1}^{n-1}\right] \\ &\mathbf{q}_{\tau+1}^n, \mathbf{k}_{\tau+1}^n, \mathbf{v}_{\tau+1}^n=\mathbf{h}_{\tau+1}^{n-1} \mathbf{W}_q^{\top}, \widetilde{\mathbf{h}}_{\tau+1}^{n-1} \mathbf{W}_k^{\top}, \widetilde{\mathbf{h}}_{\tau+1}^{n-1} \mathbf{W}_v^{\top}, \\ &\mathbf{h}_{\tau+1}^n=\text { Transformer-Layer }\left(\mathbf{q}_{\tau+1}^n, \mathbf{k}_{\tau+1}^n, \mathbf{v}_{\tau+1}^n\right) . \end{aligned} h τ+1n−1=[SG(hτn−1)∘hτ+1n−1]qτ+1n,kτ+1n,vτ+1n=hτ+1n−1Wq⊤,h τ+1n−1Wk⊤,h τ+1n−1Wv⊤,hτ+1n= Transformer-Layer (qτ+1n,kτ+1n,vτ+1n).
其中:
与Transformer最大的区别在于 k , v k,v k,v使用了扩展的上下文信息。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2eXeJBdd-1669618280244)(C:\Users\Liu\Desktop\Learning\研究生\截图\image-20221107145720242.png)]
在评估阶段,可以重用来自前面的片段表示,而不是重新计算。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tlFCcS3U-1669618280244)(C:\Users\Liu\Desktop\Learning\研究生\截图\image-20221107150152225.png)]
relative positional encoding
存在问题:如果采用Transformer中的位置编码方式,那么对于 s τ s_\tau sτ与 s τ + 1 s_{\tau+1} sτ+1,模型无法区分其位置信息的区别。公式如下:
h τ + 1 = f ( h τ , E s τ + 1 + U 1 : L ) h τ = f ( h τ − 1 , E s τ + U 1 : L ) \begin{aligned} \mathbf{h}_{\tau+1} &=f\left(\mathbf{h}_\tau, \mathbf{E}_{\mathbf{s}_{\tau+1}}+\mathbf{U}_{1: L}\right) \\ \mathbf{h}_\tau &=f\left(\mathbf{h}_{\tau-1}, \mathbf{E}_{\mathbf{s}_\tau}+\mathbf{U}_{1: L}\right) \end{aligned} hτ+1hτ=f(hτ,Esτ+1+U1:L)=f(hτ−1,Esτ+U1:L)
解决方法:只在隐藏状态中编码相对位置信息。
query向量 q i q_i qi与key向量 k j k_j kj之间的注意分数可以分解为:
A i , j a b s = E x i ⊤ W q ⊤ W k E x j ⏟ ( a ) + E x i ⊤ W q ⊤ W k U j ⏟ ( b ) + U i ⊤ W q ⊤ W k E x j ⏟ ( c ) + U i ⊤ W q ⊤ W k U j ⏟ ( d ) . \begin{aligned} \mathbf{A}_{i, j}^{\mathrm{abs}} &=\underbrace{\mathbf{E}_{x_i}^{\top} \mathbf{W}_q^{\top} \mathbf{W}_k \mathbf{E}_{x_j}}_{(a)}+\underbrace{\mathbf{E}_{x_i}^{\top} \mathbf{W}_q^{\top} \mathbf{W}_k \mathbf{U}_j}_{(b)} +\underbrace{\mathbf{U}_i^{\top} \mathbf{W}_q^{\top} \mathbf{W}_k \mathbf{E}_{x_j}}_{(c)}+\underbrace{\mathbf{U}_i^{\top} \mathbf{W}_q^{\top} \mathbf{W}_k \mathbf{U}_j}_{(d)} . \end{aligned} Ai,jabs=(a) Exi⊤Wq⊤WkExj+(b) Exi⊤Wq⊤WkUj+(c) Ui⊤Wq⊤WkExj+(d) Ui⊤Wq⊤WkUj.
使用相对位置编码后,分数可以表示为:
A i , j r e l = E x i ⊤ W q ⊤ W k , E E x j ⏟ ( a ) + E x i ⊤ W q ⊤ W k , R R i − j ⏟ ( b ) + u ⊤ W k , E E x j ⏟ ( c ) + v ⊤ W k , R R i − j ⏟ ( d ) . \begin{aligned} \mathbf{A}_{i, j}^{\mathrm{rel}} &=\underbrace{\mathbf{E}_{x_i}^{\top} \mathbf{W}_q^{\top} \mathbf{W}_{k, E} \mathbf{E}_{x_j}}_{(a)}+\underbrace{\mathbf{E}_{x_i}^{\top} \mathbf{W}_q^{\top} \mathbf{W}_{k, R} \mathbf{R}_{i-j}}_{(b)} +\underbrace{u^{\top} \mathbf{W}_{k, E} \mathbf{E}_{x_j}}_{(c)}+\underbrace{v^{\top} \mathbf{W}_{k, R} \mathbf{R}_{i-j}}_{(d)} . \end{aligned} Ai,jrel=(a) Exi⊤Wq⊤Wk,EExj+(b) Exi⊤Wq⊤Wk,RRi−j+(c) u⊤Wk,EExj+(d) v⊤Wk,RRi−j.
其中的变化有:
公式中每个部分的含义:
加上相对位置编码后,Transformer-XL的attention机制:
h ~ τ n − 1 = [ S G ( m τ n − 1 ) ∘ h τ n − 1 ] q τ n , k τ n , v τ n = h τ n − 1 W q n ⊤ , h ~ τ n − 1 W k , E n ⊤ , h ~ τ n − 1 W v n ⊤ A τ , i , j n = q τ , i n ⊤ k τ , j n + q τ , i n ⊤ W k , R n R i − j + u ⊤ k τ , j + v ⊤ W k , R n R i − j a τ n = Masked-Softmax ( A τ n ) v τ n o τ n = LayerNorm ( Linear ( a τ n ) + h τ n − 1 ) h τ n = Positionwise-Feed-Forward ( o τ n ) \begin{aligned} \widetilde{\mathbf{h}}_\tau^{n-1}=& {\left[\mathrm{SG}\left(\mathbf{m}_\tau^{n-1}\right) \circ \mathbf{h}_\tau^{n-1}\right] } \\ \mathbf{q}_\tau^n, \mathbf{k}_\tau^n, \mathbf{v}_\tau^n=& \mathbf{h}_\tau^{n-1} \mathbf{W}_q^{n \top}, \widetilde{\mathbf{h}}_\tau^{n-1} \mathbf{W}_{k, E}^n{ }^{\top}, \widetilde{\mathbf{h}}_\tau^{n-1} \mathbf{W}_v^{n \top} \\ \mathbf{A}_{\tau, i, j}^n=& \mathbf{q}_{\tau, i}^n{ }^{\top} \mathbf{k}_{\tau, j}^n+\mathbf{q}_{\tau, i}^n{ }^{\top} \mathbf{W}_{k, R}^n \mathbf{R}_{i-j} \\ &+u^{\top} \mathbf{k}_{\tau, j}+v^{\top} \mathbf{W}_{k, R}^n \mathbf{R}_{i-j} \\ \mathbf{a}_\tau^n=& \text { Masked-Softmax }\left(\mathbf{A}_\tau^n\right) \mathbf{v}_\tau^n \\ \mathbf{o}_\tau^n=& \text { LayerNorm }\left(\text { Linear }\left(\mathbf{a}_\tau^n\right)+\mathbf{h}_\tau^{n-1}\right) \\ \mathbf{h}_\tau^n=& \text { Positionwise-Feed-Forward }\left(\mathbf{o}_\tau^n\right) \end{aligned} h τn−1=qτn,kτn,vτn=Aτ,i,jn=aτn=oτn=hτn=[SG(mτn−1)∘hτn−1]hτn−1Wqn⊤,h τn−1Wk,En⊤,h τn−1Wvn⊤qτ,in⊤kτ,jn+qτ,in⊤Wk,RnRi−j+u⊤kτ,j+v⊤Wk,RnRi−j Masked-Softmax (Aτn)vτn LayerNorm ( Linear (aτn)+hτn−1) Positionwise-Feed-Forward (oτn)
其中
优点
缺点:
在注意力分数计算 t e r m ( c ) term (c) term(c)和 t e r m ( d ) term (d) term(d)中,为什么要用可训练的参数 u , v u,v u,v替换 U i U_i Ui?
S G ( h τ n − 1 ) SG(h_\tau^{n-1}) SG(hτn−1),这个停止梯度(stop-gradient)是什么意思,有什么作用呢?
间换取时间的方法,消耗显存或内存。
在注意力分数计算 t e r m ( c ) term (c) term(c)和 t e r m ( d ) term (d) term(d)中,为什么要用可训练的参数 u , v u,v u,v替换 U i U_i Ui?
S G ( h τ n − 1 ) SG(h_\tau^{n-1}) SG(hτn−1),这个停止梯度(stop-gradient)是什么意思,有什么作用呢?
能不能采用全局绝对位置编码呢?