神经网络(非)线性

我对讨论神经网络时使用线性/非线性这个术语感到有些困惑。能有人帮我澄清这三个问题吗:

  1. 神经网络中的每个节点都是输入的加权和。这是一个输入的线性组合。所以每个节点的值(忽略激活)是由某个线性函数给出的。我听说神经网络是通用函数逼近器。这是否意味着,尽管每个节点内包含线性函数,整个网络也能够逼近非线性函数?有没有关于这在实践中如何运作的清晰例子?
  2. 激活函数被应用于该节点的输出,以压缩/转换输出,以便进一步传播到网络的其余部分。我是否正确地将激活函数的输出解释为该节点的“强度”?
  3. 激活函数也被称为非线性函数。非线性这个术语从何而来?因为输入到激活的输入是节点输入的线性组合。我假设它指的是像S形函数这样的非线性函数?为什么激活是非线性的很重要?

回答:

1 线性

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

附加说明:需要注意的是,如果你在多个连续层中使用线性激活函数,你完全可以将它们简化为单层,因为它们是线性的。(权重会变为更极端的值)。使用线性激活函数创建多层网络将无法模拟比单层网络更复杂的函数。

2 激活信号

将压缩后的输出信号解释为该信号的强度(从生物学角度来说)是完全可以的。不过,将输出强度解释为模糊逻辑中的置信度可能是不正确的。

3 非线性激活函数

是的,你完全正确。输入信号及其各自的权重是一个线性组合。非线性来自于你选择的激活函数。记住,线性函数被绘制成一条直线 – S形函数、双曲正切函数、ReLU等可能无法用单一的直线绘制。

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

大多数函数和分类任务可能最好由非线性函数来描述。如果我们决定使用线性激活函数,我们将对复杂函数进行更粗糙的逼近。

通用逼近器

你有时会在论文中读到神经网络是通用逼近器。这意味着一个“完美”的网络可以适应你抛给它的任何模型/函数,尽管配置完美网络(节点数和层数等)是一项非平凡的任务。

这个维基百科页面上阅读更多关于其含义的信息。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注