这里有什么隐藏的陷阱吗?甚至流行的 ReLU 也是 max(0,x),我们将允许最大值通过并将负数剪裁为零。如果我们同时允许正值和负值,会有什么问题?或者为什么我们在 ReLU 中将负值剪裁为零。
3 回答
连续层意味着功能意义上的叠加:
x -> L1(x) -> L2(L1(x)) -> ...
x
对于它产生的输入L2(L1(x))
或L1
and的组合L2
。
两个线性层的组合实际上是一个大的线性层,这并没有使模型变得更好。任何应用于层的非线性,即使是像 ReLu 这样简单的非线性,都会分割空间,从而允许学习复杂的函数。你可以在图片上看到 4 个 ReLu 的效果:
当然,您可以在输出层中只有一个非线性。但这基本上意味着具有一个隐藏层和一个激活函数的最简单的神经网络。的确,它可以逼近任何函数,但在隐藏层中使用指数级数量的神经元。向网络添加深度可以让您获得非常复杂的表示并且具有相对较少数量的神经元。这就是深度学习发挥作用的地方。
激活函数是使您的网络“非线性”的函数。
为了说明我的意思,考虑这个例子,其中有一个输入层、2 个隐藏层和 1 个输出层(具有完整的权重和偏差集)。如果没有激活函数,网络末端的输出将是:
y = w1x+b1 + w2x+b2 = (w1+w2)x+ (b1+b2) = Wx + B
如您所见,如果没有激活函数,网络就会变成线性的,即输出线性依赖于输入特征。
然而,假设你在中间有一个激活函数,为了简单起见,考虑它是一个 sigmoid 函数而不是 ReLU。想想上面的等式是怎样的。它肯定是非线性的,并且肯定取决于输入的各种组合。
现在对于我们使用 ReLU 的原因,简单地说,它是一个帮助输出快速收敛的超参数。推理非常有趣,恐怕超出了这个问题的范围。不过请阅读它。
允许使用负值。当您可以使用负值时,有一些 RELu 的特殊情况。
经典 RELu 中的“裁剪”是由于非线性要求。没有“裁剪”的经典 RELu 将是线性单元,这样的单元将无法“捕捉”输入和输出之间的非线性依赖关系。