GLU Variants Improve Transformer

论文地址:

整体思路以及计算方式

FFN的替代品,首先是GLU模块:

GLU(x,W,V,b,c)=f(xW+b)(xV+c)\mathrm{GLU}(\mathbf x, \mathbf W, \mathbf V, \mathbf b, \mathbf c)=f(\mathbf x\mathbf W+\mathbf b) \odot (\mathbf x \mathbf V+\mathbf c)

其中ff是任意激活函数。

定义新的FFN模块:

FFNGLU(x,W,V,W2)=(f(xW)xV)W2\mathrm{FFN}_{\mathrm{GLU}}\left(\mathbf x, \mathbf W, \mathbf V, \mathbf W_{2}\right)=(f(\mathbf x \mathbf W) \odot \mathbf x \mathbf V)\mathbf W_{2}

时间复杂度

假设:

  • xRn×d1\mathbf x\in \mathbb R^{n\times d_1}

  • W,VRd1×d2,W2Rd2×d1\mathbf W,\mathbf V\in \mathbb R^{d_1\times d_2},\mathbf W_2\in \mathbb R^{d_2\times d_1}

所以时间复杂度为:

O(nd1d2)O(nd_1d_2)

这里引入的参数数量为3d1d23d_1d_2,传统FFN的参数数量为8d128d_1^2,要对标参数数量,取

d2=83d1=23×4d1d_2 =\frac{8}{3}d_1 =\frac{2}{3} \times 4d_1

训练以及loss

不变。

代码

无,很简单,直接实现即可。

实验以及适用场景

由于是FFN的替代,所以适用于所有场景;作者测试了GLUE任务,效果相当不错。

细节

暂无。

简评

总结:

  • FFN的简单改进,效果不错,速度如何需要进行测试;

  • 值得复现;

Last updated