【基础知识】第三章:激活函数

一:激活函数的基本原理

从数学的角度上讲,假如神经网络中只有Conv,卷积通过矩阵乘法来计算的,给特征乘再多的矩阵,都改变不了纯卷积的运算是一个线性操作的本质。 y=ABCD....Zx,x和y仍然是线性关系。

从函数拟合的角度来看,线性函数的拟合能力就非常差劲,与神经网络能够拟合任何复杂的函数的远大理想不符。所以要加激活函数:作用就是给神经网络带来非线性的特征,负责把线性函数给掰弯,这样神经网络拟合出来的函数也能适应复杂函数起伏,拟合的更好。

此外,如果模型不能很好对数据建模,可以使用特征变换或者核变换的方式,对核函数或者特征变换函数做泰勒展开,我们就可以大致了解核函数组合了哪些特征。事实上,激活函数一定程度上也做了特征组合的事情,很多激活函数都有 e^{x} 项,这就是一定程度上对特征进行了组合。
 激活函数的几个特性:

  • 可微性:需要满足几乎处处可微的特性,神经网络需要反向传播,误差回传更新参数梯度,如果中间有一个节点不可微分的话就会导致损失无法回传,所以需要可微,但是可以适当的放缩,几乎处处可微就可以了,允许在特殊的点不可微,然后不要让这些个别的点影响了大局观就可以。如ReLU在x=0的点就是不可微的。
  • 单调性:
  • 输出值的范围: 当激活函数输出值是有限的时候,基于梯度的优化方法会更加稳定,因为特征的表示受有限权值的影响更显著; 当激活函数的输出是无限的时候,模型的训练会更加高效,不过在这种情况小,一般需要更小的learning rate。

二:常见的激活函数

1:sigmoid函数 

f(x)=\frac{1}{1+e^{-x}}

f'(x)=\frac{e^{-x}}{(1+e^{-x})^{2}}

f'(x)

 反向传播 根据这个公式可以很快的求出导数 f'(x)=f(x)(1-f(x))

 

缺点:

  • 梯度消失(饱和):从上图可以看出,当 x \rightarrow +\infty / - \infty 时,f'(x)的值很小,几乎为0。反向传播的时候,我们通过链式求导法则计算各个权重的W的微分。由于在后向传递过程中,sigmoid向下传导的梯度包含了一个 f′(x)f′(x) 因子(sigmoid关于输入的导数),因此一旦输入落入饱和区,f′(x)f′(x) 就会变得接近于0,导致了向底层传递的梯度也变得非常小。此时,网络参数很难得到有效训练。
  • 非0均值:Sigmoid的输出值不是0周围的,不以0为中心。如果 x>0, f(x)=w^{T}x +b  对W求梯度为正,输入到下一层还是正的,这样W就只往正方向更新,反之只往负方向更新。可以按照batchs去训练,效果会好一些。
  • 计算量大:其解析式中含有幂运算,计算机求解时相对来讲比较耗时。对于规模比较大的深度网络,这会较大地增加训练时间。

2:tanh函数

tanh=\frac{sinh(x)}{cosh(x)}=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}=2sigmoid(2x)-1=\frac{2}{1+e^{-2x}}-1

tanh'(x)=1-tanh^{2}(x)

它解决了Sigmoid函数的不是zero-centered输出问题,然而,梯度消失(gradient vanishing)的问题和幂运算的问题仍然存在。

3:ReLU函数

ReLU(x)=max(0,x)

 缺点:

  • 部分神经元无法激活:由上图可以看出,当x>0的时候,f'(x)=1, 当x<0的时候,f'(x)=0, 这样的话就会导致函数不更新参数,就是我们常说的神经元死亡。可以通过设置学习率等参数使神经元的死亡概率减小。(learning rate太高导致在训练过程中参数更新太大,使网络进入这种状态。解决方法是可以采用Xavier初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法。)
  • ReLU的输出不是zero-centered

优点:

  • 收敛速度快:ReLU的计算非常简单,只需要使用阈值判断即可(输出是否大于0),导数也是几乎不用计算。基于以上两个优点,ReLU的收敛速度要远远快于sigmoid和tanh。
  • 稀疏性:ReLU的第三大优点就是可以产生稀疏性,可以看到小于0的部分直接设置为0,这就使得神经网络的中间输出是稀疏的,有一定的Droupout的作用,也就能够在一定程度上防止过拟合。

3.1ReLU的变体

1:Leaky ReLU函数(PReLU)

f(x)=max(\alpha x,x)

这个激活函数是人们为了解决神经元无法被激活的问题,通常 a=0.01。但在实际应用中Leaky ReLU并不一定会比ReLU好。激活的值太小,对整体没有太大影响。蚊子再小也是块肉,可能肉多的时候会有一定的效果。

2:ELU (Exponential Linear Units) 函数

f(x)=\begin{cases} & x\text{ if } x>0 \\ & a(e^{x}-1)\text{ otherwise} \end{cases}

和leaky ReLU的想法一样ELU也是想解决神经元死亡问题。实验证明效果不一定会比ReLU好。 

参考博客: 

神经网络之激活函数_August-us的博客-CSDN博客  常用激活函数(激励函数)理解与总结_tyhj_sf的博客空间-CSDN博客_激活函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值