可视化资源

激活函数与梯度消失

神经元在把信号往下传之前,会先过一道激活函数''掰个弯。常见的有 Sigmoid、Tanh、ReLU。它们长相差不多,但有个要命的区别藏在导数’‘里——而导数决定了训练时梯度能不能顺利地一层层往回传。这就是为什么深层网络早年那么难训,以及 ReLU 后来为什么一统天下。

蓝线是激活函数本身,金色虚线是它的导数。拖动下面的 x,看某一点的函数值和导数;再看``梯度连乘''那栏——导数小于 1,多乘几层就趋近于零。

2.0

函数与导数

函数 f(x) 导数 f′(x)

梯度连乘 · 一层层往回传

10
Sigmoid / Tanh 会饱和

两端又平又缓,导数趋近 0。多层连乘后梯度几乎消失,深层网络学不动。

ReLU 不消失

正半轴导数恒为 1,梯度原样传下去——这是它成为深度网络默认激活函数的关键。

代价

ReLU 负半轴导数为 0,神经元可能``死掉'';于是有了 LeakyReLU、GELU 等改进。