David Sheehan 做了一个激活函数可视化的工作,帮助大家快速了解和选择激活函数
《Visualising Activation Functions in Neural Networks》
在本文中,作者对包括 Relu、Sigmoid 在内的 26 种激活函数做了可视化,并附上了神经网络的相关属性,为大家了解激活函数提供了很好的资源。作者推荐使用Chrome浏览器
在神经网络中,给定输入集合,激活函数决定神经元节点的输出;非线性激活函数允许人工神经网络逼近复杂的非线性关系。复杂的激活函数可能会产生一些梯度消失(Vanishing Gradient)或梯度爆炸(Exploding Gradient)的问题。
下面是 26 个激活函数的图示及其一阶导数,图的右侧是一些与神经网络相关的属性
Step函数
激活函数 Step 大多在理论上探讨,基本无法用于实际。它模仿了生物神经元要么全有要么全无的属性。由于其导数是 0(除了零点导数无定义以外),这意味着基于梯度的优化方法并不可行,所以它基本无法应用于神经网络。
单调性(Montonic): 单调性使得在激活函数处的梯度方向不会经常改变,从而让训练更容易收敛
连续性(Continuous):个人认为作者想表达可微性,可微性保证了在优化中梯度的可计算性
非饱和性(saturation):饱和指的是在某些区间梯度接近于零(即梯度消失),使得参数无法继续更新的问题。
在深度神经网络中,前面层上的梯度是来自于后面层上梯度的乘乘积。当存在过多的层次时,就出现了内在本质上的不稳定场景,如梯度消失和梯度爆炸
梯度消失(Vanishing Gradient):某些区间梯度接近于零;前面的层比后面的层梯度变化更小,故变化更慢,从而引起了梯度消失问题
梯度爆炸(Exploding Gradient): 某些区间梯度接近于无穷大或者权重过大;前面层比后面层梯度变化更快,会引起梯度爆炸问题
网友评论