神经网络的激活函数总结

导言

激活函数在神经网络中具有重要的地位。在SIGAI之前的公众号文章“理解神经网络的激活函数”中,我们回答了3个关键的问题:

为什么需要激活函数?

什么样的函数能用作激活函数?

什么样的函数是好的激活函数?

这篇文章从理论的角度介绍了激活函数的作用。承接上篇,在今天这篇文章中,SIGAI将为大家介绍当前深度学习中常用的一些激活函数,包括它们的工程实现。我们将以Caffe为例。

激活函数实现的是一对一的变换,即用相同的函数对输入向量的每个分量进行映射,得到输出向量,输入和输出向量的维数相同:

其中x和y都是n维向量。写成分量的形式为:

在工程实现时,如果将激活函数作为一个单独的层,则在正向传播时对输入向量的每个分量计算激活函数值f(x)。在反向传播时对输入数据计算导数值f’(x),然后乘以后一层送入的误差项,得到本层的误差项,送人前一层中:

如果你对反向传播算法的原理还不清楚,请阅读SIGAI之前的公众号文章“反向传播算法推导-全连接神经网络”。这里的乘法是向量逐元素对应相乘。由于激活函数没有需要学习训练得到的参数,因此无需根据误差项计算本层参数的导数值。

在神经网络的早期阶段,sigmoid函数,tanh被广为使用。在AlexNet出现之后,ReLU函数逐渐取代了这两个函数,得到了广泛使用,因为ReLU函数更不容易产生梯度消失问题。如果你对梯度消失问题,激活函数的饱和性还不清楚,请阅读我们之前的公众号文章“理解神经网络的激活函数”。

由于当前被提出的激活函数众多,为了便于大家理解与记忆,我们对此做了总结。各种常用的激活函数与它们的导数如下表所示:

根据这些函数的定义,我们很容易计算出它们的导数。

下面我们以Caffe为例,介绍这些激活函数的具体实现细节。在Caffe中,激活函数是一个单独的层,把它和全连接层,卷据层拆开的好处是更为灵活,便于代码复用和组合。因为无论是全连接层,还是卷据层,它们激活函数的实现是相同的,因此可以用一套代码来完成。

激活函数由神经元层完成,它们的基类是NeuronLayer,所有的激活函数层均从它派生得到,下面分别进行介绍,限于篇幅,我们只介绍一部分,其他的原理类似。此外,Dropout机制也由神经元层实现。

SigmoidLayer类实现了标准sigmoid激活函数。正向传播函数对每个输入数据计算sigmoid函数值,在这里count是输入数据的维数。实现代码如下:

TanHLayer类实现了tanh激活函数。正向传播函数实现代码如下:

类ReLULayer实现ReLU激活函数,和前面介绍的标准ReLU不同,这里做了改进,定义为:

其中a是人工设定的大于0的参数。显然该函数的导数为:

下面来看正向传播函数的代码:

反向传播函数的实现如下:

这样可以通过函数值得到导数值,减少计算量。正向传播函数的实现如下:

类PReLULayer实现了PReLU激活函数。正向传播函数的实现如下:

反向传播函数的实现如下:

类DropoutLayer实现Dropout机制。在训练阶段,随机丢掉一部分神经元,用剩下的节点进行前向和后向传播。这里实现时通过二项分布随机数来控制神经元是否启用,如果随机数取值为1则启用,否则不启用。正向传播函数的实现如下:

推荐阅读

[1] 机器学习-波澜壮阔40年 SIGAI 2018.4.13.

[2] 学好机器学习需要哪些数学知识?SIGAI 2018.4.17.

[3] 人脸识别算法演化史 SIGAI 2018.4.20.

[4] 基于深度学习的目标检测算法综述 SIGAI 2018.4.24.

[5] 卷积神经网络为什么能够称霸计算机视觉领域? SIGAI 2018.4.26.

[6] 用一张图理解SVM的脉络 SIGAI2018.4.28.

[7] 人脸检测算法综述 SIGAI 2018.5.3.

[8] 理解神经网络的激活函数 SIGAI 2018.5.5.

[9] 深度卷积神经网络演化历史及结构改进脉络-40页长文全面解读 SIGAI2018.5.8.

[10] 理解梯度下降法 SIGAI 2018.5.11.

[11] 循环神经网络综述—语音识别与自然语言处理的利器 SIGAI2018.5.15

[12] 理解凸优化 SIGAI 2018.5.18

[13] 【实验】理解SVM的核函数和参数 SIGAI2018.5.22

[14] 【SIGAI综述】行人检测算法 SIGAI2018.5.25

[15] 机器学习在自动驾驶中的应用—以百度阿波罗平台为例(上) SIGAI 2018.5.29

[16] 理解牛顿法 SIGAI 2018.5.31

[17] 【群话题精华】5月集锦—机器学习和深度学习中一些值得思考的问题 SIGAI 2018.6.1

[18] 大话Adaboost算法 SIGAI2018.6.2

[19] FlowNet到FlowNet2.0:基于卷积神经网络的光流预测算法 SIGAI2018.6.4

[20] 理解主成分分析(PCA) SIGAI 2018.6.6

[21] 人体骨骼关键点检测综述 SIGAI2018.6.8

[22] 理解决策树 SIGAI 2018.6.11

[23] 用一句话总结常用的机器学习算法 SIGAI 2018.6.13

[24] 目标检测算法之YOLO SIGAI 2018.6.15

[25] 理解过拟合 SIGAI 2018.6.18

[26] 理解计算:从√2到AlphaGo ——第1季 从√2谈起 SIGAI 2018.6.20

[27] 场景文本检测——CTPN算法介绍 SIGAI2018.6.22

[28] 卷积神经网络的压缩和加速 SIGAI2018.6.25

[29] k近邻算法 SIGAI 2018.6.27

[30] 自然场景文本检测识别技术综述 SIGAI 2018.6.27

[31] 理解计算:从√2到AlphaGo ——第2季 神经计算的历史背景 SIGAI2018.7.4

[32] 机器学习算法地图 SIGAI2018.7.6

[33] 反向传播算法推导-全连接神经网络SIGAI2018.7.9

[34] 生成式对抗网络模型综述SIGAI0709.

[35] 怎样成为一名优秀的算法工程师SIGAI0711.

[36]理解计算:从根号2到AlphaGo——第三季 神经网络的数学模型 SIGAI0716

[37]【技术短文】人脸检测算法之S3FD

[38] 基于深度负相关学习的人群计数方法 【获取码】SIGAI0718

[39] 流形学习概述【获取码】SIGAI0720

[40] 关于感受野的总结 【获取码】SIGAI0723

[41] 随机森林概述 【获取码】SIGAI0725

[42]基于内容的图像检索技术综述 传统经典方法 【获取码】SIGAI0727

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏新智元

周志华最新论文挑战深度学习 | 深度森林:探索深度神经网络以外的方法

【新智元导读】西瓜书《机器学习》作者、南京大学周志华日前发表论文,提出了一种基于树的方法,挑战深度学习。在设置可类比的情况下,新方法 gcForest 取得了和...

37711
来自专栏机器之心

深度学习目标检测模型全面综述:Faster R-CNN、R-FCN和SSD

选自medium 机器之心编译 机器之心编辑部 Faster R-CNN、R-FCN 和 SSD 是三种目前最优且应用最广泛的目标检测模型,其他流行的模型通常与...

4257
来自专栏机器学习算法与Python学习

机器学习(5) -- 模型评估与选择

Content   6. 学习模型的评估与选择     6.1 如何调试学习算法     6.2 评估假设函数(Evaluating a hypothesis)...

2985
来自专栏AI科技大本营的专栏

深度 | 机器学习中的模型评价、模型选择及算法选择

作者:Sebastian Raschka 翻译:reason_W 编辑:周翔 简介 正确使用模型评估、模型选择和算法选择技术无论是对机器学习学术研究还是工业场景...

5804
来自专栏企鹅号快讯

新手必备!十大机器学习算法之旅已启程

【IT168 资讯】在机器学习中,有一种叫做“没有免费的午餐”的定理。简而言之,它指出没有任何一种算法能够适用每一个问题,而且它对于监督式学习(即预测性建模)尤...

2067
来自专栏新智元

Bengio NIPS 最新论文:用线性分类探测器理解中间层,更好地诊断神经网络模型

【新智元导读】本文介绍 Bengio 和他的学生 Guillaume Alain 的最新论文,这篇论文也被即将于 12 月举行的著名会议 NIPS 接收。本文中...

3816
来自专栏人工智能头条

用反卷积(Deconvnet)可视化和理解卷积网络

2593
来自专栏AI研习社

新手必看的十种机器学习算法

AI 研习社按:在神经网络的成功的带动下,越来越多的研究人员和开发人员都开始重新审视机器学习,开始尝试用某些机器学习方法自动解决可以轻松采集数据的问题。然而,在...

37110
来自专栏机器之心

学界 | 神经网络碰上高斯过程,DeepMind连发两篇论文开启深度学习新方向

函数近似是机器学习众多问题的核心,而过去深度神经网络凭借其「万能近似」的属性在函数近似方面无与伦比。在高级层面,神经网络可以构成黑箱函数近似器,它会学习如何根据...

1452
来自专栏量子位

深度学习入门者必看:25个你一定要知道的概念

王瀚森 编译自 Analytics Vidhya 量子位 出品 | 公众号 QbitAI 人工智能,深度学习,机器学习……不管你在从事什么工作,都需要了解这些概...

4318

扫码关注云+社区