我一直试图找出在神经网络中实现时非线性激活函数的确切作用。
我知道他们会修改神经元的输出,但是如何以及出于什么目的?
我知道他们为非线性神经网络增加了非线性,但是出于什么目的呢?
它们对每一层的输出到底做了什么?是某种形式的分类吗?
我想知道它们在神经网络中的确切用途。
Wikipedia说:“节点的激活功能在给定一个输入或一组输入的情况下定义了该节点的输出。” This article指出激活功能会检查神经元是否已“发射”。我也查看了很多关于Stack Overflow的文章和其他问题,但是对于所发生的事情,没有一个给出令人满意的答案。
答案 0 :(得分:1)
使用非线性激活函数的主要原因是能够学习非线性目标函数,即学习输入和输出之间的非线性关系。如果网络仅由线性激活函数组成,则它只能对输入和输出之间的线性关系进行建模,这在几乎所有应用中都没有用。
我绝不是ML专家,所以也许这段视频可以更好地解释它:https://www.coursera.org/lecture/neural-networks-deep-learning/why-do-you-need-non-linear-activation-functions-OASKH
希望这会有所帮助!
答案 1 :(得分:0)
首先,最好对使用激活功能的原因有一个清晰的认识。
我们使用激活功能将一层节点的输出传播到 下一层。激活函数是标量到标量函数,我们将激活函数用于神经网络中的隐藏神经元,以将非线性引入到网络模型中。因此,在更简单的层次上,可以使用激活函数将非线性引入网络。
那么引入非线性有什么用?在此之前,非线性意味着不能从输入的线性组合中再现输出。因此,在神经网络中没有非线性激活函数,即使它可能具有数百个隐藏层,它的行为仍然像单层感知器一样。原因是无论采用哪种方式求和,都只会得到线性输出。
为获得更深入的了解,我建议您同时阅读 Medium 和 Andrew Ng 本人的video
吴安德(Andrew Ng)的视频让我改写下面的一些重要内容。
...如果您没有激活功能,那么无论有多少 神经网络的各个层,它所做的只是计算一个 线性激活函数。因此,您最好不要隐藏任何内容 层。
...事实证明,如果您在此处具有线性激活函数,并且 这里是一个S型函数,那么该模型的表达能力就比 没有任何隐藏层的标准逻辑回归。
...所以除非 你在那扔非线性,那你就没有更多的计算了 有趣的功能,即使您深入网络。