· 模型原理

激活函数:为神经网络注入非线性

从 Sigmoid、Tanh 到 ReLU 家族与 GELU / SwiGLU:梯度消失、神经元死亡,以及 FFN 里到底该用哪个。

模型原理 · 图文笔记
29:04时长
8官方章节
7代激活函数
1条主线
一句话主线:激活函数整条演进史只有一句话—— 修掉上一代最致命的毛病,同时不引入更贵的新毛病。 阶跃函数败在不可导 → Sigmoid 补上可导但饱和 → Tanh 修正零中心但仍是 S 形 → ReLU 用"正半轴导数恒为 1"直接保住梯度但负半轴会"死" → GELU / Swish 把硬拐角磨成平滑过渡,成为大模型时代的标配。 所有取舍最终都落在同一个天平上:表达能力 · 梯度传播 · 计算成本 · 数值稳定性

00全片地图

视频被 B 站自动切成 8 个章节。整条脉络是一条单向的"补短板"链路,可以先看图建立全局印象,再往下逐节展开。

图 1 · 章节时间轴:色带宽度与章节时长成正比
视频章节时间轴(B 站官方自动分段)10:002344:3358:18616:00724:18829:04激活函数的作用为何需要分离设计优秀激活函数素养早期函数:阶跃与 SigmoidReLU 的突破ReLU 的改进方案总结与选择结尾共 29 分 04 秒 · 8 个官方章节 · 色带宽度与章节时长成正比

01为什么必须有激活函数

原片把神经元的单次运算拆成两步:先做线性加权求和 z = Wx + b,再用激活函数做一次非线性映射 a = σ(z)。第二步看起来"很啰嗦",但它才是深度网络区别于线性模型的唯一来源。

图 2 · 神经元的两次运算:线性组合 + 非线性映射
每个神经元都在做两次运算输入x₁, x₂, …, xₙ① 线性组合z = Wx + b对输入加权求和② 非线性映射a = σ(z)激活函数给出输出输出a看起来啰嗦,但 ① 可以完全交给矩阵乘法硬件加速;② 才是「深度」区别于线性模型的唯一来源

证明很直接:把 y = W₃(W₂(W₁x + b₁) + b₂) + b₃ 的括号展开, 会得到 y = (W₃W₂W₁)x + (W₃W₂b₁ + W₃b₂ + b₃) = W′x + b′无论堆多少层,没有激活函数的神经网络永远是一个线性模型。

图 3 · 没有激活函数时,多层线性网络退化为单层
没有激活函数,100 层 = 1 层三层展开式y = W₃(W₂(W₁x + b₁) + b₂) + b₃括号展开y = (W₃W₂W₁)x + (W₃W₂b₁ + W₃b₂ + b₃)结果y = W′x + b′与单层线性变换完全等价无论堆多少层,没有激活函数的神经网络永远只是一个线性模型

02为什么不把非线性直接做进线性运算

既然只差一个非线性,那干脆把 z = Wx + b 写成 z = Wx² + b 一步到位行不行? 原片的结论是:理论上没问题,工程上做不到。

图 4 · 不一步到位的两个理由
为什么不把非线性直接做进线性运算?工程红利丢不起矩阵乘法背后是 BLAS / cuBLAS、Tensor Core、显存带宽优化换成逐元素高次幂,等于放弃整套算子与硬件加速栈历史证据:Maxout、二阶神经元都试过把非线性揉进线性运算结论惊人一致——复杂度涨一个数量级,效果提升不到 10%数值会指数级膨胀以 z = Wx² + b 为例,仅仅叠加三层:y = W₃(W₂(W₁x² + b₁)² + b₂)² + b₃前向:数值迅速爆炸或归零,梯度跟着崩反向:求导系数巨大,梯度剧烈震荡三层就难以训练,十层直接爆炸理论可行,工程不可行 —— 所以解法是「线性变换 + 独立非线性激活」分层堆叠
图 5 · 强非线性叠乘会让数值指数级膨胀
强非线性叠乘:放大倍数按 2ⁿ 增长02805608401120135710叠加层数数值放大倍数强非线性叠乘(每层平方)≈ 2ⁿ纯线性堆叠 ≈ n3 层 = 8 倍10 层 = 1024 倍10 层才 10 倍示意:每层对上一层做平方时的放大倍数。线性堆叠无论如何都不会爆炸

所以工程上的解法是:线性变换 + 独立非线性激活,分层堆叠。激活函数刻意挑那些输出有界或导数温和的形式, 主动掐断指数膨胀的传染链。原片还提到一个历史证据:Maxout、二阶神经元都试过把非线性揉进线性运算, 结论惊人地一致——计算复杂度涨一个数量级,效果提升不到 10%

03一个好激活函数的 6 条标准

这是判断所有激活函数的统一标尺,后面每一代函数都对着这张表打分。

图 6 · 一个好激活函数的六条基本素养
一个「对」激活函数的 6 条基本素养1非线性最基本门槛否则深度毫无意义2几乎处处可导反向传播必须求它的导数最好连续且可导3梯度行为良好不消失也不爆炸理想情况接近 14计算要便宜训练中会被调用上亿次避免指数、除法等昂贵运算5输出零中心避免梯度方向被带偏优化更稳、收敛更快6加分项单调 / 平滑 / 有界硬饱和出现在两端更好取舍标准:在 表达能力 · 梯度传播 · 计算成本 · 数值稳定性 四者之间取得平衡

04第一代:阶跃函数(1958)

最早、最朴素的激活函数,本质上是一个开关:大于 0 输出 1,否则输出 0。 它是"激活"这个动作最直白的翻译,也是第一个被神经网络采用的激活函数。

图 7 · 阶跃函数与它几乎处处为零的导数
阶跃函数(1958)与它的导数0.00.51.0-3-2-10123z输出Step(z) = 1 (z>0) / 0 (z≤0)Step′(z) ≡ 0(仅 z=0 处无定义)梯度死区:误差信号一碰到这里就被清零两个死穴:梯度无法传播 + 信息损失太狠(0.001 和 1000 输出都是 1)
两个死穴,直接判了死刑:
  • 梯度无法传播——除 z = 0 外导数恒为 0,误差信号一碰到阶跃函数就被直接清零,多层网络从根本上无法训练。
  • 信息损失太狠——输入是 0.001 还是 1000,输出都是 1。网络丧失对"程度"的感知,大量数值信息在激活的瞬间被永久丢弃。

原片一句话收束:没有平滑过渡,就没有梯度可言——这直接推动了 Sigmoid 的诞生。

05Sigmoid(1986):把开关变成旋钮

1986 年辛顿等人把反向传播带到神经网络,它需要一个处处可导的激活函数, 于是沿用了 19 世纪就用来描述人口增长的 S 形函数。

σ(z) = 1 / (1 + e−z)   ·   σ′(z) = σ(z)·(1 − σ(z))

图 8 · Sigmoid 曲线与它的导数,峰值只有 0.25
Sigmoid(1986):把开关变成旋钮0.000.250.500.751.00-6-3036z输出σ(z) = 1 / (1 + e⁻ᶻ)σ′(z) = σ(z)·(1 − σ(z))导数峰值仅 0.25两端饱和:斜率以指数速度衰减值域 (0,1) 天然可解释为概率,但 0.25 的上限埋下了梯度消失的隐患

三大优势

  • 处处可导,梯度有解析式,可直接进反向传播
  • 输出有界 (0,1),天然可解释为概率
  • 平滑单调,训练初期收敛稳定

硬伤 ①:梯度消失

  • 导数最大值出现在 z=0,也只有 0.25;|z| 一大就饱和
  • 反向传播每过一层就要乘一次这样的导数
  • 5 层之后梯度只剩千分之一,深层几乎学不动
图 9 · 0.25 连乘 5 次后,梯度只剩千分之一
0.25 连乘 5 次:梯度只剩千分之一纵轴为对数刻度(数量级)1e-61e-51e-41e-31e-21e-110.251 层2 层0.01563 层4 层0.0009775 层6 层6.1e-057 层8 层9 层9.54e-0710 层第 5 层 ≈ 0.001,误差信号基本归零「外层在百米冲刺,内层却还在原地踏步」——这是早期网络难以训深的根本原因
图 10 · Sigmoid 的硬伤 ②(非零中心)与 ③(计算贵 + 天然饱和)
Sigmoid 的硬伤 ② 与 ③输出非零中心输出永远为正,均值远离 0下一层反向传播算出的梯度永远同号权重更新只能走「Z 字路线」结果是收敛慢、优化效率低计算贵 + 天然饱和含指数运算,比乘法贵近 10 倍把 (−∞, +∞) 硬挤进 (0,1)压缩的另一端就是饱和两端斜率以指数速度衰减结论:如今 Sigmoid 主要保留在输出层,用于二分类任务的概率输出
原片结论:如今 Sigmoid 主要保留在输出的位置,作为二分类任务的输出层。

06Tanh(1990s):把 Sigmoid 摆正

tanh(z) = (ez − e−z) / (ez + e−z) = 2σ(z) − 1   ·   tanh′(z) = 1 − tanh²(z)

原片提到,90 年代初福尔廷在贝尔实验室研究手写数字识别时,被 Sigmoid 的非零中心问题折磨, 1998 年的 Efficient BackProp 中系统总结了 Tanh 的优势:输出值域被拉伸到 (−1, 1),关于原点对称

图 11 · Tanh 与 Sigmoid 的零中心对比
Tanh(1990s):把 Sigmoid 摆正到零中心-1.0-0.50.00.51.0-4-2024z输出tanh(z) = 2σ(z) − 1,值域 (−1,1)Sigmoid,值域 (0,1)(对照)Sigmoid 全部落在正半轴Tanh 关于原点对称 → 零中心达标但本质仍是 S 形曲线,饱和问题并没有被解决

但原片点得很清楚:它本质还是 S 形曲线,饱和问题根本没解决。

07ReLU(2010):真正的转折点

图 12 · ReLU 的三大优势
ReLU(2010)的三大优势1大幅缓解梯度消失正半轴导数恒为 1梯度信号不再被逐层压缩深层网络第一次真正被训练起来2计算极快只需一次比较运算没有指数、没有除法是训练成本最低的激活之一3天然稀疏激活负数输入直接置零每次前向约一半神经元真正激活自带正则化效果ReLU 很快取代 Sigmoid 与 Tanh,成为深度学习时代最具代表性的激活函数

ReLU 的出现直接改写了历史。2012 年 ImageNet 竞赛上,AlexNet 把图像分类错误率一举降到 15.3%, 领先第二名 10.8 个百分点,而它用的激活函数正是 ReLU。

图 13 · 2012 年 AlexNet 与 ReLU:ImageNet 错误率对比
2012 年 AlexNet 改写历史:ImageNet 图像分类错误率0%8%16%24%32%26.2%前一年最佳26.1%2012 第二名15.3%AlexNet(ReLU)错误率 26.2% → 15.3%,领先第二名 10.8 个百分点;从那一刻起整个 CV 圈迅速转向深度学习
前一年最佳26.2%
AlexNet(用 ReLU)15.3%
领先第二名10.8 pt

原片评价:从那一刻起,整个 CV 圈迅速转向深度学习——ReLU 几乎亲手开启了现代深度学习时代

08ReLU 的代价:Dying ReLU

图 14 · ReLU 的负半轴死亡区与另外两项代价
ReLU 的代价:负半轴的「一刀切」0123-3-1013z输出ReLULeaky ReLU(对照)死亡区:输出恒为 0梯度也恒为 0,不会再被唤醒死亡 ReLU某次更新把偏置推向负值该神经元输出与梯度恒为 0彻底死亡,再也唤不醒其余两项代价非零中心:输出恒 ≥ 0,可接受输出无上限:深层 + 大学习率易发散所以 ReLU 时代离不开 BatchNormReLU 的杀手锏与软肋是同一个东西:负半轴的「一刀切」

原片用一句话概括:ReLU 的杀手锏和它的软肋是同一个东西——负半轴的"一刀切"

09改进方案:给负半轴留一条缝

LeakyReLU(z) = z (z > 0)  ·  αz (z ≤ 0),α 为手调超参

图 15 · 负半轴的三种处理方式
改进的核心:负半轴到底怎么处理-1.0-0.50.0-3-2-10z(负半轴放大)输出ReLU:直接归零 → 会死Leaky ReLU:留 1% 斜率 → 不会死ELU:平滑趋近 −1 → 零中心三者在正半轴完全一致Leaky ReLU 的代价是引入超参 α;多数场景 ReLU + 良好初始化 + BatchNorm 已经够用
  • Leaky ReLU:负半轴留一个极小斜率(如 0.01),导数永远不为 0,神经元不会彻底死亡;当训练中出现大量神经元死亡时值得一试。 但 α 是手动超参、0.01 不一定最优,多数情况下 ReLU + 良好初始化 + BatchNorm 已经够用
  • ELU:负半轴平滑趋近 −1,顺带把零中心也修了,代价是引入指数运算。
图 16 · GELU 曲线与它在 Transformer 中的地位
GELU = Transformer 的标配01234-4-2024z输出GELUReLU(对照:硬拐角)正半轴近似线性负半轴平滑下凹,而非硬归零✓ 应用场景Transformer 类模型的前馈网络层BERT / GPT / ViT 等主流架构✗ 代价需要 tanh、三次方、平方根运算比 ReLU 慢得多2016 年提出,2018 年随 BERT 进入大众视野;在大模型时代的地位几乎等同于 ReLU 在 CNN 时代

GELU 于 2016 年提出,2018 年随 BERT 进入大众视野,此后 GPT、ViT 以及几乎所有主流 Transformer 模型相继跟进。 它在大模型时代的地位,几乎相当于 ReLU 在 CNN 时代的地位。

图 17 · Swish / SiLU 的构造:x 乘以自己的 Sigmoid 门控
Swish / SiLU:机器自己挑出来的输入xSigmoid 门控σ(x)把 x 映射为 0~1 的权重逐元素相乘Swish(x) = x · σ(x)门控决定放行多少NAS 搜出来的2017 Google Brain结果与 GELU 几乎一致2016 年 Elfwing 等人已独立提出同一函数,命名 SiLU(PyTorch 即 nn.SiLU);相比 GELU 只需一个 Sigmoid,计算更轻

2017 年 Google Brain 用神经架构搜索让模型自己挑激活函数,搜出来的形式与 GELU 几乎一模一样: Swish(x) = x · σ(x)。而 2016 年 Elfwing 等人其实已经独立提出过完全相同的函数, 命名为 SiLU(Sigmoid Linear Unit),PyTorch 中即 nn.SiLU。 相比 GELU,它只需一个 Sigmoid,计算更轻

图 18 · S 形族曲线总览(颜色 + 虚线样式双重区分)
S 形族:Sigmoid / Tanh / GELU / SiLU-101234-4-2024z输出Sigmoid(实线)Tanh(长虚线)GELU(密点线)SiLU(点划线)两条 S 形曲线两端饱和;GELU / SiLU 正半轴近似线性、负半轴有小的凹陷 —— 这就是「平滑」的几何来源
图 19 · ReLU 族曲线总览:正半轴一致,差别全在负半轴
ReLU 族:正半轴一致,差别全在负半轴-10123-3-2-10123z输出ReLU(实线)Leaky ReLU(长虚线)ELU(密点线)负半轴:ReLU 归零 / Leaky 留斜率 / ELU 平滑趋近 −1三者正半轴完全相同,差异只在负半轴如何处理;代价是多了超参或额外运算

10Swish 在实战里站稳了哪些场景

图 20 · Swish 在实际模型中的应用版图
Swish 在实战里站稳了哪些场景应用场景代表模型选择视觉卷积网络EfficientNet、MobileNetV3Swish大模型前馈网络 FFNLLaMA、Mistral、Qwen、PaLMSwiGLU比 ReLU 多走一步精度敏感、愿意付计算成本SwishSwish ≈ GELU 但形式更简单 —— 大模型时代的另一常见选择

原片结论一句:Swish ≈ GELU,但形式更简单——大模型时代的另一常见选择。 补充一个来自评论区的实践共识(该视频热评,9 赞):"现在要么 GELU,要么 SiLU"

11每一代解决了什么问题

图 21 · 五代激活函数的问题—解法对照
每一代激活函数解决了什么问题代际它解决了什么留下的新问题阶跃函数回答了「要不要激活」太硬、不可导,信息丢失太狠Sigmoid第一次让可导的非线性进入网络饱和后梯度消失、非零中心,深层学不动Tanh把 Sigmoid 的零中心问题修正本质仍是 S 形,饱和问题根本没解决ReLU用最直接的方式保住梯度(正半轴恒为 1)Dying ReLU、非零中心、输出无上限GELU / Swish把 ReLU 的硬拐角磨成平滑过渡计算更贵,成为大模型 / Transformer 标配主线只有一句话:修掉上一代最致命的毛病,同时不引入更贵的新毛病

12今天,到底该选谁?

图 22 · 三类场景的选型建议
今天,到底该选谁?输出层Sigmoid / Softmax概率问题需要把输出压到 (0,1) 并归一普通隐藏层ReLU很多场景下 ReLU 仍然够用,计算最便宜Transformer / 大模型GELU / SiLU (Swish)平滑过渡对深层大模型更友好,是当前主流激活函数提供「非线性」,梯度下降提供「学习能力」——一个让网络能拟合任意函数,一个让它能找到正确参数
原片收尾的一句话值得单独记下来:
激活函数提供"非线性",梯度下降提供"学习能力"——一个让网络能拟合任意函数,一个让网络能找到正确参数。
Sigmoid 导数峰值0.25
连乘 5 层后梯度≈0.001
AlexNet 错误率15.3%
Tanh 值域(−1, 1)

13完整章节与跳转时间

时间章节核心内容
00:00激活函数的作用神经元两次运算:线性组合 + 非线性映射
00:45为何需要分离设计不一步到位的两个理由:工程红利 / 数值爆炸
02:08优秀激活函数素养六条评估标准与"四者平衡"
04:33早期函数:阶跃与 Sigmoid阶跃两个死穴 → Sigmoid 的诞生与三大优势
08:18ReLU 的突破Sigmoid 三大硬伤 → Tanh → ReLU → AlexNet
16:00ReLU 的改进方案Dying ReLU → Leaky ReLU → GELU → Swish/SiLU
24:18总结与选择五代演进复盘 + 三类场景选型
28:01结尾非线性 + 梯度下降 = 拟合能力 + 学习能力
取材与还原方式(本笔记的每一条结论来自哪里)
  • 结构与内容来源:B 站公开接口 player/v2 返回的官方章节时间轴(8 段), 以及 web-interface/view 的视频元数据(时长 1744 秒、合集共 33 集)。
  • 逐页内容还原:官方分镜雪碧图(4 张 10×10、单帧 480×270)按 1 帧 ≈ 5.68 秒裁帧,配合 8 张 1280×662 章节封面,逐页读取幻灯片文字后转写。
  • 本版不含任何视频截图:全部 22 张图均为按内容重绘的矢量图解, 曲线由解析式实时计算(σ、tanh、ReLU、LeakyReLU、ELU、GELU、SiLU), 因此可无损缩放、离线可看、文件内不含任何第三方图片。
  • 标注约定原片观点 表示来自视频幻灯片; 补充 表示我额外加入的说明或对照数据。
  • 视频标记为 no_reprint = 1(禁止转载),且无公开 CC 字幕。 本笔记为个人学习用途的内容整理与重绘,不复制原视频画面。

出处:原视频《激活函数:为神经网络注入灵魂》由 B 站 UP 主 谦行AIing 发布,属《深度学习》合集(33 集)第 6 讲。 本笔记为个人学习用途的结构化整理与图解重绘,所有图解均为依据讲解内容自行绘制,未使用原视频画面。

生成于 2026-09-22 21:30 · 全 SVG 矢量版

分享:
返回文章列表

相关文章

全部文章 »

前向传播与反向传播概述

微调场景下的前向产物、反向传播机制,以及冻结参数与 LoRA 等不同策略对反向计算图的实际影响。