【问题标题】:What's the reason for the weights of my NN model don't change a lot?我的 NN 模型的权重变化不大的原因是什么?
【发布时间】:2019-04-04 18:50:54
【问题描述】:

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

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

【问题讨论】:

  • 你是怎么发现你的体重只变化了 1% 的?人工检查还是别的什么?
  • @ShihabShahriar 我只是在每个时期后输出权重

标签: python machine-learning neural-network torch


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-07-02
    • 2010-12-12
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多