人工神经网络之激活函数 -tanh函数
tanh函数
证明
神经网络激活函数及导数
1、Sigmoid函数
Sigmoid 是使用范围最广的一类激活函数,具有指数函数形状 。正式定义为:
代码:
x=-10:0.001:10; %sigmoid和它的导数 sigmoid=1./(1+exp(-x)); sigmoidDer=exp(-x)./((1+exp(-x)).^2); figure; plot(x,sigmoid,‘r‘,x,sigmoidDer,‘b--‘); axis([-10 10 -1 1]); grid on; title(‘Sigmoid函数(实线)及其导数(虚线)‘); legend(‘Sigmoid原函数‘,‘Sigmid导数‘); set(gcf,‘NumberTitle‘,‘off‘); set(gcf,‘Name‘,‘Sigmoid函数(实线)及其导数(虚线)‘);
输出:
可见,sigmoid 在定义域内处处可导,且两侧导数逐渐趋近于0,即:
Bengio 教授等将具有这类性质的激活函数定义为软饱和激活函数。与极限的定义类似,饱和也分为左侧软饱和与右侧软饱和:
左侧软饱和:
右侧软饱和:
与软饱和相对的是硬饱和激活函数,即:f‘(x)=0,当 |x| > c,其中 c 为常数。
同理,硬饱和也分为左侧硬饱和和右侧硬饱和。常见的ReLU 就是一类左侧硬饱和激活函数。
Sigmoid 的软饱和性,使得深度神经网络在二三十年里一直难以有效的训练,是阻碍神经网络发展的重要原因。具体来说,由于在后向传递过程中,sigmoid向下传导的梯度包含了一个f‘(x) 因子(sigmoid关于输入的导数),因此一旦输入落入饱和区,f‘(x) 就会变得接近于0,导致了向底层传递的梯度也变得非常小。此时,网络参数很难得到有效训练。这种现象被称为梯度消失。一般来说, sigmoid 网络在 5 层之内就会产生梯度消失现象[Understanding the difficulty of training deep feedforward neural networks]。梯度消失问题至今仍然存在,但被新的优化方法有效缓解了,例如DBN中的分层预训练,Batch Normalization的逐层归一化,Xavier和MSRA权重初始化等代表性技术。
Sigmoid 的饱和性虽然会导致梯度消失,但也有其有利的一面。例如它在物理意义上最为接近生物神经元。(0, 1) 的输出还可以被表示作概率,或用于输入的归一化,代表性的如Sigmoid交叉熵损失函数
代码:
x=-10:0.001:10; tanh=(exp(x)-exp(-x))./(exp(x)+exp(-x)); tanhDer=1-tanh.^2; figure; plot(x,tanh,‘r‘,x,tanhDer,‘b--‘); grid on; title(‘tanh函数(实线)及其导数(虚线)‘); legend(‘tanh原函数‘,‘tanh导数‘); set(gcf,‘NumberTitle‘,‘off‘); set(gcf,‘Name‘,‘tanh函数(实线)及其导数(虚线)‘);
输出:
tanh也具有软饱和性。[Backpropagation applied to handwritten zip code recognition]中提到tanh网络的收敛速度要比sigmoid快。因为tanh的输出均值比sigmoid更接近0,SGD会更接近 natural gradient[Natural gradient works efficiently in learning](一种二次优化技术),从而降低所需的迭代次数。
人工神经网络之激活函数 -tanh函数相关推荐
- 人工神经网络之激活函数 -softmax函数
softmax 可以理解为归一化,如目前图片分类有一百种,那经过 softmax 层的输出就是一个一百维的向量.向量中的第一个值就是当前图片属于第一类的概率值,向量中的第二个值就是当前图片属于第二类的 ...
- 人工神经网络之激活函数 -RELU函数
一句话概括:不用simgoid和tanh作为激活函数,而用ReLU作为激活函数的原因是:加速收敛. 因为sigmoid和tanh都是饱和(saturating)的.何为饱和?个人理解是把这两者的函数曲 ...
- 人工神经网络之激活函数总结
激活函数: 传统神经网络中最常用的两个激活函数,Sigmoid系(Logistic-Sigmoid.Tanh-Sigmoid)被视为神经网络的核心所在.从数学上来看,非线性的Sigmoid函数对中央区 ...
- 激活函数——tanh函数
**i:**定义 tanh是双曲函数中的一个,tanh()为双曲正切.在数学中,双曲正切"tanh"是由基本双曲函数双曲正弦和双曲余弦推导而来. 其曲线如下所示: **ii:**求 ...
- 激活函数——tanh函数(理解)
0 - 定义 $tanh$是双曲函数中的一个,$tanh()$为双曲正切.在数学中,双曲正切"$tanh$"是由基本双曲函数双曲正弦和双曲余弦推导而来. $$tanhx=\frac ...
- 神经网络常用的三大激活函数sigmoid函数、tanh函数、relu函数对比讲解
在我们学习神经网络的时候经常要用到激活函数,但是我们对于为什么要使用这一个,它们之间的区别和优缺点各是什么不太了解.下面,我们来详细说一说这三个激活函数. - sigmoid函数 sigmoid函数也 ...
- 【深度学习】——神经网络中常用的激活函数:sigmoid、Relu、Tanh函数
激活函数 实际中的很多事情并不能简单的用线性关系的组合来描述.在神经网络中,如果没有激活函数,那么就相当于很多线性分类器的组合,当我们要求解的关系中存在非线性关系时,无论多么复杂的网络都会产生欠拟 ...
- 【卷积神经网络】12、激活函数 | Tanh / Sigmoid / ReLU / Leaky ReLU / ELU / SiLU / Mish
文章目录 一.Tanh 二.Sigmoid 三.ReLU 四.Leaky ReLU 五.ELU 六.SiLU 七.Mish 本文主要介绍卷积神经网络中常用的激活函数及其各自的优缺点 最简单的激活函数被 ...
- 深度学习——人工神经网络中为什么ReLu要好过于tanh和sigmoid function?
参考吴恩达的深度学习课程. 先看看各个激活函数图: 第一个问题:为什么引入非线性激励函数? 如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出都是上层输入的线性函数,很 ...
最新文章
- 刨根问底: Kafka 到底会不会丢数据?
- hdu4971 流-最大权闭包
- java正则测试_Java的正则表达式
- py文件控制台执行时,报错:引入的模块不存在
- Java技术分享:NIO实战教程!
- VTK:Math之1DTupleInterpolation
- 一个DataTable赋值给另一个
- 微信应用号(小程序)资源汇总(1010更新)
- 使用vue组件搭建网页应用
- c语言配电自动化,我是电气工程及其自动化专业的要学C语言吗?
- 分区分表实验用的语句
- Abstract 的使用
- 西宁a货翡翠,孝感a货翡翠
- 内存泄露Lowmemorykiller分析
- 计算机应用能力power,全国专业技术人员计算机应用能力考试专用教材——PowerPoint 2003中文演示文稿5日通题库版(双色)(附光盘) - 中国考研网...
- axure日期选择器组件_vue干货分享,超过六种组件通信方法讲解和精髓归纳
- lodop指定打印机打印_2020年打印机推荐选购,看这篇就够了
- promehteus 监控超时_使用 Prometheus Operator 监控 Kubernetes Etcd
- JVM从入门到入魔(一) 类加载机制
- 监控摄像头如何进行互联网网页实时直播
热门文章
- c语言中如何判断文件是否存在
- 设备与设备之间 的数据传输
- K13288 最小回文
- Q_D指针和Q_Q指针
- ldconfig mysql_ldconfig,一个动态链接库管理命令
- 构建简洁的DotNetCore CQS数据管道
- 正态分布西格玛越大_正态分布中“sigma原则”,“2sigma原则”,“3sigma原则”分别是什么原则?...
- python itertools_python - itertools 模块
- vue 报错问题(一看就懂)
- 群签名,环签名,盲签名,数字签名