激活函数---空间魔法师

在学习深度学习的时候,有看到许多不同的激活函数,因此查阅了这些函数。博客内容转自论智的知乎问答

不管是传统的神经网络模型还是时下热门的深度学习,我们都可以在其中看到激活函数的影子。所谓激活函数,就是在神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。 它们是一群空间魔法师,扭曲翻转特征空间,在其中寻找线性的边界。
在这里插入图片描述
常见的激活函数包括 S i g m o i d Sigmoid Sigmoid T a n H y p e r b o l i c ( t a n h ) TanHyperbolic(tanh) TanHyperbolic(tanh) R e L u ReLu ReLu s o f t p l u s softplus softplus以及 s o f t m a x softmax softmax函数。这些函数有一个共同的特点那就是他们都是非线性的函数。那么我们为什么要在神经网络中引入非线性的激活函数呢?

引用这里的解释就是:

如果不用激励函数(其实相当于激励函数是 f ( x ) = x f(x) = x f(x)=x),在这种情况下你每一层输出都是上层输入的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机(Perceptron)了。 正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络就有意义了(不再是输入的线性组合,可以逼近任意函数)。最早的想法是sigmoid函数或者tanh函数,输出有界,很容易充当下一层输入(以及一些人的生物解释balabala)。

由此可见,激活函数对神经网络的深层抽象功能有着极其重要的意义,下面根据我在网络上找到的资料,分别对上述激活函数进行说明:

  • S i g m o i d Sigmoid Sigmoid函数
    s i g m o i d sigmoid sigmoid是一位老奶奶,是激励函数中最有资历的。虽然比较老迈、古板,已经不像当年那么受欢迎了,但在分类任务的输出层中,人们还是信赖sigmoid的丰富经验。
    在这里插入图片描述
    S i g m o i d Sigmoid Sigmoid函数意为“S型曲线函数”,它常常指的是 l o g i s t i c logistic logistic(对数几率)函数。表达式为:
      

    y = 1 1 + e − x y=\frac{1}{1+e^{-x}} y=1+ex1
    在这里插入图片描述  

    从数学上来看, S i g m o i d Sigmoid Sigmoid函数对中央区的信号增益较大,对两侧区的信号增益小,在信号的特征空间映射上,有很好的效果。 从神经科学上来看,中央区酷似神经元的兴奋态,两侧区酷似神经元的抑制态,因而在神经网络学习方面,可以将重点特征推向中央区,将非重点特征推向两侧区。

  • t a n h tanh tanh函数
    t a n h tanh tanh也是一位资深的空间魔法师:
    在这里插入图片描述
    等等,这不就是 s i g m o i d sigmoid sigmoid?背过身去以为我们就不认识了吗?
    没错,tanh就是乔装打扮的 s i g m o i d sigmoid sigmoid
    t a n h tanh tanh函数又称作双曲正切函数,数学表达式为:
      

    t a n h x = e x − e − x e x + e − x tanh x=\frac{e^x-e^{-x}}{e^x+e^{-x}} tanhx=ex+exexex
       在这里插入图片描述
      

    在具体应用中, t a n h tanh tanh函数相比于 S i g m o i d Sigmoid Sigmoid函数往往更具有优越性,这主要是因为 S i g m o i d Sigmoid Sigmoid函数在输入处于[0,1]之间时,函数值变化敏感,一旦接近或者超出区间就失去敏感性,处于饱和状态,影响神经网络预测的精度值。而 t a n h tanh tanh的输出和输入能够保持非线性单调上升和下降关系,符合BP网络的梯度求解,容错性好,有界,渐进于0、1,符合人脑神经饱和的规律,但比 s i g m o i d sigmoid sigmoid函数延迟了饱和期。

  • R e L u ReLu ReLu
    R e L u ReLu ReLu是一个守门人,凡是麻瓜(0)一律拒之门外(关闭神经元)。
    在这里插入图片描述
    R e L u ReLu ReLu函数的全称为 R e c t i f i e d L i n e a r U n i t s Rectified Linear Units RectifiedLinearUnits,函数表达式为:
      

    f ( x ) = x + = m a x ( 0 , 1 ) f(x)=x^+=max(0,1) f(x)=x+=max(0,1)
       在这里插入图片描述
      

      
    如上图所示, R e L u ReLu ReLu是一头完全不同的野兽:它并不“挤压”值至某一区间——它只是保留正值,并将所有负值转化为零

    使用 R e L u ReLu ReLu的积极方面是它的梯度要么是1(正值),要么是0(负值)——再也没有梯度消失了!这一模式 使网络更快收敛。另一方面,这一表现导致所谓的“死亡神经元”问题,也就是输入持续为负的神经元激活值总是为 零。

    具体来说, R e L u ReLu ReLu的优势主要体现在下面几个方面:

    第一,采用sigmoid等函数,算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多。
    第二,对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(在sigmoid接近饱和区时,变换太缓慢,导数趋于0,这种情况会造成信息丢失),从而无法完成深层网络的训练。
    第三,Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生(以及一些人的生物解释balabala)。

  • s o f t m a x softmax softmax函数
    我们可以看到, S i g m o i d Sigmoid Sigmoid函数实际上就是把数据映射到一个的空间上,也就是说, S i g m o i d Sigmoid Sigmoid函数如果用来分类的话,只能进行二分类,而这里的 s o f t m a x softmax softmax函数可以看做是 S i g m o i d Sigmoid Sigmoid函数的一般化,可以进行多分类。 s o f t m a x softmax softmax函数的函数表达式为:

    σ ( Z ) j = e Z j ∑ k = 1 K e Z k \sigma(Z)_j=\frac{e^{Z_j}}{\sum\limits_{k=1}^{K}e^{Z_k}} σ(Z)j=k=1KeZkeZj

    从公式中可以看出,就是如果某一个 z j z_j zj大过其他,那这个映射的分量就逼近于1,其他就 逼近于0,即用于多分类。也可以理解为将 K K K维向量映射为另外一种 K K K维向量。用通信的术语来讲,如果 S i g m o i d Sigmoid Sigmoid函数是 M I S O MISO MISO S o f t m a x Softmax Softmax就是 M I M O MIMO MIMO S i g m o i d 函 数 Sigmoid函数 Sigmoid

所以,可以得到上述函数的关系图:
dd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值