【大模型知识点】SwiGLU激活函数

SwiGLU(Swish-Gated Linear Unit)是一种结合了Swish激活函数和GLU(Gated Linear Unit)机制的激活函数,广泛应用于现代大型语言模型(LLM)中,尤其是在Transformer架构的前馈网络(FFN)部分。

那么在介绍SwiGLU之前,先介绍一下Swish激活函数和GLU(Gated Linear Unit)机制:

1.Swish激活函数

参考博客:神经网络常见激活函数 12-Swish函数

【大模型知识点】SwiGLU激活函数_第1张图片

Swish激活函数的图像:
【大模型知识点】SwiGLU激活函数_第2张图片

特性与优势:

  • ​平滑性:Swish是一个平滑的函数,在 ≈0附近,GLU(x) 平滑过渡。且其导数在任何地方都是连续的,避免了像 ReLU 那样的硬拐点。这使得它在优化过程中能够避免ReLU的梯度消失问题,同时提供更稳定的梯度流动,有助于提高模型的收敛速度和稳定性
  • 非单调性:Swish是一个非单调函数,Swish在某些区间内递增,在某些区间内递减,能够捕捉更复杂的非线性关系,为模型提供了更丰富的表达能力。它在负输入时仍然可以保持小梯度,同时在正输入时能够有效激活。
  • ​自门控特性:Swish的输出取决于输入 x 和Sigmoid函数的乘积,这使得它具有自门控的特性。这种特性允许模型动态地选择哪些信息是重要的,哪些可以被忽略。

缺点: 与 ReLU 相比,Swish 的计算成本更高,因为它涉及到 sigmoid 函数的计算。由于计算复杂度的增加,Swish 可能会导致训练时间变长。

2.GLU(Gated Linear Unit)

GLU(Gated Linear Unit)是一种引入了门控机制的激活函数,核心思想是将输入数据通过两个线性变换,其中一个变换的结果通过Sigmoid函数进行非线性处理,另一个保持线性,然后两者逐元素相乘。其数学表达式为

【大模型知识点】SwiGLU激活函数_第3张图片
  • ​线性变换:输入 x 经过两个线性变换,分别得到 W 1 X + b 1 W_1X+b_1 W1X+b1 , W 2 X + b 2 W_2X+b_2 W2X+b2
  • ​门控机制: W 1 X + b 1 W_1X+b_1 W1X+b1通过Sigmoid函数生成门控信号(输出范围在 (0,1) 之间),控制 W 2 X + b 2 W_2X+b_2 W2X+b2 的信息流动。
  • ​逐元素相乘:门控信号与 W 2 X + b 2 W_2X+b_2 W2X+b2 线性变换结果逐元素相乘,输出最终结果,决定哪些信息要传递(1),哪些要抑制(0)。

GLU 的优势:

✅ 提高模型的表达能力
由于门控单元可以学习性地决定信息流动,GLU 允许模型有选择地传递重要信息,而抑制无关信息。
✅避免梯度消失
标准 ReLU 会导致负数变成 0,信息丢失。GLU 使用 Sigmoid 门控,不会直接丢失所有信息,即使梯度较小,也能保留一定的信息流。
✅ 适用于序列建模
在 NLP、时间序列等任务中,GLU 可以有效捕获长距离依赖关系,为什么,解释如下:

GLU激活函数通过门控机制对输入进行筛选和调控。门控部分使用Sigmoid函数对中间向量进行处理,生成一个0到1之间的门控向量。这个门控向量决定了输入的哪些部分应该被保留、哪些部分应该被抑制。通过这个机制,GLU能够有选择地过滤输入的某些部分,将重要的信息传递给下一层,而抑制不重要的信息。这种筛选机制使得网络能够更加关注长期依赖关系中的重要部分,长距离依赖的信息如果重要,门控值会较大(接近 1),从而保持信息流动,更好地捕捉长期依赖关系。

思考:如果W=1,b=0,Swish的超参=1,输入X是单变量,那么GLU应该和Swish一样

3)SwiGLU:Swish和GLU的结合

SwiGLU结合了Swish的平滑性和GLU的门控机制,在大语言模型(如LLaMA、GPT)中表现出色,⊙表示逐元素相乘

它与标准GLU的区别是,SwiGLU 用 Swish 替代了 Sigmoid作为门控单元,使得SwiGLU更具表达能力

为什么 SwiGLU 更强?

1️⃣ 更平滑的梯度流动
GLU 使用 Sigmoid 作为门控,而 Sigmoid 在极端值(接近 0 或 1)时梯度很小,可能会导致梯度消失。
SwiGLU 采用 Swish,其梯度更加平滑,使得信息可以更稳定地通过网络,提高模型的训练效率。

2️⃣ 增强的信息选择能力
GLU 只会让信息 “通过” 或 “不通过”,本质上是一个二值化的门控(尽管是连续的)。
SwiGLU 允许信息部分通过,因为 Swish 在 <0时仍有非零输出,使得信息可以更细腻地被保留和调整。

3️⃣ 更强的特征表达能力
Swish 是一个非单调激活函数(不像 ReLU 或 Sigmoid)。SwiGLU 在 Transformer FFN 结构中比 GLU 更有效,因为 Swish 允许负值信息在一定程度上通过,而 Sigmoid 可能会完全抑制负值信息。

你可能感兴趣的:(AI知识,LLM,激活函数,SwiGLU,RELU)