Perceiver续作。
论文地址:https://arxiv.org/pdf/2107.14795.pdf
代码:https://dpmd.ai/perceiver-code
Introduction
现有的多模态方法是使用单模态模型独立处理各模态数据,再用fusion 网络融合各模态,会使模型非常复杂,也限制了模型处理数据的方式。
本文基于Perceiver提出了Perceiver IO架构,Perceiver IO是纯注意力架构:输入被编码到潜在空间,通过多层处理后,解码产生各种形式的输出。
Methods
Architecture
Perceiver IO建立在Perceiver基础上,输入是$\mathbb{R}^{M\times C}$上的2维数组,用维度更小的$\mathbb{R}^{N\times D}$潜在数组作为Q,输入数组作为K、V,编码并聚合输入信息。再用另一个attention模块,用期望输出数目的$\mathbb{R}^{O\times E}$向量作为Q,聚合后的潜在数组作为K、V,解码生成输出。
以上流程中,$M,C,O,E$由具体任务决定,$N,D$为超参数,attention计算复杂度和输入输出大小呈线性关系。
decoding the latent representation with a query array
output query应该蕴含反映下游任务的信息,例如图像或序列中的位置。
对简单的分类等任务,使用position embedding作为output query即可。而对多任务、多模态,可以为每个任务/模态学习embedding。