【问题标题】:Sudden drop in Neural Network loss神经网络损失突然下降
【发布时间】:2021-08-24 05:53:17
【问题描述】:

我正在练习预测https://www.kaggle.com/c/house-prices-advanced-regression-techniques/overview 的房价。

在某个训练点,我的损失突然下降。该图如下所示:

最初让我觉得学习率太低,但是当我在下降后放大时:

好像太高了(还有过拟合?)。

我选择的 NN 是(使用 PyTorch)

net = nn.Sequential(
    nn.Linear(331, 96),
    nn.ReLU(),
    nn.Linear(96, 8),
    nn.ReLU(),
    nn.Linear(8, 1)
)

谁能向我解释发生了什么?它是否与我使用的自定义损失函数有关(我尝试过某种“相对分数损失”)?

def my_loss(y_hat, y):
    frac = (y_hat - y) / y
    return torch.abs(frac)

【问题讨论】:

    标签: python deep-learning neural-network pytorch


    【解决方案1】:

    不太确定,因为下降幅度很大......但我最好的猜测也是损失函数。

    你看,你写的函数对于小于你的目标或大于你目标的值有非常不同的景观。

    假设我的目标是 200k。

    如果我低于目标 190k,猜测是 10k,我的损失将是 |(200k-10k)/10k| = 19;

    如果我在 190k 以上未达到目标,猜测为 390k,我的损失将是 |(200k-390k)/390k| = 0.48;

    You can see that graphicaly here.

    所以,我的猜测是,在 90 年代左右,您的网络从非常低的猜测转变为非常高的猜测。不一定是更好的猜测,但猜测的损失会更低。

    【讨论】:

    • 函数除以 label,所以 |(10k-200k) / 200k||(390k-200k) / 200k| 损失 0.95
    【解决方案2】:

    如果您正在寻找该问题的最终解决方案:

    您应该进行数据预处理。

    你肯定会看到它的数据是不平衡的,并且在某处积累。

    如果您的数据有异常值,您可能需要删除大部分数据。

    这是数据预处理的提示:

    https://www.geeksforgeeks.org/data-preprocessing-in-data-mining/

    【讨论】:

      猜你喜欢
      • 2018-09-11
      • 1970-01-01
      • 2019-08-07
      • 2018-06-11
      • 1970-01-01
      • 2019-02-20
      • 2017-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多