激活函数深度对比:从Sigmoid到ReLU变体性能评测
摘要
神经网络中线性变换的叠加仍为线性,需激活函数引入非线性以学习复杂模式。Sigmoid因梯
深度学习中的激活函数:从Sigmoid到ReLU及其变体
聊深度学习,激活函数是无法回避的核心组件。很多人一上来就死记公式,但真正吃透它,得从“线性变换”这个根基说起。
一、神经网络与线性变换的局限性
神经网络的典型架构包含输入层、隐藏层和输出层。每一层执行的核心操作其实就是加权求和——本质是线性变换:
y = wx + b
那么问题来了:把多个线性层堆叠在一起,最终会得到什么?
不妨算笔账。假设两个线性层叠加:
y = w₂(w₁x + b₁) + b₂ = (w₂w₁)x + (w₂b₁ + b₂)
绕了一圈,归根结底还是一个线性函数。这意味着无论网络堆多深,表达能力都被锁定在拟合线性数据的范围内。面对曲线边界、螺旋分布这类非线性模式,它根本无能为力。
二、激活函数的作用
怎么破局?办法就是在每一层线性变换之后,插入一个非线性映射。这,就是激活函数的根本使命。
直白点说:原本线性层输出一个y,现在拿一个非线性函数f对它“加工”一下——f(y)才是真正的输出。这一步操作,让神经网络从“直线思维”跃迁到“曲线思维”,能够学习并表达复杂的数据分布。
三、常见激活函数及其特性
3.1 Sigmoid
公式:
特性:输出范围在(0,1)之间,平滑且单调递增。导数也容易计算:σ′(x)=σ(x)(1−σ(x))。
优势:输出范围有限,数值稳定,不易溢出。更关键的是,输出介于0到1之间,天然适合二分类任务的输出层——直接解释为概率,非常直观。
缺点:但它的软肋也明显——梯度消失。Sigmoid的导数最大值只有0.25,深层网络反向传播时梯度层层衰减,最终几乎为零。结果就是前层网络几乎学不到特征,训练陷入停滞。
3.2 ReLU ⚡
公式:
ReLU(x) = max(0, x)
特性:输入为正就输出本身,为负就输出0,简单直接。
优势:首先,当x>0时导数为1,梯度可以无损反向传播,极大支撑了深层网络的训练。其次,没有复杂的指数运算,计算效率极高,训练速度明显提升。再者,输入为负时输出0,恰好模拟了人脑神经元的稀疏激活模式——通常只有1%到4%的神经元同时激活。这种特性减少了特征间的冗余,帮助网络聚焦于关键特征。
缺点:但ReLU也有个棘手问题——神经元死亡。一旦某个神经元的权重更新后线性输出持续为负,ReLU输出恒为0,导数也恒为0。此后这个神经元再也无法被激活,参数彻底“凉了”,变成死神经元。
3.3 ReLU的改进版本
针对神经元死亡问题,研究者们想了不少办法:
1. Leaky ReLU
公式:
其中α是一个很小的正常数(比如0.01)。
特性:在x<0时不再直接置零,而是给一个微小的斜率α。这样一来,负区间也有梯度流动,参数在训练中仍有更新的可能。虽然步子小,但至少还有机会,相比ReLU的“一刀切”要温和得多。
2. GELU
公式:
特性:GELU把输入值x和它的概率P(X≤x)结合在一起。可以理解成,它根据输入的大小,以概率方式对输入进行缩放——x为正时输出接近x,为负时输出接近0,但整个过程平滑、非线性。这种概率平滑性使得GELU在Transformer模型(如BERT、GPT)中大放异彩,尤其在自然语言处理任务中,通常比ReLU及其变体表现更好。
四、总结
回看激活函数的发展历程,从经典的Sigmoid到主流的ReLU,再到Leaky ReLU和GELU这些改进版,每一次演进都是在非线性表达能力、梯度传播效率和计算成本三者之间寻找更优的平衡点。激活函数,正是神经网络能够成为“通用函数逼近器”的关键。具体到实际项目,根据任务和数据特性选择合适的激活函数,往往是模型能否落地的重要一环。
来源:互联网
本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。