深度学习——常见激活函数
常见激活函数
激活函数
在 大语言模型( LLM ) 时代,激活函数的设计直接影响模型的表达能力、训练稳定性和计算效率。以下是当前主流的激活函数及其应用场景的总结,涵盖经典方法和最新趋势:
1. 核心激活函数
(1) GeLU( Gaussian Error Linear Unit )
- 公式:\[\text{GeLU}(x) = x \cdot \Phi(x) = x \cdot \frac{1}{2} \left(1 + \text{erf}\left(\frac{x}{\sqrt{2}}\right)\right) \]
- 特点:
- 结合了ReLU的非线性和概率建模能力( 通过高斯分布加权 )。
- 平滑性:在接近0时梯度更连续,缓解ReLU的“死区”问题。
- 近似实现:实际计算中常用近似公式( 如
0.5x(1 + tanh(sqrt(2/π)(x + 0.044715x^3)))
)。
- 应用:
- Transformer的FFN层:BERT、GPT系列、LLaMA等模型的标准选择。
- 替代ReLU以提升深层模型训练稳定性。
(2) Swish( 自门控激活函数 )
- 公式:\[\text{Swish}(x) = x \cdot \sigma(\beta x) \quad (\beta \text{可学习,常固定为1}) \]
- 特点:
- 非单调性有助于模型捕捉复杂特征。
- 在极负区域梯度非零,缓解梯度消失。
- 应用:
- 部分LLM的前馈网络替代GeLU( 如PaLM中使用 SwiGLU 变体 )。
- 轻量级模型的激活函数选择。
(3) ReLU及其变体
-
ReLU:
\[\text{ReLU}(x) = \max(0, x) \]- 优势:计算高效,稀疏激活。
- 劣势:输出非零中心化,可能导致“神经元死亡”。
- LLM应用:部分早期模型( 如T5 )仍使用ReLU,但逐渐被GeLU取代。
-
Leaky ReLU:
\[\text{LeakyReLU}(x) = \begin{cases} x & \text{if } x > 0 \\ \alpha x & \text{otherwise} \end{cases} \quad (\alpha \text{为小斜率,如0.01}) \]- 用途:缓解ReLU的死亡问题,但在LLM中较少使用。
2. 门控机制激活函数
(1) GLU( Gated Linear Unit )
- 公式:\[\text{GLU}(x) = (W_1 x + b_1) \otimes \sigma(W_2 x + b_2) \]
- 特点:通过门控信号动态调节特征重要性,增强模型表达能力。
- 变体:
- SwiGLU:用Swish替代Sigmoid作为门控函数( PaLM、LLaMA-2使用 )。
- GeGLU:用GeLU作为门控函数( T5变体 )。
- 优势:显著提升模型容量,适合大规模参数下的特征交互。
- 计算代价:参数量和计算量翻倍,需权衡性能与效率。
(2) GAU( Gated Attention Unit )
- 特点:将门控机制融入注意力层,动态调节注意力权重( 如FLASH模型 )。
- 公式:\[\text{GAU}(Q, K, V) = \sigma(W_q Q + W_k K) \otimes (W_v V) \]
3. 动态/参数化激活函数
(1) PReLU( Parametric ReLU )
- 公式:\[\text{PReLU}(x) = \max(0, x) + \alpha \cdot \min(0, x) \quad (\alpha \text{可学习}) \]
- 用途:自适应调整负区斜率,但LLM中较少使用。
(2) Dynamic Activation Functions
- Mixture-of-Experts( MoE )激活:
- 不同专家( 子网络 )通过门控选择激活路径( 如Switch Transformer )。
- 优势:动态激活不同参数子集,提升模型容量和稀疏性。
4. 选择激活函数的考量因素
- 训练稳定性:
- GeLU/Swish的平滑性比ReLU更适合深层LLM训练。
- 计算效率:
- ReLU > GeLU > GLU( 门控结构增加计算量 )。
- 模型容量:
- 门控机制( GLU/SwiGLU )显著提升模型表达能力,但需更多参数。
- 硬件优化:
- 激活函数的计算是否容易被融合( 如CuDNN的
fused GeLU
优化 )。
- 激活函数的计算是否容易被融合( 如CuDNN的
5. 常见LLM的激活函数实例
模型 | 激活函数 | 应用场景 |
---|---|---|
GPT-3/4 | GeLU | FFN层 |
PaLM | SwiGLU | FFN层( 替代GeLU ) |
LLaMA-2 | SwiGLU | FFN层 |
BERT | GeLU | FFN层 |
T5 | ReLU | FFN层( 轻量化设计 ) |
FLASH | GAU | 注意力层门控 |
面试回答要点
- 强调GeLU和SwiGLU:解释它们在LLM中的主流地位及数学动机。
- 对比ReLU与GeLU:GeLU的平滑性如何缓解梯度问题。
- 门控机制的价值:GLU变体如何通过动态门控增强模型容量。
- 实际部署考量:激活函数对训练速度、显存占用和硬件支持的影响。
通过掌握这些核心概念,你可以清晰展示对LLM底层机制的理解!
sigmoid和softmax
在 大语言模型( LLM ) 时代,激活函数的设计直接影响模型的表达能力、训练稳定性和计算效率。以下是当前主流的激活函数及其应用场景的总结,涵盖经典方法和最新趋势:
1. 核心激活函数
(1) GeLU( Gaussian Error Linear Unit )
- 公式:\[\text{GeLU}(x) = x \cdot \Phi(x) = x \cdot \frac{1}{2} \left(1 + \text{erf}\left(\frac{x}{\sqrt{2}}\right)\right) \]
- 特点:
- 结合了ReLU的非线性和概率建模能力( 通过高斯分布加权 )。
- 平滑性:在接近0时梯度更连续,缓解ReLU的“死区”问题。
- 近似实现:实际计算中常用近似公式( 如
0.5x(1 + tanh(sqrt(2/π)(x + 0.044715x^3)))
)。
- 应用:
- Transformer的FFN层:BERT、GPT系列、LLaMA等模型的标准选择。
- 替代ReLU以提升深层模型训练稳定性。
(2) Swish( 自门控激活函数 )
- 公式:\[\text{Swish}(x) = x \cdot \sigma(\beta x) \quad (\beta \text{可学习,常固定为1}) \]
- 特点:
- 非单调性有助于模型捕捉复杂特征。
- 在极负区域梯度非零,缓解梯度消失。
- 应用:
- 部分LLM的前馈网络替代GeLU( 如PaLM中使用 SwiGLU 变体 )。
- 轻量级模型的激活函数选择。
(3) ReLU及其变体
-
ReLU:
\[\text{ReLU}(x) = \max(0, x) \]- 优势:计算高效,稀疏激活。
- 劣势:输出非零中心化,可能导致“神经元死亡”。
- LLM应用:部分早期模型( 如T5 )仍使用ReLU,但逐渐被GeLU取代。
-
Leaky ReLU:
\[\text{LeakyReLU}(x) = \begin{cases} x & \text{if } x > 0 \\ \alpha x & \text{otherwise} \end{cases} \quad (\alpha \text{为小斜率,如0.01}) \]- 用途:缓解ReLU的死亡问题,但在LLM中较少使用。
2. 门控机制激活函数
(1) GLU( Gated Linear Unit )
- 公式:\[\text{GLU}(x) = (W_1 x + b_1) \otimes \sigma(W_2 x + b_2) \]
- 特点:通过门控信号动态调节特征重要性,增强模型表达能力。
- 变体:
- SwiGLU:用Swish替代Sigmoid作为门控函数( PaLM、LLaMA-2使用 )。
- GeGLU:用GeLU作为门控函数( T5变体 )。
- 优势:显著提升模型容量,适合大规模参数下的特征交互。
- 计算代价:参数量和计算量翻倍,需权衡性能与效率。
(2) GAU( Gated Attention Unit )
- 特点:将门控机制融入注意力层,动态调节注意力权重( 如FLASH模型 )。
- 公式:\[\text{GAU}(Q, K, V) = \sigma(W_q Q + W_k K) \otimes (W_v V) \]
3. 动态/参数化激活函数
(1) PReLU( Parametric ReLU )
- 公式:\[\text{PReLU}(x) = \max(0, x) + \alpha \cdot \min(0, x) \quad (\alpha \text{可学习}) \]
- 用途:自适应调整负区斜率,但LLM中较少使用。
(2) Dynamic Activation Functions
- Mixture-of-Experts( MoE )激活:
- 不同专家( 子网络 )通过门控选择激活路径( 如Switch Transformer )。
- 优势:动态激活不同参数子集,提升模型容量和稀疏性。
4. 选择激活函数的考量因素
- 训练稳定性:
- GeLU/Swish的平滑性比ReLU更适合深层LLM训练。
- 计算效率:
- ReLU > GeLU > GLU( 门控结构增加计算量 )。
- 模型容量:
- 门控机制( GLU/SwiGLU )显著提升模型表达能力,但需更多参数。
- 硬件优化:
- 激活函数的计算是否容易被融合( 如CuDNN的
fused GeLU
优化 )。
- 激活函数的计算是否容易被融合( 如CuDNN的
5. 常见LLM的激活函数实例
模型 | 激活函数 | 应用场景 |
---|---|---|
GPT-3/4 | GeLU | FFN层 |
PaLM | SwiGLU | FFN层( 替代GeLU ) |
LLaMA-2 | SwiGLU | FFN层 |
BERT | GeLU | FFN层 |
T5 | ReLU | FFN层( 轻量化设计 ) |
FLASH | GAU | 注意力层门控 |
面试回答要点
- 强调GeLU和SwiGLU:解释它们在LLM中的主流地位及数学动机。
- 对比ReLU与GeLU:GeLU的平滑性如何缓解梯度问题。
- 门控机制的价值:GLU变体如何通过动态门控增强模型容量。
- 实际部署考量:激活函数对训练速度、显存占用和硬件支持的影响。
通过掌握这些核心概念,你可以清晰展示对LLM底层机制的理解!