我的 NN 模型的权重变化不大的原因是什么?

What's the reason for the weights of my NN model don't change a lot?

我正在训练一个神经网络模型,我的模型很好地拟合了训练数据。训练损失稳定下降。一切正常。
然而,当我输出我的模型的权重时,我发现自随机初始化以来它并没有太大变化(我没有使用任何预训练的权重。所有权重在 PyTorch 中默认初始化)。权重的所有维度仅发生了大约 1% 的变化,而训练数据的准确率从 50% 攀升至 90%。 什么可以解释这种现象?权重的尺寸是否太高,我需要减小模型的尺寸?或者还有其他可能的解释吗?

我知道这是一个相当广泛的问题,但我认为在这里展示我的模型并对其进行数学分析是不切实际的。所以我只想知道这个问题的一般/常见原因是什么。

在一个问题中几乎总是有很多局部最优点,所以在高维特征 spaces 中你不能特别说的一件事是你的模型参数将适合哪个最优点。这里的一个重点是,对于您为模型计算以找到最佳点的每一组权重,由于 real 值权重,该最佳点有无限组权重,权重之间的比例是唯一重要的事情,因为您正在尝试最小化成本,而不是为每个样本找到一组唯一的权重为 0 的损失。每次训练时,您可能会根据初始权重得到不同的结果。当权重以彼此几乎相同的比例非常接近地变化时,这意味着您的特征高度相关(即冗余)并且由于您仅通过一点点权重变化就获得了非常高的准确性,我唯一能想到的就是你的数据集 类 彼此相距甚远。尝试一次删除一个特征,训练并查看结果,如果准确性很好,继续删除另一个特征,直到您希望达到 3 维或 2 维 space,您可以绘制数据并将其可视化以查看数据如何点数已分配并从中理解了一些意义。

编辑:更好的方法是使用 PCA 进行降维,而不是一个一个地删除