科技匠|为什么我们的神经网络需要激活函数( 二 )


我们需要更多的东西 。 我们需要将每个神经元计算出的加权和传递给一个非线性函数 , 然后将这个函数的输出看作那个神经元的输出 。 这些函数称为激活函数 , 它们在允许神经网络学习数据中的复杂模式时非常重要 。
[1] 已经证明 , 具有2层(输入层除外)和非线性激活函数的神经网络 , 只要在这些层中有足够多的神经元 , 就可以近似任何函数 。 那么 , 如果只有两层就够了 , 为什么人们现在还在使用更深层次的网络呢?嗯 , 仅仅因为这两层网络"能够"学习任何东西 , 这并不意味着它们很容易优化 。 在实践中 , 如果我们的网络产能过剩 , 他们就会给我们提供足够好的解决方案 , 即使他们没有尽可能地优化 。
还有更多种类的激活函数 , 我们想在上面的示例中使用其中的两种 。 它们分别是ReLU(直线单元)和tanh(双曲正切) , 如下图所示 。
科技匠|为什么我们的神经网络需要激活函数
科技匠|为什么我们的神经网络需要激活函数
科技匠|为什么我们的神经网络需要激活函数
科技匠|为什么我们的神经网络需要激活函数
如果我们在示例中使用ReLU激活 , 将会发生什么?下图是应用ReLU激活后n1和n2神经元的输出 。
科技匠|为什么我们的神经网络需要激活函数
现在 , 我们的这两类点可以用直线分开 , 这样输出神经元就可以正确地对它们进行分类 。
科技匠|为什么我们的神经网络需要激活函数
如果我们使用tanh激活 , 也会发生类似的事情 , 但这次我们的点之间的差距更大 。
科技匠|为什么我们的神经网络需要激活函数
同样 , 输出神经元可以正确地分类这些点 。
科技匠|为什么我们的神经网络需要激活函数
这里有一个简单的数学证明 , 证明任何线性函数的线性组合仍然是线性的:
科技匠|为什么我们的神经网络需要激活函数
其中a0, a1 , … , an是不依赖于输入x1 , … , xn的常数 。
我希望这篇文章对你有用 , 谢谢阅读!
参考
[1] Cybenko, G.V. (2006). "Approximation by Superpositions of a Sigmoidal function". In van Schuppen, Jan H. (ed.). Mathematics of Control, Signals, and Systems. Springer International. pp. 303–314.
作者:Dorian Lazar
【科技匠|为什么我们的神经网络需要激活函数】deephub翻译组