共计 1129 个字符,预计需要花费 3 分钟才能阅读完成。
出品人:Towhee 技术团队
作者:王翔宇
Transformer 模型是一种十分弱小的序列建模工具,但因为其注意力操作的复杂性,它在解决长序列时受到了限度。在传统的 Transformer 中,每个输出标记都须要与其余标记计算注意力权重,这导致了注意力操作的工夫复杂度为输出标记数量的平方。因而,当输出序列十分长时,这种计算开销会变得十分低廉,甚至无奈解决。在 attention 操作中,内积权重占比拟大的 value 向量会对后果 embedding 产生更大的影响,那么是否可能在很长的 token 序列中重点关注内积较大的局部而不是整体 token 呢?
|在这个例子中,一个特定的语言模型编码器的最大输出长度为 2 个 token。一个蕴含 6 个 token 的输出被分块编码,而后被索引。在每个解码器层之前将 Unlimiformer 注入穿插注意力。在 Unlimiformer 中,咱们执行 kNN 搜寻,从索引中为每个注意力头抉择一个 2 个 token 的上下文。这使得穿插注意力能够关注整个输出序列中的 token,而不增加参数,也不扭转给定的语言模型的架构。
钻研人员了一种名为 Unlimiformer 的基于检索的办法,用于加强预训练语言模型,使其可能在测试时承受有限长度的输出序列。Unlimiformer 能够注入到任何现有的编码 - 解码 Transformer 中,以实现有限长度的输出。在规范的穿插注意力中,Transformer 解码器会关注编码器的顶层暗藏状态,而编码器通常会截断输出并只对输出序列的前 k 个标记进行编码。作者不再只关注输出的这 k 个标记前缀,而是从 kNN 索引中检索每个 cross-attention 头部的 top-k 暗藏状态,并只关注这些 top-k 暗藏状态。这样就能够从整个输出序列进行检索,而不须要截断。该办法在计算和 GPU 内存方面比关注所有输出标记更加高效;因为 softmax 函数对最大值敏感,检索出最具注意力的标记能够保留绝大部分的注意力集中。
这是注意力机制的公式,一种简略的做法是针对被一个与权重向量 We 相乘后的 K = heWk 作索引,然而权重矩阵每一层每一个注意力头都不一样,所以须要 2xL(层数)xH(注意力头数) 个索引, 作者做了如下公式改良。这样只需索引编码器的输入 he 即可。
作者做了若干试验,这是在 BookSum 数据集上做的摘要试验,均匀有 143 k 个 token,baseline 是 Hierachical,也是一个相当强劲的 baseline,能够看出 unlimiformer 领有不错的晋升。
参考链接:
- https://arxiv.org/abs/2305.01625
- https://github.com/abertsch72/unlimiformer
本文由 mdnice 多平台公布