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

Neural network 每个层应该有一个偏差还是每个节点有一个偏差?,neural-network,artificial-intelligence,bias-neuron,Neural Network,Artificial Intelligence,Bias Neuron,我希望实现一个通用的神经网络,1个输入层由输入节点组成,1个输出层由输出节点组成,N个隐藏层由隐藏节点组成。节点按层组织,规则是同一层中的节点不能连接 我基本上理解偏见的概念,但我有一个问题 每个层应该有一个偏差值(该层中的所有节点共享)还是每个节点(输入层中的节点除外)都有自己的偏差值 我觉得这两种方法都可以实现,我希望了解每种方法的利弊,并了解最常用的实现方式。Intuitive View 为了正确回答这个问题,我们首先应该确定我们在问题中所说的“偏差值”的确切含义。神经网络通常被直观地视为

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

我基本上理解偏见的概念,但我有一个问题

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

我觉得这两种方法都可以实现,我希望了解每种方法的利弊,并了解最常用的实现方式。

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

从这个角度来看。。。从数学上讲,我们在网络中输入多少偏差节点/值根本不重要,只要我们确保将它们连接到正确的节点。您可以直观地认为整个网络只有一个值为
1.0
的偏差节点,该节点不属于任何特定层,并且与输入节点以外的所有节点都有连接。但这可能很难绘制,如果要绘制神经网络的图形,可能更方便的方法是在除输出层之外的每一层中放置一个单独的偏差节点(每个偏差节点的值均为
1.0
),并将这些偏差节点中的每个节点直接连接到该层中的所有节点。从数学上讲,这两种解释是等效的,因为在这两种情况下,每个非输入节点都有一个来自激活级别始终为
1.0
的节点的传入加权连接

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

通常每个神经元有一个偏差值(输入层除外),也就是说,每层都必须有一个偏差向量,向量的长度是该层中神经元的数量。偏差(几乎总是)对每个神经元都是独立的。例外情况是在一些现代神经网络与权重共享。请看一看,了解为什么偏倚应该是唯一的。TLDR:偏置用于移动激活功能。因此,在一层中的所有节点中使用相同的偏差并不一定有意义。有趣的是,感谢您的响应。在创建神经网络后,我将在我的系统中构建每个层的单个偏差和偏差共享选项,作为可配置选项。您可以将偏差视为恒定输入。我将有一个单独的权重将其连接到层中的每个节点(假设完全连接网络)。在训练之后,也就是说,在实现权重之后,每个节点都有一个常量值1*weight[i]。