计算人工神经网络 (ANN) 架构中的参数数量:示例和方法

611 阅读5分钟

神经网络中的参数数量是一个重要的指标,它可以帮助我们理解模型的复杂性和它的潜在性能。

一般来说,具有更多参数的神经网络有可能学习到输入和输出之间更复杂的关系,但也可能更容易出现过拟合。相反,一个参数较少的神经网络可能在计算上更有效率,不容易过度拟合,但也可能在捕捉数据的复杂模式方面能力有限。

例如,在人工神经网络(ANN)中,参数的数量可以通过将网络中每一层的权重和偏置的数量相加来计算。人工神经网络中更多的参数可能使模型能够捕捉到输入和输出之间更复杂的关系,但也可能需要更多的数据和计算能力来训练。

让我们尝试为下面的浅层网络寻找参数数量。

image.png

在我们的例子中,ANN有一个带有4个神经元的输入层,一个带有2个神经元的隐藏层,以及一个带有单个神经元的输出层。为了确定网络中的参数总数,我们需要计算权重和偏置的数量。网络中两个神经元(或节点)之间的每个连接都与一个权重有关,而每个神经元都有自己的偏置。

输入层有4个神经元,所以没有与之相关的权重或偏置。隐藏层有2个神经元,每个神经元都与输入层的4个神经元相连,所以有2 x 4 = 8个权重与输入层和隐藏层之间的连接有关。此外,隐藏层的2个神经元中的每一个都有自己的偏置,所以有2个偏置与隐藏层相关。

输出层有一个神经元,它与隐藏层的2个神经元相连。这意味着有2个权重与隐藏层和输出层之间的连接有关。此外,输出神经元有自己的偏置,所以有1个偏置与输出层相关。

因此,网络中的参数总数为:

8个权重(输入层到隐藏层)+2个偏置(隐藏层)+2个权重(隐藏层到输出层)+1个偏置(输出层)=13个参数

让我们考虑一个有5层的深度神经网络(DNN),包括一个输入层,3个隐藏层,和一个输出层。**输入层有16个神经元,第一和第二隐藏层各有10个神经元。第三隐藏层有4个神经元,而输出层有1个神经元。**我们将计算这个DNN的总参数数。

image.png

输入层有16个神经元,所以没有与之相关的权重或偏置。

第一个隐藏层有10个神经元,每个神经元都与输入层的16个神经元相连,所以有10 x 16 = 160个权重与输入层和第一个隐藏层之间的连接有关。此外,第一隐藏层的10个神经元中的每一个都有自己的偏置,所以有10个偏置与第一隐藏层相关。

第二隐藏层也有10个神经元,每个神经元都与第一隐藏层的10个神经元相连,所以有10×10=100个权重与第一和第二隐藏层之间的连接有关。此外,第二隐藏层的10个神经元中的每一个都有自己的偏置,所以有10个偏置与第二隐藏层相关。

第三隐藏层有4个神经元,每个神经元都与第二隐藏层的10个神经元相连,所以有4×10=40个权重与第二和第三隐藏层之间的连接有关。此外,第三隐藏层的4个神经元中的每一个都有自己的偏置,所以有4个偏置与第三隐藏层相关。

输出层有1个神经元,第三隐藏层的4个神经元中的每一个都与之相连,所以有4个权重与第三隐藏层和输出层之间的连接有关。此外,输出神经元有自己的偏置,所以有1个偏置与输出层相关。

因此,网络中的参数总数为:

160个权重(输入层到第一隐藏层)+10个偏置(第一隐藏层)+100个权重(第一隐藏层到第二隐藏层)+10个偏置(第二隐藏层)+40个权重(第二隐藏层到第三隐藏层)+4个偏置(第三隐藏层)+4个权重(第三隐藏层到输出层)+1个偏置(输出层)=329个参数

因此,综上所述,你描述的DNN总共有329个参数,由分布在各层的314个权重和15个偏置组成。

我将使用 keras APIs 创建与上述相同的网络,然后我将检查每层的参数数量是如何计算的。

image.png

架构是使用keras APIs创建的

如果我们使用keras APIs创建所述的ANN,我们可以交叉检查每层计算的参数数和总参数数,以确保其准确性。

总的来说,了解神经网络中的参数数量对于优化模型架构和平衡模型复杂性和计算效率之间的权衡非常重要。