激活函数(也被称为激励函数)的意义就是加入非线性因素,使得神经网络具有非线性表达的能力。其必要条件是激活函数的输入和输出都是可微的,因为神经网络要求处处可微。(可微是指函数的各个方向可导,可微大于等于可导)

一、激活函数的定义与作用

1.定义。如下图所示,激活函数一般是在神经元的输入(inputs)经过加权求和之后,还继续被一个函数作用。该函数就是激活函数。

2.作用。激活函数的意义也就是加入非线性因素,让神经网络具备非线性的表达能力(当然不是真正意义上的非线性,不过可以逼近任意的非线性函数罢了)。这也是个很了不得的进步了。

二、激活函数的类型

函数类型主要有Sigmoid、Tanh、Relu及其变种等函数。

1.Sigmoid

公式:                                                                   

函数曲线:

将输入x映射到(0,1)之间,对二分类比较有效。其缺点比较明显,

1)激活函数计算量大,收敛缓慢

2)反向传播时,容易出现梯度消失

2.Tanh

Tanh可以说是Sigmoid函数的升级版(但是并不能完全代替Sigmoid,因为有时要求输出大于等于0时,Sigmoid还是具有不可替代性),Tanh的值域为(-1,1)。

公式:                                           

函数曲线:

与Sigmoid相比,Tanh具有zero-centered的特性,并且具有放大特征的能力,但依然具有梯度消失和幂运算的计算复杂等问题。

3.Relu

Relu函数更为常用,因为其重视正向信号忽视负向信号和人类神经元细胞的特性特别相似,所以具有非常好的拟合效果。

公式:                                                                 

曲线:

虽然Relu是一个取最大值函数,并且局部可导,但是它是近几年来激活函数比较突出的进展,主要表现以下几点:

1)解决了梯度消失的问题(仅仅是在正区间);

2)计算速度和收敛速度快;

缺点也比较明显:

1)不具备zero-centered的特性;

2)Dead ReLU Problem。由于参数初始化的不幸或者learning rate的设置不正确(设置过大)导致的神经元可能永远不会被激活,即相应的参数永远不能被更新问题。其解决办法是采用Xavier初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法。

Relu和后面优化函数中的Adam算法一样,请优先使用(特别是对我这样的新手而言)。

4.Relu的变种PReLU

PReLU

公式:                                                                          

曲线:

主要是为了避免Relu的Dead ReLU Problem问题,令Relu的负半段为设为αx 而非0。
但是无法通过测试说明PReLU完全比Relu具有更好的表达性。

Relu6(tensorflow的函数)

公式:                                                                           

Relu6可有效防止梯度爆炸,由于节点和层数过多且输出为正时,经加权计算时输出与目标相差过大导致参数调整修正值过大引发的网络抖动,无法收敛的情况。

5.softmax

softmax函数是一个多分类函数,主要用于多分类任务。

公式:                                                           

其输出是分类的n个标签,每个标签的概率,其概率的和为1,其中选取概率最大的分类作为预测的目标。

总结:

1.深度学习必要的条件是大量的数据,针对数据最好采用zero-centered数据 和zero-centered输出,所以尽量选择具有zero-centered特点的激活函数以加快模型的收敛速度;

2.使用Relu时,要对learning rate比较熟悉,避免出现大量的“dead”神经元;

3.激活函数的使用,一般来说多分类的最后一层使用Softmax函数。而其余函数的使用优先顺序分别是Relu > Tanh >Sigmoid,一般来说Sigmoid最好不要使用,当然具体情况还是需要具体分析的。

参考文献:

1.《深度学习之tensorflow》;

2.https://blog.csdn.net/sinat_29957455/article/details/81841278

如有错误,请联系博主改正,谢谢指正!

深度学习基础(二)激活函数相关推荐

  1. 深度学习基础笔记——激活函数

    相关申明及相关参考: 体系学习地址 主要学习笔记地址 激活函数,你真的懂了吗? - 知乎 (zhihu.com) 聊一聊深度学习的activation function - 知乎 (zhihu.com ...

  2. 深度学习基础-----ReLu激活函数的反向传递过程

    ReLU函数详解及反向传播中的梯度求导_BrightLamp的博客-CSDN博客_relu求导

  3. 花书+吴恩达深度学习(二)非线性激活函数(ReLU, maxout, sigmoid, tanh)

    目录 0. 前言 1. ReLU 整流线性单元 2. 绝对值整流线性单元 3. 渗漏整流线性单元 4. 参数化整流线性单元 5. maxout 单元 6. logistic sigmoid 单元 7. ...

  4. 2021-07-14 深度学习基础与实践(二)

    深度学习基础与实践(二) 一.分类及其性能度量 1.分类问题 2.分类性能度量 (1)准确率 (2)精确率和召回率 (3)P-R曲线 (4)F值 (5)ROC曲线 3.分类性能可视化 (1)混淆矩阵的 ...

  5. 日月光华深度学习(一、二)深度学习基础和tf.keras

    日月光华深度学习(一.二)深度学习基础和tf.keras [2.2]--tf.keras实现线性回归 [2.5]--多层感知器(神经网络)的代码实现 [2.6]--逻辑回归与交叉熵 [2.7]--逻辑 ...

  6. 二分类交叉熵损失函数python_【深度学习基础】第二课:softmax分类器和交叉熵损失函数...

    [深度学习基础]系列博客为学习Coursera上吴恩达深度学习课程所做的课程笔记. 本文为原创文章,未经本人允许,禁止转载.转载请注明出处. 1.线性分类 如果我们使用一个线性分类器去进行图像分类该怎 ...

  7. 人工智能之深度学习连载二,模型基础与实现框架

    **摘要:**深度学习还没学完,怎么图深度学习又来了?别怕,这里有份系统教程,可以将0基础的你直接送到图深度学习.还会定期更新哦. 本系列内容争取每月更新2到4篇. 主要是基于图深度学习的入门内容.讲 ...

  8. 零基础入门深度学习(二):用一个案例掌握深度学习方法

    导读 本课程是百度官方开设的零基础入门深度学习课程,主要面向没有深度学习技术基础或者基础薄弱的同学,帮助大家在深度学习领域实现从0到1+的跨越.从本课程中,你将学习到: 深度学习基础知识 numpy实 ...

  9. 人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 个性化推荐

    人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 个性化推荐 本教程源代码目录在book/recommender_system,初次使用请您参考Book文档使用说明. 说明: 硬件 ...

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

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

最新文章

  1. 公式免费转 LaTex 代码,截图、转换一气呵成,每月 1000 次全免费
  2. Git提交项目到GitHub
  3. 六、Hive中的内部表、外部表、分区表和分桶表
  4. 驱动人生2008_驱动人生致敬深圳经济特区建立四十周年!
  5. teamcity mysql 配置_TeamCity : Build 基本配置
  6. 自学了三天的SeaJs学习,解决了前端的一些问题,与小伙伴们一起分享一下!...
  7. 地图画指定区域_善用GIS 妙绘“环卫”一图画卷
  8. 【转】程序员10月书讯
  9. 模电——二级管的限幅与稳压
  10. HashSet去重方法VS数据库去重查询
  11. lpb.wifi index.php,lpb(法国lpb是什么品牌)
  12. 图像区块分割与采样YUV4:2:0
  13. R语言作图——Dumbbell plot(哑铃图)
  14. 抱歉,我又可以了。。。
  15. Flask学习(二)-Jinji2模板引擎
  16. 丰富网页摘要——HTML5中的“微数据”(MicroData)
  17. C#有关字符串和路径的拼接
  18. Android10.0通知Notification的使用这一篇就够了
  19. 初学者必读VRay 2.0材质设置(1)——VRay材质设置基础
  20. Taro小程序组件传值

热门文章

  1. js通过身份证获取年龄
  2. Leetcode之二叉树(前200道)
  3. iOS-AFNetworking参数和多文件同时上传【多文件上传】
  4. 【noip模拟】德充符
  5. Qt 独立运行时伴随CMD命令窗口
  6. 【原生JS插件】LoadingBar页面顶部加载进度条
  7. windows apache 开启 GZIP
  8. 【linux】 -设备名称与文件目录
  9. koa --- 跨域,解析POST参数、路由配置
  10. javascript --- js中的事件