文章目录

  • 1. 什么是激活函数?
  • 2. Sigmoid函数
  • 3. Tanh函数
  • 4. Relu函数
  • 5. Softplus函数
  • 6. Softmax函数
  • 参考

1. 什么是激活函数?

激活函数: 就是在神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。

如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。
如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

常见的激活函数包括

  • Sigmoid
  • TanHyperbolic(tanh)
  • ReLu
  • softplus函数
  • softmax

2. Sigmoid函数

在逻辑回归中我们介绍过sigmoid函数,该函数是将取值为 (−∞,+∞) 的数映射到 (0,1) 之间。sigmoid函数的公式以及图形如下:



对sigmoid函数进行求导,得:


sigmoid函数作为非线性激活函数,但是其并不被经常使用,它具有以下几个缺点:

(1)容易出现梯度消失(gradient vanishing)的现象:当激活函数接近饱和区时,变化太缓慢,导数接近0,根据后向传递的数学依据是微积分求导的链式法则,当前导数需要之前各层导数的乘积,几个比较小的数相乘,导数结果很接近0,从而无法完成深层网络的训练。

(2)Sigmoid的输出不是0均值(zero-centered):这会导致后层的神经元的输入是非0均值的信号,这会对梯度产生影响。以 f=sigmoid(wx+b)为例, 假设输入均为正数(或负数),那么对w的导数总是正数(或负数),这样在反向传播过程中要么都往正方向更新,要么都往负方向更新,导致有一种捆绑效果,使得收敛缓慢。

(3)幂运算相对耗时

3. Tanh函数

tanh函数相较于sigmoid函数要常见一些,该函数是将取值为 (−∞,+∞) 的数映射到 (−1,1) 之间,其公式与图形为:


Tanh函数的导数:

Tanh函数及其导数图像:

tanh:有数据中心化的效果,让均值接近于0,而不是0.5,这实际让下一层的学习更方便点。tanh几乎在所有场合都更优越,一个例外是输出层,因为y如果真实值为0或1,那么我们希望y帽介于0和1之间,而不是-1和1之间,这时sigmoid更适合。

Tanh和sigmoid的一个共同缺点:当z很大或很小时,那么这个函数的斜率会很小,很接近于0,这样会拖慢梯度下降法。

tanh函数将输入值压缩到 -1~1 的范围,因此它是0均值的,解决了Sigmoid函数的非zero-centered问题,但是它也存在梯度消失和幂运算的问题。

其实 tanh(x)=2sigmoid(2x)-1

4. Relu函数

ReLu函数的全称为Rectified Linear Units,称为修正线性单元,是一种分段线性函数,其弥补了sigmoid函数以及tanh函数的梯度消失问题。

函数表达式为:

其导数为:


优点:
(1)SGD算法的收敛速度比 sigmoid 和 tanh 快;(梯度不会饱和,解决了梯度消失问题)
(2)计算复杂度低,不需要进行指数运算;
(3)适合用于后向传播。

缺点:
(1)ReLU的输出不是zero-centered;
(2)Dead ReLU Problem(神经元坏死现象):某些神经元可能永远不会被激活,导致相应参数永远不会被更新(在负数部分,梯度为0)。产生这种现象的两个原因:参数初始化问题;learning rate太高导致在训练过程中参数更新太大。 解决方法:采用Xavier初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法。
(3)ReLU不会对数据做幅度压缩,所以数据的幅度会随着模型层数的增加不断扩张。

ReLu函数的其他变体

5. Softplus函数

softplus函数是平滑版的ReLu函数,其函数表达式如下:

其函数图像ReLu函数图像

可以看到,softplus可以看作是ReLu的平滑。根据神经科学家的相关研究,softplus和ReLu与脑神经元激活频率函数有神似的地方。也就是说,相比于早期的激活函数,softplus和ReLu更加接近脑神经元的激活模型,

而神经网络正是基于脑神经科学发展而来,这两个激活函数的应用促成了神经网络研究的新浪潮。

softplus和ReLu相比于Sigmoid的优点在哪里呢?

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


需要注意的是:tanh特征相差明显时的效果会很好,在循环过程中会不断扩大特征效果显示出来,但有是,在特征相差比较复杂或是相差不是特别大时,需要更细微的分类判断的时候,sigmoid效果就好了。

还有一个东西要注意,sigmoid 和 tanh作为激活函数的话,一定要注意一定要对 input 进行归一话,否则激活后的值都会进入平坦区,使隐层的输出全部趋同,但是 ReLU 并不需要输入归一化来防止它们达到饱和。

6. Softmax函数

Softmax - 用于多分类神经网络输出


下面为大家解释一下为什么softmax是这种形式。我们知道指数函数的值域取值范围是零到正无穷。与概率取值相似的地方是它们都是非负实数。那么我们可以利用指数函数将多分类结果映射到零到正无穷。然后进行归一化处理,便得到了近似的概率。

总结一下softmax如何将多分类输出转换为概率:

1)分子:通过指数函数,将实数输出映射到零到正无穷。

2)分母:将所有结果相加,进行归一化。

Sigmoid 和 Softmax 区别:

sigmoid将一个real value映射到(0,1)的区间,用来做二分类。
而 softmax 把一个 k 维的real value向量(a1,a2,a3,a4….)映射成一个(b1,b2,b3,b4….)其中 bi 是一个 0~1 的常数,输出神经元之和为 1.0,所以相当于概率值,然后可以根据 bi 的概率大小来进行多分类的任务。
二分类问题时 sigmoid 和 softmax 是一样的,求的都是 cross entropy loss,而 softmax 可以用于多分类问题
softmax是sigmoid的扩展,因为,当类别数 k=2 时,softmax 回归退化为 logistic 回归。具体地说,当 k=2 时,softmax 回归的假设函数为:

利用softmax回归参数冗余的特点,从两个参数向量中都减去向量θ1 ,得到:

最后,用 θ′ 来表示 θ2−θ1,上述公式可以表示为 softmax 回归器预测其中一个类别的概率为:

另一个类别概率的为

这与 logistic回归是一致的。
softmax建模使用的分布是多项式分布,而logistic则基于伯努利分布
  
多个logistic回归通过叠加也同样可以实现多分类的效果,但是 softmax回归进行的多分类,类与类之间是互斥的,即一个输入只能被归为一类;多个logistic回归进行多分类,输出的类别并不是互斥的,即"苹果"这个词语既属于"水果"类也属于"3C"类别。

参考

神经网络常见的激活函数汇总
神经网络中常用的几种激活函数的理解
激活函数的比较和优缺点,sigmoid,tanh,relu,softmax
激活函数—Sigmoid、Tanh、ReLu、softplus、softmax
深度学习中激活函数的优缺点
非线性激励函数sigmoid,tanh,softplus,Relu
常用激活函数比较

神经网络中的激活函数相关推荐

  1. 基于Python实现神经网络中的激活函数图像绘制

    神经网络中的激活函数图像绘制 在深度学习中,常用的激活函数主要有:Sigmoid函数,Tanh函数,ReLU函数等. 图像绘制效果: 图像绘制代码下载链接:激活函数绘制.py Sigmoid函数 该函 ...

  2. 深度学习:神经网络中的激活函数

    http://blog.csdn.net/pipisorry/article/details/71157037 激活函数 神经网络神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数, ...

  3. 神经网络中的激活函数与损失函数深入理解推导softmax交叉熵

    神经网络中的激活函数与损失函数&深入理解softmax交叉熵 前面在深度学习入门笔记1和深度学习入门笔记2中已经介绍了激活函数和损失函数,这里做一些补充,主要是介绍softmax交叉熵损失函数 ...

  4. 神经网络中的激活函数的比较

    常见激活函数 神经网络中,常见的激活函数有以下几种: 1. sigmoid f(x)=11+e−xf(x) = \frac{1}{1+e^{-x}}f(x)=1+e−x1​ f′(x)=f(x)(1− ...

  5. 神经网络激活函数对数函数_神经网络中的激活函数

    神经网络激活函数对数函数 Activation function, as the name suggests, decides whether a neuron should be activated ...

  6. 神经网络中的激活函数介绍

    转载请注明出处:http://blog.csdn.net/gamer_gyt 博主微博:http://weibo.com/234654758 Github:https://github.com/thi ...

  7. 从sigmoid到GELU——神经网络中的激活函数

    目录 一.激活函数及其作用 二.激活函数的分类 1.sigmoid 2.tanh激活函数 3.RELU函数--Rectified Linear Unit--整流线性单元 4.Leaky ReLU 5. ...

  8. 神经网络中的激活函数的作用和选择

    如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出都是上层输入的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是 ...

  9. 神经网络中常用激活函数总结

    好久没写博客和学习笔记了,感觉最近总是没有学习状态呀,就很烦.虽说确实是有在看一些视频课程但是总是精神有力,每天过得也好快总感觉啥都没学时间就过去了阿西.还是得逼最近写写笔记才能不那么恍惚.前几天开始 ...

  10. 机器学习:神经网络中的激活函数

    随着深度学习的兴起,神经网络也似乎成了所有计算机视觉任务的标配,大家除了研究各种各样的网络结构之外,还有研究优化方法的,以及激活函数的,这篇博客就对当前各种各样的激活函数做一个总结,分析其背后的性质. ...

最新文章

  1. 第一课.Linux系统的介绍与ubuntu虚拟机安装
  2. brew改源无效问题之一
  3. 学习方法之05六步法则,考上清华北大的路径
  4. flink的分桶策略BucketAssigner与hive的分区的对应关系
  5. 域名解析是否生效实时检测(阿里云DNS检测)
  6. online游戏服务器架构--网络架构
  7. python二值化特征_OpenCV-Python系列之轮廓特征高阶
  8. Wine DLL库安装工具winetricks
  9. vba移动文件_VBA代码如何移动文件,如何复制文件
  10. 通讯录管理系统 指针 链表 学生管理系统 人员管理系统
  11. html文字闪光效果,css实现字体闪烁效果
  12. 考研数学数学二有手就行系列之多元函数微分学(六)
  13. 使用python读取官方节假日文件,获取放假日期
  14. html 引入 BootCDN 上的库
  15. org.springframework.util.AntPathMatcher:URL 与 匹配规则
  16. 系统之美 作者:德内拉梅多斯
  17. QQ群排名优化到霸屏的策略怎么做?
  18. 【第24篇】YOLOR:多任务的统一网络
  19. Android ViewPager嵌套ViewPager+Fragment问题
  20. 通过keil使用汇编语言生成二进制文件,并使用vivado仿真cortexm0处理器

热门文章

  1. 用exp无法导出空表解决方法/用exp导出数据时表丢失原因
  2. opengl 关于glGenBuffers函数没有定义
  3. influxdb 配置
  4. Linux window查询网络端口
  5. java第五周课后作业
  6. Python进阶-----类的内置item属性方法
  7. 【求助】C# Charting控件 画散点图,当所有的点X=0时,X轴的位置画错了,代码如下...
  8. bat脚本:Java一键编译(Javac java)
  9. 【Qt点滴】UDP协议实例:简易广播实现
  10. [leetcode]Length of Last Word