激活函数
激活函数是每个神经元内部的小型非线性门,让神经网络学习复杂的弯曲模式,而不仅仅是直线。
概述
没有它们,深度网络将崩溃成单一线性方程。
深入探讨
每个神经元计算其输入的加权和,但该和本身是线性的。堆叠许多线性层,从数学上讲,无论多深,你仍然只有一个大的线性函数。激活函数通过对每个神经元的输出应用非线性变换来打破这一点,使网络能够逼近几乎任何函数。最流行的是 ReLU,它简单地输出输入(如果为正,否则为零);它速度很快,并且避免了旧函数的一些训练问题。 Sigmoid 和 tanh 将值压缩到有界范围内,这在历史上很常见,但可能会受到深度网络中梯度消失的影响。输出处使用的 softmax 函数将原始分数转换为类别的概率分布。
技术洞察
ReLU 的吸引力部分在于它的梯度:对于正输入,它恰好为 1,因此它不会在反向传播期间缩小误差信号,从而帮助深度网络训练。相比之下,Sigmoid 和 tanh 在极端情况下会变平,即梯度接近零,从而导致梯度消失问题,从而阻碍深栈学习。 ReLU 的缺点是 ReLU 垂死问题,即神经元永远处于负输入,输出为零; Leaky ReLU 和 GELU 等变体通过允许小的或平滑的非零响应来解决这个问题。
战略影响
更清晰的判决
它可以帮助您将清晰的技术声明与营销语言分开。
成本与预算
在花费金钱或时间之前,您可以提出更好的实施问题。
团队与工作流程
具有共同理解的团队可以做出更好的产品、政策和学习决策。
激活函数的未来
ReLU 和它的平滑表亲 GELU 如今占据主导地位,其中 GELU 在 Transformer 中受到青睐,因为它的平滑曲线与其训练动态完美匹配。研究探索了像 SwiGLU 这样的学习和门控激活,现在在大型语言模型中很常见,它使用乘法门控来提高表达能力。大趋势是平滑的门控函数,可大规模提高梯度流和模型质量。虽然奇特的激活经常出现在论文中,但简单、表现良好的函数往往会在实践中获胜,因为它们可以在巨大的模型上进行可靠的训练。
现实世界的实施
在卷积网络的隐藏层中使用 ReLU,以便它可以学习用于图像识别的弯曲决策边界
在最后一层应用 softmax 将分类器的原始分数转换为总和为 1 的类概率
在 Transformer 语言模型中选择 GELU 激活以获得更平滑的梯度流
当网络中太多神经元死亡并停止响应时切换到 Leaky ReLU
风险与防护栏
不同的团队可能会以不同的方式使用同一术语,因此请尽早定义范围。
基准测试可能看起来很强大,但实际性能却参差不齐。
忽视数据质量和评估计划通常会产生脆弱的结果。
实施路线图
从您需要的结果的简单语言定义开始。
在测试之前选择一种成功指标和一种失败条件。
使用代表性数据运行小型试点,而不是完善的演示集。
记录激活函数在哪些方面有帮助以及在哪些方面更简单的方法更好。
不断探索
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the Activation Functions quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
常见问题
什么是激活功能?
激活函数是每个神经元内部的小型非线性门,让神经网络学习复杂的弯曲模式,而不仅仅是直线。如果没有它们,深层网络将崩溃为单个线性方程。
没有激活函数的深度网络会发生什么?
堆叠没有非线性的线性层在数学上会分解为一个线性变换,因此网络无法学习复杂的模式。
对于负输入,ReLU 激活函数输出什么?
ReLU 在正值时输出输入,在负值时输出零,这使得计算简单而快速。
与 sigmoid 和 tanh 相关的梯度消失问题是什么?
Sigmoid 和 tanh 在极值处变平,因此它们的梯度缩小到零,从而削弱了深层网络中的误差信号。
多类分类器的输出层通常使用哪种激活函数?
Softmax 将原始分数转换为类别上总和为 1 的概率分布,非常适合分类输出。
什么是“垂死的 ReLU”问题?
如果 ReLU 神经元总是接收负输入,它会输出零且梯度为零,并有效地停止更新,从而“死亡”。