每层应该有一个偏置,还是每个节点应该有一个偏置?

我正在尝试实现一个通用的神经网络,包括一个由输入节点组成的输入层,一个由输出节点组成的输出层,以及N个由隐藏节点组成的隐藏层。节点被组织成层,同一层的节点之间不能连接。

我对偏置的概念基本理解,但有一个问题。

每层应该有一个偏置值(由该层的所有节点共享),还是每个节点(除了输入层的节点)应该有自己的偏置值?

我觉得这两种方式都可以实现,我想了解每种方法的权衡,以及最常用的实现方式是什么。


回答:

直观视角

为了正确回答这个问题,我们首先应该明确我们所说的“偏置值”是什么意思,就像问题中所做的那样。神经网络通常被直观地视为(并向初学者解释为)节点(神经元)的网络,以及节点之间的加权、有向连接。在这种视角下,偏置通常被绘制为额外的“输入”节点,这些节点的激活水平始终为1.0。这个1.0的值可能是有些人听到“偏置值”时想到的。这样的偏置节点会与其他节点有连接,并具有可训练的权重。其他人可能认为这些权重是“偏置值”。由于问题被标记为bias-neuron标签,我将在假设我们使用第一个定义的情况下回答这个问题,即偏置值 = 1.0,适用于某个偏置节点/神经元。

从这个角度来看……数学上,我们在网络中放置多少个偏置节点/值完全不重要,只要我们确保它们连接到正确的节点。你可以直观地认为整个网络只有一个偏置节点,值为1.0,它不属于任何特定层,并且连接到所有非输入节点。虽然这可能难以绘制,但如果你想绘制你的神经网络,可能更方便在除了输出层之外的每一层放置一个单独的偏置节点(每个节点的值为1.0),并将这些偏置节点连接到紧随其后的层的全部节点。数学上,这两种解释是等价的,因为在两种情况下,每个非输入节点都有一个来自始终具有1.0激活水平的节点的加权输入连接。

编程视角

当编程实现神经网络时,通常根本没有明确的节点“对象”(至少在高效的实现中)。通常只会有权重矩阵。从这个角度来看,不再有选择。我们几乎总是希望每个非输入节点都有一个“偏置权重”(一个被乘以常数激活水平1.0的权重),我们必须确保所有这些权重出现在权重矩阵的正确位置。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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