激活函数总结(八):基于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 WW 和 V VV,其中 V VV 用于计算门控单元。门在激活后提供了一个额外的过滤器,可以在训练期间学习,并取决于输入本身。⊗ ⊗⊗ 运算是逐元素乘法。
根据矩阵运算可视化 GLU,而不使用偏置矩阵 b 和 c:
可以看到:上面最后一个操作中显示的重叠矩阵条目相乘,因此 x V + c xV+cxV+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 WW、V VV 、b bb 、c cc 和 β \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. 总结
到此,使用 激活函数总结(八) 已经介绍完毕了!!! 如果有什么疑问欢迎在评论区提出,对于共性问题可能会后续添加到文章介绍中。如果存在没有提及的激活函数也可以在评论区提出,后续会对其进行添加!!!!
如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦😄。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_36758270/article/details/132174106