为什么ReLU是非线性激活函数?

问题描述 投票:0回答:2

据我了解,在深度神经网络中,我们在应用权重(w)和偏差(b)后使用激活函数(g)

(z := w * X + b | a := g(z))
。所以有一个复合函数
(g o z)
和激活函数使得我们的模型可以学习线性函数以外的函数。我发现 Sigmoid 和 Tanh 激活函数使我们的模型非线性,但我很难看到 ReLu(从 0 和 z 中取出最大值)可以使模型非线性......

假设如果每个 Z 始终为正,那么就好像没有激活函数......

那么为什么 ReLu 会让神经网络模型变得非线性?

machine-learning neural-network deep-learning activation-function relu
2个回答
20
投票

决定一个函数是否是线性的当然不是一个观点或辩论的问题;线性函数有一个非常简单的定义,大致是:

f(a*x + b*y) = a*f(x) + b*f(y)

对于函数域中的 every

x
y
以及
a
b
常数。

“对于每个”的要求意味着,如果我们能够找到上述条件不成立的单个示例,那么该函数就是非线性的。

为了简单起见,假设

a = b = 1
,让我们尝试
x=-5, y=1
,其中
f
是 ReLU 函数:

f(-5 + 1) = f(-4) = 0
f(-5) + f(1) = 0 + 1 = 1

所以,对于这些

x
y
(实际上对于每个
x
y
x*y < 0
),条件
f(x + y) = f(x) + f(y)
不成立,因此函数是非线性的...

我们可能能够找到满足线性条件的子域(例如,

x
y
都为负或正),这一事实将某些函数(例如ReLU)定义为分段 -线性,但仍然是非线性的。

现在,为了公平地对待你的问题,如果在特定应用中,输入碰巧“总是”要么全为正,要么全为负,那么是的,在这种情况下,ReLU 实际上最终会表现得像一个线性函数。但对于神经网络来说,情况并非如此,因此我们确实可以依靠它来提供必要的非线性......


0
投票

没有激活函数的单个神经网络单元如下所示:

y=w*x + b

x 是输入特征
  • w 是重量
  • b 是偏差
  • y 是输出
  • 这个功能我们能走多远?

我们只能预测x和y之间的线性关系。然而,现实世界中的大多数问题都是非线性的,这意味着两个变量之间的关系不仅仅是加和乘。因此,我们需要其他东西来表达这种关系。

在模型中添加

if-else

表达式是一种方法。这些条件允许模型根据某些标准输出不同的值。例如,如果图像中有眼睛,则输出人类类别;否则,输出外星人。

您可以将非线性视为模型中的 
if-else

条件。我们不能直接将

if-else

 条件放入模型中,因为模型的要点是自己学习这些条件。因此,我们需要赋予模型自行执行
if-else
条件并学习标准的能力。
为什么ReLU是非线性激活函数?
让我们看看 ReLU 是什么样的:

ReLU activation function它有两次切割,一次从左侧到 0,一次从 0 之后向右。添加此函数允许模型根据输入输出单独的值,模仿 if-else

条件。因此,ReLU 看起来不像曲线函数,但它完美地完成了工作。此外,ReLU 几乎具有线性函数所具有的所有优良特性。

尽管
if-else

条件并不能准确描述非线性激活函数。至少你可以这样解释它们。

	

© www.soinside.com 2019 - 2024. All rights reserved.