您的位置:首页 > 其它

关于激励函数的一些思考

2017-06-20 20:48 375 查看
在学习神经网络的时候,会发现神经网络中的各个神经元代表的其实就一种运算,这=这种运算就是激励函数,激励函数一般都是非线性的,为什么呢?

因为线性函数有一个特点,那就是线性函数的组合还是线性函数,这也就以为这不论你所设计的神经网络有多深,多么复杂,只要里面用到的激励函数是线性函数,那么这些层层之间都是线性函数的一个组合,最终整个网络依然是线性的,可以用一个矩阵来代替,跟只有一层网络是没有区别的,所以线性激励函数的表达能力是有限的,不能描述现实生活中存在的大部分的问题,故我们采用非线性的激励函数,以下是神经网络中常用的几种激励函数:

1、sigmod函数




 
 
sigmoid导数曲线:



sigmod函数有几个特点:将输入映射到区间(0,1),当输入偏离0附近的时候,输出的变化非常缓慢,达到饱和,从sigmo函数的导数是一个区间(0,1)上的抛物线,当sigmo函数的取值是1/2的时候,其导数达到最大值1/4.

根据这几个特性就可以总结出来sigmo作为激励函数的一些优缺点。

优点:1、将输入映射到(0,1)上,这在一些分类问题中作为输出,归一化后就可以表征被分为该类的概率,会带来一些计算上的方便。

           2、在整个定义域都是处处可导的,在梯度反向传播的时候求导比较方便

缺点:收敛速度比较慢,原因是因为当达到sigmoid的饱和区的时候,输入的变化不会对输出带来什么影响,反过来也就是说sigmo函数在饱和区的导数非常小,在梯度反向传播过程中会带来梯度的大量衰减,从其导数的曲线上可以看出,其反向传播过程中最多只能向前传递原梯度的1/4,那么再经过神经网络的前一层传递,梯度传递减少至原梯度的1/16,整个呈指数级降低,所以对于神经网络中前面几层的参数调整是非常有限的,这也就导致了整个神经网络的训练收敛速度非常慢。

2、tanh函数





tanh激励函数实际上与sigmoid函数没有本质上的区别,最大的区别是tanh函数将输入映射在了区间(-1,1)上,所以tanh作为激励函数的优点与缺点与sigmoid函数相同。
优点:1、将输入映射到(-1,1)上,在某些应用中是比较想要的输出
            2、在整个定义域都是处处可导的,在梯度反向传播的时候求导比较方便
缺点:收敛速度慢
但是tanh函数与sigmo函数相比,延迟了饱和区域,所以性能优于sigmoid函数
3、RELU函数





在实际的应用中使用最多的就是RELU函数作为激励函数,这要是因为RELU函数的较以上两种激励函数的一些优势:
        1、计算简单,只是一个阈值计算,不涉及指数运算
        2、梯度损失比较小,收敛速度快,显然当输入大于0时候,RELU的导数恒为1,整个梯度反向传播过程中不会引起梯度的损失,但是当输入小于0的时候,输出全部为0,这样其实相当于阻断了一些网络支路,其实也就相当于引起特征的丢失,但是一般情况下特征量足够多,所以影响并不大
        3、因为RELU会使得输入小于0的所有神经元的输出为0,这样就促进了整个网络的稀疏性,使得网络更加的简单,其实也就是与正则化的效果一直,从而延缓了网络过拟合的速度。
        4、更加符合生物意义上的神经元结构(虽然我并不懂啥意思。。。)
4、LeakyRELU函数:





leakyRELU函数实际上是对于RELU函数的一种优化,相比于RELU函数直接阻断了一些小于0的特征,LeakyRELU函数考虑了这部分特征。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: