ReLU函数

Rectifier(neural networks)

在人工神经网络中,rectfier(整流器,校正器)是一个激活函数,它的定义是:参数中为正的部分。

,

其中,x是神经元的输入。这也被称为ramp function(斜坡函数),类似于电气工程中半波整流。

由来:

2000年由Hahnloser et al等人首次将该激活函数引入动态网络中,具有强烈的生物学动机和数学理论。

此激活函数在 convolutional networks中被广泛应用,比logistic sigmoid更有效和实用。

rectfier是2017年深度神经网络中最流行的激活函数。

ReLU:

采用rectifier的单元被称为rectfier linear unit(ReLU)

rectifier的平滑近似是analytic function:

被称为softplus function。它的偏导数是 即逻辑函数

Rectified linear units在computer vision,speech recognition 等深度神经网络中有广泛应用。

Plot of the rectifier (blue) and softplus (green) functions near x = 0

Variants:

Noisy ReLUs

Rectfier linear units可以被扩展成包含Gaussian noise,

, with 

Noisy ReLUs成功应用在一些计算机视觉任务上。

Leaky ReLUs

Leaky ReLUs allow a small, non-zero gradient when the unit is not active.

Parametric ReLUs将coefficient of leakage(泄露系数)转化为与其它神经网络参数一起学习的参数

注意,如果a<=1,那么它等价于

   就与maxout networks有关

ELUs:

Exponential linear units try to make the mean activations closer to zero which speeds up learning. It has been shown that ELUs can obtain higher classification accuracy than ReLUs

a是需要调的参数,且a>=0

Advantages

请参考

https://en.wikipedia.org/wiki/Rectifier_(neural_networks)

Potential problems

请参考

https://en.wikipedia.org/wiki/Rectifier_(neural_networks)

原文地址:https://www.cnblogs.com/1zhangwenjing/p/8227454.html

时间: 2024-10-19 21:40:25

ReLU函数的相关文章

python实现并绘制 sigmoid函数,tanh函数,ReLU函数,PReLU函数

python实现并绘制 sigmoid函数,tanh函数,ReLU函数,PReLU函数 # -*- coding:utf-8 -*- from matplotlib import pyplot as plt import numpy as np import mpl_toolkits.axisartist as axisartist def sigmoid(x): return 1. / (1 + np.exp(-x)) def tanh(x): return (np.exp(x) - np.e

在UNC学习DL的日子——Relu函数

以下网址介绍了Relu的前世今生 http://www.cnblogs.com/neopenx/p/4453161.html 第一个问题:为什么引入非线性激励函数? 如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出都是上层输入的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机(Perceptron)了.正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络就有意义了(不再是输入

relu函数为分段线性函数,为什么会增加非线性元素

我们知道激活函数的作用就是为了为神经网络增加非线性因素,使其可以拟合任意的函数.那么relu在大于的时候就是线性函数,如果我们的输出值一直是在大于0的状态下,怎么可以拟合非线性函数呢? relu是非线性激活函数 题主的疑问在于,为什么relu这种"看似线性"(分段线性)的激活函数所形成的网络,居然能够增加非线性的表达能力. 1.首先什么是线性的网络,如果把线性网络看成一个大的矩阵M.那么输入样本A和B,则会经过同样的线性变换MA,MB(这里A和B经历的线性变换矩阵M是一样的). 2.的

ReLU为什么比Sigmoid效果好

附:双曲函数类似于常见的(也叫圆函数的)三角函数.基本双曲函数是双曲正弦"sinh",双曲余弦"cosh",从它们导出双曲正切"tanh" sigmod函数: Relu函数: 综合: @作者:约翰曰不约  为什么通常Relu比sigmoid和tanh强,有什么不同?主要是因为它们gradient特性不同.sigmoid和tanh的gradient在饱和区域非常平缓,接近于0,很容易造成vanishing gradient的问题,减缓收敛速度.va

神经网络是如何拟合任意函数的

一个最原始粗暴的拟合任意函数的思路,是将函数切成很多段线性函数,之后用逻辑门控制当x在哪一个区间时,某些逻辑门被激活,对应的线性函数的权重w与偏移量b在逻辑门的包裹下变成非0,计算出y在这一段的输出值. 需要推导出拟合函数y=f(x)需要哪些逻辑门,以及如何使用神经网络构建这些逻辑门. 首先最简单的是开关门: ${s^{(1)}}(x) = t{\rm{ = Relu}}({\rm{1 - 1000*Relu}}({\rm{u}}))$ 使用Relu激活函数构建的开关门比起使用sigmoid函数

ReLU激活函数的缺点

训练的时候很"脆弱",很容易就"die"了,训练过程该函数不适应较大梯度输入,因为在参数更新以后,ReLU的神经元不会再有激活的功能,导致梯度永远都是零. 例如,一个非常大的梯度流过一个 ReLU 神经元,更新过参数之后,这个神经元再也不会对任何数据有激活现象了,那么这个神经元的梯度就永远都会是 0. 如果 learning rate 很大,那么很有可能网络中的 40% 的神经元都"dead"了. 原因: 假设有一个神经网络的输入W遵循某种分布,

[转]激活函数ReLU、Leaky ReLU、PReLU和RReLU

"激活函数"能分成两类--"饱和激活函数"和"非饱和激活函数". sigmoid和tanh是"饱和激活函数",而ReLU及其变体则是"非饱和激活函数".使用"非饱和激活函数"的优势在于两点:    1.首先,"非饱和激活函数"能解决所谓的"梯度消失"问题.    2.其次,它能加快收敛速度.    Sigmoid函数需要一个实值输入压缩至[0,1]

神经网络中的激活函数具体是什么?为什么Relu要好过与tanh和sigmoid function

为什么要引入激活函数? 如果不用激活函数(其实相当于激励函数是f(x)=x),在这种情况下你每一层输出都是上层输入的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机了. 正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络就有意义了(不再是是输入的线性组合,可以逼近任意函数).最早的想法是sigmoid函数或者tanh函数,输出有界,很容易充当下一层输入.激活函数的作用是为了增加神经网络模型的非线性.否则你想

caffe中关于(ReLU层,Dropout层,BatchNorm层,Scale层)输入输出层一致的问题

在卷积神经网络中.常见到的激活函数有Relu层 layer { name: "relu1" type: "ReLU" bottom: "pool1" top: "pool1" }其中可选参数为:negative_slope:默认为0. 对标准的ReLU函数进行变化,如果设置了这个值,那么数据为负数时,就不再设置为0,而是用原始数据乘以negative_slope relu层有个很大的特点:bottom(输入)和top(输出)一