我试图找到一种方法来估计神经网络中的权重数量。让我们看一个简单的例子。
nnetar(1:10)(来自R 中的预测包)给了我一个具有 4 个权重的 1-1-1 网络。
这对我来说很有意义,因为我们在插图中看到了四个箭头。
但是,nnetar(1:10, xreg=data.frame(10:1,3:12))给了我一个 11 个权重的 3-2-1 网络
我不明白,为什么输出说涉及 11 个权重,因为我数的是 12!?有什么建议么?
我试图找到一种方法来估计神经网络中的权重数量。让我们看一个简单的例子。
nnetar(1:10)(来自R 中的预测包)给了我一个具有 4 个权重的 1-1-1 网络。
这对我来说很有意义,因为我们在插图中看到了四个箭头。
但是,nnetar(1:10, xreg=data.frame(10:1,3:12))给了我一个 11 个权重的 3-2-1 网络
我不明白,为什么输出说涉及 11 个权重,因为我数的是 12!?有什么建议么?
您感到困惑的原因是函数nnetar创建了一个自回归神经网络而不是标准神经网络。这意味着网络的输入层节点是:
例如,运行nnetar(1:10, xreg=data.frame(10:1,3:12))会默认创建一个 NNAR(1,2) 模型,即具有一个滞后项和两个隐藏节点的神经网络.
具有两个回归量的 NNAR(1,2) 会产生一个 3-2-1 网络,其中您有:
如果你计算到目前为止的所有权重,你会发现你只得到 8:。但是为什么 nnetar 返回 11 个权重?这是因为“偏差”节点,虽然它们是 3-2-1 网络的一部分并且确实带有额外的权重,但它们并没有真正计入 3-2-1 网络中。输入层有一个偏置节点,隐藏层有一个偏置节点,它只连接到输出层。所以你有 2 个来自输入层偏置节点的权重加上 1 个来自隐藏层偏置节点的权重,这使得 3 加上之前的 8 个权重,总共 11 个权重。您可以从nnetar 的文档或Hyndman 的新书中了解有关此架构的更多信息。
这是具有 2 个回归量的 NNAR(1,2) 的样子:
您可以通过计算该网络中的边缘来找到权重的数量。
要解决原始问题:
在规范神经网络中,权重位于输入层和隐藏层之间、所有隐藏层之间以及隐藏层和输出层之间的边缘。
如果您正在寻找一种方法来计算 1 隐藏层网络中的权重,这将是隐藏层中的节点数乘以输入层中的节点数加上隐藏层中的节点数乘以节点数输出层。如果您使用 nnetar,则必须确保将自回归项添加为输入层中的节点(nnetar 始终带有 1 个隐藏层,但如果您有更多隐藏层,则只需将此方法应用于所有层)。