文章目录
SWiGLU是大模型常用的激活函数,是2020年谷歌提出的激活函数,它结合了Swish和GLU两者的特点。SwiGLU激活函数因其在多个方面的优势而被广泛应用于大型语言模型中。
1. Swish
基本定义
Swish是由Google Brain提出的一种激活函数,它的数学表达式如下:

其中 σ ( x ) \sigma(x) σ(x) 是sigmoid函数,β是一个可学习的参数。
- 当β趋近于0时,Swish函数趋近于线性函数 y = x 2 y = x^2 y=x2
- 当β取值为1时,Swish函数是光滑且非单调的,等价于SiLU激活函数
- 当β趋近于无穷大时,Swish函数趋近于ReLU函数。
Swish函数的图如下所示:

Swish的名称可能来源于其形状与鱼的尾巴相似,给人一种平滑、流畅的联想,这与"swish"这个词的含义相吻合。
补充:SiLU(Sigmoid Linear Unit)激活函数表达式如下:
SiLU具备无上界有下界、平滑、非单调的特性。SiLU在深层模型上的效果优于 ReLU。可以看做是平滑的ReLU激活函数。
主要特点
Swish函数的特点包括:
- 非线性:Swish引入了非线性,使得神经网络能够学习和模拟复杂的函数。
- 平滑性:Swish函数在整个定义域内都是光滑且连续的,这有助于在优化过程中计算梯度。
- 自适应性:Swish函数的输出取决于输入值,这使得它能够自适应地调整激活函数的形状。
Swish函数在一些实验中表现出了比ReLU更好的性能,尤其是在一些深度神经网络中。Swish函数既有 ReLU(Rectified Linear Unit)激活函数的一些优点(例如,能够缓解梯度消失问题),又能解决 ReLU 函数的一些缺点(例如,ReLU 函数不是零中心的,且在负数部分的梯度为零)。此外,Swish 函数还是平滑函数,这意味着它在整个定义域内都有导数,这有利于优化。然而,Swish函数的计算复杂度较高,因为它涉及到sigmoid函数的计算。因此,在实际应用中,需要根据具体的任务和模型结构来选择合适的激活函数。
代码实现
Swish函数的代码实现如下:
import numpy


最低0.47元/天 解锁文章
3373

被折叠的 条评论
为什么被折叠?



