[深度学习]神经网络的激活函数 | 您所在的位置:网站首页 › 神经网络的激活函数 › [深度学习]神经网络的激活函数 |
为什么要引入非线性激活函数
如果不使用非线性激活函数,激活函数本质上相当于f(x)=ax+b。在这种情况下,神经网络每一层的输出都是上层输入的线性函数。此时,不管神经网络有多少层,输出与输入都是线性关系,与没有隐层是一样的。也就相当于最原始的感知机,连最基本的异或问题都无法解决,更别说其他更复杂的非线性问题。 常见的激活函数 sigmoid函数 sigmoid函数的数学形式为 作为激活函数,其缺点如下: (1)当输入很大或很小,饱和的神经元会带来梯度消失(Gradient Vanishing); (2)函数的输出不是以0为对称的(zero-centered)(解释); (3)使用指数函数,计算代价有点高。 tanh函数 tanh函数的数学形式为 与sigmoid函数相比,其解决了zero-centered的问题。但是,梯度消失与指数函数计算代价高的问题,仍然存在。 relu函数 relu函数的全称是,rectified linear unit(修正线性单元函数),其数学形式为f(x) = max(0,x)。 优点: (1)在输入空间的一半都不存在饱和问题; (2)收敛速度快; 缺点: (1)输出不是以0为中心; (2)Dead Relu Problem,指的是某些神经元可能永远不会被激活,导致相应的参数永远不会被更新(参数初始化问题或者参数更新太大); (3)在输入空间的另一半会存在梯度消失的问题。 其他方法 Leaky Relu : f(x) = max(0.1x, x) maxout:f(x) = (w1x+b, w2x+b) elu: f(x) = x, x>=0; f(x) = a(e^x-1), x |
CopyRight 2018-2019 实验室设备网 版权所有 |