Deformable DETR——非全局self-attention(顺便补充transformer细节)

该博客探讨了一种优化Transformer中注意力矩阵的方法,避免了Q*K运算,将复杂度从O(N^2C)降低到O(NKC)。每个查询对应k个值的选择由查询通过全连接层得到的offset矩阵决定,减少了计算量并提高了效率。此外,还详细阐述了注意力矩阵、值、键和查询之间的对应关系。
摘要由CSDN通过智能技术生成

特色:

1.attention矩阵由query直接过全连接层得到,而不进行Q*K
2.attention矩阵乘value时,并不使用所有value,而是每个query(对应attention矩阵的每一行)对应k个value,因此,O(N^2C)变成了O(NKC),减少了计算量
3.如何确定每个query对应哪些value?——由query过全连接层得到offset矩阵,通过offset得到每个query对应的value的位置
注意:
每个query对应k个value,即相当于要算出Nq组offset,每组有k套offset

说明

主要说说attention矩阵和value,key,query的对应关系
重要: 求self-attentio里面的乘法都是矩阵乘法不要求shape相等

transformer维度说明

(1)QxK
假设Q有Nq个,K有Nk个,由于两个矩阵要做矩阵乘法,同时乘时K会转置,因此要求两者的每个单位长度相同
因此,假设Q:(Nq,d_embedding)
K也必须为(Nk,d_embedding)
相乘后attention矩阵:(Nq,Nk)
(2)attention x Value
这里便是直接相乘了,没做转置,因此要求Value的第一个维度为Nk,但第二个维度却不限制
Q:(Nq,d_embedding)
K:(Nk,d_embedding)
attention:(Nq,Nk)
V:(Nk,d_v)
result:(Nq,d_v)
在这里插入图片描述

计算说明

QxK得到每个Query对每个Key的attention
每一行对应1个Query和所有Key,做了Softmax,和为1

Value有Nk行,即相当于每一行对应一个Key的Embedding
attention x Value
即attention的一行,与Value的一列相乘,假设Value只有1列,即计算1次所有key的加权和得到1个新的result

因此,offset由Query矩阵得到合适,每行Query对应k套offset,即设置每个query去选择由哪k个Value加权成最终结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值