目录

1.激活函数的定义

2.激活函数在神经网络的位置

3.常用的激活函数

3.1 Sigmoid函数

3.2 tanh函数

3.3 relu函数

3.4 prelu函数

3.5 softmax函数

4.如何选择合适的激活函数



1.激活函数的定义

我们看百度百科对激活函数的定义:

激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。

激活函数(Activation functions)对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。

可以看出,激活函数主要的两个特性:

  1. 在人工神经网络上运行的函数,既然是一个函数,就能够普通的函数一样使用。
  2. 把非线性特性引入网络中,简单说就是激活函数有“掰弯”的能力。能够增强我们关注的特征,减弱不关注的特征。

比如线性函数:f(x)=x+1

添加一个绝对值的激活函数:|fx|=|x+1|

如果把x表示特征,y=x+1表示神经网络的一个处理层,y越大表示特征越明显;

显然,添加绝对值激活函数后,x越小和越大的特征,越被强化。

2.激活函数在神经网络的位置

我们看下激活函数在神经网络中的位置:

激活函数在上一层隐藏层的输出和下一层隐藏层输入之前。经过激活函数之后,上一层隐藏层的输出就被“掰弯”了。

3.常用的激活函数

3.1 Sigmoid函数

Sigmoid 是常用的非线性的激活函数,它的数学形式如下:

图像如下:

特点:
它能够把输入的连续实值变换为0和1之间的输出。如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1。可以用来做二分类。
缺点:

  1. 在深度神经网络中梯度反向传递时导致梯度爆炸和梯度消失,其中梯度爆炸发生的概率非常小,而梯度消失发生的概率比较大。具体表现为:如果我们初始化神经网络的权值为 [0,1]之间的随机值,由反向传播算法的数学推导可知,梯度从后向前传播时,每传递一层梯度值都会减小为原来的0.25倍,如果神经网络隐层特别多,那么梯度在穿过多层后将变得非常小接近于0,即出现梯度消失现象;当网络权值初始化为 (1,+∞)区间内的值,则会出现梯度爆炸情况。
  2. 计算中含有幂运算,求解时比较耗时。对于规模比较大的深度网络,会增加训练时间。
  3. Sigmoid 的 output 不是0均值(即zero-centered)。会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。产生的一个结果就是:如x>0,  f=wTx+b>0, 那么对w求局部梯度则都为正,这样在反向传播的过程中w要么都往正方向更新,要么都往负方向更新,导致有一种捆绑的效果,使得收敛缓慢。

3.2 tanh函数

tanh的数学形式如下:

图像如下:

特点:

  1. 解决了在正区间梯度消失的问题
  2. 计算速度非常快,只需要判断输入是否大于0
  3. 收敛速度远快于sigmoid和tanh

缺点:

  1. 输出不是非0均值(zero-centered)
  2. 某些神经元(如小于0的特征)可能永远不会被激活,导致相应的参数永远不能被更新。

3.3 relu函数

relu函数是一个取最大值函数,是目前最常用的激活函数,数学形式:

图像如下:

特点:

  1. 解决了在正区间梯度消失的问题
  2. 计算速度非常快,只需要判断输入是否大于0
  3. 收敛速度远快于sigmoid和tanh

缺点:

  1. 输出不是非0均值(zero-centered)
  2. 某些神经元(如小于0的特征)可能永远不会被激活,导致相应的参数永远不能被更新。

3.4 prelu函数

prelu函数是一个缓解relu神经元消亡问题的函数,数学形式:

α表示超参数,一般是取0~1之间的数,这个参数可以通过反向传播学习得到。

图像如下:

特点:

当x>=0是,y=x;当x<0时,y=αx;因此能缓解relu函数神经元死亡的问题,其他特性和relu一样。

3.5 softmax函数

softmax用于多分类神经网络输出,数学形式如下:

即某个分类的概率0<f(x)<1;所有分类的概率之和为1。

4.如何选择合适的激活函数

激活函数的选择要在了解每个激活函数的基础上,结合实际场景和经验得到,但整体会遵循以下原则:

  1. 深度学习往往需要大量时间来处理大量数据,模型的收敛速度是非常重要的。所以,总体上,训练深度学习网络尽量使用zero-centered数据 (可以经过数据预处理实现) 和zero-centered输出。所以要尽量选择输出具有zero-centered特点的激活函数以加快模型的收敛速度。
  2. 如果使用 relu,要小心设置学习比率,而且不要让网络出现很多未被激活的神经元,如果这个问题不好解决,那么可以试试 prelu。
  3. 最好不要用 sigmoid,你可以试试 tanh,不过可以预期它的效果会比不上relu。

[深度学习]什么叫激活函数相关推荐

  1. Homepage Machine Learning Algorithm 浅谈深度学习中的激活函数 - The Activation Function in Deep Learning

    原文地址:http://www.cnblogs.com/rgvb178/p/6055213.html 版权声明:本文为博主原创文章,未经博主允许不得转载. 激活函数的作用 首先,激活函数不是真的要去激 ...

  2. Keras深度学习实战(4)——深度学习中常用激活函数和损失函数详解

    Keras深度学习实战(4)--深度学习中常用激活函数和损失函数详解 常用激活函数 Sigmoid 激活函数 Tanh 激活函数 ReLU 激活函数 线性激活函数 Softmax 激活函数 损失函数 ...

  3. 盘点 深度学习妖怪 之 激活函数妖

    盘点 深度学习妖怪 之 激活函数妖 哈哈,捉妖师的我这次给大家简单盘点一下那些在深度神经网络中兴风作浪的激活函数都有哪些妖怪吧,个个身手不凡,狡猾狡猾滴! 在此之前先给说下我们在使用神经网络的时候为啥 ...

  4. 深度学习入门之激活函数

    深度学习入门之激活函数 参考书籍:深度学习入门--基于pyhthon的理论与实现 文章目录 深度学习入门之激活函数 前言 一.sigmoid函数 1.简介 2.python实现 3.函数用法 二.阶跃 ...

  5. R语言使用自定义函数编写深度学习Leaky ReLU激活函数、并可视化Leaky ReLU激活函数

    R语言使用自定义函数编写深度学习Leaky ReLU激活函数.并可视化Leaky ReLU激活函数 目录

  6. 浅谈深度学习中的激活函数 - The Activation Function in Deep Learning

    原文地址:http://www.cnblogs.com/rgvb178/p/6055213.html 版权声明:本文为博主原创文章,未经博主允许不得转载. 激活函数的作用 首先,激活函数不是真的要去激 ...

  7. 深度学习中的激活函数与梯度消失

    转载请注明出处:http://www.cnblogs.com/willnote/p/6912798.html 前言 深度学习的基本原理是基于人工神经网络,信号从一个神经元进入,经过非线性的激活函数,传 ...

  8. 深度学习中各激活函数的优缺点

    转自:https://blog.csdn.net/NOT_GUY/article/details/78749509 在深度学习中,信号从一个神经元传入到下一层神经元之前是通过线性叠加来计算的,而进入下 ...

  9. 吴恩达深度学习 —— 3.6 激活函数

    要搭建一个神经网络,可以选择的是选择隐层里用哪一个激活函数,还有神经网络的输出单元用什么激活函数. 到目前为止,我们一直用的是sigmoid激活函数,但有时候其它函数效果要好得多,我们看看一些可供选择 ...

  10. 深入理解深度学习中的激活函数

    1. 什么是激活函数? 生物神经网络是人工神经网络的起源.然而,人工神经网络(ANNs)的工作机制与大脑的工作机制并不是十分的相似.不过在我们了解为什么把激活函数应用在人工神经网络中之前,了解一下激活 ...

最新文章

  1. 【Harvest源码分析】GetWaveformAndSpectrumSub函数
  2. 分享Windows Vista Beta1下载
  3. 在MSN、QQ群、论坛上提问的决窍
  4. CodeForces 699C - Vacations
  5. [恢]hdu 2047
  6. 【Linux】一步一步学Linux——atrm命令(140)
  7. oracle over函数 去重,oracle over结合row_number分区进行数据去重处理
  8. django定时任务
  9. Activiti 5.3:子流程(subProcess)
  10. python 3d游戏记录路径_基于osg的python三维程序开发(五)------沿路径运动
  11. python打开外部应用
  12. zoj 1372
  13. python turtle绘图
  14. 金字塔 2020-12-29
  15. 我们该如何选择适合自己的编程语言呢?
  16. 北航软件工程硕士_21考研择校 | 北京航空航天大学软件工程怎么样?
  17. 2018-2019-2 20189215 《网络攻防技术》第二周作业
  18. 【密码科普】第7期 - 凯撒密码与密码机
  19. 数据结构之线性表(顺序表、链表、栈、队列)
  20. 四川大学计算机系统 赵树龙,王俊峰

热门文章

  1. input输入框只允许输入数字/ 数字+小数点/ 文字+字母/ 等解决方法
  2. JSON C# Class Generator ---由json字符串生成C#实体类的工具(转)
  3. Session基础知识
  4. 神州数码最佳实践之一:向项目管理要效益
  5. C#设计模式(20)——策略者模式(Stragety Pattern)
  6. 快速实现一个简单的canvas迷宫游戏
  7. 2017/12/29
  8. 浏览器用户用滤镜实现网页的翻转效果
  9. cxf-2.4.1 webservice客户端调用代码
  10. 创建型模式学习总结——设计模式学习笔记