非线性激活函数
2017-10-20 20:23
120 查看
几种非线性激活函数介绍
1. 几种非线性激励函数(Activation Function)
神经网络中,正向计算时,激励函数对输入数据进行调整,反向梯度损失。梯度消失需要很多方式去进行规避。1.1 Sigmoid函数
表达式为:y(x)=sigmoid(x)=11+e−x,y(x)in(0,1)
y(x)′=y(x)(1−y(x)),y′in(−∞,14]
该函数将输入映射到(0,1)(能否取到0和1,取决于计算机的精度),由导数可看出, 最大值为0.25,也即在反向计算时,梯度损失非常明显,至少减少75%,
1.2 Tanh函数
表达式为:f(x)=tanh(x)=21+e−2x−1,f(x)in(−1,1)f′(x)=1−f(x)2,f′(x)in(0,1)
该函数将输入映射到(-1,1)(能否取到-1和1,取决于计算机的精度),由导数可看出,在反向计算时,梯度也会有所损失。倘若网络深度非常深,梯度消失(gradient vanishing)。
1.3 ReLU ( Rectified Linear Unit)函数
表达式为:该函数将输入分两个段进行映射,当输入值小于0时,则将原值映射为0,若输入值大于0则按照原值传递,即,正向计算的时候,会损失特征大量,由导数可看出,在反向计算时,梯度没有损失。
(1) ReLU的优缺点
1) 优点1:Krizhevsky et al. 发现使用 ReLU 得到的SGD的收敛速度会比 sigmoid/tanh 快很多。有人说这是因为它是linear,而且梯度不会饱和
2) 优点2:
相比于 sigmoid/tanh需要计算指数等,计算复杂度高,ReLU 只需要一个阈值就可以得到激活值。
3) 缺点1:
ReLU在训练的时候很”脆弱”,一不小心有可能导致神经元”坏死”。
举个例子:由于ReLU在x<0时梯度为0,这样就导致负的梯度在这个ReLU被置零,而且这个神经元有可能再也不会被任何数据激活。如果这个情况发生了,那么这个神经元之后的梯度就永远是0了,也就是ReLU神经元坏死了,不再对任何数据有所响应。实际操作中,如果你的learning rate 很大,那么很有可能你网络中的40%的神经元都坏死了。 当然,如果你设置了一个合适的较小的learning rate,这个问题发生的情况其实也不会太频繁。
(2) ReLU正向截断负值,损失大量特征,为什么依然用它?
答:特征足够多,反向梯度无损失!1.4 Leaky ReLU(Leaky Rectified Linear Unit)
表达式如下:Leaky ReLU. Leaky ReLUs 就是用来解决ReLU坏死的问题的。和ReLU不同,当x<0时,它的值不再是0,而是一个较小斜率(如0.01等)的函数。也就是说f(x)=1(x<0)(ax)+1(x>=0)(x),其中a是一个很小的常数。这样,既修正了数据分布,又保留了一些负轴的值,使得负轴信息不会全部丢失。关于Leaky ReLU 的效果,众说纷纭,没有清晰的定论。有些人做了实验发现 Leaky ReLU 表现的很好;有些实验则证明并不是这样。
-PReLU. 对于 Leaky ReLU 中的a,通常都是通过先验知识人工赋值的,比如说0.01
【参考】
[1] http://blog.csdn.net/u014365862/article/details/52710698
相关文章推荐
- Coursera | Andrew Ng (01-week-3-3.7)—为什么需要非线性激活函数?
- 神经网络中非线性激活函数相关解析
- Sigmoid非线性激活函数,FM调频,胆机,HDR的意义
- 为什么需要非线性激活函数?
- 神经网络中的激活函数——加入一些非线性的激活函数,整个网络中就引入了非线性部分,sigmoid 和 tanh作为激活函数的话,一定要注意一定要对 input 进行归一话,但是 ReLU 并不需要输入归一化
- fmincon如何使非线性约束函数写成匿名函数的形式
- 吴恩达深度学习--激活函数
- js Flash插入函数免激活代码
- cs231n笔记(5)--传统神经网络,激活函数
- caffe中五种层的实现与参数配置(3)------激活函数层
- 深度学习激活函数
- caffe中的sgd,与激活函数(activation function)
- 神经网络的激活函数
- matlab:无约束非线性规划函数
- 卷积神经网络——输入层、卷积层、激活函数、池化层、全连接层
- 神经网络激活函数总结
- 【转】激活函数概述
- Hinton Neural Networks课程笔记1c:几种激活函数Linear、Binary、ReLU、Stochastic binary neurons
- 激活函数
- 激活函数(ReLU, Swish, Maxout)