跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

大模型核心组件解析:激活函数与 FFN 块详解

详细解析了大模型中 FFN 块的结构及其核心激活函数。内容涵盖 GeLU、Swish 及 GLU 系列的数学定义、特性分析与适用场景。重点介绍了 GeLU 在 Transformer 中的广泛应用,Swish 的非单调性与平滑性,以及 GLU 门控机制如何通过 GeGLU 和 SwiGLU 变体提升模型表达能力。文章提供了 PyTorch 代码实现示例,并给出了针对不同硬件与性能需求的激活函数选型建议,旨在帮助开发者深入理解底层原理并优化模型配置。

修罗发布于 2025/2/6更新于 2026/9/864 浏览
大模型核心组件解析:激活函数与 FFN 块详解

大模型核心组件解析:激活函数与 FFN 块详解

1. FFN 块在 Transformer 中的作用

Feed-Forward Network(前馈神经网络)块是 Transformer 架构中的关键组件之一。它位于每个自注意力层之后,负责对特征进行非线性变换和维度映射。标准的 FFN 结构包含两个线性变换层和一个激活函数。

计算公式如下: $$ \text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2 $$ 其中 $W_1, W_2$ 为权重矩阵,$b_1, b_2$ 为偏置向量。在现代大模型中,激活函数通常替换为更复杂的变体以增强表达能力。

2. GeLU 激活函数

GeLU(Gaussian Error Linear Unit)是目前大模型中最常用的激活函数之一,广泛应用于 BERT、GPT 等经典架构。

2.1 数学定义

精确的 GeLU 公式基于高斯累积分布函数: $$ \text{GeLU}(x) = x \cdot \Phi(x) = x \cdot \frac{1}{2} \left[ 1 + \text{erf}\left(\frac{x}{\sqrt{2}}\right) \right] $$ 工程实现中常使用近似公式以提高计算效率: $$ \text{GeLU}(x) \approx 0.5 \cdot x \cdot \left( 1 + \tanh\left(\sqrt{\frac{2}{\pi}} \cdot (x + 0.044715 \cdot x^3)\right) \right) $$

2.2 特性分析

  • 平滑性:相比 ReLU,GeLU 在零点附近可导且平滑,有利于梯度传播,减少梯度消失风险。
  • 稀疏性:负值区域输出接近 0,保留了一定的稀疏性,有助于模型压缩。
  • 性能:在多项基准测试中,GeLU 的表现优于 ReLU 和 Tanh,特别是在深层网络中。

3. Swish 激活函数

Swish 由 Google Brain 提出,是一种自门控激活函数,近年来在大模型领域也得到应用。

3.1 数学定义

$$ \text{Swish}(x) = x \cdot \sigma(\beta x) $$ 其中 $\sigma$ 为 Sigmoid 函数,$\beta$ 为可学习参数或固定常数。当 $\beta=1$ 时效果最佳。

3.2 特性分析

  • 非单调性:允许负值区域有少量输出,增加了函数的非线性程度和表达能力。
  • 平滑过渡:避免了 ReLU 的'死亡神经元'问题,在训练初期更加稳定。
  • 应用:常用于 MobileNetV2 及某些 LLM 变体中,但在 Transformer 中不如 GeLU 普及。

4. GLU 线性门控单元

GLU(Gated Linear Unit)通过引入门控机制控制信息流,增强了模型的非线性能力。

4.1 基础 GLU

$$ \text{GLU}(x) = (xW_1 + b_1) \otimes \sigma(xW_2 + b_2) $$ 其中 $\otimes$ 表示逐元素乘法。这种结构允许模型动态选择输入信息的哪些部分需要被传递。

4.2 变体:GeGLU 与 SwiGLU

现代大模型(如 PaLM、LLaMA)倾向于使用带特定激活函数的门控单元。

  • GeGLU: 使用 GeLU 作为门控激活,结合了 GLU 的结构优势和 GeLU 的性能优势。
  • SwiGLU: 使用 Swish 作为门控激活,计算效率更高,在 LLaMA 系列模型中被广泛采用。

5. PyTorch 代码实现示例

以下展示如何在 PyTorch 中实现一个基于 GeLU 的 GLU 模块:

import torch
import torch.nn as nn

class GeGLU(nn.Module):
    def __init__(self, d_model, expansion_factor=4):
        super().__init__()
        self.w1 = nn.Linear(d_model, d_model * expansion_factor)
        self.w2 = nn.Linear(d_model * expansion_factor, d_model)
        self.act = nn.GELU()

    def forward(self, x):
        # 线性变换
        x_proj = self.w1(x)
        # 分割为门控部分和投影部分
        gate = self.act(x_proj[:, :, :d_model])
        proj = x_proj[:, :, d_model:]
        # 门控相乘
        return self.w2(gate * proj)

6. 总结与选型建议

在大模型训练中,激活函数的选择直接影响收敛速度和最终性能。

  1. 通用场景:推荐使用 GeLU,稳定性好,生态支持完善。
  2. 移动端/低资源:可考虑 Swish 或其近似版本,计算开销相对可控。
  3. 高性能需求:SwiGLU 在 LLaMA 系列中证明了其优越性,适合追求极致性能的架构。

开发者应根据具体任务需求、硬件环境及模型架构进行权衡,并在实际训练中观察 Loss 曲线以验证选择的有效性。

目录

  1. 大模型核心组件解析:激活函数与 FFN 块详解
  2. 1. FFN 块在 Transformer 中的作用
  3. 2. GeLU 激活函数
  4. 2.1 数学定义
  5. 2.2 特性分析
  6. 3. Swish 激活函数
  7. 3.1 数学定义
  8. 3.2 特性分析
  9. 4. GLU 线性门控单元
  10. 4.1 基础 GLU
  11. 4.2 变体:GeGLU 与 SwiGLU
  12. 5. PyTorch 代码实现示例
  13. 6. 总结与选型建议

更多推荐文章

查看全部
  • AI 绘画关键词网站效率提升实战:从数据预处理到模型加速
  • 前端 GraphQL 客户端:优雅地获取数据
  • LangChain 向量存储与检索器使用指南
  • 大模型落地:追求极致的务实主义
  • 机械臂关节空间轨迹规划的 B 样条算法实现
  • C++ 多线程同步之条件变量(condition_variable)实战
  • AI 产品经理面试核心考点与实战指南
  • C++ 红黑树实现详解:STL map 底层数据结构解析
  • C++容器:stack、queue、deque 基本用法详解
  • AI 入门指南:从零开始掌握人工智能基础与实践
  • 从零开始模拟实现 STL vector 容器
  • MAVROS 安装与基础知识梳理及 ROS C++ 仿真案例
  • 多模态大语言模型(MM-LLMs)架构与训练进展综述
  • 10 个实用的 Python 自动化办公脚本示例
  • 基于 DeepFace 和 OpenCV 的情绪分析器
  • DeepSeek、Kimi、笔灵等 5 款网文 AI 写作工具实测横评
  • Django Web 框架入门与核心使用
  • Stable Diffusion 系列演进与核心技术解析 (2022-2026)
  • 基于开源多情感 TTS 模型的 WebUI 部署与实践
  • 基于 YOLOv13 的无人机航拍电动自行车违规载人检测系统实战

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online