1. ReLU:不过考试就零分
- 怎么干活的:输入大于0就原样输出,小于0直接归零。
- 优点:计算超快(就比大小),解决深层网络学不动的问题。
- 缺点:负输入直接“挂科”(梯度为0),容易导致神经元永久死亡。
- 适合场景:图像识别(CNN)、简单任务,追求速度时首选。
2. Sigmoid:佛系打分员
- 怎么干活的:把任何输入压缩到0~1之间(像概率),比如0.7表示“70%可能”。
- 优点:输出像概率,适合二分类(比如判断是不是猫)。
- 缺点:输入太大或太小就“躺平”(梯度接近0),深层网络根本学不动;算得慢(要算指数)。
- 适合场景:二分类输出层(比如最后判断结果)、LSTM门控。
3. Tanh:升级版Sigmoid
- 怎么干活的:把输入压缩到-1~1之间,比Sigmoid更“公平”(均值接近0)。
- 优点:收敛快一点,缓解了Sigmoid的输出偏移问题。
- 缺点:两头还是容易“躺平”(梯度消失),算得也慢。
- 适合场景:需要零中心化的场景(比如RNN隐藏层)。
4. Leaky ReLU:给差生补考机会
- 怎么干活的:正输入原样输出,负输入给个0.01倍的小分(比如输入-1,输出-0.01)。
- 优点:解决了ReLU的“死亡问题”,负输入也能更新权重;计算依然快。
- 缺点:输出均值还是略大于0。
- 适合场景:替代ReLU,尤其深层网络或训练不稳定时。
5. GELU:按概率给分的聪明老师
- 怎么干活的:输入越大,通过概率越高(用正态分布算概率),输出 = 输入 × 通过概率。
- 优点:全程平滑(梯度稳定),负输入也有微弱信号;特别适合大模型(如BERT、GPT)。
- 缺点:算得慢(要算分布概率,近似公式能加速)。
- 适合场景:Transformer、NLP大模型、高精度任务。
6. Swish:自动调参的灵活派
- 怎么干活的:输出 = 输入 × Sigmoid(输入),相当于输入自己决定“放行多少”。
- 优点:负区间有响应,深层网络表现优秀(如BERT、ResNet)。
- 缺点:算得比ReLU慢(多了Sigmoid)。
- 适合场景:深层网络隐藏层(如Transformer、大型CNN)。
一句话总结怎么选
你的需求 | 闭眼选它 | 原因 |
速度最快、简单任务 | ReLU | 计算快如闪电,适合图像识别 |
二分类输出结果 | Sigmoid | 输出就是概率,0.5一刀切 |
不想调参又要防神经元死亡 | Leaky ReLU | 负输入给条活路,比ReLU稳 |
做大模型(NLP/Transformer) | GELU | 概率激活更聪明,BERT/GPT都在用 |
深层网络追求高精度 | Swish 或 ELU | 全程平滑,梯度稳定,学得更深 |
举个栗子:
做聊天机器人 → 用 GELU(GPT/BERT同款)训练图片分类模型 → 先用 ReLU(速度快),效果不好换 Leaky ReLU判断用户是否点击广告 → 输出层用 Sigmoid(输出0.3=30%可能点击)
有这些“人话”护体,调模型时再也不怕激活函数选懵啦!