SwiGLU激活函数
SwiGLU激活函数已经成为LLM的标配了。它是GLU的变体,公式如下:
Swish
在nlp和cv任务上,Swish性能都和GELU接近,稍微略高点。但Swish公式更简洁优雅。
GELU早期被BERT、RoBERTa、ALBERT采用。
GLU
单纯从公式看,GLU是一个神经网络层。左右两个线性变换层,左边再接一个门控机制来控制信息流通多少。
SwiGLU
将Swish作为左侧激活函数就得到了SwiGLU。代码如下:1
F.silu(self.w1(x)) * self.w2(x)
在 GLU Variants Improve Transformer 论文中,作者比较了各种GLU变体的激活函数,SwiGLU在各项任务上表现出众。但作者并未给出解释原因,只能说后验是这样,那就选它呗,所以成了LLM的标配。