激活函数总结

作者: hiyoung | 来源:发表于2018-12-19 14:55 被阅读2次

简介

因为神经网络是线性组合,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中.好用的激活函数具有可求且方便求导,单调平滑.下面简单介绍一下常用的激活函数:

1.sigmoid函数:常用于LR中,也可以用于神经网络最后一层(一分类问题,是该类,和其他).函数公式和图表如下图:

图1 图2

如图2所示,它能够把输入的连续实值变换为(0,1)之间的输出,特别的,如果是非常大的负数,那么输出就是0,如果是非常大的正数,输出就是1. sigmoid曾经是主流的激活函数,但是由于一些缺陷,导致现在不主流了...它的缺点有:

1) 由于sigmoid导数的性质(如图3),在神经网络进行反向传播时,会发生梯度消失(权重初始值在[0,1]内)和梯度爆炸(权重初始值在[1,+∞]).

2) 其解析式中含有幂运算,计算机求解时相对来讲比较耗时,对于规模比较大的深度网络,这会较大地增加训练时间.

3) sigmoid的输出不是0均值的,这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入, 产生的一个结果就是:如果数据进入神经元的时候是正的,那么计算出的梯度也会始终都是正的.

图3

2.tanh函数:tanh函数是拉伸后的sigmoid,它弥补了sigmoid的缺点3,tanh函数公式和曲线如下:

图4

它的值域变成了(-1,1),均值从sigmoid的0.5,变成了0.从而解决sigmoid的缺点3输出均值不为0的问题.从图4可以看出,在0附近曲线的倾斜更为陡峭,所以它的导数的曲线是比图3更高更细一些.

它的优点是解决了sigmoid的输出均值不为0的问题,还有就是比sigmoid的收敛更快一些.

它的缺点是还没有解决sigmoid最大的问题1,梯度消失和梯度爆炸的问题.

3.ReLU函数:ReLU函数训练速度比tanh快6倍,是目前使用最广泛的激活函数.当输入值小于零时,输出值为零.当输入值大于等于零时,输出值等于输入值.公式和曲线如下:

图5

它的优点是训练速度快(因为线性),同时当输入为正数时,不会造成梯度爆炸.

它的缺点是ReLU所在的神经元在训练的过程中可能会随机失活,如果learning rate很大,那么很有可能网络中的40%的神经元都”dead”了.而且它的输出也不是均值为0.

4.LeakyReLU & PReLU函数:这两个激活函数类似,都是ReLU的改良版,目的是为了避免出现神经单元失活的问题.公式如下:

图6

其中LeakyReLU将α的值设为0.001,而PReLU是将α当做参数一起参与到模型训练中去学习.这样函数的输出下界不为0,从而也不会有神经元失活的现象.

5.ELU函数(指数线性单元):它解决了ReLU的两个问题,一个是失活,一个是均值不为0的问题.

图7

6.softmax函数:常用于神经网络的最后一层(多分类),是sigmoid函数在多分类问题上的推广.公式如下:

图8

它的值域是[0,1],输出是概率值,所以加和为1.用指数的形式是为了使大的值更大,同时也为了求导.

总结:

1.尽量不要使用sigmoid和tanh函数(梯度消失和爆炸),尽量使用ReLU及其变体.

2.使用ReLU时,注意设置小的learning rate.

3.尽量使用0均值的激活函数.

相关文章

  • 激活函数总结

    作者:HaigLeehttps://www.jianshu.com/u/67ec21fb270d本文由 HaigL...

  • 激活函数总结

    简介 因为神经网络是线性组合,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网...

  • 激活函数softmax-P2分类任务

    激活函数种类激活函数作用 激活函数 深度学习常用激活函数之— Sigmoid & ReLU & Softmax 深...

  • 常用激活函数总结

    神经网络与激活函数 神经网络从数学上来说,就是用来拟合一个函数。把数据扔进去,得到一个预测结果,以此来解决分类和回...

  • 6.神经网络训练细节part1

    一、激活函数 前边我们学到,一个节点的输出会进入激活函数进行处理 常见的激活函数有以下 sigmoid激活函数 s...

  • tanh函数&logistic函数

    传统Sigmoid系激活函数 传统Sigmoid系激活函数 传统Sigmoid系激活函数,Sigmoid系(Log...

  • 机器学习之神经网络

    什么是神经网络 就是使用了平滑的激活函数的多层感知机 激活函数 什么是激活函数呢? 激活函数就是从输入值到对应输出...

  • [Machine Learning From Scratch]-

    激活层激活函数定义 封装激活层

  • 2019-10-09

    深度学习第三天 激活函数: 激活函数是...

  • 理解激活函数

    一、何为激活函数? 深度学习中,激活函数通常指能够实现非线性映射的函数 二、为什么需要非线性激活函数? 定义:这里...

网友评论

    本文标题:激活函数总结

    本文链接:https://www.haomeiwen.com/subject/ctqjkqtx.html