neural-network - 每层应该有一个偏差还是每个节点有一个偏差?

标签 neural-network artificial-intelligence bias-neuron

我正在寻找实现一个通用神经网络,其中 1 个输入层由输入节点组成,1 个输出层由输出节点组成,N 个隐藏层由隐藏节点组成。节点被组织成层,规则是同一层的节点不能连接。

我主要了解偏见的概念,但我有一个问题。

每层应该有一个偏差值(由该层中的所有节点共享)还是每个节点(输入层中的节点除外)都有自己的偏差值?

我有一种感觉它可以双向完成,并且想了解每种方法的权衡,也知道最常用的实现方式。

最佳答案

直观的观点

为了正确回答这个问题,我们首先应该准确地确定我们在问题中所说的“偏差值”时的意思。神经网络通常被直观地视为(并向初学者解释)为节点(神经元)和节点之间加权的定向连接的网络。在此 View 中,偏差经常被绘制为额外的“输入”节点,其激活级别始终为 1.0。 . 1.0 这个值可能是有些人听到“Bias Value”时想到的。这样的偏置节点将与其他节点连接,具有可训练的权重。其他人可能会将这些权重视为“偏差值”。由于问题被标记为 bias-neuron标签,我将在我们使用第一个定义的假设下回答这个问题,例如偏差值 = 1.0对于一些偏置节点/神经元。

从这个角度来看……只要我们确保将它们连接到正确的节点,我们在网络中放入多少 Bias 节点/值在数学上绝对无关紧要。您可以直观地认为整个网络只有一个值为 1.0 的偏置节点。不属于任何特定层,并且与输入节点以外的所有节点都有连接。不过,这可能很难绘制,如果您想绘制神经网络的图,则在除输出层之外的每一层中放置一个单独的偏置节点(每个偏置节点的值为 1.0 )可能会更方便,并且将这些偏置节点中的每一个直接连接到其后层中的所有节点。在数学上,这两种解释是等价的,因为在这两种情况下,每个非输入节点都有一个来自节点的传入加权连接,​​该节点的激活级别总是 1.0。 .

编程 View

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

关于neural-network - 每层应该有一个偏差还是每个节点有一个偏差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35000215/

相关文章:

machine-learning - 在 tensorflow 中使用 get_variable 进行偏差的零初始化

neural-network - 使用反向传播训练的人工神经网络中的误差函数

c# - 如何让我的程序猜测正确的单词?

machine-learning - 神经网络的初始偏差值

java - 在Java中实现多维度的Adaboost

swift - 对于零和博弈的 AI,什么是好的适应度函数?

binary - 为什么我们使用 -1 和 +1 作为二进制输入而不是 0 和 1

python - 如何计算或监控 pybrain 中神经网络的训练?

machine-learning - 是否存在惩罚冗余神经元的正则化器?

python - 过拟合问题,验证成功率远低于训练。我能改变什么?