Last updated 2 years ago
论文地址:
输入:
X∈Rn×d1X\in \mathbb R^{n\times d_1}X∈Rn×d1
Q,K,V=XWQ,XWK,XWV∈Rn×d2Q,K,V=XW_Q, XW_K, XW_V\in \mathbb R^{n\times d_2}Q,K,V=XWQ,XWK,XWV∈Rn×d2
Q=Norm(Q),K=Norm(K)Q= \mathrm{Norm}(Q), K=\mathrm{Norm}(K)Q=Norm(Q),K=Norm(K)
O=VSoftmax(K⊤Q)Wo∈Rn×d1O=V\mathrm{Softmax}(K^{\top} Q) W_o\in \mathbb R^{n\times d_1}O=VSoftmax(K⊤Q)Wo∈Rn×d1(分组计算)
假设有hhh个分组,那么时间复杂度为O(n(d/h)2×h)=O(nd2/h)O(n(d/h)^2\times h)=O(nd^2/h)O(n(d/h)2×h)=O(nd2/h)。
不变。
适用于Encoder,作者进行了视觉任务,效果都不错。
作者在Attention和FFN之间增加了一个模块,带来了不少提升,但是不加这个模块性能一般;另一方面,计算内积的同时增加了分组操作,这部分需要看源码。
这篇思路过于简单,不知道该模块单独使用是否起作用。