即插即用在transformer结构模型上的长文本处理工具,基本思路是把输入划为重叠的块,用处理短文本模型的编码器对每个块编码,然后用预训练的解码器融合块之间的信息,注意只能用在encoder-decoder结构上,只有一边的不行。
首先要有这样一个概念:在encoder-decoder结构里,encoder可以只用局部上下文来对输入token进行上下文化,把远距离的依赖留给decoder处理。所以SLED就是在decoder里进行信息融合的。
下面看一下模型结构:
黑色的部分,也就是M,表示的是encoder-decoder结构的骨干模型,比如bart,或者T5。最下层的蓝色方块部分,t,表示的是输入的源文档token(共n个),就是相当于源文档的长度为n。最下层蓝色方块左边的橙色部分,p,表示的是前缀token,类似于prompt,执行某些特定任务的指令,可以有也可以没有,长度为m,且m远小于n。
第一步,源文档token会分成C块,每块的长度用c表示,比如在这张图里c=4(注意C个块并不是各自独立的,它们是有重叠的)。然后每个块中间的几个token都是根据左右两边的几个token进行上下文化处理的,【中间几个token】的个数计算方式是(1-ρ)*c,【左右两边的几个token】的个数计算方式是ρ*c/2,ρ的取值范围是0~0.5。
这中间的几个token,我们成为有效token,也就是黑色方块上面那层里的黄色方块部分。然后这些有效token被收集起来作为encoder的输出传给decoder,decoder用的也是骨干模型的decoder。顺便也会把前缀编码加在encoder输出的最前面。decoder用的就是标准交叉注意力。
关于第一个块和最后一个块的处理,也就是左右两边的几个token缺失的情况,作者写在附录里了先不看了。还有复杂度的计算那里,总之是线性的。
实验用的数据集是SCROLLS,任务主要是摘要、问答、推理。