ReLU(rectifiedlinear unit)是一种激活函数。数学上,它定义为y = max(0,x)
ReLU是神经网络中最常用的激活函数,尤其是在CNN中。如果您不确定要在网络中使用哪种激活功能,通常最好选择ReLU。
对于所有正值,ReLU是线性的(identity),对于所有负值,ReLU是零的。这意味着:
注意:我们在这里讨论模型稀疏性。数据稀疏性(缺少信息)是不同的,通常是不好的。
为什么模型稀疏性好?如果我们考虑一下人工神经网络试图模仿的生物神经网络,这在直觉上是有意义的。尽管我们体内有数十亿个神经元,但并非所有时间都为我们所做的所有事情激发。相反,它们具有不同的作用,并由不同的信号激活。
稀疏性导致简洁的模型,这些模型通常具有更好的预测能力和更少的过拟合。在稀疏网络中,神经元更有可能实际上正在处理问题的有意义的方面。例如,在检测图像中猫的模型中,可能存在可以识别耳朵的神经元,如果图像是关于建筑物的,则显然不应激活该神经元。
最后,稀疏网络比密集网络更快,因为要计算的东西更少。
对于所有负值均为零的不利之处是一个问题,称为“Dying ReLU”(神经元坏死)。
如果ReLU神经元卡在负侧并且始终输出0,则它是“死”的,**因为ReLU在负范围内的斜率也为0,因此一旦神经元变为负数,它就不太可能恢复。**这样的神经元在区分输入中没有任何作用,并且基本上是无用的。随着时间的流逝,您可能最终会在网络的大部分工作中无所作为。
您可能会对零斜率部分的工作方式感到困惑。注意,单个步骤(例如,在SGD中)涉及多个数据点。只要不是所有数据都为负,我们仍然可以从ReLU中获得一个斜率。当学习率太高或负偏大时,可能会出现坏死的问题。
较低的学习率通常可以缓解该问题。除此之外,leaky ReLU和ELU也是尝试的不错选择。它们在负范围内略有倾斜,因此可以防止出现此问题。
leaky ReLU的负值斜率较小,而不是零。例如,当x <0时,leaky ReLU可能具有y = 0.01x。
Parametric ReLU(PReLU)是一种leaky ReLUReLU,它没有像0.01这样的预定斜率,而是使它成为神经网络计算自身的参数:y = ax当x <0时。
Leaky ReLU有两个好处:
它没有零斜率部分,因此可以解决“Dying ReLU”问题。
它加快了训练速度。有证据表明,“平均激活”接近0可使训练更快。(它有助于使Fisher信息矩阵的非对角项保持较小,但您可以放心地忽略它。)与ReLU不同,Leaky
ReLU更“平衡”,因此学习起来可能更快。
注意,结果并不总是一致的。Leaky ReLU并不总是优于普通的ReLU,而应仅作为替代方法。
类似于Leaky ReLU,ELU的负值斜率较小。它使用如下所示的对数曲线代替直线:
它的设计目的是结合ReLU的线性部分和Leaky
ReLU。虽然它没有Dying ReLU问题,但是在大的负数部分梯度为0,导致神经元不活跃。
ELU是在 论文首次提出的。由于常数因子a的存在,它有时被称为比例ELU (SELU)。
TensorFlow 在tf.nn.module模块中提供了ReLU及其变体。以下代码块创建了带有ReLu的卷积层
import tensorflow as
tfconv_layer = tf.layers.conv2d(
inputs=input_layer,
filters=32,
kernel_size=[5, 5],
padding='same',
activation=tf.nn.relu,
)
keras 通过keras.layers提供ReLU及其变体。激活模块。下面为模型添加ReLU层
from keras.layers import
Activation, Densemodel.add(Dense(64, activation='relu'))
PyTorch通过torch.nn提供ReLU及其变体。
from torch.nn import
RNNmodel = nn.Sequential(
nn.Conv2d(1, 20, 5),
nn.ReLU(),
nn.Conv2d(20, 64, 5),
nn.ReLU()
)
# 也可以直接使用nn.ReLu()
import torch
from torch import autograd, nnrelu = nn.ReLU()
var = autograd.Variable(torch.randn(2))
relu(var)
某些PyTorch层类将relu作为其非线性参数的值。例如,下面用ReLU创建一个RNN层:
rnn = nn.RNN(10, 20, 2,
nonlinearity='relu')
博客:https://medium.com/@danqing/a-practical-guide-to-relu-b83ca804f1f7