标准回答
为什么需要激活函数
激活函数为网络引入非线性,否则多层线性变换等价于单层,无法拟合复杂函数。
逐一对比
- Sigmoid:σ(x)=1/(1+e⁻ˣ),输出 (0,1),非零中心使梯度更新呈锯齿形;|x| 较大时梯度趋零,深层堆叠引发梯度消失。
- Tanh:输出 (-1,1) 且零中心,收敛通常优于 Sigmoid,但同样两端饱和。
- ReLU:max(0,x),正区间梯度恒为 1,计算高效、产生稀疏激活,是 CNN 的主流;缺点是负区间梯度为零,可能出现永不激活的 dead neuron。
- GELU/SiLU:GELU≈x·Φ(x),平滑可导、在零点附近非单调,BERT、GPT 等 Transformer 普遍采用。
选择原则
隐藏层 CNN 优先 ReLU 及其变体,Transformer 用 GELU/SiLU;输出层按任务选 Sigmoid(二分类)或 Softmax(多分类)。
常见误区
⚠️ 常见踩坑
把 ReLU 当作万能默认而忽视 dead neuron;混淆 Sigmoid(二分类,逐元素)与 Softmax(多分类,跨类归一化)的适用场景。
追问
追问 1:ReLU 的 dead neuron 是怎么产生的?如何缓解?
当某神经元权重更新后对所有输入都输出负值,其梯度恒为零、参数不再更新,即「死亡」。常因学习率过大或初始化不当导致。缓解手段包括降低学习率、合理初始化、改用 LeakyReLU/PReLU/ELU 让负区间保留小梯度。
追问 2:为什么 Transformer 偏好 GELU 而非 ReLU?
GELU 处处平滑可导、在零点附近过渡更柔和,等价于按输入大小概率性地保留激活,实践中能带来更稳定的训练与略优的精度;ReLU 的硬截断在大模型的精细优化中表现稍逊。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。