介绍一篇谷歌的最新工作,解决的是 Transformer 的长文本处理问题。在原生 Transformer 中,attention 的复杂度是输入序列长度的平方级别,因此限制了它处理长文本的能力。简单来说,本文提出的解决方案就是把 Transformer当做 RNN 中的循环单元来用

和传统 RNN 的区别只在于:传统 RNN encoder 每个循环单元负责编码一个 token,而本文中每个循环单元负责编码一段长度为  的文本片段,且每个循环单元都由构造相同的 Transformer Block 来实现。如此一来,每个片段在编码时,都能用类似 RNN 的方式,同时考虑之前文本中的信息了。

论文标题
BLOCK-RECURRENT TRANSFORMERS

论文链接

https://arxiv.org/pdf/2203.07852.pdf

就本文来说,只是拥有一个 idea 肯定是不够的,还要解决很多问题,包括:

  • 相邻的 block 之间如何以适配 Transformer 的方式传递信息
  • 模型设计的时候还要同时考虑到将运算复杂度的降到最低,能并行运算的绝不搞串行
  • 还有最后工程实现上的一些问题。比如说,模型训练的时候是否会像传统 RNN 一样遇到梯度消失的问题?如果有,该如何解决?我在本篇推送中,没有涵盖这方面的讨论。原文确实提了一些方法来提高模型训练的稳定性。

内容中包含的图片若涉及版权问题,请及时与我们联系删除