神经网络激活函数全解析:Sigmoid、Tanh、ReLU、GELU

激活函数为神经网络引入非线性,是深度模型能学习复杂模式的关键,选对函数决定训练成败。
本文用通俗语言解释了神经网络激活函数的作用与选择。激活函数是每个神经元在加权求和后执行的一步非线性变换。没有它,无论堆叠多少层,网络都只能做线性变换,等价于单层。文章依次介绍了 Sigmoid、Tanh、ReLU、Leaky ReLU、GELU/Swish 和 Softmax:Sigmoid 输出 0 到 1 适合二分类末层但有梯度消失;Tanh 以零为中心稍好但同样会消失;ReLU 计算简单、梯度不衰减,成为隐藏层默认选择,但有死亡神经元问题;Leaky ReLU 用微小负斜率缓解;GELU/Swish 平滑,适合 Transformer 大模型;Softmax 用于多分类输出层。文末给出选择法则:隐藏层用 ReLU,二分类用 Sigmoid,多分类用 Softmax,回归不用激活。

神经网络激活函数全解析:Sigmoid、Tanh、ReLU、GELU
TL;DR: 为什么神经网络需要激活函数?本文用通俗语言解释 Sigmoid、Tanh、ReLU、GELU 和 Softmax,附对比表和选择法则。
一个反直觉的事实:你可以堆叠 100 层神经网络,但它和单层网络的能力完全一样。听起来像是骗局?如果不是因为一个叫"激活函数"的小东西,这确实就是骗局。
如果你曾在深度学习教程里看到 ReLU、Sigmoid 或 Softmax 这些词一闪而过,这篇文章就是为你准备的。没有复杂数学,不用害怕。读完你将清楚激活函数到底做什么、为什么存在,以及该选哪个——再也不用慌张地 Google。
激活函数到底是什么?
每个人工神经元做两件事。第一,接收输入,将每个输入乘以权重后求和。第二,把这个总和通过一个小函数,决定神经元应该以多强的程度"激活"。第二步就是激活函数。
想象俱乐部门口的保安。神经元的总和是门外的嘈杂声。保安(激活函数)来决定:太安静,别进;够大声,进来;吵翻天了,也还是一次只放一个人进。不同的保安,不同的规则。
为什么不能跳过它?100 层的秘密
乘法和加法被称为线性运算。线性运算的尴尬之处在于:把它们组合在一起……还是另一个线性运算。两条直线规则叠在一起,仍然只是一条直线规则。所以没有激活函数的网络,无论多深,都只能在你的数据中画直线。
现实问题不是直线的。识别猫、印地语翻译成英语、预测发动机磨损,都涉及曲线和转折。激活函数在每一层添加一个弯折,这些弯折叠加在一起,让网络能够描绘几乎任何形状。这就是全部秘密。
层赋予网络深度。激活函数赋予它使用这种深度的能力。
什么是反向传播? 反向传播(Backpropagation)是训练神经网络的核心算法,也是理解梯度消失问题的前提。简单来说,它分两步走:前向传播时,输入数据逐层计算得到预测输出;然后计算预测与真实标签之间的误差(损失)。接下来是关键的"反向"部分——算法利用微积分的链式法则,从输出层开始逐层往回计算每个权重对误差的"责任大小",也就是梯度。每个权重再按梯度方向微调一点点,让下次预测更准。问题在于,链式法则意味着梯度是各层导数连乘的结果:如果每层导数都小于 1,连乘之后梯度会指数级缩小,这正是 Sigmoid 深层网络早期层"学不动"的根本原因。
主要角色登场
1. Sigmoid:经典但已老去
Sigmoid 把任何数字压缩到 0 到 1 之间,让它看起来像概率。大的正输入给出接近 1,大的负输入给出接近 0。它是早期神经网络的主角,因为它粗略模仿了生物神经元的"要么激活要么安静"。
问题在于: 在两端曲线几乎变平。平意味着斜率接近零,而网络是通过跟随斜率来学习的。即使在最陡的地方,Sigmoid 的斜率也只有 0.25。把这个数字乘以很多层,学习信号会缩小到几乎为零。这就是著名的梯度消失问题。早期层基本停止学习,就像传话游戏,消息还没传到第一个人就已经模糊了。
它仍然发光的地方: 二分类预测(垃圾邮件或非垃圾邮件)的最后一层。
2. Tanh:Sigmoid 更平衡的兄弟
Tanh(读作"tanch")把数字压缩到 -1 到 1 之间。因为输出以零为中心,学习通常比 Sigmoid 更平滑。它在两端仍然会变平,所以同样有梯度消失的头痛问题,只是稍微好一点。你仍然会在 LSTM 等较老的循环网络中遇到它。
3. ReLU:改变一切的"无聊"函数
ReLU 全称 Rectified Linear Unit(修正线性单元),一个非常宏大的名字对应一条非常简单的规则:如果数字是负数,输出 0;否则原样通过。 就这样。代码里就是 max(0, x)。
为什么这么朴素的规则能统治深度学习?两个原因。计算极其廉价(只需比较,没有指数运算)。对于正输入,斜率恰好是 1,所以学习信号在反向传播时不会衰减。ReLU 在 AlexNet 图像模型赢得 ImageNet 竞赛后成为默认选择,开启了现代深度学习热潮。
问题在于: 一个持续接收负输入的神经元会永远输出零,而斜率为零意味着它永远无法恢复。人们称之为"死亡"神经元,或 ReLU 死亡问题。可怜的家伙。
AlexNet 与 ImageNet 的历史意义: 2012 年,Alex Krizhevsky 等人提出的 AlexNet 在 ImageNet 大规模图像识别竞赛中,将 top-5 错误率从前一年的约 26% 骤降到 15% 左右,领先第二名超过 10 个百分点。这一成绩震惊了整个计算机视觉界,被视为深度学习复兴的标志性事件。AlexNet 成功的关键因素之一,正是首次在大规模深层卷积网络中系统性地使用 ReLU 替代 Sigmoid/Tanh。ReLU 让训练深层网络变得可行,训练速度提升数倍。此后,ReLU 迅速成为隐藏层的默认选择,深度学习热潮由此全面爆发。
4. Leaky ReLU:给死者一个脉搏
Leaky ReLU 用一个小改动修复了死亡神经元问题:不是对负数输出精确的 0,而是让一小部分通过(通常是输入的 1%)。神经元始终有斜率,所以总能恢复。
5. GELU 和 Swish:平滑的现代派
ReLU 在零点有一个尖锐的拐角。GELU 和 Swish(也叫 SiLU)把这个拐角磨圆成平缓曲线,这在非常大的模型中通常训练得更好。GELU 被用于 BERT 和 GPT 系列等知名语言模型。一个有趣的冷知识:Swish 是研究人员用自动化搜索尝试许多候选函数时发现的,而不是有人坐下来推导出来的。
Transformer 架构为什么偏爱平滑激活函数: Transformer 是 BERT、GPT 等现代大语言模型的底层架构,其核心是自注意力机制加前馈网络。相比传统 CNN,Transformer 层数更深、参数量更大,对梯度的稳定性要求更高。GELU(高斯误差线性单元)通过引入高斯分布的累积分布函数来平滑地"门控"输入,在负值区域不会像 ReLU 那样硬性归零,而是保留一部分微小信号,让梯度更连续。Swish 则用 sigmoid 乘以输入实现类似效果。这种平滑性在大规模预训练中能显著改善收敛速度和最终性能,因此几乎成为 Transformer 系列模型前馈层的标准配置。
6. Softmax:计票员
Softmax 不同。它不是一次处理一个神经元,而是看一整组输出,把它们变成加起来等于 100% 的百分比。如果模型要在猫、狗和鸟之间做决定,Softmax 可能输出 85%、10% 和 5%。它属于多分类器的最后一层,绝不在中间层。
快速对比
| 函数 | 输出范围 | 最适合 | 注意 |
|---|---|---|---|
| Sigmoid | 0 到 1 | 最终层,二分类输出 | 梯度消失 |
| Tanh | -1 到 1 | 较老的循环网络 | 梯度消失 |
| ReLU | 0 到无穷 | 隐藏层,默认选择 | 死亡神经元 |
| Leaky ReLU | 略低于 0 到无穷 | ReLU 神经元死亡时 | 多一个参数要选 |
| GELU / Swish | 平滑,主要为正 | Transformer,大模型 | 计算量略大 |
| Softmax | 0 到 1,和为 1 | 最终层,多分类 | 不用于隐藏层 |
所以该选哪个?
一个有经验的安全配方,适用于惊人多的项目:
- 隐藏层: 从 ReLU 开始。如果很多神经元似乎死了,试试 Leaky ReLU。
- 二分类输出: Sigmoid。
- 多分类输出: Softmax。
- 回归输出(如预测温度):不用激活函数,直接输出原始值。
- 构建 Transformer: 参考类似模型的做法,通常是 GELU 或 Swish 类函数。
30 秒自己试试
import numpy as np
x = np.array([-3, -1, 0, 1, 3])
sigmoid = 1 / (1 + np.exp(-x))
relu = np.maximum(0, x)
tanh = np.tanh(x)
print("sigmoid:", sigmoid.round(2))
print("tanh :", tanh.round(2))
print("relu :", relu)
运行并比较。注意 Sigmoid 在 3 和 100 之间几乎不变,而 ReLU 持续增长。这个差异正是为什么一个在深度上挣扎,而另一个不会。
常见问题
可以在不同层使用不同的激活函数吗?
可以。隐藏层通常用一种函数(如 ReLU),输出层用另一种(如 Softmax)来匹配任务。
ReLU 总是最好的吗?
不是。它是最好的起点。更新的平滑函数在非常大的模型中可能胜出,但对大多数入门项目来说,ReLU 快速、简单、难以超越。
一句话解释什么是梯度消失?
就是学习信号在反向传播穿过各层时不断缩小,直到早期层几乎得不到反馈,停止改进。
最后思考
激活函数是一个微小的弯折,把一堆直线数学变成能识别面孔、翻译语言、预测故障的东西。小开关,大效果。哪个最让你惊讶:100 层技巧,还是 ReLU 只是 max(0, x)?在评论区告诉我。
如果你觉得有帮助,点❤️并关注获取更多通俗易懂的机器学习和工程指南。新文章每周二和周五发布,这篇属于机器学习基础系列。
本文最初发布于 ML AI Insights Hub。
相关推荐

WorkBuddy全流程教程:从零搭建AI办公自动化智能体
WorkBuddy 全流程教程精讲:从下载安装、三种工作模式到多模态绘本视频实战,再到专家团搭建智能体与工作流配置,帮你用低成本 AI Agent 实现办公自动化。

WorkBuddy智能体全攻略:7天从入门到自动化实战
基于B站256集WorkBuddy全套精讲课程,系统拆解腾讯AI办公工作台的核心能力:Agent原理、Skill封装、连接器跨平台、定时自动化、知识库与零代码开发,附学习路径建议。

8个AI账号翻车7个:我用AI干活的真实复盘
B站8个AI运营账号仅1个跑通。本文拆解"演AI"与"用AI干活"的本质区别,分析5条视频217万播放背后的产能控制、评论区运营和交付节奏策略。