博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
开学季,你要的激活函数都在这里
阅读量:5757 次
发布时间:2019-06-18

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

什么是激活函数?

激活函数是神经网络输出端的一个节点,来连接两个神经网络。

为什么要在神经网络中使用激活函数

激活函数用来确定神经网络的输入,比如“是”或“否”,将结果映射为[01]或[-11]之间,根据函数的曲线,可分为两种类型:线性激活函数非线性激活函数

1.线性激活函数(恒等激活函数)

如下图所示,函数是线性的,函数的输出范围为(-∞,+∞)。

 37e3a7e445dc8ce8874366d6d54a0f961a8b3ecb

线性激活函数

方程式:f(x) = x

取值范围:(-∞,+∞)

2.非线性激活函数

非线性激活函数是最常用的激活函数,其曲线如下图所示:

 6d17f199183d34da12a4b695f74d7a45475f13d3

非线性激活函数

使用非线性激活函数,模型可以更容易进行自我调整,并区分不同的输出。非线性激活函数的主要术语有:

1.导数或微分:y轴随x轴的变化,称为斜率。

2.单调函数:完全递增或完全递减的函数。

根据取值范围,非线性激活函数可分为以下几种:Sigmoid激活函数Tanh激活函数ReLU激活函数

1.Sigmoid激活函数(Logistic激活函数)

Sigmoid激活函数的曲线“S”形。

997d59c549722f820c46b4ff6da845f0984045f2 

Sigmoid激活函数

sigmoid函数很受大众的欢迎,其主要原因是:它的输出处于[0,1]范围内,特别适用于输出概率的模型。由于任何概率的取值在0和1范围之间,因此,sigmoid激活函数是最好的选择。

该函数是可微的,也就是说,我们可以得到“S”曲线上任意两点之间的斜率。这个函数是单调的,但是其导数不是,sigmoid 激活函数可能会导致神经网络在训练的时候卡住。

softmax函数是一种更通用的逻辑激活函数,用于多类分类。

2.Tanh激活函数

tanh激活函数和sigmoid激活函数类似,但是要比sigmoid激活函数好。tanh激活函数的取值范围是(-1,1),曲线也“S”形。

  18d711f82265cc6d1feeb28eb19b0ab74e123f7f

sigmoid激活函数和tanh激活函数

tanh激活函数的优点在于,如果输入为负数,则输出也为负数,输入为0,则输出也近似为0。

该函数是可微分、单调的,但其导数不单调。tanh激活函数主要用于分类。

tanh和sigmoid激活函数都可用于前馈网络。

3.ReLU激活函数(Rectified Linear Unit)

在神经网络中,使用最多的激活函数是ReLU激活函数,它几乎可用于所有卷积神经网络或深度学习中。

 49744437ef17aabd5ee75268856ba7cfaedb6fc9 

ReLU激活函数和Sigmoid激活函数

如上图所示,在ReLU激活函数中,当z<0时,f(z)=0;当z>0时,f(z)=z。取值范围[0,+∞]

ReLU激活函数及其导数都是单调的。

存在一个问题:当输入为负值时,输出立刻变为0,这就降低了模型拟合或训练数据的能力。反过来说,为了不影响结果,就不能映射负值输入

4. Leaky ReLU激活函数

Leaky ReLU激活函数的出现,试图解决ReLU激活函数中出现的死亡问题。

7c5029b3695caad4e6b8a5c4a4cbd88fc822b793 

 ReLU激活函数和Leaky ReLU激活函数

Leaky ReLU激活函数扩大了ReLU激活函数的取值范围,如上图所示,通常,a的值为0.01左右。取值范围:(-∞,+∞)

当a不是0.01时,该函数称为Randomized ReLU。

本质上来说,Leaky  ReLU函数和Randomized ReLU函数都是单调的。 而且,它们的导数也单调。

为什么要使用导数和微分?

在更新曲线时,我们要知道哪个方向上会发生变化,或者是根据斜率来更新曲线。这就是我们要在机器学习和深度学习的每个部分都使用微分的原因。

 8cb354660065f98f2ef2e2fecb8d4d2c95a4cb5d 

激活函数汇总

2a18320dc2d5ebc0893a1f32ed7a1d18fb5d843d 

激活函数的导数曲线图汇总

本文由北邮 老师推荐,组织翻译。

文章原标题《Activation Functions Neural Networks

译者:Mags,审校:袁虎。

文章为简译,更为详细的内容,请查看

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

你可能感兴趣的文章
springcloud 学习-eureka搭建-为eureka添加认证
查看>>
jQuery插件的开发
查看>>
基础,基础,还是基础之JAVA基础
查看>>
如何成为一个C++高级程序员
查看>>
ant android 打包签名和渠道
查看>>
一个简单的接口,被调用并同步给出响应的方法
查看>>
Hadoop序列化与压缩
查看>>
我的友情链接
查看>>
显式锁(第十三章)
查看>>
SCCM的证书配置PKI
查看>>
看linux书籍做的一些重要笔记(2011.07.03更新)
查看>>
CString、Char* ,char [20]、wchar_t、unsigned short转化
查看>>
从案例学RxAndroid开发(上)
查看>>
Redis学习手册(内存优化)
查看>>
浅尝TensorFlow on Kubernetes
查看>>
springboot系列十 Spring-Data-Redis
查看>>
Confluence 6 注册外部小工具
查看>>
excel进行矩阵计算
查看>>
基于Android平台的动态生成控件和动态改变控件位置的方法
查看>>
linux 死机分析
查看>>