我的神经网络模型的权重变化不大的原因是什么?

Yu *_* Gu 1 python machine-learning neural-network torch

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

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

leo*_*leo 5

一个问题中几乎总是有很多局部最优点,所以在高维特征空间中你不能特别说的一件事是你的模型参数将适合哪个最优点。这里重要的一点是,对于您为模型计算的每一组权重,以找到最佳点,因为真实值权重,该最佳点有无限组权重,权重相互之间的比例是唯一重要的事情,因为您正在尝试最小化成本,而不是找到一组唯一的权重,每个损失为 0样本。每次训练时,根据初始权重,您可能会得到不同的结果。当权重变化非常接近且彼此之间几乎相同的比率时,这意味着您的特征高度相关(即冗余),并且由于您仅在权重发生一点变化时就获得了非常高的准确度,因此我唯一能想到的是您的数据集类彼此远离。尝试一次删除一个功能,

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