激活函数是什么

激活函数,即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


更多精彩内容,请关注 深度学习自然语言处理 公众号,就是下方啦!跟随小博主,每天进步一丢丢!哈哈!

深度学习之激活函数详解相关推荐

  1. 深度学习开发环境调查结果公布,你的配置是这样吗?(附新环境配置) By 李泽南2017年6月26日 15:57 本周一(6 月 19 日)机器之心发表文章《我的深度学习开发环境详解:Te

    深度学习开发环境调查结果公布,你的配置是这样吗?(附新环境配置) 机器之心 2017-06-25 12:27 阅读:108 摘要:参与:李泽南.李亚洲本周一(6月19日)机器之心发表文章<我的深 ...

  2. 深度学习 --- BP算法详解(流程图、BP主要功能、BP算法的局限性)

    上一节我们详细推倒了BP算法的来龙去脉,请把原理一定要搞懂,不懂的请好好理解BP算法详解,我们下面就直接把上一节推导出的权值调整公式拿过来,然后给出程序流程图,该流程图是严格按照上一节的权值更新过程写 ...

  3. 深度学习 --- 玻尔兹曼分布详解

    上一节我们从Hopfield神经网络存在伪吸引子的问题出发,为了解决伪吸引子带来的问题,详细介绍了模拟退火算法,本节也是基础性的讲解,为了解决伪吸引子还需要引入另外一个重要概念即:玻尔兹曼分布.本篇将 ...

  4. 深度学习 --- BP算法详解(BP算法的优化)

    上一节我们详细分析了BP网络的权值调整空间的特点,深入分析了权值空间存在的两个问题即平坦区和局部最优值,也详细探讨了出现的原因,本节将根据上一节分析的原因进行改进BP算法,本节先对BP存在的缺点进行全 ...

  5. 深度学习归一化算法详解(BN,LN,IN,GN)

    目录 一.Batch Normalization(BN) 1.1为什么提出BN? 1.2BN的基本原理和公式 1.3BN在神经网络中的实现 1.4BN的优点和缺点 二.LN,IN,GN的原理和适用范围 ...

  6. 深度学习 --- Hopfield神经网络详解

    前面几节我们详细探讨了BP神经网络,基本上很全面深入的探讨了BP,BP属于前馈式类型,但是和BP同一时期的另外一个神经网络也很重要,那就是Hopfield神经网络,他是反馈式类型.这个网络比BP出现的 ...

  7. 深度学习之优化详解:batch normalization

    摘要: 一项优化神经网络的技术,点进来了解一下? 认识上图这些人吗?这些人把自己叫做"The Myth Busters",为什么?在他们的启发下,我们才会在Paperspace做类 ...

  8. 深度学习 --- 受限玻尔兹曼机详解(RBM)

    本节终于来到了重头戏受限玻尔兹曼机,为了能深入理解本节,我们深入讲了很多基础知识,这些基础知识很重要,是理解本节的基础,同时也是你学习其他算法的基础如强化学习.自然语言处理等.本节的安排是先对比一下受 ...

  9. 从未看过如此详细的深度学习推荐系统应用详解,读它!

    作者丨gongyouliu 编辑丨zandy 来源 | 大数据与人工智能(ID:ai-big-data) [导读]2016年DeepMind开发的AlphaGo在围棋对决中战胜了韩国九段选手李世石,一 ...

  10. 深度学习生态圈【详解深度学习工具Keras】

    文章目录: 1 CNTK 2 Tensorflow2.1 介绍2.2 安装2.3 简单例子 3 Keras3.1 介绍3.2 安装Keras3.3 使用Keras构建深度学习模型3.4 一个例子 4 ...

最新文章

  1. 存储器里面的一个采用直接映射方式的32KB缓存-一个四路组相连的缓存,容量为16KB
  2. WOJ 1204 继续找相同
  3. 《搜索引擎-信息检索实践》7.2.1 分类应用与检索/BM25检索模型
  4. [整理]ADB命令行学习笔记
  5. 未能加载程序集或它的一个依赖项_英伟达发布kaolin:一个用于加速3D深度学习研究的PyTorch库...
  6. matlab如何将两张图画在一起,如何在MATLAB里面将两个图画在一起
  7. mysql学习整理(一)
  8. Centos6.5静态IP设置
  9. python CS游戏1--角色创建,武器购买
  10. Tests for normality正态分布检验(python代码实现)
  11. MATLAB 工具箱傻瓜式求解 NS(Navier Stoke)方程
  12. ARM架构及ARM指令集、Thumb指令集你了解多少?
  13. PCB电路板生产完成分析
  14. Scope参数错误或没有Scope权限解决方法
  15. python矩形法计算定积分_矩形、梯形法计算定积分的黎曼和
  16. GM8827C 多通道LVDS 串行发送器,27位CMOS/TTL信号转化为多路LVDS信号
  17. Teredo Tunnel Adapter: Error Code 10
  18. 如何彻底清理注册表?
  19. 断食有什么好处?如何轻松断食?
  20. 世界读书日送你畅销好书!前所未有4折购书福利

热门文章

  1. 在asp.net 中实现只允许数字输入的文本框
  2. 【服务器代理跨域】---测试网络上一些接口是否可以被调用
  3. java day41【JSP 、MVC开发模式 、EL表达式 、JSTL标签 、三层架构】
  4. Linux window查询网络端口
  5. LeetCode 103——二叉树的锯齿形层次遍历
  6. easyUI 数据表格datagrid的使用
  7. 9.2NOIP模拟题
  8. 获取手机网络状态之ConnectivityManager
  9. 18107 校赛排名
  10. 学习python的错误总结