如果我们不对隐藏层应用激活而只对前馈神经网络的输出层应用激活怎么办?

What if we do not apply activation to the hidden layers and only to the output layer of a feed forward neural network?

这里有什么隐藏的问题吗?即使是流行的 ReLU 也是 max(0,x),我们将允许最大值通过并将负数裁剪为零。如果我们同时允许正值和负值,问题是什么?或者为什么我们要在 ReLU 中将负值裁剪为零。

允许负值。当您可以使用负值时,RELu 有一些特殊情况。

"Clipping" 在经典 RELu 中是因为非线性要求。没有 "clipping" 经典 RELu 将是线性单元,这样的单元将无法 "catch" 输入和输出之间的非线性依赖。

One example of non-clipping RELu

激活函数是使你的网络 "non-linear"。

为了说明我的意思,请考虑这个示例,其中有一个输入层、2 个隐藏层和 1 个输出层(具有一整套权重和偏差)。如果没有激活函数,网络末端的输出将是:

y = w1x+b1 + w2x+b2 = (w1+w2)x+ (b1+b2) = Wx + B  

如您所见,如果没有激活函数,网络就会简单地变成线性的,也就是输出与输入特征线性相关。

然而,假设你在中间有一个激活函数,为了简单起见,考虑它是一个 sigmoid 函数而不是 ReLU。想想上面的等式会怎样。它肯定是非线性的,并且肯定取决于输入的各种组合。

现在说说我们为什么使用ReLUs,简单来说,它是一个帮助输出快速收敛的超参数。推理非常有趣,恐怕超出了这个问题的范围。不过请仔细阅读。

连续层的意思是函数意义上的叠加:

x -> L1(x) -> L2(L1(x)) -> ...

对于输入 x 它产生 L2(L1(x))L1L2 的组合。

两个线性层的组合实际上是 one big linear layer, which doesn't make the model any better. Any non-linearity applied to the layers, even as simple one as ReLu, splits the space,因此可以学习复杂的函数。你可以在图片上看到4个ReLu的效果:

当然,你可以在输出层只有一个非线性。但这基本上意味着具有一个隐藏层和一个激活函数的最简单的神经网络。确实可以 approximate any function,但是在隐藏层中使用了指数级多的神经元。将 depth 添加到网络中可以让您获得非常复杂的表示并且神经元数量相对较少。这就是 深度 学习发挥作用的地方。