Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context

Transormer-XL

主要工作

研究问题

固定长度的上下文设置对于模型的限制。

文章贡献

  • 介绍一种segment级别的递归机制。
  • 提出一种新的位置编码方式。

模型介绍

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 τ+1n1=[SG(hτn1)hτ+1n1]qτ+1n,kτ+1n,vτ+1n=hτ+1n1Wq,h τ+1n1Wk,h τ+1n1Wv,hτ+1n= Transformer-Layer (qτ+1n,kτ+1n,vτ+1n).
其中:

  • n n n:表示第 n n n层;
  • h h h:表示隐藏状态;
  • S G ( ⋅ ) SG(·) SG():表示停止梯度;
  • [ h u ∘ h v ] [h_u\circ h_v] [huhv]:表示两个隐藏层之间的拼接操作;

与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)
解决方法:只在隐藏状态中编码相对位置信息。

  • 将相同的信息注入到每一层的注意力分数中,而不是将bias静态地加入到初始嵌入中。
  • 对于 q τ , i q_{\tau,i} qτ,i k τ , j k_{\tau,j} kτ,j,我们只关注他们的相对位置,例如 i − j i-j ij
  • 绝对位置信息可以从相对位置信息中递归恢复。

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) ExiWqWkExj+(b) ExiWqWkUj+(c) UiWqWkExj+(d) UiWqWkUj.
使用相对位置编码后,分数可以表示为:
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) ExiWqWk,EExj+(b) ExiWqWk,RRij+(c) uWk,EExj+(d) vWk,RRij.

  • R i − j R_{i-j} Rij表示相对位置编码。

其中的变化有:

  • 使用相对位置编码 R i − j R_{i-j} Rij替换绝对位置编码 U j U_j Uj
  • 使用可训练的参数 u , v u,v u,v代替query U i ⊤ W q ⊤ U_i^\top W_q^\top UiWq
  • 分离 W k , E W_{k,E} Wk,E W k , R W_{k,R} Wk,R分别用于生成基于内容的key向量和基于位置的key向量。

公式中每个部分的含义:

  • ( a ) (a) (a):表示基于内容的地址;
  • ( b ) (b) (b):捕获依赖相关的位置bias;
  • ( c ) (c) (c):控制全局的内容bias;
  • ( d ) (d) (d):编码全局的位置bias;

加上相对位置编码后,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 τn1=qτn,kτn,vτn=Aτ,i,jn=aτn=oτn=hτn=[SG(mτn1)hτn1]hτn1Wqn,h τn1Wk,En,h τn1Wvnqτ,inkτ,jn+qτ,inWk,RnRij+ukτ,j+vWk,RnRij Masked-Softmax (Aτn)vτn LayerNorm ( Linear (aτn)+hτn1) Positionwise-Feed-Forward (oτn)
其中

  • h τ 0 : = E s τ h^0_\tau:=E_{s_\tau} hτ0:=Esτ

优缺点

优点

  • 在训练阶段使用之前的fragment信息,提高模型利用上下文信息的能力。
  • 在评估阶段因为使用了之前fragment信息,避免了再次运算,提升了评估的速度。

缺点:

  • 模型应用成本高,采用空间换取时间的方法,消耗显存或内存。

问题

  • 在注意力分数计算 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τn1),这个停止梯度(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τn1),这个停止梯度(stop-gradient)是什么意思,有什么作用呢?

  • 能不能采用全局绝对位置编码呢?

你可能感兴趣的:(论文阅读,NLP,transformer,语言模型,深度学习)