激活函数总结(八):基于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. 总结
到此,使用 激活函数总结(八) 已经介绍完毕了!!! 如果有什么疑问欢迎在评论区提出,对于共性问题可能会后续添加到文章介绍中。如果存在没有提及的激活函数
也可以在评论区提出,后续会对其进行添加!!!!
如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦😄。