©PaperWeekly 原创 · 作者|张文翔
单位|京东集团算法工程师
研究方向|推荐算法
激活函数之性质
1. 非线性:即导数不是常数。保证多层网络不退化成单层线性网络。这也是激活函数的意义所在。
2. 可微性:保证了在优化中梯度的可计算性。虽然 ReLU 存在有限个点处不可微,但处处 subgradient,可以替代梯度。
3. 计算简单:激活函数复杂就会降低计算速度,因此 RELU 要比 Exp 等操作的激活函数更受欢迎。
4. 非饱和性(saturation):饱和指的是在某些区间梯度接近于零(即梯度消失),使得参数无法继续更新的问题。最经典的例子是 Sigmoid,它的导数在 x 为比较大的正值和比较小的负值时都会接近于 0。RELU 对于 x<0,其梯度恒为 0,这时候它也会出现饱和的现象。Leaky ReLU 和 PReLU 的提出正是为了解决这一问题。
5. 单调性(monotonic):即导数符号不变。当激活函数是单调的时候,单层网络能够保证是凸函数。但是激活函数如 mish 等并不满足单调的条件,因此单调性并不是硬性条件,因为神经网络本来就是非凸的。
6. 参数少:大部分激活函数都是没有参数的。像 PReLU 带单个参数会略微增加网络的大小。还有一个例外是 Maxout,尽管本身没有参数,但在同样输出通道数下 k 路 Maxout 需要的输入通道数是其它函数的 k 倍,这意味着神经元数目也需要变为 k 倍。
参考:
[1] 如果在前向传播的过程中使用了不可导的函数,是不是就不能进行反向传播了?
https://www.zhihu.com/question/297337220/answer/936415957
[2] 为什么神经网络中的激活函数大部分都是单调的?
https://www.zhihu.com/question/66747114/answer/372830123
激活函数之简介
1. Sigmoid激活函数
sigmoid 函数及其导数如下:
优点:
梯度平滑
输出值在 0-1 之间
缺点:
激活函数计算量大(在正向传播和反向传播中都包含幂运算和除法);
梯度消失:输入值较大或较小(图像两侧)时,sigmoid 函数值接近于零。sigmoid 导数则接近于零,导致最终的梯度接近于零,无法实现更新参数的目的;
Sigmoid 的输出不是 0 为中心(zero-centered)。
1. Sigmoid激活函数
sigmoid 函数及其导数如下:
优点:
梯度平滑
输出值在 0-1 之间
缺点:
激活函数计算量大(在正向传播和反向传播中都包含幂运算和除法);
梯度消失:输入值较大或较小(图像两侧)时,sigmoid 函数值接近于零。sigmoid 导数则接近于零,导致最终的梯度接近于零,无法实现更新参数的目的;
Sigmoid 的输出不是 0 为中心(zero-centered)。