【问题标题】:is normal behaviour in ANNs for the reduction of the loss function to be dependent on the number of neuron in the hidden layer?ANN 中减少损失函数的正常行为是否取决于隐藏层中神经元的数量?
【发布时间】:2018-12-14 06:26:55
【问题描述】:

出于学习目的,我正在用 Python 编写自己的 ANN。我已经为 GD 和激活函数实现了最常见的优化,并计算了数值梯度,以确保 ANN 计算的梯度是正确的。

我尝试了非常简单的示例,并且效果很好,但最近我正在尝试使用 MNIST 数据集训练 ANN。我从数据集中的前 100 或 1000 张图像开始,只是为了了解每层要使用多少隐藏层和神经元。例如,我从 16 个神经元的单个隐藏层开始,对于提到的样本效果很好,损失函数逐渐减小,但是如果我使用几乎任何其他数量的神经元,损失函数变化很小甚至没有变化在训练期间,无论我使用多少个 epoch。我正在尝试建议的拓扑,这些拓扑对整个数据集都有效,结果相似。

我的理由是,可能没有足够的神经元让网络正常工作,但我很惊讶在多种情况下损失函数甚至没有改变,这是正常行为还是我更有可能有一些错误在我的代码中?

对于我所描述的,我使用 Adam 优化,leakyReLU 作为隐藏层的激活函数,softmax 作为输出层的激活函数。

【问题讨论】:

    标签: python neural-network deep-learning


    【解决方案1】:

    loss的减少不一定与隐藏层神经元的个数有关,至少达到某个个数后不呈线性关系,具体个数是逐例的。要了解神经元(也是隐藏层)与损失之间的关系,您需要了解我们为什么“做”深或浅LINK。它更像是参数化逼近(例如最小二乘法),你只需要几个必要的参数来逼近一个函数。因此,在您的情况下,16 个神经元是解决您的问题的“少数必要参数”的定义,超过这个数字可能只会导致准确性的有限进步。 总而言之,人工神经网络或深度学习所做的是近似,因此神经大小、网络结构或您将选择的优化器在很大程度上取决于数据本身,因此在大多数情况下没有正确答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-09
      • 2018-04-29
      • 1970-01-01
      • 2020-04-14
      • 2019-02-01
      • 2014-11-07
      • 1970-01-01
      • 2021-11-07
      相关资源
      最近更新 更多