一、前言

本人目前研一,研究方向为基于深度学习的医学图像分割,转眼间已接触深度学习快1年,研一生活也即将结束,期间看了大量的英文文献,做了大量的实验,也算是对深度学习有了一个初步的了解吧。接下来的一段时间,我会以总结的形式来记录研一期间学到的关于深度学习的基础知识,其中穿插着大量的个人作深度学习方面工作的经验,写这个系列的初衷一方面是为了记录研一的学习成果,另一方面也是为了帮助更多的人了解到深度学习这一大热领域,最后,大喊一声:深度学习yyds!

二、激活函数介绍

在接触激活函数之前,我们需要大致了解一下什么是感知机。

上图中的感知机接受x1和x2两个输入信号,输出为y。若用数学公式来表达图中的感知机,则:


b是称为偏置,用于控制神经元被激活的容易程度;而w1和w2是表示各个信号的权重的参数,用于控制各个信号的重要性。感知机将x1、x2、1(偏置,图中未画出)三个信号作为神经元的输入,将其和各自的权重相乘后,传送至下一个神经元。在下一个神经元中,计算这些加权信号的总和。如果这个总和超过0,则输出1,否则输出0。
我们将上述公式写为更简洁的形式:

输入的总和会被函数A转换,转换后的值就是输出y。在输入总和超过0时返回1,否则返回0。从公式中可以看出,该步骤可以分为2个阶段,先计算输入信号的总和,然后用激活函数转换。因此,可以将上述公式改写为:


刚才登场的A(x)会将输入信号转换为输出信号,这种函数称为激活函数(activation function)。激活函数的作用在于决定如何来激活输入信号的总和。至此,相信大家已经对激活函数有了一个大致的了解,明确激活函数的任务是什么,下面我们介绍一下常用的激活函数有哪些。

三、常用的激活函数

3.1 阶跃函数

从图中可以清晰地看出,阶跃函数以0为界,输出从0切换为1(或者从1切换为0)。它的值呈阶梯式变化,所以称为阶跃函数。

3.2 Sigmoid函数

Sigmoid函数定义为:

Sigmoid函数图像如下图所示:

Note:(Sigmoid函数和阶跃函数的比较)

  • 1.首先注意到的是“平滑性”的不同。sigmoid函数是一条平滑的曲线,输出随着输入发生连续性的变化。而阶跃函数以0为界,输出发生急剧性的变化。sigmoid函数的平滑性对神经网络的学习具有重要意义。
  • 2.另一个不同点是,相对于阶跃函数只能返回0或1,sigmoid函数可以返回0.731 …、0.880 …等实数(这一点和刚才的平滑性有关)。也就是说,感知机中神经元之间流动的是0或1的二元信号,而神经网络中流动的是连续的实数值信号。
  • 3.共同点:实际上,两者的结构均是“输入小时,输出接近0(为0);随着输入增大,输出向1靠近(变成1)”。也就是说,当输入信号为重要信息时,阶跃函数和sigmoid函数都会输出较大的值;当输入信号为不重要的信息时,两者都输出较小的值。还有一个共同点是,不管输入信号有多小,或者有多大,输出信号的值都在0到1之间。

3.3 tanh函数

tanh是双曲函数中的一个,tanh()为双曲正切。
tanh函数定义为:

图像如下所示:

Note(很重要):

Sigmoid函数和tanh函数作为常用的激活函数,必定有其的优势所在,但是两者都存在致命的缺陷,尤其是在越来越深的网络表现得愈加明显。首先,我们需要了解为什么深度神经网络收敛慢的原因。
这是因为深层神经网络在做非线性变换前的激活输入值(就是那个x=WU+B,U是输入)随着网络深度加深或者在训练过程中,其分布逐渐发生偏移或者变动,之所以训练收敛慢,一般是整体分布逐渐往非线性函数的取值区间的上下限两端靠近(对于Sigmoid函数来说,意味着激活输入值WU+B是大的负值或正值),所以这导致反向传播时低层神经网络的梯度消失,这是训练深层神经网络收敛越来越慢的本质原因。
也可以通过两者得图像可以看到,当输入大于2时,梯度会变得越来越小(更加详细的解读请移步详细解读BN的本质),这会导致深度神经网络出现梯度弥散的问题,以至于深度神经网络模型不能收敛。而之后提出的ReLU函数很好的解决了这个问题。

3.4 ReLU函数

3.4.1 ReLU介绍

ReLU函数定义如下式所示:

ReLU图像如下图所示:

3.4.2 使用ReLU的优势

第一个优点是 ReLU 函数计算简单,可以提升模型的运算速度,加快模型的收敛速度;第二个是如果网络很深,会出现梯度消失的问题,使得模型会出现不会收敛或者是收敛速度慢的问题,而使用 ReLU函数可以有效的解决模型收敛速度慢的问题。

四、 为什么使用激活函数

首先,我们需要明确一点是神经网络的中激活函数必须使用非线性函数。为什么不能使用线性函数呢?因为使用线性函数的话,加深网络层数就没有什么意义了。线性函数的问题在于,不管如何加深层数,总是存在与之等效的“无隐藏层的神经网络”。为了具体地理解这一点,我们来思考下面这个简单的例子。这里我们考虑把线性函数 h(x) = cx 作为激活函数,把y(x) = h(h(h(x)))的运算对应3层经网络A。这个运算会进行y(x) = c × c × c × x的乘法运算,但是同样的处理可以由y(x) = ax(注意,a = c**3)这一次乘法运算(即没有隐藏层的神经网络)来表示。如本例所示,使用线性函数时,无法发挥多层网络带来的优势。因此,为了发挥叠加层所带来的优势,激活函数必须使用非线性函数。

五、激活函数的一些变体

这里只介绍现代神经网络中最常用的ReLU函数的几种变体,变体有很多,包括Leaky ReLU、PReLU、ELU等等,说实话,我在这接近一年研究深度学习的工作中,从未用过ReLU的任何变体,而且同门师兄弟也没听说谁用过,所以在这里只是简单的介绍。

5.1 Leaky ReLU

为什么提出了Leaky ReLU?这需要从ReLU说起,ReLU函数对正数样本原样输出,负数直接置零。在正数不饱和,在负数硬饱和,ReLU在负数区域被Kill(即直接置0这一操作)的现象叫做dead relu。为了解决上述的dead ReLU现象。这里选择一个数,让负数区域不在饱和死掉。这里的斜率都是确定的,即Leaky ReLU。Leaky ReLU的定义及图像如下所示:

5.2 PReLU

PReLU与Leaky ReLU类似,只不过ReLU的参数是一个可学习的参数,而Leaky ReLU的参数是一个定值。PReLU的定义如下:

原文献建议初始化alpha,alpha为0.25,不采用正则,但是这要根据具体数据和网络,通常情况下使用正则可以带来性能提升。与Relu比起来,PRelu收敛速度更快。

参考文献

《深度学习入门-基于Python的理论与实现》
《ImageNet Classification with Deep ConvolutionalNeural Networks》

计划 – 深度学习系列

都2021年了,不会还有人连深度学习还不了解吧?(一)-- 激活函数篇
都2021年了,不会还有人连深度学习还不了解吧?(二)-- 卷积篇
都2021年了,不会还有人连深度学习还不了解吧?(三)-- 损失函数篇
都2021年了,不会还有人连深度学习还不了解吧?(四)-- 上采样篇
都2021年了,不会还有人连深度学习还不了解吧?(五)-- 下采样篇
都2021年了,不会还有人连深度学习还不了解吧?(六)-- Padding篇
都2021年了,不会还有人连深度学习还不了解吧?(七)-- 评估指标篇
都2021年了,不会还有人连深度学习还不了解吧?(八)-- 优化算法篇
都2021年了,不会还有人连深度学习还不了解吧?(九)-- 注意力机制篇
都2021年了,不会还有人连深度学习还不了解吧?(十)-- 数据归一化篇

觉得写的不错的话,欢迎点赞+评论+收藏,这对我帮助很大!

都2021年了,不会还有人连深度学习都不了解吧(一)- 激活函数篇相关推荐

  1. 都2021年了,不会还有人连深度学习都不了解吧(五)-- 下采样篇

    导读 该篇文章重点介绍CNN中下采样方式,下采样是CNN中必不可少的阶段之一,CNN中常用的下采样方式有平均池化和最大池化,同时平均池化和最大池化也是注意力机制的重要组件. 目前深度学习系列已经更新了 ...

  2. 都2021年了,不会还有人连深度学习都不了解吧(三)- 损失函数篇

    一.前言 深度学习系列文章陆陆续续已经发了两篇,分别是激活函数篇和卷积篇,纯干货分享,想要入门深度学习的童鞋不容错过噢!书接上文,该篇文章来给大家介绍" 选择对象的标准 "-- 损 ...

  3. 都2021年了,不会还有人连深度学习都不了解吧(二)- 卷积篇

    一.前言 上篇文章详细阐述了激活函数是什么.常用的激活函数有哪些以及为什么要使用激活函数,相信大家对此有了一定的了解.在此基础上,我们趁热打铁,继续学习深度学习其它必须的知识.该篇文章讲述卷积操作及其 ...

  4. 都2021年了,不会还有人连深度学习还不了解吧(六)-- Padding篇

    导读 本篇文章主要介绍CNN中常见的填充方式Padding,Padding在CNN中用的很多,是CNN必不可少的组成部分,使用Padding的目的主要是为了调整输出的大小,是必须搞清楚的知识点.如果你 ...

  5. 都2021年了不会还有人用门禁卡吧!(手把手教你用手机代替门禁卡)

    目录 一.软硬件准备 NFC Tool 蓝牙版读卡器 安卓NFC手机 二.大致流程 三.详细步骤 0x01 NFC Tool 破解母卡获取Dump文件 0x02 NFC Tool 读取母卡卡号,写入非 ...

  6. 都2021年了,你还在考虑电赛飞行器赛题,备赛是否有必要用基于TI处理芯片的飞控问题?

    无名创新售后群问题节选 @无名小哥 能问下今年国赛会不会指定某一款飞控呀? 答:都2021年了,你还在考虑电赛飞行器赛题备赛是否有必要用基于TI处理芯片的飞控问题? 暂不论官方是否会限定TI芯片的飞控 ...

  7. 劲爆!有人不用深度学习做强AI?道翰天琼认知智能机器人平台API接口大脑为您揭秘

    劲爆!有人不用深度学习做强AI?道翰天琼认知智能机器人平台API接口大脑为您揭秘 认知智能是计算机科学的一个分支科学,是智能科学发展的高级阶段,它以人类认知体系为基础,以模仿人类核心能力为目标,以信息 ...

  8. Java培训深度学习都要学什么

    java的知识点有很多,如果是有java基础的同学,进行深度学习是非常有必要的,比较职场技能更新迭代非常的快,那么java培训深度学习都要学什么呢?来看看下面的详细介绍. Java培训深度学习都要学什 ...

  9. 开源后5个月,Google的深度学习都有哪些改变?

    开源后5个月,Google的深度学习都有哪些改变? 发布时间: 2016-4-17 13:37:05   2016年4月14日,Google发布了分布式TensorFlow.Google的博文介绍了T ...

最新文章

  1. HDU1269(强连通分量)
  2. C指针原理(30)-C语言-LINUX/UNIX环境下调试
  3. 趣谈设计模式 | 策略模式(Strategy):你还在使用冗长的if-else吗?
  4. 小程序返回上一页并传参
  5. wpf将文字转化为图形_将创新转化为实际应用
  6. oracle 在所有表中查某个值,oracle需要查询某个字段的值在其他某个表中有没的值有相同...
  7. 5寸屏,智能之外也可以当数码相框
  8. linux man命令 0-8,Linux命令Man解释:SUDO(8):以root身份执行指令
  9. “630”落幕 光伏何去何从?
  10. Ruby设计模式透析之 —— 组合(Composite)
  11. Atitit.nosql api 标准化 以及nosql数据库的实现模型分类差异
  12. WordPress中文插件 Erphpdown vip会员+推广提成+收费下载/查看内容+前端个人中心 银联/支付宝/微信支付/财付通/贝宝paypal[更新至v9.6.1]
  13. POP模式,提示密码错误的问题(密码是对的)
  14. 死锁和哲学家就餐问题
  15. 部分双机热备软件详细介绍-行云管家
  16. 图形验证码 java
  17. 使用Mysql Navcat导出查询数据excel时出现数据丢失
  18. Android apps 拍立知-功能实现2(相机/选择相册及图像识别调用)
  19. java对接portal协议_Portal协议分析
  20. 邦纳光电开关MIAD9R

热门文章

  1. jmeter中生成UUID作为唯一标识符
  2. 【LuoguP33294123】[ZJOI2011]最小割[CQOI2016]不同的最小割
  3. leetcode刷题之树(2)
  4. Python中if __name__ == '__main__':作用
  5. JVM-程序计数器02
  6. 土地利用转移矩阵图怎么做_肺癌骨转移有哪些早期症状?做什么检查可以发现?怎么治疗?...
  7. 二叉搜索树(BFS)总结
  8. 将自己数据集转化为lmdb格式
  9. [云炬创业管理笔记]第十章商业计划书答辩测试2
  10. [云炬ThinkPython阅读笔记]2.9 术语表