有没有办法改进线性回归的 DNN?

Is there a way to improve DNN for linear regression?

我正在为线性回归创建一个深度神经网络。该网络有 3 个隐藏层,每层有 256 个单元。这是模型:

每个单元都有 ReLU 作为激活函数。我还使用了 Early Stopping 来确保它不会过度拟合。

目标是一个整数,在训练集中它的值从 0 到 7860。

训练后我有以下损失:

train_MSE = 33640.5703, train_MAD = 112.6294,
val_MSE = 53932.8125, val_MAD = 138.7836,
test_MSE = 52595.9414, test_MAD= 137.2564

我已经尝试了很多不同的网络配置(不同的优化器、损失函数、归一化、正则化器...),但似乎没有任何东西可以帮助我进一步减少损失。即使训练错误减少,测试错误也永远不会低于 MAD = 130 的值。

这是我的网络的行为:

我的问题是是否有办法改进我的 dnn 以做出更准确的预测,或者这是我可以用我的数据集实现的最佳结果?

您可以尝试许多不同的方法来改进 DNN,

  1. 增加隐藏层数
  2. 缩放或标准化您的数据
  3. 尝试将整流线性单元作为激活
  4. 获取更多数据
  5. 更改学习率等学习算法参数

如果您的问题本质上是线性的,这意味着您的数据背后的真实函数来自:y = a*x + b + epsilon 其中最后一项只是随机噪声。

没有什么比拟合基础函数更好的了 y = a*x + b。拟合 espilon 只会导致对新数据的泛化损失。