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