我正在训练一个神经网络模型,并且我的模型非常适合训练数据。训练损失稳定减少。一切正常。
但是,当我输出模型的权重时,我发现自从随机初始化(我没有使用任何预训练的权重。所有权重都默认在PyTorch中初始化)之后,它的变化不会太大。权重的所有维度仅更改了约1%,而训练数据的准确性从50%攀升至90%。
是什么导致这种现象?权重的尺寸是否太高,我需要减小模型的尺寸?还是有其他可能的解释?
我知道这是一个相当广泛的问题,但我认为在这里展示我的模型并对其进行数学分析是不切实际的。因此,我只想知道此问题的一般/常见原因是什么。
答案 0 :(得分:4)
问题中几乎总是存在许多局部最优点,因此您不能特别在高维特征空间中说一句话的是,模型参数将适合哪个最优点。这里的一个重要点是,由于要为模型计算以找到最佳点的每组权重,由于 real 值权重,因此该最佳点有无穷的权重集,即比例相互之间的权重是唯一重要的事情,因为您正试图使成本最小化,而不是找到每个样本的唯一损失为0的唯一权重集。每次训练时,根据初始权重,您可能会得到不同的结果。当权重变化非常接近且彼此之间的比率几乎相同时,这意味着您的功能高度相关(即冗余),并且由于权重发生一点点变化,您就获得了很高的准确性,所以我唯一想到的就是数据集类彼此相距很远。尝试一次删除一个要素,训练并查看结果(如果精度良好),请继续删除另一个要素,直到您希望达到3维或2维空间,您可以绘制数据并将其可视化以查看数据点的分布方式和对此有所了解。
编辑:更好的方法是使用PCA进行降维,而不是一一删除