激活函数-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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • js 取整数[通俗易懂]

    js 取整数[通俗易懂]1.丢弃小数部分,保留整数部分parseInt(7/2)2.向上取整,有小数就整数部分加1 Math.ceil(7/2)3,四舍五入. Math.round(7/2)4,向下取整 Math.floor(7/2)

    2022年6月25日
    19
  • java bi报表工具_7款顶级开源BI(商务智能)软件和报表工具

    java bi报表工具_7款顶级开源BI(商务智能)软件和报表工具在这个信息化时代,每分每秒都产生海量数据。在海量数据中,挖掘出有用的数据,并且能以较人性化、直观的方式展示这些数据,变得尤为重要。本文将介绍7款顶级开源BI(商务智能)软件和报表工具,用于商业数据的分析处理,希望对您有所帮助。BIRT(BusinessIntelligenceandReportingTools)是由IBM在2004年开源的基于Eclipse的报表系统,它主要是…

    2022年10月29日
    0
  • a4988 脉宽要求_A4988步进电机驱动模块谁用过?

    a4988 脉宽要求_A4988步进电机驱动模块谁用过?A4988是一款完全的微步电动机驱动器,带有内置转换器,易于操作。该产品可在全、半、1/4、1/8及1/16步进模式时操作双极步进电动机,输出驱动性能可达35V及±2A。A4988包括一个固定关断时间电流稳压器,该稳压器可在慢或混合衰减模式下工作。转换器是A4988易于实施的关键。只要在“步进”输入中输入一个脉冲,即可驱动电动机产生微步。无须进行相位顺序表、高频率控制行或复…

    2022年6月17日
    27
  • spss19安装许可证代码_spss许可证不存在怎么办

    spss19安装许可证代码_spss许可证不存在怎么办联系我们官网:三维逆向网(www.3vnx.com)公众号:软件小秘书(rj-xms)QQ:609201757VX:dyc392001Spss23软件(Win64)下载链接:https://pan.baidu.com/s/1_cK8CxP9brmgw_dkBKwzoQ提取码:rb63Spss23软件(Win32)下载链接:https://pan.baidu.com/s/1pTkQwq…

    2025年6月8日
    0
  • url转换成二维码_地址转化为二维码

    url转换成二维码_地址转化为二维码前言根据公司业务需求,需要将指定的url催缴二维码,于是有了以下总结,作为一个记录,以便以后可以用到哦!一、将url直接生成二维码packagecom.xiaojukeji.it.common.util;importcom.google.zxing.BarcodeFormat;importcom.google.zxing.EncodeHintType;importcom.go…

    2022年9月6日
    2
  • MyBatisPlus IService详解

    IService的使用方法需要配置MyBatisPlus才能使用publicinterfaceUserService2extendsIService<User>{}@ServicepublicclassUserServiceImplextendsServiceImpl<UserMapper,User>implementsUserService2{}@RestControllerpublicclassUserController.

    2022年4月7日
    198

发表回复

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

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