如何知道在神经网络中将偏差项放在哪里?

机器算法验证 神经网络 深度学习 偏置节点
2022-03-31 13:04:53

我读过不同的地方谈论神经网络中的偏差项,就像这样

神经网络中偏置节点的重要性

但我仍然无法理解它的用途以及它如何影响神经网络。

在神经网络中,你会把它放在哪里?可能有数百个神经元,你怎么知道将它链接到哪一个?你需要多少个偏置项?你怎么知道你需要一个?

谁能解释一下?

1个回答

假设我有一个神经元,其中是一些输入,表示一组权重,表示您要询问的这个偏置项,当然是我们的激活函数。我将再做一个假设,这在当今看来是标准的,我将让我的激活函数成为一个整流线性单元 (ReLU),即所以y = \max(0, w^Tx+b)y=f(wTx+b)xwbff(x)=max(0,x)y=max(0,wTx+b)

让我们在这个特定的背景下回答你问题的第一部分。请注意,ReLU 仅在信号大于 0 时才允许信号向前传播。因此,我们的神经元仅在w^Tx + b > 0时“激活”(具有非零输出值),wTx+b>0这相当于wTx>b因此,神经元的偏置项将作为我们设置中的激活阈值(ReLU 非线性)。由于我们通过反向传播自适应地学习这些偏差项,我们可以将其解释为我们允许我们的神经元学习何时激活和何时不激活。

要回答有关在何处放置偏差项的其他问题,请注意偏差已内置于公式中。

如果您不想包含偏差项,您只需将网络设计的形式。y=f(wTx)

我怀疑你的意思是:我怎么知道何时包含偏见项?正如您所提到的,神经网络,如果您真的在每个神经元的神经元基础上查看它们,那么神经网络的不同类型的参数化(例如,为什么每个神经元都应该具有相同的激活函数?)变得势不可挡。

幸运的是,有一个通用逼近定理,它基本上表明,只要我们有足够的隐藏单元,单个隐藏层神经网络就可以逼近任意连续函数。因此,即使我们使用看似统一的单位(通过统一我并不是说每个单位都具有相同的权重,只是它们都来自同一个“类”)所有形式,如果我们有足够多的这些隐藏单元,我们可以将各种复杂的非线性函数逼近到任何所需的精度。请注意,我引用的通用逼近定理适用于 sigmoidal 激活函数。y=f(wTx+b)

最后,请注意,仅仅因为保证存在这样的神经网络,并不意味着通过训练/优化很容易找到它。请参阅 Yoshua Bengio 和 Yann Dauphin 的文章Big Neural Networks Waste Capacity,该文章触及了这个问题,并探讨了构建更大或更深的神经网络时的收益递减问题。

尝试在每个神经元的基础上对神经网络进行参数化似乎是不切实际的。现代网络有数百万个参数(很容易)。因此,深度学习社区基本上决定相信通用逼近定理,而不是试图通过神经元设计来解决神经元的压倒性问题。相反,大部分深度学习创新都在更广泛的网络设计(即卷积层、循环层、如何堆叠这些等)和优化问题(SGD+Momentum、权重初始化、Dropout 正则化、数据预处理, 数据增强, 以及很多很多其他问题) 因为通用逼近定理是存在结果而不是建设性结果:它没有告诉我们如何构造或找到这个不错的逼近器。如果我们想将一个连续函数逼近到某个固定的准确度,它甚至没有告诉我们需要多少个单位。