SwiGLU激活函数

SwiGLU激活函数已经成为LLM的标配了。它是GLU的变体,公式如下:
SwiGLU ⁡ ( x , W , V , b , c , β ) = Swish ⁡ β ( x W + b ) ⊗ ( x V + c ) \operatorname{SwiGLU}(x, W, V, b, c, \beta)=\operatorname{Swish}_\beta(x W+b) \otimes(x V+c) SwiGLU(x,W,V,b,c,β)=Swishβ(xW+b)(xV+c)

Swish

S w i s h β ⁡ ( x ) = x ⊗ σ ( β x ) \operatorname{Swish_\beta}(x)=x \otimes \sigma(\beta x) Swishβ(x)=xσ(βx)
在nlp和cv任务上,Swish性能都和GELU接近,稍微略高点。但Swish公式更简洁优雅。

GELU早期被BERT、RoBERTa、ALBERT采用。

GLU

GLU ⁡ ( x , W , V , b , c ) = σ ( x W + b ) ⊗ ( x V + c ) \operatorname{GLU}(x, W, V, b, c)=\sigma(x W+b) \otimes(x V+c) GLU(x,W,V,b,c)=σ(xW+b)(xV+c)
单纯从公式看,GLU是一个神经网络层。左右两个线性变换层,左边再接一个门控机制来控制信息流通多少。

SwiGLU

将Swish作为左侧激活函数就得到了SwiGLU。代码如下:

F.silu(self.w1(x)) * self.w2(x)

GLU Variants Improve Transformer 论文中,作者比较了各种GLU变体的激活函数,SwiGLU在各项任务上表现出众。但作者并未给出解释原因,只能说后验是这样,那就选它呗,所以成了LLM的标配。

各激活函数示意图

act


参考

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值