常用激活函数比较

本文结构:

  1. 什么是激活函数
  2. 为什么要用
  3. 都有什么
  4. sigmoid、ReLU、softmax的比较
  5. 如何选择

1. 什么是激活函数

如下图,在神经元中,输入的inputs通过加权,求和后,还被作用了一个函数,这个函数就是激活函数 Activation Function。


2. 为什么用

如果不用激励函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。

如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。


3. 都有什么

(1) sigmoid函数

公式:

曲线:

也叫Logistic函数,用于隐层神经元输出

取值范围为(0, 1)

它可以将一个实数映射到(0, 1)的区间,可以用来作为二分类。

在特征相差比较复杂或相差不是特别大时效果比较好。

下面解释为何会出现梯度消失:

反向传播算法中,要对激活函数求导,sigmoid的导数表达式为:

sigmoid原函数及导数图形如下:

由图可知,导数从0开始很快又趋近于0了,易造成“梯度消失”现象

(2) Tanh函数

公式

曲线

也称为双切正切函数

取值范围为[-1, 1]

tanh在特征相差明显时的效果会很好,在循环过程中会不断扩大特征效果。

与sigmoid的区别是,tanh是0均值的,因此实际应用中tanh会比sigmoid更好

(3) ReLU

Rectified Linear Unit(ReLU) - 用于隐层神经元输出

公式

曲线

输入信号<0时,输出都是0,>0的情况下,输出等于输入

Krizhevsky et al. 发现使用 ReLU 得到的 SGD 的收敛速度会比 sigmoid/tanh 快很多

ReLU的缺点:

训练的时候很“脆弱”,很容易就“die”了

例如,一个非常大的梯度流过一个ReLU神经元,更新过参数后,这个神经元再也不会对任何数据有激活现象了,那么这个神经元的梯度就永远都会是0

如果learning rate很大,那么很有可能网络中的40%的神经元都“dead”了

(4) softmax函数

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

公式

举个例子来看看公式的意思:

如果某一个zj大过其他z,那这个映射的分量就逼近于1,其他就逼近于0,主要应用就是多分类。

为什么要取指数,第一个原因就是要模拟max的行为,所以要让大的更大。

第二个原因是需要一个可导的函数。


4. sigmoid,ReLU,softmax的比较

sigmoid和ReLU的比较:

sigmoid的梯度消失问题,ReLU的导数就不存在这样的问题,它的函数表达式如下:

曲线如图所示

对比sigmoid类函数主要变化是:

  1. 单侧抑制
  2. 相对宽广的兴奋边界
  3. 稀疏激活性

sigmoid和softmax的区别:

softmax is a generalization of logistic function that “squashes”(maps) a K-dimensional vector z of arbitrary real values to a K-dimensional vector σ(z) of real values in the range (0, 1) that add up to 1.

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”类别。


5. 如何选择

选择的时候,就是根据各个函数的优缺点来配置,例如:

如果使用 ReLU,要小心设置 learning rate,注意不要让网络出现很多 “dead” 神经元,如果不好解决,可以试试 Leaky ReLU、PReLU 或者 Maxout.

原文地址:https://www.cnblogs.com/Vancuicide/p/9769353.html

时间: 2024-07-31 15:12:10

常用激活函数比较的相关文章

激活函数

1.Why 激活函数的作用: 用来加入非线性因素的,因为线性模型的表达能力不够. 如下一个单层感知机: 如果用多个感知机组合,能够获得更强的分类能力,: 然而组合起来的形式还是一个线性方程: 因此,提出了激活函数,在每层叠加完后,加一个激活函数,就变为非线性函数... 2. what  常用激活函数:(选取时保证可微) 1)tanh(双切正切函数) tanh在特征相差明显时的效果会很好,在循环过程中会不断扩大特征效果. 与 sigmoid 的区别是,tanh 是 0 均值的,因此实际应用中 ta

TensorFlow基础(三)激活函数

(1)激活函数 激活函数(Activation function)并不是指这个函数去激活什么,而是指如何把"激活的神经元的特征"通过函数把特征保留映射出来.对输入信息进行非线性变换. 线性模型的最大特点是任意线性模型的组合仍然还是线性模型.只通过线性模型,任意层的全连接神经网络和单层神经网络模型的表达能力没有任何区别.线性模型最大的局限性是表达能力不够,解决的问题有限.线性模型就能解决线性可分问题. 常用激活函数 1)sigmoid函数(曲线很像"S"型) 公式:

猪猪的机器学习笔记(十)人工神经网络

人工神经网络 作者:樱花猪 摘要: 本文为七月算法(julyedu.com)12月机器学习第十次次课在线笔记.人工神经网络在支持图像处理.文本.语言以及序列多种类型的数据处理时都用用到.本次课程更加侧重于实践,把抽象的人工神经网络用程序展现出来,课上讲述了编程使用的工具和方法,对于日后实验有非常重要的帮助. 引言: 人工神经网络(Artificial Neural Network,即ANN ),是20世纪80 年代以来人工智能领域兴起的研究热点.它从信息处理角度对人脑神经元网络进行抽象,建立某种

深度学习实践系列(2)- 搭建notMNIST的深度神经网络

如果你希望系统性的了解神经网络,请参考零基础入门深度学习系列,下面我会粗略的介绍一下本文中实现神经网络需要了解的知识. 什么是深度神经网络? 神经网络包含三层:输入层(X).隐藏层和输出层:f(x) 每层之间每个节点都是完全连接的,其中包含权重(W).每层都存在一个偏移值(b). 每一层节点的计算方式如下: 其中g()代表激活函数,o()代表softmax输出函数. 使用Flow Graph的方式来表达如何正向推导神经网络,可以表达如下: x: 输入值 a(x):表示每个隐藏层的pre-acti

[转] 神经网络编程学习

本文主要内容包括: (1) 介绍神经网络基本原理,(2) AForge.NET实现前向神经网络的方法,(3) Matlab实现前向神经网络的方法 . 第0节.引例  本文以Fisher的Iris数据集作为神经网络程序的测试数据集.Iris数据集可以在http://en.wikipedia.org/wiki/Iris_flower_data_set  找到.这里简要介绍一下Iris数据集: 有一批Iris花,已知这批Iris花可分为3个品种,现需要对其进行分类.不同品种的Iris花的花萼长度.花萼

机器学习:遗传算法原理及实例解析

在平时的研究之余,希望每天晚上闲下来的时候,都学习一个机器学习算法,今天看到几篇不错的遗传算法的文章,在这里总结一下. 1 神经网络基本原理   图1. 人工神经元模型 图中x1~xn是从其他神经元传来的输入信号,wij表示表示从神经元j到神经元i的连接权值,θ表示一个阈值 ( threshold ),或称为偏置( bias ).则神经元i的输出与输入的关系表示为: 图中 yi表示神经元i的输出,函数f称为激活函数 ( Activation Function )或转移函数 ( Transfer

python ocr(光学文字识别)学习笔记 (二)

参考资料:500 lines or less ocr 其中包括神经网络算法的简单介绍,如果看不懂您需要使用谷歌翻译呢 在这一节内容中,我们将对实现这个系统的算法进行分析 设计feedforward ANN(前馈神经网络,也称bp神经网络)时,我们需要考虑以下因素: 1.激活函数的选用 激活函数是结点输出的决策者.我们这个系统将为每个数字输出一个介于0到1的值,值越接近1意味着ann预测的是绘制的数字,越接近0意味着它被预测不是绘制的数字.因此我们将输出接近0或者1的激活函数.我们还需要一个可微分

实践认识--ANN

1. 常用激活函数  激活函数的选择是构建神经网络过程中的重要环节,下面简要介绍常用的激活函数. (1) 线性函数 ( Liner Function ) (2) 斜面函数 ( Ramp Function ) (3) 阈值函数 ( Threshold Function ) 以上3个激活函数都属于线性函数,下面介绍两个常用的非线性激活函数. (4) S形函数 ( Sigmoid Function ) 该函数的导函数: (5) 双极S形函数  该函数的导函数: S形函数与双极S形函数的图像如下: 图3

神经网络编程入门

转自http://www.cnblogs.com/heaad/archive/2011/03/07/1976443.html 本文主要内容包括: (1) 介绍神经网络基本原理,(2) AForge.NET实现前向神经网络的方法,(3) Matlab实现前向神经网络的方法 . 第0节.引例  本文以Fisher的Iris数据集作为神经网络程序的测试数据集.Iris数据集可以在http://en.wikipedia.org/wiki/Iris_flower_data_set  找到.这里简要介绍一下