0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

13种神经网络激活函数

zhKF_jqr_AI 来源:未知 作者:李倩 2018-05-16 11:18 次阅读

机器学习初创公司Mate Labs联合创始人Kailash Ahirwar简要介绍了13种神经网络激活函数。

激活函数将非线性引入网络,因此激活函数自身也被称为非线性。神经网络是普适的函数逼近器,而深度神经网络基于反向传播训练,因此要求可微激活函数。反向传播在这一函数上应用梯度下降,以更新网络的权重。理解激活函数非常重要,因为它对深度神经网络的质量起着关键的作用。本文将罗列和描述不同的激活函数。

线性激活函数

恒等函数(Identity)或线性激活(Linear activation)函数是最简单的激活函数。输出和输入成比例。线性激活函数的问题在于,它的导数是常数,梯度也是常数,梯度下降无法工作。

值域:(-∞, +∞)

例子:f(2) = 2或f(-4) = -4

阶跃函数

阶跃函数(Heaviside step function)通常只在单层感知器上有用,单层感知器是神经网络的早期形式,可用于分类线性可分的数据。这些函数可用于二元分类任务。其输出为A1(若输入之和高于特定阈值)或A0(若输入之和低于特定阈值)。感知器使用的值为A1 = 1、A0 = 0.

值域:0或1

例子:f(2) = 1、f(-4) = 0、f(0) = 0、f(1) = 1

图片来源:维基百科

sigmoid函数

sigmoid函数,也称逻辑激活函数(Logistic activation function)最常用于二元分类问题。它有梯度消失问题。在一定epoch数目之后,网络拒绝学习,或非常缓慢地学习,因为输入(X)导致输出(Y)中非常小的改动。现在,sigmoid函数主要用于分类问题。这一函数更容易碰到后续层的饱和问题,导致训练变得困难。计算sigmoid函数的导数非常简单。

就神经网络的反向传播过程而言,每层(至少)挤入四分之一的误差。因此,网络越深,越多关于数据的知识将“丢失”。某些输出层的“较大”误差可能不会影响相对较浅的层中的神经元的突触权重(“较浅”意味着接近输入层)。

sigmoid函数定义

sigmoid函数的导数

值域:(0, 1)

例子:f(4) = 0.982、f(-3) = 0.0474、f(-5) = 0.0067

图片来源:维基百科

图片来源:deep learning nano foundation

tanh函数

tanh函数是拉伸过的sigmoid函数,以零为中心,因此导数更陡峭。tanh比sigmoid激活函数收敛得更快。

值域:(-1, 1)

例子:tanh(2) = 0.9640、tanh(-0.567) = -0.5131、tanh(0) = 0

图片来源:维基百科

ReLU函数

ReLU(Rectified Linear Unit,修正线性单元)训练速度比tanh快6倍。当输入值小于零时,输出值为零。当输入值大于等于零时,输出值等于输入值。当输入值为正数时,导数为1,因此不会出现sigmoid函数反向传播时的挤压效应。

值域:[0, x)

例子:f(-5) = 0、f(0) = 0、f(5) = 5

图片来源:维基百科

不幸的是,ReLU在训练时可能很脆弱,可能“死亡”。例如,通过ReLU神经元的较大梯度可能导致权重更新过头,导致神经元再也不会因为任何数据点激活。如果这一情况发生了,经过这一单元的梯度从此以后将永远为零。也就是说,ReLU单元可能在训练中不可逆地死亡,因为它们被从数据流形上踢出去了。例如,你可能发现,如果学习率设置过高,40%的网络可能“死亡”(即神经元在整个训练数据集上永远不会激活)。设置一个合适的学习率可以缓解这一问题。

-- Andrej Karpathy CS231n 课程

Leaky ReLU函数

Leaky ReLU让单元未激活时能有一个很小的非零梯度。这里,很小的非零梯度是0.01.

值域:(-∞, +∞)

PReLU函数

PReLU(Parametric Rectified Linear Unit)函数类似Leaky ReLU,只不过将系数(很小的非零梯度)作为激活函数的参数,该参数和网络的其他参数一样,在训练过程中学习。

值域:(-∞, +∞)

RReLU函数

RReLU也类似Leaky ReLU,只不过系数(较小的非零梯度)在训练中取一定范围内的随机值,在测试时固定。

值域:(-∞, +∞)

ELU函数

ELU(Exponential Linear Unit,指数线性单元)尝试加快学习速度。基于ELU,有可能得到比ReLU更高的分类精确度。这里α是一个超参数(限制:α ≥ 0)。

值域:(-α, +∞)

SELU函数

SELU(Scaled Exponential Linear Unit,拉伸指数线性单元)是ELU经过拉伸的版本。

图片来源:Elior Cohen

SReLU函数

SReLU(S-shaped Rectified Linear Activation Unit,S型修正线性激活单元)由三个分段线性函数组成。系数作为参数,将在网络训练中学习。

值域:(-∞, +∞)

不同参数的SReLU图像;图片来源:arXiv:1512.07030

APL函数

APL(Adaptive Piecewise Linear,自适应分段线性)函数

图片来源:arXiv:1512.07030

值域:(-∞, +∞)

SoftPlus函数

SoftPlus函数的导数为逻辑(logistic)函数。大体上,ReLU和SoftPlus很相似,只不过SoftPlus在接近零处平滑可微。另外,计算ReLU及其导数要比SoftPlus容易很多。

值域:(0, ∞)

图片来源:维基百科

bent identity函数

bent identity函数,顾名思义,将恒等函数弯曲一下。

值域:(-∞, +∞)

图片来源:维基百科

softmax函数

softmax函数将原始值转换为后验分布,可用于衡量确定性。类似sigmoid,softmax将每个单元的输出值挤压到0和1之间。不过,softmax同时确保输出的总和等于1.

图片来源:dataaspirant.com

softmax函数的输出等价于类别概率分布,它告诉你任何分类为真的概率。

结语

选择激活函数时,优先选择ReLU及其变体,而不是sigmoid或tanh。同时ReLU及其变体训练起来更快。如果ReLU导致神经元死亡,使用Leaky ReLU或者ReLU的其他变体。sigmoid和tanh受到消失梯度问题的困扰,不应该在隐藏层中使用。隐藏层使用ReLU及其变体较好。使用容易求导和训练的激活函数。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4570

    浏览量

    98709
  • 函数
    +关注

    关注

    3

    文章

    3864

    浏览量

    61305
  • 机器学习
    +关注

    关注

    66

    文章

    8112

    浏览量

    130543

原文标题:激活函数初学者指南

文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    神经网络基本的训练和工作原理是什么

    在两层神经网络之间,必须有激活函数连接,从而加入非线性因素,提高神经网络的能力。所以,我们先从激活函数
    发表于 08-07 10:02 514次阅读
    <b class='flag-5'>神经网络</b>基本的训练和工作原理是什么

    MATLAB神经网络工具箱函数

    MATLAB神经网络工具箱函数说明:本文档中所列出的函数适用于MATLAB5.3以上版本,为了简明起见,只列出了函数名,若需要进一步的说明,请参阅MATLAB的帮助文档。1.
    发表于 09-22 16:10

    神经网络教程(李亚非)

      第1章 概述  1.1 人工神经网络研究与发展  1.2 生物神经元  1.3 人工神经网络的构成  第2章人工神经网络基本模型  2.1 MP模型  2.2 感知器模型  2.3
    发表于 03-20 11:32

    【PYNQ-Z2申请】基于PYNQ的卷积神经网络加速

    ,得到训练参数2、利用开发板arm与FPGA联合的特性,在arm端实现图像预处理已经卷积核神经网络的池化、激活函数和全连接,在FPGA端实现卷积运算3、对整个系统进行调试。4、在基本实现系统的基础上
    发表于 12-19 11:37

    【PYNQ-Z2试用体验】神经网络基础知识

    学习和认知科学领域,是一模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。神经网络
    发表于 03-03 22:10

    【案例分享】ART神经网络与SOM神经网络

    是一常用的无监督学习策略,在使用改策略时,网络的输出神经元相互竞争,每一时刻只有一个竞争获胜的神经激活。ART
    发表于 07-21 04:30

    如何构建神经网络

    原文链接:http://tecdat.cn/?p=5725 神经网络是一基于现有数据创建预测的计算系统。如何构建神经网络神经网络包括:输入层:根据现有数据获取输入的层隐藏层:使用反
    发表于 07-12 08:02

    matlab实现神经网络 精选资料分享

    神经神经网络,对于神经网络的实现是如何一直没有具体实现一下:现看到一个简单的神经网络模型用于训练的输入数据:对应的输出数据:我们这里设置:1:节点个数设置:输入层、隐层、输出层的节点
    发表于 08-18 07:25

    神经网络移植到STM32的方法

    神经网络移植到STM32最近在做的一个项目需要用到网络进行拟合,并且将拟合得到的结果用作控制,就在想能不能直接在单片机上做神经网络计算,这样就可以实时计算,不依赖于上位机。所以要解决的主要是两个
    发表于 01-11 06:20

    ReLU到Sinc的26种神经网络激活函数可视化大盘点

    本文介绍了26个激活函数的图示及其一阶导数,在神经网络中,激活函数决定来自给定输入集的节点的输出,其中非线性
    发表于 01-11 17:42 3.1w次阅读
    ReLU到Sinc的26种<b class='flag-5'>神经网络</b><b class='flag-5'>激活</b><b class='flag-5'>函数</b>可视化大盘点

    激活函数中sigmoid、ReLU等函数的一些性质

    非线性:当激活函数是线性的时候,一个两层的神经网络就可以基本逼近所有的函数,但是,如果激活函数
    的头像 发表于 08-02 14:52 1.1w次阅读
    <b class='flag-5'>激活</b><b class='flag-5'>函数</b>中sigmoid、ReLU等<b class='flag-5'>函数</b>的一些性质

    你还不懂什么是神经网络

    如果说节点是神经网络的核心,那么激活函数和感知器就是神经网络核心的核心,几乎在所有的神经网络中都可以看到他俩,这一小节我就来讲解一下
    发表于 03-20 19:21 1147次阅读

    图文详解:神经网络激活函数

    什么是神经网络激活函数激活函数有助于决定我们是否需要激活
    的头像 发表于 07-05 11:21 3417次阅读
    图文详解:<b class='flag-5'>神经网络</b>的<b class='flag-5'>激活</b><b class='flag-5'>函数</b>

    神经网络初学者的激活函数指南

    作者:Mouâad B. 来源:DeepHub IMBA 如果你刚刚开始学习神经网络激活函数的原理一开始可能很难理解。但是如果你想开发强大的神经网络,理解它们是很重要的。 但在我们深
    的头像 发表于 04-18 11:20 341次阅读
    <b class='flag-5'>神经网络</b>初学者的<b class='flag-5'>激活</b><b class='flag-5'>函数</b>指南

    神经网络初学者的激活函数指南

    作者:MouâadB.来源:DeepHubIMBA如果你刚刚开始学习神经网络激活函数的原理一开始可能很难理解。但是如果你想开发强大的神经网络,理解它们是很重要的。但在我们深入研究
    的头像 发表于 04-21 09:28 428次阅读
    <b class='flag-5'>神经网络</b>初学者的<b class='flag-5'>激活</b><b class='flag-5'>函数</b>指南