非线性激励函数sigmoid,tanh,softplus,Relu

目前有四种常见的非线性激励函数:

sigmoid函数:


tanh函数:


softplus函数:


Relu函数:


其对应得函数图像如下:非线性激励函数sigmoid,tanh,softplus,Relu_第1张图片

函数种类 优点 缺点
sigmoid函数 在整个定义域内可导

gradient在饱和区域非常平缓,接近于0,很容易造成vanishing gradient的问题,减缓收敛速度

算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大

tanh函数 在整个定义域内可导

gradient在饱和区域非常平缓,接近于0,很容易造成vanishing gradient的问题,减缓收敛速度

算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大

softplus函数 在整个定义域内可导 算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大
ReLu函数

Relu的gradient大多数情况下是常数,有助于解决深层网络的收敛问题。

ReLU更容易学习优化。因为其分段线性性质,导致其前传,后传,求导都是分段线

Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生,也更接近真实的神经元激活模型。

如果后层的某一个梯度特别大,导致W更新以后变得特别大,导致该层的输入<0,输出为0,这时该层就会‘die’,没有更新。当学习率比较大时可能会有40%的神经元都会在训练开始就‘die’,因此需要对学习率进行一个好的设置。
需要注意的是:tanh特征相差明显时的效果会很好,在循环过程中会不断扩大特征效果显示出来,但有是,在特征相差比较复杂或是相差不是特别大时,需要更细微的分类判断的时候,sigmoid效果就好了。 
还有一个东西要注意,sigmoid 和 tanh作为激活函数的话,一定要注意一定要对 input 进行归一话,否则激活后的值都会进入平坦区,使隐层的输出全部趋同,但是 ReLU 并不需要输入归一化来防止它们达到饱和。

还有两种改进的激励函数:

Leaky ReLu函数:


Maxout函数:


但是这两种并不常用


你可能感兴趣的:(机器学习)