tanh函数

tanh(x)=e2x−1e2x+1tanh′(x)=1−tanh(x)2

证明

∂tanh(x)∂x=(1−2e2x+1)′=2⋅2e2x(e2x+1)2=4e2x(e2x+1)2=(e2x+1)2−(e2x−1)2(e2x+1)2=1−(e2x−1e2x+1)2=1−tanh(x)2(10)(11)(12)(13)(14)(15)

神经网络激活函数及导数

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函数相关推荐

  1. 人工神经网络之激活函数 -softmax函数

    softmax 可以理解为归一化,如目前图片分类有一百种,那经过 softmax 层的输出就是一个一百维的向量.向量中的第一个值就是当前图片属于第一类的概率值,向量中的第二个值就是当前图片属于第二类的 ...

  2. 人工神经网络之激活函数 -RELU函数

    一句话概括:不用simgoid和tanh作为激活函数,而用ReLU作为激活函数的原因是:加速收敛. 因为sigmoid和tanh都是饱和(saturating)的.何为饱和?个人理解是把这两者的函数曲 ...

  3. 人工神经网络之激活函数总结

    激活函数: 传统神经网络中最常用的两个激活函数,Sigmoid系(Logistic-Sigmoid.Tanh-Sigmoid)被视为神经网络的核心所在.从数学上来看,非线性的Sigmoid函数对中央区 ...

  4. 激活函数——tanh函数

    **i:**定义 tanh是双曲函数中的一个,tanh()为双曲正切.在数学中,双曲正切"tanh"是由基本双曲函数双曲正弦和双曲余弦推导而来. 其曲线如下所示: **ii:**求 ...

  5. 激活函数——tanh函数(理解)

    0 - 定义 $tanh$是双曲函数中的一个,$tanh()$为双曲正切.在数学中,双曲正切"$tanh$"是由基本双曲函数双曲正弦和双曲余弦推导而来. $$tanhx=\frac ...

  6. 神经网络常用的三大激活函数sigmoid函数、tanh函数、relu函数对比讲解

    在我们学习神经网络的时候经常要用到激活函数,但是我们对于为什么要使用这一个,它们之间的区别和优缺点各是什么不太了解.下面,我们来详细说一说这三个激活函数. - sigmoid函数 sigmoid函数也 ...

  7. 【深度学习】——神经网络中常用的激活函数:sigmoid、Relu、Tanh函数

    激活函数   实际中的很多事情并不能简单的用线性关系的组合来描述.在神经网络中,如果没有激活函数,那么就相当于很多线性分类器的组合,当我们要求解的关系中存在非线性关系时,无论多么复杂的网络都会产生欠拟 ...

  8. 【卷积神经网络】12、激活函数 | Tanh / Sigmoid / ReLU / Leaky ReLU / ELU / SiLU / Mish

    文章目录 一.Tanh 二.Sigmoid 三.ReLU 四.Leaky ReLU 五.ELU 六.SiLU 七.Mish 本文主要介绍卷积神经网络中常用的激活函数及其各自的优缺点 最简单的激活函数被 ...

  9. 深度学习——人工神经网络中为什么ReLu要好过于tanh和sigmoid function?

    参考吴恩达的深度学习课程. 先看看各个激活函数图: 第一个问题:为什么引入非线性激励函数? 如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出都是上层输入的线性函数,很 ...

最新文章

  1. 刨根问底: Kafka 到底会不会丢数据?
  2. hdu4971 流-最大权闭包
  3. java正则测试_Java的正则表达式
  4. py文件控制台执行时,报错:引入的模块不存在
  5. Java技术分享:NIO实战教程!
  6. VTK:Math之1DTupleInterpolation
  7. 一个DataTable赋值给另一个
  8. 微信应用号(小程序)资源汇总(1010更新)
  9. 使用vue组件搭建网页应用
  10. c语言配电自动化,我是电气工程及其自动化专业的要学C语言吗?
  11. 分区分表实验用的语句
  12. Abstract 的使用
  13. 西宁a货翡翠,孝感a货翡翠
  14. 内存泄露Lowmemorykiller分析
  15. 计算机应用能力power,全国专业技术人员计算机应用能力考试专用教材——PowerPoint 2003中文演示文稿5日通题库版(双色)(附光盘) - 中国考研网...
  16. axure日期选择器组件_vue干货分享,超过六种组件通信方法讲解和精髓归纳
  17. lodop指定打印机打印_2020年打印机推荐选购,看这篇就够了
  18. promehteus 监控超时_使用 Prometheus Operator 监控 Kubernetes Etcd
  19. JVM从入门到入魔(一) 类加载机制
  20. 监控摄像头如何进行互联网网页实时直播

热门文章

  1. c语言中如何判断文件是否存在
  2. 设备与设备之间 的数据传输
  3. K13288 最小回文
  4. Q_D指针和Q_Q指针
  5. ldconfig mysql_ldconfig,一个动态链接库管理命令
  6. 构建简洁的DotNetCore CQS数据管道
  7. 正态分布西格玛越大_正态分布中“sigma原则”,“2sigma原则”,“3sigma原则”分别是什么原则?...
  8. python itertools_python - itertools 模块
  9. vue 报错问题(一看就懂)
  10. 群签名,环签名,盲签名,数字签名