深度学习之激活函数详解
激活函数是什么
激活函数,即Activation Function,有时候也称作激励函数。它是为了解决线性不可分的问题引出的。但是也不是说线性可分就不能用激活函数,也是可以的。它的目的是为了使数据更好的展现出我们想要的效果。
激活函数在哪里用?
比如一个神经网络
为了更清晰的表示,我用红色标出。比如像上面的网络z = W*x,这个线性运算就是上面节点白色的部分,另一部分当然就是F(z)了。则第一层隐层(除了输入和输出层,其他都为隐层,因为'看不见')输出的就是F(z)。但是不是说所有层都要经过激活函数。根据自己的情况而定。
为什么要用激活函数
这个用简单的数学推导即可。
比如有两层隐层网络:z_1 = W_1*x, z_2 = W_2*z_1 (x为输入层,W_1, W_2为两个隐层,z_2为输出层)
则z_2 = W_2*z_1 = W_2*W_1*x = W*x
可以看出,无论经过多少次隐层,跟经过一层的是一样的。简单的应该看出来激活函数的作用了吧。
激活函数该怎么用
就一个一个说说常用的吧。
sigmoid函数,范围是(0,1)。如果你想要你的数据近可能的处在0或1上,或者你要进行二分类,就用这个函数吧。其他的情况尽量不要用。或者几乎从来不用。因为,下面的这个函数几乎在任何场合都比sigmoid更加优越。
tanh函数,范围是(-1,1)。如果想让数据尽可能在-1和1之间,就考虑这个吧。
但是,sogmoid和tanh有个很明显的缺点:在z很大或者很小的时候,导数几乎是零,也就是在梯度下降优化时几乎更新不了。然而在机器学习中最受欢迎的莫过于修正线性单元reLU(rectified Linear Unit)。下面就是:
reLU = max(0, z) 当z小于零时,导数为0,当z大于0时,导数为1。这个激活函数几乎变成默认的激活函数,如果你不知道用什么激活函数的话。
虽然遇到向量z(0,0,0,0,0,0,0,0,...,0)的几率贼小,但是为了万无一失,有人就提出了下面的reLU版本:
leaky reLU = max(0.01z, z) 叫做 带泄漏reLU,0.01这个值是经验值,在z小于0的时候有个特别特别缓的直线。这个比reLU好用,但是实际用的真的不多。
reLU和leaky reLU的好处在于当z大于0时,导数和0差的很远。所以在实际实践中,用reLU和leaky reLU会使得神经网络学习速率快很多。虽然有z有小于0的可能,但是在实际中,有足够多的隐层单元是的z大于0
激活函数的导数
sigmoid F'(z) = 1 - F(z)
tanh F'(z) = 1 - F^2 (z)
1 if z >= 0
reLU F'(z) =
0 if z < 0
1 if z >= 0
leaky reLU F'(z) =
0.01 if z < 0
更多精彩内容,请关注 深度学习自然语言处理 公众号,就是下方啦!跟随小博主,每天进步一丢丢!哈哈!
深度学习之激活函数详解相关推荐
- 深度学习开发环境调查结果公布,你的配置是这样吗?(附新环境配置) By 李泽南2017年6月26日 15:57 本周一(6 月 19 日)机器之心发表文章《我的深度学习开发环境详解:Te
深度学习开发环境调查结果公布,你的配置是这样吗?(附新环境配置) 机器之心 2017-06-25 12:27 阅读:108 摘要:参与:李泽南.李亚洲本周一(6月19日)机器之心发表文章<我的深 ...
- 深度学习 --- BP算法详解(流程图、BP主要功能、BP算法的局限性)
上一节我们详细推倒了BP算法的来龙去脉,请把原理一定要搞懂,不懂的请好好理解BP算法详解,我们下面就直接把上一节推导出的权值调整公式拿过来,然后给出程序流程图,该流程图是严格按照上一节的权值更新过程写 ...
- 深度学习 --- 玻尔兹曼分布详解
上一节我们从Hopfield神经网络存在伪吸引子的问题出发,为了解决伪吸引子带来的问题,详细介绍了模拟退火算法,本节也是基础性的讲解,为了解决伪吸引子还需要引入另外一个重要概念即:玻尔兹曼分布.本篇将 ...
- 深度学习 --- BP算法详解(BP算法的优化)
上一节我们详细分析了BP网络的权值调整空间的特点,深入分析了权值空间存在的两个问题即平坦区和局部最优值,也详细探讨了出现的原因,本节将根据上一节分析的原因进行改进BP算法,本节先对BP存在的缺点进行全 ...
- 深度学习归一化算法详解(BN,LN,IN,GN)
目录 一.Batch Normalization(BN) 1.1为什么提出BN? 1.2BN的基本原理和公式 1.3BN在神经网络中的实现 1.4BN的优点和缺点 二.LN,IN,GN的原理和适用范围 ...
- 深度学习 --- Hopfield神经网络详解
前面几节我们详细探讨了BP神经网络,基本上很全面深入的探讨了BP,BP属于前馈式类型,但是和BP同一时期的另外一个神经网络也很重要,那就是Hopfield神经网络,他是反馈式类型.这个网络比BP出现的 ...
- 深度学习之优化详解:batch normalization
摘要: 一项优化神经网络的技术,点进来了解一下? 认识上图这些人吗?这些人把自己叫做"The Myth Busters",为什么?在他们的启发下,我们才会在Paperspace做类 ...
- 深度学习 --- 受限玻尔兹曼机详解(RBM)
本节终于来到了重头戏受限玻尔兹曼机,为了能深入理解本节,我们深入讲了很多基础知识,这些基础知识很重要,是理解本节的基础,同时也是你学习其他算法的基础如强化学习.自然语言处理等.本节的安排是先对比一下受 ...
- 从未看过如此详细的深度学习推荐系统应用详解,读它!
作者丨gongyouliu 编辑丨zandy 来源 | 大数据与人工智能(ID:ai-big-data) [导读]2016年DeepMind开发的AlphaGo在围棋对决中战胜了韩国九段选手李世石,一 ...
- 深度学习生态圈【详解深度学习工具Keras】
文章目录: 1 CNTK 2 Tensorflow2.1 介绍2.2 安装2.3 简单例子 3 Keras3.1 介绍3.2 安装Keras3.3 使用Keras构建深度学习模型3.4 一个例子 4 ...
最新文章
- 存储器里面的一个采用直接映射方式的32KB缓存-一个四路组相连的缓存,容量为16KB
- WOJ 1204 继续找相同
- 《搜索引擎-信息检索实践》7.2.1 分类应用与检索/BM25检索模型
- [整理]ADB命令行学习笔记
- 未能加载程序集或它的一个依赖项_英伟达发布kaolin:一个用于加速3D深度学习研究的PyTorch库...
- matlab如何将两张图画在一起,如何在MATLAB里面将两个图画在一起
- mysql学习整理(一)
- Centos6.5静态IP设置
- python CS游戏1--角色创建,武器购买
- Tests for normality正态分布检验(python代码实现)
- MATLAB 工具箱傻瓜式求解 NS(Navier Stoke)方程
- ARM架构及ARM指令集、Thumb指令集你了解多少?
- PCB电路板生产完成分析
- Scope参数错误或没有Scope权限解决方法
- python矩形法计算定积分_矩形、梯形法计算定积分的黎曼和
- GM8827C 多通道LVDS 串行发送器,27位CMOS/TTL信号转化为多路LVDS信号
- Teredo Tunnel Adapter: Error Code 10
- 如何彻底清理注册表?
- 断食有什么好处?如何轻松断食?
- 世界读书日送你畅销好书!前所未有4折购书福利