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