本文主要是介绍激活函数总结(八):基于Gate mechanism机制的激活函数补充(GLU、SwiGLU、GTU、Bilinear、ReGLU、GEGLU),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
激活函数总结(八):基于Gate mechanism机制的激活函数补充
- 1 引言
- 2 激活函数
- 2.1 GLU激活函数
- 2.2 SwiGLU激活函数
- 2.3 GTU激活函数
- 2.4 Bilinear激活函数
- 2.5 ReGLU激活函数
- 2.6 GEGLU激活函数
- 3. 总结
1 引言
在前面的文章中已经介绍了介绍了一系列激活函数 (Sigmoid
、Tanh
、ReLU
、Leaky ReLU
、PReLU
、Swish
、ELU
、SELU
、GELU
、Softmax
、Softplus
、Mish
、Maxout
、HardSigmoid
、HardTanh
、Hardswish
、HardShrink
、SoftShrink
、TanhShrink
、RReLU
、CELU
、ReLU6
)。在这篇文章中,会接着上文提到的众多激活函数继续进行介绍,给大家介绍关于最近大语言
模型中较火的GLU模型
。这里放一张激活函数的机理图:
最后,对于文章中没有提及到的激活函数,大家可以通过评论指出,作者会在后续的文章中进行添加补充。
2 激活函数
本章节主要介绍了基本结构GLU激活函数
和最近特别火的SwiGLU激活函数
,其余GLU变体激活函数只展示基本公式。
2.1 GLU激活函数
论文链接:Language Modeling with Gated Convolutional Networks
GLU是在语言建模
论文中引入的,这是一个神经网络层
,定义为输入的两个线性变换(矩阵乘法)的分量乘积,其中一个是Sigmoid激活的。这是在变压器出现之前,非循环方法第一次在一些大型语言任务上与强大的循环模型竞争。GLU的数学表达式如下所示:
G L U ( x ) = s i g m o i d ( x W + b ) ⊗ ( x V + c ) GLU(x) = sigmoid(xW+b) ⊗ (xV+c) GLU(x)=sigmoid(xW+b)⊗(xV+c)
在这里,我们看到我们有两个可训练矩阵 W W W 和 V V V,其中 V V V 用于计算门控单元
。门在激活后提供了一个额外的过滤器,可以在训练期间学习,并取决于输入本身。 ⊗ ⊗ ⊗ 运算是逐元素乘法。
根据矩阵运算可视化 GLU,而不使用偏置矩阵 b 和 c:
可以看到:上面最后一个操作中显示的重叠矩阵条目相乘,因此 x V + c xV+c xV+c 的输出充当另一半操作的过滤器
。因此,根据过滤器中的矩阵值,这些相同的条目会变得突出或从 sigmoid 激活矩阵中减少
。
优点:
- 稳定且高效:GLU比ReLU
稳定
得多,学习速度也比sigmoid快。 - 缓解梯度消失:GLU还具有
非线性
功能,但具有梯度的线性路径,因此减少了梯度消失问题。
当前,GLU在自然语言处理架构
中广泛使用,当然还有它的变体模型!!!!
2.2 SwiGLU激活函数
论文链接:GLU Variants Improve Transformer
SwiGLU是Swish和GLU激活函数的组合。在 SwiGLU 中,Swish 函数
用于门控 GLU 的线性函数
。这使得SwiGLU能够抓住Swish和GLU的优势,同时克服它们各自的缺点。SwiGLU已被证明在各种任务中优于Swish和GLU,包括图像分类
,语言建模
和机器翻译
。SwiGLU的数学表达式如下所示:
S w i G L U ( x ) = S w i s h β ( x W + b ) ⊗ ( x V + c ) SwiGLU(x) = Swish_{\beta}(xW+b)⊗ (xV+c) SwiGLU(x)=Swishβ(xW+b)⊗(xV+c)
其中 W W W、 V V V 、 b b b 、 c c c 和 β \beta β 是可训练的参数。
优点:
- 平滑度:SwiGLU比ReLU更
平滑
,可以带来更好的优化
和更快的收敛
。 - 非单调性:SwiGLU是
非单调性
的,这使其能够捕获输入和输出之间的复杂非线性
关系。 - 门控机制:SwiGLU使用
门控机制
,允许它根据接收到的输入选择性地激活
神经元。这有助于减少过度拟合
并改善泛化。 - 普遍性:SwiGLU已被证明在
各种任务
中优于
其他激活功能,包括Swish
和GLU
。
当前,SwiGLU是transformer
领域的大火
模型!!!!对于使用transformer的同学很适合进行尝试!!!!
2.3 GTU激活函数
论文链接:Language Modeling with Gated Convolutional Networks
GTU是一种GLU变体,它使用Tanh
作为激活函数。GTU的数学表达式如下所示:
G T U ( x ) = T a n h ( x W + b ) ⊗ s i g m o i d ( x V + c ) GTU(x) = Tanh(xW+b)⊗ sigmoid(xV+c) GTU(x)=Tanh(xW+b)⊗sigmoid(xV+c)
当前,虽然SwiGLU大火,但是GTU几乎没有使用环境。。。
2.4 Bilinear激活函数
论文链接:GLU Variants Improve Transformer
Bilinear激活函数是省略 sigmoid
函数的 GLU 变体。它是一个双线性变换
,然后是逐元素乘积。Bilinear的数学表达式如下所示:
B i l i n e a r ( x ) = ( x W + b ) ⊗ ( x V + c ) Bilinear(x) = (xW+b)⊗ (xV+c) Bilinear(x)=(xW+b)⊗(xV+c)
当前,虽然SwiGLU大火,但是Bilinear几乎没有使用环境。。。
2.5 ReGLU激活函数
论文链接:GLU Variants Improve Transformer
ReGLU是一种GLU变体,它使用ReLU
作为激活函数。ReGLU的数学表达式如下所示:
R e G L U ( x ) = R e L U ( x W + b ) ⊗ ( x V + c ) ReGLU(x) = ReLU(xW+b)⊗ (xV+c) ReGLU(x)=ReLU(xW+b)⊗(xV+c)
当前,虽然SwiGLU大火,但是ReGLU几乎没有使用环境。。。
2.6 GEGLU激活函数
论文链接:GLU Variants Improve Transformer
GEGLU是使用GELU
作为激活函数的GLU变体。GEGLU的数学表达式如下所示:
G E G L U ( x ) = G E L U ( x W + b ) ⊗ ( x V + c ) GEGLU(x) = GELU(xW+b)⊗ (xV+c) GEGLU(x)=GELU(xW+b)⊗(xV+c)
当前,虽然SwiGLU大火,但是GEGLU几乎没有使用环境。。。
3. 总结
到此,使用 激活函数总结(八) 已经介绍完毕了!!! 如果有什么疑问欢迎在评论区提出,对于共性问题可能会后续添加到文章介绍中。如果存在没有提及的激活函数
也可以在评论区提出,后续会对其进行添加!!!!
如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦😄。
这篇关于激活函数总结(八):基于Gate mechanism机制的激活函数补充(GLU、SwiGLU、GTU、Bilinear、ReGLU、GEGLU)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!