我正在训练一个神经网络模型,我的模型很好地符合训练数据。训练损失稳定下降。一切都很好。
然而,当我输出模型的权重时,我发现由于随机初始化(我没有使用任何预先训练过的权重),模型没有发生太大的变化。默认情况下,在PyTorch中初始化所有权重)。训练数据的准确性从50%提高到90%,各维度的权重变化仅为1%左右。如何解释这一现象?重量的尺寸太高了吗?我需要缩小模型的尺寸吗?或者还有其他可能的解释吗?
我知道这是一个相当宽泛的问题,但我认为,在这里展示我的模型并对其进行数学分析是不切实际的。所以我只想知道这个问题的一般原因是什么。
发布于 2018-10-31 21:06:01
在一个问题中几乎总是有很多局部最优点,所以在高维特征空间中,你不能特别说的一件事就是你的模型参数会适合哪一个最优点。这里最重要的一点是,对于您正在为模型计算的每一组权重来寻找最优点,由于实值权重,对于该最优点有无限的权重集,权重之间的比例是唯一重要的事情,因为您试图最小化成本,而不是为每个样本寻找损失为0的唯一权重集。每次你训练,你可能会得到不同的结果基础上的初始权重。当权重以几乎相同的比率非常接近地变化时,这意味着您的特征是高度相关的(即冗余的),而且由于您得到了非常高的精度,只要稍微改变一下权重,我只能想到的是,您的数据集类彼此相距很远。试着一次删除一个特征,训练和查看结果,如果准确性好,继续删除另一个,直到你希望达到一个3或2维的空间,你可以绘制你的数据并可视化它,看看数据点是如何分布的,并从中得到一些意义。
编辑:更好的方法是使用PCA进行降维,而不是逐个删除。
https://stackoverflow.com/questions/53086166
复制相似问题