激活函数有什么用?Sigmoid、Tanh、ReLU 到底怎么选?

🎯 博主简介

你好,我是安逸,CSDN「人工智能技术领域新星创作者」,码龄 6 年。博客总访问量 31万+,博客粉丝 1.2万+。

我长期关注人工智能技术与工程实践,主要研究和分享 AI Agent、RAG 系统、MCP 协议、OpenClaw、AI 编程工具以及大模型工程化落地。同时也持续输出 Java / Spring、Transformer、机器学习、深度学习与计算机视觉等方向的学习笔记和项目经验。

📚 推荐系列合集

目前已经整理了 生产级 RAG 系统实战、Agent 记忆系统、MCP 协议深度解析、OpenClaw 系列、Hermes Agent + Obsidian、图解机器学习、Claude Code 系列和 Agent 经典面试题等系列合集,涵盖 AI 应用开发、智能体实践、知识管理、机器学习与 AI 编程工具。

📱GZH:安逸Ai (科技前沿新闻,Github热门项目,最新免费资料...)

网页观看完整系列合集:🌐 Anyi AI 学习资源站


上篇文章我们把神经网络拆成了一颗颗"积木"------神经元。

你知道了加权求和是怎么回事,知道了信息是怎么一层层往前传的。

但有个问题一直悬着:每层神经元算完数字之后,是直接原封不动地传给下一层吗?

当然不是。

神经元的输出前,还要过一道"安检门"。这道门,决定了信号是放大、缩小,还是直接掐掉。

这个"安检门",就是激活函数。

它才是让神经网络真正"活"起来的东西。


激活函数是什么?------神经网络的"决策阀门"

先来看一颗神经元长什么样。

神经网络单个神经元工作流程图,显示输入加权求和、激活函数处理、输出的完整过程

你给它一堆输入 x1、x2、x3... 每个输入带个权重 w1、w2、w3...

神经元先把所有输入加权求和:z = w1×x1 + w2×x2 + w3×x3 + b

然后呢?

然后就完了吗?

如果就这样直接传出去,那神经网络跟一个计算器没什么区别。

三层堆在一起,也不过是做了更多次加法和乘法。

这东西学不了复杂规律,因为它本质上是线性的。

那怎么才能让它"非线性"呢?

加个激活函数。

激活函数把加权求和的结果 z 扔进去,吐出来一个非线性变换后的值 a。

a = f(z)

这个 a 才是神经元的真正输出。

你可能觉得这也没多玄乎。但就是这个小小的非线性函数,彻底改变了神经网络的能力边界。

没有它,十层网络等于一层。

有了它,神经网络能拟合任意复杂的关系------图片识别、自然语言处理、下棋、开车,统统拿下。

想象一个投票站。

神经元收到一堆意见,每条意见影响力不同(权重),最后汇总成一股声音。

但汇总完了还不能直接定结论------得看看这声音够不够响。

激活函数就是那个门槛:声音太小,直接淘汰;声音够大,才能影响最终决策。

这就是神经网络的"决策阀门"。


三个经典激活函数------Sigmoid、Tanh、ReLU的个性特征

神经网络发展了几十年,科学家们发明了一堆激活函数。

但真正被广泛使用的,就那么几个。

先看最经典的三剑客。

同一坐标系下Sigmoid、Tanh、ReLU三条激活函数曲线,标注各函数值域范围

Sigmoid:谨慎的"翻译官"

Sigmoid 的公式长这样:

σ(x) = 1 / (1 + e^(-x))

它把任意输入压缩到 0 到 1 之间。

x 越小,输出越接近 0;x 越大,输出越接近 1。

这像什么?

像一个谨慎的翻译官。

不管你说什么,它都给你翻译成"可能性"。

这件事发生的概率是多少?0.7。

那件事呢?0.2。

0 到 1 之间,天生适合表示概率。

所以 Sigmoid 长期被用在二分类问题的输出层。

但它有个致命缺陷。

当 x 很大或很小的时候,Sigmoid 的输出基本不动了------要么接近 0,要么接近 1。

这时候梯度也几乎变成了零。

梯度是反向传播的关键。梯度为零,权重就更新不了。

这叫"梯度消失"。

这个问题,我们后面会重点讲。

Tanh:双向"翻译官"

Tanh 的公式:

tanh(x) = (e^x - e^(-x)) / (e^x + e^(-x))

它的输出范围是 -1 到 1。

跟 Sigmoid 比,它是以 0 为中心的。

什么意思?

输出可以是正的,也可以是负的。

正负代表两种"态度":正的是"支持",负的是"反对"。

这种特性让它在隐藏层比 Sigmoid 更好用。

收敛速度更快,训练更稳定。

但 Tanh 也没逃过梯度消失的命运。

当 x 绝对值很大时,曲线又变平了,梯度又没了。

ReLU:简单粗暴的"直通道"

ReLU 的公式简单到离谱:

f(x) = max(0, x)

就一行。

x 大于 0,直接输出 x;x 小于等于 0,输出 0。

像什么?

像一个直通道。

正向信号畅通无阻,负向信号直接砍掉。

ReLU 牛在哪里?

第一,计算极快。

不用算指数,不用算复杂函数,就一个比较操作。

第二,x 大于 0 时,梯度恒为 1。

反向传播时,梯度原封不动地往前传。

梯度消失?不存在的。

2012 年 AlexNet 用 ReLU 炸场之后,这玩意儿就成了隐藏层的默认选择。

但 ReLU 有个问题,而且挺严重。


梯度消失------深度学习的第一道坎

先搞清楚什么是梯度。

训练神经网络,本质上是不断调整权重,让输出越来越准。

怎么调整?

先算一个"误差"------预测值和真实值差多少。

然后把这个误差往回传,看看每个权重该往哪个方向改、改多少。

这个"该往哪个方向改"的信息,就是梯度。

梯度乘以学习率,就是权重的更新量。

现在问题来了。

Sigmoid 和 Tanh 这类函数,在 x 很大或很小的时候,输出几乎不变。

曲线两头是平的。

平的意味着什么?

斜率为零,梯度为零。

梯度为零,权重就更新了个寂寞。

而且这事儿是一层层传导的。

误差从输出层往输入层传,每传一层,梯度就要乘以激活函数的导数。

Sigmoid 的导数最大值才 0.25。

传 5 层,梯度就只剩下 0.25^5 ≈ 0.0003。

传 10 层,基本归零了。

多层神经网络反向传播梯度衰减示意图,用箭头粗细表示梯度从输出层到输入层逐渐变小

越靠近输入层,权重越难更新。

前面的层几乎学不到东西,后面的层倒是很努力。

但前面的层是打基础的呀!

底子打不好,后面再努力也白搭。

这就是深度学习的"第一道坎"------梯度消失。

它直接限制了神经网络的深度。

2006 年之前,神经网络都不敢做太深,就是这个原因。

后来 ReLU 出现,直接把这个问题解决了大半。

但 ReLU 带来了新问题。


ReLU的"死亡陷阱"------一半是天使,一半是魔鬼

ReLU 解决了梯度消失。

但它自己也有缺陷。

我们看 ReLU 的图像。

ReLU与LeakyReLU函数曲线对比图,标注负轴部分斜率差异

x > 0 时,曲线是斜率为 1 的直线,没问题。

x ≤ 0 时,输出恒为 0。

问题就出在这里。

假设有个神经元,因为各种原因,输出的值一直是负的。

经过 ReLU 之后,它永远输出 0。

一旦输出 0,后面就再也收不到任何信号了。

这个神经元"死"了。

而且是永久性的。

你可能觉得这个神经元反正也不干活,死了就死了呗。

但问题是,它的"死"是不可逆的。

梯度是 0,学习率再小、训练时间再长,它也活不过来。

更扎心的是,这事儿还挺容易发生。

权重初始化不好,可能死一片。

学习率设太大,也可能死一片。

数据分布不好,还可能死一片。

有研究说,用 ReLU 的网络中,有 20%~50% 的神经元是死的。

一半是天使,一半是魔鬼。

这话形容 ReLU 太准确了。

那怎么办?

LeakyReLU:给条活路

LeakyReLU 来了。

公式:

f(x) = max(0.01x, x)

x > 0 时,跟 ReLU 一样。

x < 0 时,不是输出 0,而是输出 0.01x。

一条很小很小的斜率。

这就好比给被判处"死刑"的神经元,留了一条缝。

不是完全畅通,但至少有信号透进来。

梯度不为零,神经元还有可能被救活。

0.01 这个数字可以调,叫 alpha。

还有 Parametric ReLU(PReLU),让网络自己学习这个斜率。

还有一个更狠的------ELU。

负值不是线性衰减,而是指数衰减。

曲线更平滑,训练更稳定。

但计算量大了点。

总结一下:

ReLU 是主流选择,够快够简单,小问题忍了。

想更稳妥?试试 LeakyReLU。

不差那点计算力?试试 ELU。


实战指南------不同任务如何选择激活函数

原理讲完了,该上实战了。

激活函数选择决策树,从任务类型、网络层次、模型架构三个维度分支

隐藏层:无脑选 ReLU

2012 年 AlexNet 之后,ReLU 就成了隐藏层的默认配置。

计算快、梯度不消失、稀疏激活------优点一箩筐。

死神经元问题?靠其他手段解决:初始化方法、Batch Normalization、合适的学习率。

别想太多,ReLU 就对了。

二分类输出层:Sigmoid

二分类问题,输出就两个选项:是或否。

需要输出一个概率值。

0 到 1 之间,Sigmoid 天生适合。

直接接个 sigmoid,输出就是"正类的概率"。

大于 0.5 就判正类,简单粗暴。

多分类输出层:Softmax

多分类不一样。

输出不是"是猫的概率",而是"是猫、是狗、是兔子的概率分别是多少"。

所有概率加起来得等于 1。

Softmax 干的就是这个活:

把 logits 转换成概率分布。

e^x 的特性让大的更大、小的更小,最终归一化。

回归任务:不用激活函数

回归问题输出的是一个连续值。

房价是多少?温度是多少?股票涨多少?

这些不需要压缩到 0-1 或 -1 到 1。

直接线性输出就行。

加激活函数反而画蛇添足。

RNN:Tanh 或门控机制

循环神经网络处理序列数据,有特殊要求。

Tanh 的 -1 到 1 范围适合循环计算,状态可以累加也可以抵消。

所以 LSTM 和 GRU 的核心门控,用的都是 Tanh。

Transformer:GELU

BERT、GPT 这些模型,用的是 Transformer 架构。

它们用的激活函数叫 GELU。

Gaussian Error Linear Unit。

比 ReLU 更平滑,比 Tanh 收敛更快。

公式稍微复杂一点,但效果确实好。

说白了:有钱(算力)的时候,选更好的。


一张表总结------三大激活函数核心对比

说了这么多,上表。

Sigmoid、Tanh、ReLU六维度对比表格,包含值域、零中心、梯度消失、计算复杂度、稀疏性、死神经元问题

维度 Sigmoid Tanh ReLU
值域 (0, 1) (-1, 1) [0, +∞)
零中心 否 是 否
梯度消失 严重 较严重 无
计算复杂度 高(指数运算) 高(指数运算) 低(比较运算)
稀疏激活 否 否 是
死神经元 无 无 有

这张表就是你的"激活函数体检报告"。

用的时候扫一眼,哪项不满足换哪个。


好了,激活函数的故事讲完了。

你知道了它为什么是神经网络的"决策阀门"。

知道了 Sigmoid、Tanh、ReLU 各自的脾气。

知道了梯度消失是怎么回事,也知道了 ReLU 的"死亡陷阱"。

下次搭网络的时候,你就能说出"这一层用 ReLU 是因为..."了。

但等等。

数据往前传叫"前向传播",误差往回传叫"反向传播"。

我们讲了激活函数怎么影响前向传播的输出,也讲了梯度消失和反向传播的关联。

那反向传播具体是怎么算的?权重是怎么一步步调整的?

这就是下一篇文章要聊的了。

等你回来,我们一起把神经网络训练的全流程走一遍。

相关推荐
子兮曰3 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
回眸&啤酒鸭3 天前
【回眸】Minicart 电商购物车核心功能落地指南
人工智能
一隅论数智3 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
AI的探索之旅3 天前
97 个 OpenCV 实例(三十):双目立体,从标定到点云
人工智能·opencv·计算机视觉
AlbertZein3 天前
Step-5-Preview 上手实测:3D 游戏、金融分析、网页设计一次跑完
人工智能·aigc
LaughingZhu3 天前
Product Hunt 每日热榜 | 2026-09-19
人工智能·深度学习·神经网络·搜索引擎·百度
美狐美颜SDK开放平台3 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
1点东西3 天前
做了近两年的Agent开发,其实真正要学的就是这五件事
llm·agent·ai编程
wukangjupingbb3 天前
智能网联汽车安全能力框架
人工智能