我正在寻找实现一个通用神经网络,其中 1 个输入层由输入节点组成,1 个输出层由输出节点组成,N 个隐藏层由隐藏节点组成。节点被组织成层,规则是同一层的节点不能连接。
我主要了解偏见的概念,但我有一个问题。
每层应该有一个偏差值(由该层中的所有节点共享)还是每个节点(输入层中的节点除外)都有自己的偏差值?
我有一种感觉,它可以双向完成,并且想了解每种方法的权衡,也知道最常用的实现方式。
我正在寻找实现一个通用神经网络,其中 1 个输入层由输入节点组成,1 个输出层由输出节点组成,N 个隐藏层由隐藏节点组成。节点被组织成层,规则是同一层的节点不能连接。
我主要了解偏见的概念,但我有一个问题。
每层应该有一个偏差值(由该层中的所有节点共享)还是每个节点(输入层中的节点除外)都有自己的偏差值?
我有一种感觉,它可以双向完成,并且想了解每种方法的权衡,也知道最常用的实现方式。
为了正确回答这个问题,我们首先应该准确地确定我们在问题中所说的“偏差值”时的意思。神经网络通常直观地被视为(并向初学者解释)为节点(神经元)和节点之间加权的定向连接的网络。在这个视图中,偏差经常被绘制为额外的“输入”节点,它们的激活水平总是精确的1.0
。这个值1.0
可能是有些人听到“Bias Value”时想到的。这样的偏置节点将与其他节点连接,具有可训练的权重。其他人可能会将这些权重视为“偏差值”。由于问题被标记为bias-neuron
标签,我将在假设我们使用第一个定义的情况下回答问题,例如1.0
对于一些偏置节点/神经元。
从这个角度来看……只要我们确保将它们连接到正确的节点,我们在网络中放入多少 Bias 节点/值在数学上绝对无关紧要。您可以直观地认为整个网络只有一个偏置节点,其值为1.0
不属于任何特定层,并且与输入节点以外的所有节点都有连接。但是这可能很难绘制,如果你想绘制你的神经网络,放置一个单独的偏置节点可能更方便(每个偏置节点的值1.0
) 在除输出层之外的每一层中,并将这些偏置节点中的每一个连接到直接在其之后的层中的所有节点。在数学上,这两种解释是等价的,因为在这两种情况下,每个非输入节点都有一个来自节点的传入加权连接,该节点的激活级别始终为1.0
。
当神经网络被编程时,通常根本没有任何明确的节点“对象”(至少在有效的实现中)。通常只有权重矩阵。从这个角度来看,已经没有任何选择了。我们(几乎)总是希望1.0
每个非输入节点都有一个“偏置权重”(一个权重乘以一个恒定的激活水平),并且我们必须确保所有这些权重都出现在我们的权重矩阵中的正确位置。