查看原文
其他

神经网络的激活函数总结

AI学习与实践平台 SIGAI 2019-06-23

广而告之

SIGAI-AI学习交流群的目标是为学习者提供一个AI技术交流与分享的平台。操作指引:关注本微信公众号,回复“芝麻开门”,即可收到入群二维码,扫码即可。

同时在本微信公众号中,回复“SIGAI”+日期,如“SIGAI0515”,即可获取本期文章的全文下载地址(仅供个人学习使用,未经允许,不得用于商业目的)。

导言

激活函数在神经网络中具有重要的地位。在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的参数。显然该函数的导数为:

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

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

ELULayer类实现ELU激活函数,是直线函数和指数函数的结合。当x>0时函数值为x;当x<0是一条衰减的指数函数曲线。可以证明,当时该函数的极限为-a。当x<=0时其导数为:

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

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

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

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



▲向上滑动查看更多推荐文章


科普类

  【‍获取码】SIGAI0413

    机器学习——波澜壮阔四十年 

  【获取码】SIGAI0620

    理解计算:从√2到AlphaGo ——第1季 从√2谈起

  【获取码】SIGAI0704

    理解计算:从√2到AlphaGo ——第2季 神经计算的历史背景

  【获取码】SIGAI0713

    理解计算:从√2到AlphaGo ——第3季 神经计算的数学模型


数学类

【获取码】SIGAI0417

  学好机器学习需要哪些数学知识

【获取码】SIGAI0511

  理解梯度下降法

【获取码】SIGAI0518

  理解凸优化

【获取码】SIGAI0531

  理解牛顿法     


机器学习类

  【获取码】SIGAI0428

    用一张图理解SVM的脉络

  【获取码】SIGAI0505

    理解神经网络的激活函数

  【获取码】SIGAI0522

  【实验】理解SVM核函数和参数的作用

  【获取码】SIGAI0601

  【群话题精华】五月集锦—机器学习和深度学习中一些值得思考的问题    

  【获取码】SIGAI0602

    大话AdaBoost算法    

  【获取码】SIGAI0606

    理解主成分分析(PCA)    

  【获取码】SIGAI0611

    理解决策树  

  【获取码】SIGAI0613

    用一句话总结常用的机器学习算法

  【获取码】SIGAI0618

    理解过拟合

  【获取码】SIGAI0627

    k近邻算法

  【获取码】SIGAI0704

    机器学习算法地图

  【获取码】SIGAI0706

    反向传播算法推导—全连接神经网络

  【获取码】SIGAI0711

    如何成为一名优秀的算法工程师

  【获取码】SIGAI0723

    流形学习概述

  【获取码】SIGAI0725

    随机森林概述


深度学习类

【获取码】SIGAI0426

  卷积神经网络为什么能够称霸计算机视觉领域?

【获取码】SIGAI0508

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

【获取码】SIGAI0515

  循环神经网络综述—语音识别与自然语言处理的利器

【获取码】SIGAI0625

  卷积神经网络的压缩与加速

【获取码】SIGAI0709

    生成式对抗网络模型综述

  【获取码】SIGAI0718

    基于深度负相关学习的人群计数方法

  【获取码】SIGAI0723

    关于感受野的总结

机器视觉类

  【获取码】SIGAI0420

    人脸识别算法演化史

  【获取码】SIGAI0424 

    基于深度学习的目标检测算法综述

  【获取码】SIGAI0503

    人脸检测算法综述

  【获取码】SIGAI0525 

  【SIGAI综述】行人检测算法     

  【获取码】SIGAI0604

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

  【获取码】SIGAI0608

    人体骨骼关键点检测综述 

  【获取码】SIGAI0615

    目标检测算法之YOLO

  【获取码】SIGAI0622

    场景文本检测——CTPN算法介绍

  【获取码】SIGAI0629

    自然场景文本检测识别技术综述 

  【获取码】SIGAI0716

     人脸检测算法之S3FD

    【获取码】SIGAI0727

     基于内容的图像检索技术综述——传统经典方法

工业应用类

【获取码】SIGAI0529

  机器学习在自动驾驶中的应用-以百度阿波罗平台为例【上】


本文为SIGAI原创

 如需转载,欢迎发消息到本订号


SIGAI补充声明

上期文章《基于内容的图像检索技术综述——传统经典方法》中,参考文献未曾给出,现补充如下:

参考文献

[1]李大湘, 吴倩, 李娜. 融合LBP特征与LSH索引的鞋印图像检索[J]. 警察技术, 2016(3):47-49.

[2]Kim T E, Kim M H. Improving the search accuracy of theVLAD through weighted aggregation of local descriptors [J]. Journal of VisualCommunication & Image Representation, 2015, 31(C):237-252.

[3]Kim M. Dual soft assignment clustering algorithm for humanaction video clustering[J]. Computer Vision & Image Understanding, 2017,155:106-112.

[4]Yang J, Yu K, Gong Y, et al. Linear spatial pyramidmatching using sparse coding for image classification[J]. 2009:1794-1801.

[5]Sch?lkopf B, Platt J, Hofmann T. Efficient sparse codingalgorithms[J]. Proc of Nips, 2007, 19:801-808.

[6]王瑞霞. 基于稀疏编码的图像检索技术及其应用研究[D]. 西北工业大学, 2016.

[7]林中正. 图像稀疏表示方法及其在图像检索领域的应用研究[D]. 华东理工大学, 2013.

[8] Wang J, Yang J, Yu K, et al. Locality-constrained LinearCoding for image classification[C]// Computer Vision and Pattern Recognition.IEEE, 2010:3360-3367.

再次对上期作者manyi以及广大SIGAI小伙伴表示感谢。

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存