我对讨论神经网络时使用线性/非线性这个术语感到有些困惑。能有人帮我澄清这三个问题吗:
- 神经网络中的每个节点都是输入的加权和。这是一个输入的线性组合。所以每个节点的值(忽略激活)是由某个线性函数给出的。我听说神经网络是通用函数逼近器。这是否意味着,尽管每个节点内包含线性函数,整个网络也能够逼近非线性函数?有没有关于这在实践中如何运作的清晰例子?
- 激活函数被应用于该节点的输出,以压缩/转换输出,以便进一步传播到网络的其余部分。我是否正确地将激活函数的输出解释为该节点的“强度”?
- 激活函数也被称为非线性函数。非线性这个术语从何而来?因为输入到激活的输入是节点输入的线性组合。我假设它指的是像S形函数这样的非线性函数?为什么激活是非线性的很重要?
回答:
1 线性
神经网络只有在用非线性激活函数压缩节点的输出信号时才具有非线性。一个完整的神经网络(带有非线性激活函数)是一个任意函数逼近器。
附加说明:需要注意的是,如果你在多个连续层中使用线性激活函数,你完全可以将它们简化为单层,因为它们是线性的。(权重会变为更极端的值)。使用线性激活函数创建多层网络将无法模拟比单层网络更复杂的函数。
2 激活信号
将压缩后的输出信号解释为该信号的强度(从生物学角度来说)是完全可以的。不过,将输出强度解释为模糊逻辑中的置信度可能是不正确的。
3 非线性激活函数
是的,你完全正确。输入信号及其各自的权重是一个线性组合。非线性来自于你选择的激活函数。记住,线性函数被绘制成一条直线 – S形函数、双曲正切函数、ReLU等可能无法用单一的直线绘制。
为什么我们需要非线性激活函数?
大多数函数和分类任务可能最好由非线性函数来描述。如果我们决定使用线性激活函数,我们将对复杂函数进行更粗糙的逼近。
通用逼近器
你有时会在论文中读到神经网络是通用逼近器。这意味着一个“完美”的网络可以适应你抛给它的任何模型/函数,尽管配置完美网络(节点数和层数等)是一项非平凡的任务。
在这个维基百科页面上阅读更多关于其含义的信息。