【问题标题】:Should there be one bias per layer or one bias for each node?每层应该有一个偏差还是每个节点有一个偏差?
【发布时间】:2016-05-02 05:05:04
【问题描述】:

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

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

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

我感觉这两种方法都可以,并且想了解每种方法的权衡,也知道最常用的实现方式。

【问题讨论】:

  • 通常我们每个神经元有一个偏差值(输入层除外),即每层必须有一个偏差向量,向量的长度是该层中神经元的数量。
  • 每个神经元的偏差(几乎总是)是个体的。在一些具有权重共享​​>的现代神经网络中是个例外。查看this answer,了解为什么偏差应该是唯一的。 TLDR:偏差用于转移激活函数。因此,在一个层内的所有节点中使用相同的偏差不一定有意义。
  • 有趣,感谢您的回复。我将在创建神经网络时将单个偏差和每层偏差共享的选项作为可配置选项构建到我的系统中
  • 您可以将偏差视为常量输入。我将有一个权重将它连接到层中的每个节点(假设全连接网络)。训练后,即权重实现后,您有一个常数值 1*weight[i] 进入每个节点。

标签: neural-network artificial-intelligence bias-neuron


【解决方案1】:

直观视图

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

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

编程视图

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

【讨论】:

    猜你喜欢
    • 2021-10-16
    • 1970-01-01
    • 2020-01-10
    • 2019-12-04
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 2013-01-14
    相关资源
    最近更新 更多