博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
激活函数总结
阅读量:2095 次
发布时间:2019-04-29

本文共 2919 字,大约阅读时间需要 9 分钟。

激活函数的作用

  在神经网络中,激活函数的作用是能够给神经网络加入一些非线性因素,使得神经网络可以更好地解决较为复杂的问题。

  先举一个简单的例子,在做二分类时,我们的预测值 y ^ = w T x + b \widehat{y}=w^{T}x+b y =wTx+b,其中w和b为参数,我们希望得到一个范围是(0,1)的概率值,而如果直接使用上式进行计算会导致预测值大于1或小于0,因此我们就需要套接一个激活函数,例如sigmoid函数,其值为(0,1)范围。
  再比如下面这个问题中:
在这里插入图片描述

  如上图所示,这是一个简单的线性分类问题,只需要一条直线就可以很好地分类。当我们碰到下图问题时,无法通过一条直线将样本分类出来,需要我们加入非线性因素才可以将样本分类好,而我们的激活函数就是我们要加入的非线性因素。

在这里插入图片描述

激活函数的软饱和、硬饱和、左饱和、右饱和

  假设h(x)是一个激活函数。

  1.当我们的n趋近于正无穷,激活函数的导数趋近于0,那么我们称之为右饱和。
   lim ⁡ n → + ∞ h ′ ( x ) = 0 \lim _{n\rightarrow +\infty }h'\left( x\right) =0 limn+h(x)=0
  2.当我们的n趋近于负无穷,激活函数的导数趋近于0,那么我们称之为左饱和。
   lim ⁡ n → − ∞ h ′ ( x ) = 0 \lim _{n\rightarrow -\infty }h'\left( x\right) =0 limnh(x)=0
  当一个函数既满足左饱和又满足右饱和的时候我们就称之为饱和,典型的函数有Sigmoid,Tanh函数。
  3.对于任意的x,如果存在常数c,当x>c时,恒有 h ′ ( x ) = 0 h'(x)=0 h(x)=0,则称其为右硬饱和。如果对于任意的x,如果存在常数c,当x<c时,恒有 h ′ ( x ) = 0 h'(x)=0 h(x)=0,则称其为左硬饱和。既满足左硬饱和又满足右硬饱和的我们称这种函数为硬饱和。
  4.对于任意的x,如果存在常数c,当x>c时,恒有 h ′ ( x ) h'(x) h(x)趋近于0,则称其为右软饱和。如果对于任意的x,如果存在常数c,当x<c时,恒有 h ′ ( x ) h'(x) h(x)趋近于0,则称其为左软饱和。既满足左软饱和又满足右软饱和的我们称这种函数为软饱和。

常见的激活函数

a) Sigmoid函数

Sigmoid函数:

在这里插入图片描述

Sigmoid导数:

在这里插入图片描述

  Sigmoid函数的优点:1.求导容易。 2.Sigmoid函数的输出映射在(0,1)之间,单调连续输出范围有限,优化稳定可以用作输出层。

  缺点:1.由于其软饱和性,容易造成梯度消失问题。2.其输出没有以0为中心。

b) Tanh函数

Tanh函数:

   tanh ⁡ ( z ) = e z − e − z e z + e − z \tanh \left( z\right) =\dfrac{e^{z}-e^{-z}}{e^{z}+e^{-z}} tanh(z)=ez+ezezez
在这里插入图片描述

Tanh函数导数:

   tanh ⁡ ′ ( z ) = 1 − ( tanh ⁡ ( z ) ) 2 \tanh '\left( z\right) =1-( \tanh\left( z\right) ) ^{2} tanh(z)=1(tanh(z))2
在这里插入图片描述

  Tanh函数的优点:1.收敛速度比Sigmoid函数快。 2. 其输出以0为中心。

  缺点:还是出现软饱和现象,梯度消失问题并没有解决。

c)Relu函数

Relu函数:

   g ( x ) = max ⁡ ( 0 , x ) g\left( x\right) =\max \left( 0,x\right) g(x)=max(0,x)
在这里插入图片描述

Relu导数:

   g ′ ( x ) = { 0 x < 0 1 x ≥ 0 g'\left( x\right) =\begin{cases}0\quad x <0\\ 1\quad x\geq 0\end{cases} g(x)={
0x<01x0
在这里插入图片描述

  Relu函数的优点:1.在SGD(随机梯度下降算法)中收敛速度够快。2.不会出现像Sigmoid那样梯度消失问题。3.提供了网络稀疏表达能力。4.在 无监督训练中也有良好的表现。

  缺点:1.不以0为中心。2.前向传导(forward pass)过程中,如果 x < 0,则神经元保持非激活状态,且在后向传导(backward pass)中「杀死」梯度。这样权重无法得到更新,网络无法学习。神经元死亡是不可逆的。

d)LReLU、PReLU与RReLU函数

在这里插入图片描述

  LRelu函数:抑制负的输入,原样输出正值。

LRelu函数:
   g ( x ) = max ⁡ ( 0.01 x , x ) g\left( x\right) =\max \left( 0.01x,x\right) g(x)=max(0.01x,x)
LRelu导数:
   g ′ ( x ) = { 0.01 x < 0 1 x ≥ 0 g'\left( x\right) =\begin{cases}0.01\quad x <0\\ 1\quad\quad x\geq 0\end{cases} g(x)={
0.01x<01x0
  LRelu的优点:缓解了Relu神经元死亡的问题。

PRelu函数:

公式:
   g ( x ) = max ⁡ ( α x , x ) g\left( x\right) =\max \left( \alpha x,x\right) g(x)=max(αx,x)
  这里引入了一个随机的超参数α,它可以被学习,因为你可以对它进行反向传播。这使神经元能够选择负区域最好的梯度,有了这种能力,它们可以变成 ReLU 或 Leaky ReLU。负值部分的斜率是根据数据来定的,而非预先定义的。

RRelu函数:

在这里插入图片描述

  RReLU也是Leaky ReLU的一个变体。在RReLU中,负值的斜率在训练中是随机的,在之后的测试中就变成了固定的了。RReLU的亮点在于,在训练环节中,aji是从一个均匀的分布U(I,u)中随机抽取的数值。

  RReLU中的aji是一个在一个给定的范围内随机抽取的值,这个值在测试环节就会固定下来。

e)ELU激活函数:

   f ( x ) = { x x ≥ 0 α ( e x − 1 ) x < 0 f\left( x\right) =\begin{cases}x \quad\quad\quad\quad\quad x\geq 0\\ \alpha \left( e^{x}-1\right)\quad x <0\end{cases} f(x)={

xx0α(ex1)x<0

在这里插入图片描述

  右侧的线性部分能够缓解梯度消失,左侧的软饱和能够对于输入变化鲁棒.而且收敛速度更快.

转载地址:http://jwdhf.baihongyu.com/

你可能感兴趣的文章
Logistic Regression 为什么用极大似然函数
查看>>
为什么在优化算法中使用指数加权平均
查看>>
Java集合详解1:一文读懂ArrayList,Vector与Stack使用方法和实现原理
查看>>
Java集合详解2:一文读懂Queue和LinkedList
查看>>
Java集合详解4:一文读懂HashMap和HashTable的区别以及常见面试题
查看>>
Java集合详解5:深入理解LinkedHashMap和LRU缓存
查看>>
Java集合详解6:这次,从头到尾带你解读Java中的红黑树
查看>>
Java并发指南2:深入理解Java内存模型JMM
查看>>
Java并发指南6:Java内存模型JMM总结
查看>>
Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理
查看>>
Java网络编程与NIO详解10:深度解读Tomcat中的NIO模型
查看>>
Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)
查看>>
深入理解JVM虚拟机1:JVM内存的结构与消失的永久代
查看>>
深入理解JVM虚拟机3:垃圾回收器详解
查看>>
深入理解JVM虚拟机4:Java class介绍与解析实践
查看>>
深入理解JVM虚拟机5:虚拟机字节码执行引擎
查看>>
深入理解JVM虚拟机6:深入理解JVM类加载机制
查看>>
深入了解JVM虚拟机8:Java的编译期优化与运行期优化
查看>>
深入理解JVM虚拟机9:JVM监控工具与诊断实践
查看>>
深入理解JVM虚拟机10:JVM常用参数以及调优实践
查看>>