论文地址:
https://arxiv.org/abs/2105.03824arrow-up-right
思路非常简单,利用FFT进行token mix和feature mix,整体计算公式如下:
输入:X∈Rn×dX\in \mathbb R^{n\times d}X∈Rn×d
O=FFT(FFT(X,d=−1),d=−2).real∈Rn×dO=\mathrm{FFT}(\mathrm {FFT}(X, d=-1),d=-2).real\in \mathbb R^{n\times d}O=FFT(FFT(X,d=−1),d=−2).real∈Rn×d
O(n2d+ndlogd+dnlogn)O(n^2 d + n d\log d + dn\log n )O(n2d+ndlogd+dnlogn)。
不变。
https://github.com/erksch/fnet-pytorcharrow-up-right
https://github.com/rishikksh20/FNet-pytorcharrow-up-right
实验比较有意思,列出几个比较有意思的实验:
BERT:83.3
FNet(在seq和feature两个维度进行FFT):76.7
Linear(在feature和seq两个维度过全连接,可学):77.0
Random(在feature和seq两个维度过全连接,不可学):56.6
FFN-only(只有FFN):49.3
实验结果说明,只有进行seq和feature两个维度的mix,就能得到相当合理的结果。
备注:该方法只能在Encoder中使用。
暂无。
一个有意思的思路,不知道能否应用在单向模型中。
Last updated 2 years ago