激活函数基础:ReLU、Sigmoid、Tanh 对比

张开发
2026/4/12 18:56:54 15 分钟阅读

分享文章

激活函数基础:ReLU、Sigmoid、Tanh 对比
文章目录一、开篇被激活二字劝退的那些年二、先整明白激活函数到底在激活啥三、Sigmoid老牌网红但已过气3.1 这货是谁3.2 当年为啥火3.3 后来为啥被嫌弃了四、TanhSigmoid 的亲兄弟但脾气更暴4.1 改进在哪4.2 比 Sigmoid 强在哪4.3 但本质问题没解决五、ReLU现在的真香担当但也不是完美圣人5.1 简单粗暴就是美5.2 为啥它成了主流5.3 但 ReLU 也有大坑六、硬核对比三张图说清优劣七、2025 年的新趋势激活函数也在进化八、写在最后选激活函数就像选对象P.S. 目前国内还是很缺AI人才的希望更多人能真正加入到AI行业共同促进行业进步增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow教程通俗易懂高中生都能看懂还有各种段子风趣幽默从深度学习基础原理到各领域实战应用都有讲解我22年的AI积累全在里面了。注意教程仅限真正想入门AI的朋友否则看看零散的博文就够了。一、开篇被激活二字劝退的那些年我当初学神经网络的时候第一个破防的瞬间不是啥反向传播也不是梯度下降而是看到激活函数这四个字的时候——我当时就蚌埠住了这名字起的听起来像是某种科幻电影里的核弹启动装置或者至少是健身房里让人血脉喷张的补剂结果呢它就是数学公式数学公式啊就几个加减乘除指数运算非要包装得这么唬人拿捏谁呢这是但后来我自己跑项目踩坑踩多了才明白这玩意儿虽然名字中二却是神经网络的命门所在。没有它你的神经网络就是一堆线性操作的叠叠乐再多层也只是一个 fancy 的线性回归懂那还不如直接用 Excel 画折线图呢至少不会爆显卡。今天我就用人话血泪史把这仨最经典的激活函数——Sigmoid、Tanh、ReLU——给您扒个底朝天。咱不整那些该函数具备良好的非线性特性这种教科书废话咱就说这仨货到底是干嘛的啥时候该用谁又有那些不为人知的坑坐稳了发车二、先整明白激活函数到底在激活啥在说具体函数之前咱得先把这个概念给吃透了不然后面全白搭。说白了激活函数就是神经元里的一个开关。你想啊咱们的大脑有860亿个神经元它们不是随时都在发疯一样放电的对吧只有接收到足够强的刺激神经元才会啪地一下兴奋起来把信号传给下一个神经元。这个啪的过程就是激活。在人工神经网络里每个神经元收到前面传来的数据加权求和的结果不能原封不动地往后传得先经过一个函数处理一下——这个函数决定这神经元到底是兴奋地传下去还是装死不动亦或是负向抑制。没有激活函数无论你的神经网络有100层还是10000层它最终都只能拟合线性关系。而现实世界哪有那么多线性关系啊图像识别、语音识别、自然语言处理全是复杂的非线性问题。所以激活函数就是给神经网络注入非线性灵魂的那剂猛药。搞懂了这个咱们再看那三个主角就轻松多了。三、Sigmoid老牌网红但已过气3.1 这货是谁Sigmoid 函数全名 Logistic 函数公式长这样σ(x) 1 / (1 e^(-x))哎哟我去看到公式别急着划走我给您翻译一下它就是把任意一个实数不管是 -10000 还是 10000都压缩到 0 和 1 之间。画出来像啥像字母S所以也叫 S 型函数。3.2 当年为啥火这玩意儿在 2012 年深度学习爆发那会儿绝对是yyds为啥因为它输出在 0 到 1 之间这天生就是做二分类问题的神器啊输出接近 1 就是是猫接近 0 就是不是猫完美契合概率解释简直不要太香。而且它的数学性质好处处可导光滑得像德芙巧克力。那时候做反向传播老师们都推荐用这个稳3.3 后来为啥被嫌弃了但是重点来了我要开始吐槽了这货有个致命绝症叫梯度消失。您看那个图像当输入值很大比如 x10或者很小x-10的时候函数曲线几乎变平了斜率接近 0。这意味着啥意味着反向传播的时候梯度传到这儿就几乎被掐断了就像打电话串线声音越来越小最后啥也听不见了。我当年用 Sigmoid 跑一个 8 层的 CNN 做图像分类前面几层死活学不动loss 卡在那儿不降我以为是代码 bug查了三宿没合眼最后才发现是梯度消失搞的鬼那感觉就像你拼命踩油门结果发现手刹没松还特么是断的而且 Sigmoid 的输出不是零中心的zero-centered都是正数这会导致下一层的输入全是正的梯度更新的时候 zigzag 现象严重收敛慢得像蜗牛。所以现在的共识是隐藏层别用 Sigmoid 了真的听劝 但输出层做二分类的时候还是可以用的毕竟概率解释直观。四、TanhSigmoid 的亲兄弟但脾气更暴4.1 改进在哪Tanh双曲正切函数公式是tanh(x) (e^x - e^(-x)) / (e^x e^(-x))这货跟 Sigmoid 长得贼像也是 S 型曲线但它输出范围是 -1 到 1而且是以 0 为中心的4.2 比 Sigmoid 强在哪零中心化这个特性太重要了 输出有正有负下一层神经元的输入也是均值为 0 的分布这样梯度更新的时候不会一直朝着一个方向偏收敛速度快了不少。我做过实验同样条件下Tanh 比 Sigmoid 收敛快大概 30% 左右这可不是小数目啊而且它的导数范围是 (0,1]比 Sigmoid 的 (0,0.25] 要强一些梯度消失的问题虽然还在但没那么惨烈。4.3 但本质问题没解决然而梯度消失这个绝症 Tanh 也没治好。只要网络层数一深该消失还得消失。我去年跑一个 15 层的 LSTM 做时序预测隐藏层用的 Tanh前面 5 层还能学后面 10 层基本就在摸鱼了参数更新微乎其微。而且 Tanh 也涉及指数运算计算量比 ReLU 大得多。在现在这种大模型时代参数都是百亿千亿级别的每一次指数运算都是在烧钱啊朋友们算力就是钱懂所以现在 Tanh 主要在 RNN、LSTM 这些循环神经网络里还能见到因为它们的序列特性需要这种有界的输出但在 CNN 和普通的全连接层里基本也被 ReLU 家族给卷没了。五、ReLU现在的真香担当但也不是完美圣人5.1 简单粗暴就是美ReLURectified Linear Unit整流线性单元这名字听着就硬气公式更简单到离谱f(x) max(0, x)翻译成人话大于 0 的保持不变小于 0 的直接归 0。 画出来就是一根折线左边是 0右边是斜率为 1 的直线。5.2 为啥它成了主流首先计算速度快到飞起没有指数运算没有除法就是一个简单的比较和取最大值操作。我在 GPU 上跑 ResNet-50 的时候用 ReLU 比用 Tanh 快了差不多 40%这省下来的时间都是钱啊其次它在正区间不会梯度消失导数永远是 1梯度可以畅通无阻地反向传播。这意味着你可以放心地堆叠很多层我试过 100 层的 ResNet用 ReLU 一样训得动这在 Sigmoid 时代简直不敢想。还有它引入了稀疏性。因为负数区域直接输出 0这意味着一部分神经元实际上是被杀死的不会激活。这种稀疏性被证明对模型的泛化能力有好处有点像 dropout 的效果但不用手动调参。5.3 但 ReLU 也有大坑第一个坑叫神经元死亡Dying ReLU。如果学习率设得太高或者初始化不好某个神经元的输入一直是负的那它输出永远是 0梯度也永远是 0这个神经元就彻底死了再也活不过来了就像996过度直接猝死的打工人救不回来了。我在做一个 NLP 项目的时候就遇到过训练到一半发现某层 40% 的神经元都在装死模型精度直接崩了。后来换了 Leaky ReLU给负区间一个很小的斜率比如 0.01才解决。第二个坑是它不是零中心的输出全是非负的这会导致梯度更新的时候还是有点小问题虽然没 Sigmoid 那么严重。所以现在有了各种变种Leaky ReLU、PReLU、ELU、SELU… 2025 年最新的趋势是用 Swish 和 GELUGaussian Error Linear Unit尤其是 GELU在 Transformer 模型像 GPT、BERT 这种里基本成了标配比 ReLU 平滑性能更好。但基础入门阶段ReLU 依然是 must know 的。六、硬核对比三张图说清优劣我给您整了个对比表一目了然特性SigmoidTanhReLU输出范围(0, 1)(-1, 1)[0, ∞)是否零中心否是否梯度消失严重中等正区间无负区间死亡计算速度慢指数慢指数极快适用场景输出层二分类隐藏层浅层隐藏层深层我的实战经验总结别在隐藏层用 Sigmoid 了真的那是上古时代的做法。除非你在做极浅层的网络比如3层以内或者需要严格的概率输出。Tanh 在 RNN/LSTM 里还能用但在 CNN 和 Dense 层里2025 年的今天已经被 ReLU 卷没了。ReLU 是默认选择但记得调学习率建议从 0.001 开始试别一上来就 0.01很容易把神经元搞死。如果发现有大量死亡神经元马上换成 Leaky ReLU。做二分类输出层Sigmoid 依然是标配多分类输出层用 Softmax这个今天没展开讲下次单独聊。七、2025 年的新趋势激活函数也在进化说到这我得提一嘴最新的动态。2025 年的大模型训练里GELU 和 Swish 正在取代 ReLU成为 Transformer 的标配。GELU 在数学上更平滑避免了 ReLU 在 0 点的不可导问题在 GPT-4、Claude 3 这种级别的模型里都是用的这种激活函数。还有 Mish 激活函数去年在一些计算机视觉任务里表现绝绝子但计算量比 ReLU 大适合不差算力的场景。但咱们作为学习者先把 ReLU、Sigmoid、Tanh 这三个老祖宗吃透再看那些变种就轻松多了。基础不牢地动山摇啊朋友们八、写在最后选激活函数就像选对象说真的选激活函数跟选对象似的——没有完美的只有最适合当下场景的。Sigmoid 就像那个稳重但有点油腻的中年大叔靠谱但缺乏激情适合过日子输出层解释概率Tanh 像是改进版的大叔脾气好了点但本质还是老派ReLU 就像热血青年冲劲十足但容易猝死神经元死亡需要你会调教他。我在这仨货上踩过的坑流的泪够灌满一个游泳池了。今天全倒给你们就是希望你们别在走我走过的弯路。说真的神经网络这玩意儿理论知识是一方面动手跑代码看 tensorboard 里的梯度变化感受 loss 曲线的抖动才是真的能内化的过程。互动时间到了 您们在用激活函数的时候踩过那些坑是遇到过梯度消失训不动还是碰到过 ReLU 神经元大规模死亡或者您就是坚持用 Sigmoid 的复古派评论区大声说出来 我在线蹲守咱们一起聊聊那些炼丹爆炉的崩溃瞬间下期预告我打算讲讲 Batch Normalization 到底在归一化啥以及它和激活函数的爱恨情仇。想看的扣 1不想看的扣眼珠子开玩笑的哈哈就这样散会P.S. 目前国内还是很缺AI人才的希望更多人能真正加入到AI行业共同促进行业进步增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow教程通俗易懂高中生都能看懂还有各种段子风趣幽默从深度学习基础原理到各领域实战应用都有讲解我22年的AI积累全在里面了。注意教程仅限真正想入门AI的朋友否则看看零散的博文就够了。

更多文章