据我了解,在深度神经网络中,我们在应用权重(w)和偏差(b)(z := w * X + b | a := g(z))
之后使用激活函数(g)。因此,存在(g o z)
的合成函数,并且激活函数使我们的模型可以学习线性函数以外的函数。我看到Sigmoid和Tanh激活函数使我们的模型成为非线性,但是我很难看到ReLu(将max从0和z中取走)可以使模型成为非线性...
让我们说如果每个Z始终为正,那么就好像没有激活函数...
所以我的问题是为什么ReLu会在神经网络中建立非线性模型?
答案 0 :(得分:5)
确定一个函数是否是线性的当然不是观点或辩论的问题;线性函数非常简单definition,大致为:
f(a*x + b*y) = a*f(x) + b*f(y)
表示函数域中的每个 x
和y
以及a
和b
常量。
“每一个”的要求意味着,如果我们甚至能够找到一个不满足上述条件的示例,则该函数是非线性的。
为简单起见,假设a = b = 1
,我们尝试将x=-5, y=1
作为ReLU函数使用f
:
f(-5 + 1) = f(-4) = 0
f(-5) + f(1) = 0 + 1 = 1
因此,对于这些x
和y
(实际上,对于每个x
的{{1}}和y
而言,条件x*y < 0
不会保持,因此函数是非线性的...
我们可能能够找到线性条件成立的子域(例如,f(x + y) = f(x) + f(y)
和x
在这里都是负值或正值)这一事实定义了一些函数(例如ReLU)为piecewise-linear,但它们仍然是非线性的。
现在,公平地说,如果在特定应用中输入总是总是为正或全部为负,那么是的,在这种情况下,ReLU实际上将最终结束表现得像线性函数但是对于神经网络则不是这种情况,因此我们确实可以依靠它来提供我们必要的非线性...