为什么将ReLU用作激活功能?


19

激活函数用于w * x + b在神经网络的类型的线性输出中引入非线性。

对于激活功能(例如Sigmoid),我能够直观地理解。

我了解ReLU的优势,它可以避免反向传播过程中死亡的神经元。但是,我无法理解为什么ReLU的输出为线性时为什么将其用作激活函数?

如果不引入非线性,激活函数的全部意义就不会被破坏吗?

Answers:


19

在数学中,只要函数如果域A中的每个xy具有以下属性,则该函数被视为线性: f x + f y = f x + y 。根据定义,RELU是一个X 0 X 。因此,如果我们从分割域- 0 ][F一种Xÿ一种FX+Fÿ=FX+ÿ一种X0X-0]则该函数为线性。但是,很容易看到 f 1 + f 1 f 0 。因此,根据定义,ReLU不是线性的。 [0F-1个+F1个F0

然而,ReLU非常接近线性,以至于经常使人们感到困惑,并且想知道如何将其用作通用逼近器。以我的经验,思考它们的最佳方法就像Riemann sums。您可以使用许多小矩形近似任何连续函数。ReLU激活可以产生很多小矩形。实际上,在实践中,ReLU可以制作相当复杂的形状并近似许多复杂的域。

我也想澄清另一点。如先前的答案所指出,神经元不会死于乙状结肠,而会消失。这样做的原因是因为S型函数的导数最大为0.25。因此,经过如此多的层后,您最终将这些梯度相乘,并且小于1的非常小的数字的乘积往往会很快变为零。

因此,如果您要构建一个具有多个层次的深度学习网络,那么您的S形函数将基本上停滞不前,或多或少变得无用。

关键要解决的是消失是由于梯度的倍增而不是梯度本身的倍增。


6

我了解ReLU的优势,它可以避免反向传播过程中死亡的神经元。

这不是完全正确的。神经元尚未死亡。如果使用类似S形的激活,则在进行某些迭代后,大多数神经元的梯度值会饱和。梯度的值将很小,并且学习过程进行得如此缓慢。这是类似于S形激活函数的梯度的消失和爆炸。相反,如果使用ReLU非线性度,则可能会发生死亡的神经元,这称为垂死的ReLU

我无法理解如果ReLU的输出是线性的,为什么将ReLU用作激活函数

绝对不是线性的。简而言之,线性函数是在其域中对输入具有相同导数的函数。

线性函数在经济学中很流行。它很有吸引力,因为它在数学上简单易行。它具有许多重要的应用程序。线性函数是图形为直线的函数。线性函数具有以下形式:

y = f(x)= a + bx

线性函数具有一个自变量和一个因变量。自变量是x,因变量是y。

a是常数项或y截距。当x = 0时,它是因变量的值。

b是自变量的系数。也称为斜率,它给出因变量的变化率。

ReLU不是线性的简单的答案是ReLU输出不是直线,而是在x轴上弯曲。更有趣的一点是这种非线性的结果是什么。简而言之,线性函数使您可以使用直线解剖特征平面。但是,由于ReLUs 的非线性,您可以在特征平面上构建任意形状的曲线。

ReLU可能有一个缺点,那就是它的期望值。对的输出没有限制Relu,其期望值不为零。Tanh之所以流行,sigmoid是因为其期望值等于零,并且在更深层次的学习速度更快。尽管ReLU没有这个优势batch normalization解决了这个问题

您也可以在此处此处参考以获取更多信息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.