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

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

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. Linux Ethercat主站
  2. UVA 1515 - Pool construction(最小割)
  3. 怎样通过WireShark抓到的包分析出SIP流程图
  4. 99.99%安卓手机存在系统安全漏洞
  5. 全球IT公司100强排行榜出炉
  6. 超详细的Hadoop2配置详解
  7. python输出名片_Python的格式化输出--制作名片
  8. uniapp/vue 组件之间的传值
  9. 29. JavaScript - 测试 jQuery
  10. Redis Cluster 的安装和配置(1)
  11. List数组转换JSON格式
  12. 高通modem log分析基础
  13. 示波器FFT频谱分析的使用方法和注意点
  14. mac系统安装ae打不开,显示意外退出的解决方法
  15. 【matlab应用】:生成老电影海报
  16. seo策略_调整移动用户的SEO策略
  17. oracle数据库rdo,10_Oracle_Admin_手动创建一个比较实用的数据库
  18. 在excel中某些单元格内批量增加相同的内容
  19. win10 在git bash上使用docker
  20. srcollTop、clientHeight、scrollHeight详解

热门文章

  1. hoj 2739 中国邮局问题
  2. 某项目要调用现有的100多个DLL 一 开始
  3. SQL -- 多表查询
  4. 160-PHP 文本替换函数str_replace(一)
  5. Python 面向对象【1】
  6. python中#!/usr/bin/python与#!/usr/bin/env python的区别
  7. [MSDN]ASP.NET MVC2(5)MVCRoute和urls
  8. .Net 2.0里有一个有用的新功能:迭代器
  9. 前端导出文件,后端返回文件流过大直接干崩溃
  10. LVM逻辑卷详解及创建