激活函数-Sigmoid, Tanh及ReLU

什么是激活函数在神经网络中,我们会对所有的输入进行加权求和,之后我们会在对结果施加一个函数,这个函数就是我们所说的激活函数。如下图所示。为什么使用激活函数我们使用激活函数并不是真的激活什么,这只是一个抽象概念,使用激活函数时为了让中间输出多样化,能够处理更复杂的问题。如果不适用结果函数的话,每一层最后输出的都是上一层输入的线性函数,不管加多少层神经网络,我们最后的输出也只…

大家好,又见面了,我是你们的朋友全栈君。

什么是激活函数

 

在神经网络中,我们会对所有的输入进行加权求和,之后我们会在对结果施加一个函数,这个函数就是我们所说的激活函数。如下图所示。

激活函数-Sigmoid, Tanh及ReLU

为什么使用激活函数

我们使用激活函数并不是真的激活什么,这只是一个抽象概念,使用激活函数时为了让中间输出多样化,能够处理更复杂的问题。

如果不适用结果函数的话,每一层最后输出的都是上一层输入的线性函数,不管加多少层神经网络,我们最后的输出也只是最开始输入数据的线性组合而已。激活函数给神经元引入了非线性因素,当加入多层神经网络时,就可以让神经网络拟合任何线性函数及非线性函数,从而使得神经网络可以适用于更多的非线性问题,而不仅仅是线性问题。

有论文中把激活函数定义为一个几乎处处可微的函数f: R->R

有哪些激活函数

对于神经网络,一版我们会使用三种激活函数:Sigmoid函数、Tanh函数、ReLU函数。

基本概念:

饱和

当函数f(x)满足:

\lim_{x\rightarrow+\infty}f^{'}(x)=0

时,称为右饱和

当函数f(x)满足:

\lim_{x\rightarrow-\infty}f^{'}(x)=0

时,称为左饱和

当f(x)同时满足左饱和及右饱和时,称为饱和。

软包和与硬包和

在饱和定义的基础上,如果存在常数c1,当x>c1时候恒满足f^{'}(x)=0,称之为右硬饱和;同样的,如果存在c2,当x<c2时恒满足f^{'}(x)=0,称之为左硬饱和。如果同时满足了左饱和,又满足了右饱和,称之为硬包和。相对的,只有在x趋于极值时才能满足f(x)的倒数为0,则成为软饱和。

1. Sigmoid 函数

sigmoid 曾经风靡一时,但是由于sigmoid有自身的缺陷,现在用的比较少了。

函数公式如下:

f(x)=\frac{1}{1+e^{-x}},相应的f^{'}(x)=f(x)(1-f(x))

​​​​​​函数曲线如下:

激活函数-Sigmoid, Tanh及ReLU

优点:

<1> Sigmoid的取值范围在(0, 1),而且是单调递增,比较容易优化

<2> Sigmoid求导比较容易,可以直接推导得出。

缺点:

<1> Sigmoid函数收敛比较缓慢

<2> 由于Sigmoid是软饱和,容易产生梯度消失,对于深度网络训练不太适合(从图上sigmoid的导数可以看出当x趋于无穷大的时候,也会使导数趋于0)

<3> Sigmoid函数并不是以(0,0)为中心点

2. Tanh函数

tanh为双切正切曲线,过(0,0)点。相比Sigmoid函数,更倾向于用tanh函数

函数公式:

f(x)=\frac{sinh(x)}{cosh(x)}=\frac{1-e^{-2x}}{1+e^{-2x}}=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}=\frac{e^{2x}-1}{e^{2x}+1}=2sigmoid(2x)-1

相应的f^{'}(x)=tanh{'}(x)=sech^{2}(x)=1-tanh^{2}(x)

函数曲线如下:

激活函数-Sigmoid, Tanh及ReLU

优点:

<1> 函数输出以(0,0)为中学

<2> 收敛速度相对于Sigmoid更快

缺点:

<1> tanh并没有解决sigmoid梯度消失的问题

3. ReLU函数

最近这几年很常用的激活函数。

公式如下:

激活函数-Sigmoid, Tanh及ReLU

优点:

<1> 在SGD中收敛速度要比Sigmoid和tanh快很多

<2> 有效的缓解了梯度消失问题

<3> 对神经网络可以使用稀疏表达

<4> 对于无监督学习,也能获得很好的效果

缺点:

<1> 在训练过程中容易出现神经元失望,之后梯度永远为0的情况。比如一个特别大的梯度结果神经元之后,我们调整权重参数,就会造成这个ReLU神经元对后来来的输入永远都不会被激活,这个神经元的梯度永远都会是0,造成不可逆的死亡。

参考:http://www.cnblogs.com/rgvb178/p/6055213.html

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/124662.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 1024程序员节由来(1024程序员节宣言)

    曾经,在许多人的心中,程序员应该是这样的:画像格子衬衫不善言辞无女友电脑包常年加班但是呢,他们还有哪些不为人知的一面:1代码的好基友bug的大克星程序员的日常活动是什么呢?他们在食堂敲代码;他们在书店敲代码;他们在咖啡厅敲代码;他们甚至在斑马线上敲代码……他们的喜怒哀乐也很简单:一大串SQL语句,居然一下就成功时:(不敢相信)当代码没有正常执行,却不知道原因时…

    2022年4月16日
    45
  • hash算法和hash一致性_分布式一致性hash

    hash算法和hash一致性_分布式一致性hash一致性哈希算法(ConsistentHashing)最早在论文《ConsistentHashingandRandomTrees:DistributedCachingProtocolsforRelievingHotSpotsontheWorldWideWeb》中被提出。简单来说,一致性哈希将整个哈希值空间组织成一个虚拟的圆环,如假设某哈希函数H的值空间为0-2^

    2022年10月5日
    7
  • lrzsz的乱码问题[通俗易懂]

    lrzsz的乱码问题[通俗易懂]相信多数人都使用过lrzsz,它是一款在linux里可代替ftp上传和下载的程序。(来源:百度百科)lrzsz,它可以实现在windows和linux之间进行文件传输,有rz和sz两条命令。-rz:将windows上的文件传输到linux上。-sz:将linux上的文件传到windows上。在ubuntu16上lrzsz的安装:一条简单的命令即可apt-getinstalll…

    2022年6月23日
    51
  • SQL查询语句大全(个人总结)

    SQL查询语句大全(个人总结)全面的sql查询总结

    2022年4月29日
    72
  • JSP的Servlet与Tomcat

    JSP的Servlet与TomcatJSP的Servlet与Tomcat

    2022年4月22日
    40
  • Git基础使用教程[通俗易懂]

    Git基础使用教程[通俗易懂]Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理,是目前使用范围最广的版本管理工具。之前的博客中介绍了linux下安装Git的内容,这篇博客,简单介绍下使用Git进行本地文件管理和连接上传远程仓库的方法。。。一、Windows上安装Git一般我们工作的电脑都是Windows系统,要使用git首先要进行安装。从软件管家或者其他平台找到…

    2022年6月6日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号