非线性激励函数sigmoid,tanh,softplus,Relu
目前有四种常见的非线性激励函数:
sigmoid函数:
tanh函数:
softplus函数:
Relu函数:
其对应得函数图像如下:
函数种类 | 优点 | 缺点 |
sigmoid函数 | 在整个定义域内可导 | gradient在饱和区域非常平缓,接近于0,很容易造成vanishing gradient的问题,减缓收敛速度。 算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大 |
tanh函数 | 在整个定义域内可导 | gradient在饱和区域非常平缓,接近于0,很容易造成vanishing gradient的问题,减缓收敛速度。 算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大 |
softplus函数 | 在整个定义域内可导 | 算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大 |
ReLu函数 | Relu的gradient大多数情况下是常数,有助于解决深层网络的收敛问题。 ReLU更容易学习优化。因为其分段线性性质,导致其前传,后传,求导都是分段线性 Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生,也更接近真实的神经元激活模型。 | 如果后层的某一个梯度特别大,导致W更新以后变得特别大,导致该层的输入<0,输出为0,这时该层就会‘die’,没有更新。当学习率比较大时可能会有40%的神经元都会在训练开始就‘die’,因此需要对学习率进行一个好的设置。 |
还有一个东西要注意,sigmoid 和 tanh作为激活函数的话,一定要注意一定要对 input 进行归一话,否则激活后的值都会进入平坦区,使隐层的输出全部趋同,但是 ReLU 并不需要输入归一化来防止它们达到饱和。
还有两种改进的激励函数:
Leaky ReLu函数:
Maxout函数:
但是这两种并不常用
非线性激励函数sigmoid,tanh,softplus,Relu
目前有四种常见的非线性激励函数:
sigmoid函数:
tanh函数:
softplus函数:
Relu函数:
其对应得函数图像如下:
函数种类 | 优点 | 缺点 |
sigmoid函数 | 在整个定义域内可导 | gradient在饱和区域非常平缓,接近于0,很容易造成vanishing gradient的问题,减缓收敛速度。 算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大 |
tanh函数 | 在整个定义域内可导 | gradient在饱和区域非常平缓,接近于0,很容易造成vanishing gradient的问题,减缓收敛速度。 算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大 |
softplus函数 | 在整个定义域内可导 | 算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大 |
ReLu函数 | Relu的gradient大多数情况下是常数,有助于解决深层网络的收敛问题。 ReLU更容易学习优化。因为其分段线性性质,导致其前传,后传,求导都是分段线性 Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生,也更接近真实的神经元激活模型。 | 如果后层的某一个梯度特别大,导致W更新以后变得特别大,导致该层的输入<0,输出为0,这时该层就会‘die’,没有更新。当学习率比较大时可能会有40%的神经元都会在训练开始就‘die’,因此需要对学习率进行一个好的设置。 |
还有一个东西要注意,sigmoid 和 tanh作为激活函数的话,一定要注意一定要对 input 进行归一话,否则激活后的值都会进入平坦区,使隐层的输出全部趋同,但是 ReLU 并不需要输入归一化来防止它们达到饱和。
还有两种改进的激励函数:
Leaky ReLu函数:
Maxout函数:
但是这两种并不常用