神经网络(非)线性

Neural network (non) linearity

在讨论神经网络时,我对术语 linear/non-linear 的使用感到有些困惑。任何人都可以为我澄清这三点:

  1. 神经网络中的每个节点都是输入的加权和。这是输入的线性组合。因此每个节点的值(忽略激活)由某个线性函数给出。我听说神经网络是通用函数逼近器。这是否意味着,尽管每个节点都包含线性函数,但整个网络也能够近似非线性函数?有没有明确的例子说明它在实践中是如何工作的?
  2. 激活函数被应用到该节点的输出到 squash/transform 输出以通过网络的其余部分进一步传播。我将激活函数的输出解释为该节点的 "strength" 是否正确?
  3. 激活函数也称为非线性函数。非线性一词从何而来?因为激活的输入是节点输入的线性组合的结果。我假设它指的是像 sigmoid 函数这样的东西是非线性函数的想法?为什么激活是非线性的很重要?

1 线性度

只有当您使用非线性激活函数压缩来自节点的输出信号时,神经网络才是非线性的。一个完整的神经网络(具有非线性激活函数)是一个任意函数逼近器。

奖励: 应该注意的是,如果您在多个连续层中使用 线性 激活函数,您也可以由于它们是线性的,因此将它们修剪成单层。 (权重将更改为更极端的值)。使用线性激活函数创建多层网络无法模拟比单层网络更复杂的功能。

2 激活信号

解释压扁的输出信号可以很好地解释为该信号的强度(从生物学上讲)。认为将输出强度解释为等同于模糊逻辑中的置信度可能是不正确的。

3个非线性激活函数

是的,你说得对。输入信号及其各自的权重是线性组合。非线性来自您选择的激活函数。请记住,线性函数被绘制为一条线 - sigmoid、tanh、ReLU 等可能无法用一条直线绘制。

为什么我们需要非线性激活函数?

大多数函数和分类任务可能最好用非线性函数来描述。如果我们决定使用线性激活函数,我们最终会得到一个复杂函数的更粗略的近似值。

通用逼近器

您有时可以在论文中读到神经网络是通用逼近器。这意味着 "perfect" 网络可以适用于任何你可以扔给它的 model/function,尽管配置完美的网络(#nodes 和 #layers ++)是一项不平凡的任务。

this Wikipedia page 阅读更多关于影响的信息。