有没有办法改进线性回归的 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,
- 增加隐藏层数
- 缩放或标准化您的数据
- 尝试将整流线性单元作为激活
- 获取更多数据
- 更改学习率等学习算法参数
如果您的问题本质上是线性的,这意味着您的数据背后的真实函数来自:y = a*x + b + epsilon
其中最后一项只是随机噪声。
没有什么比拟合基础函数更好的了 y = a*x + b
。拟合 espilon
只会导致对新数据的泛化损失。
我正在为线性回归创建一个深度神经网络。该网络有 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,
- 增加隐藏层数
- 缩放或标准化您的数据
- 尝试将整流线性单元作为激活
- 获取更多数据
- 更改学习率等学习算法参数
如果您的问题本质上是线性的,这意味着您的数据背后的真实函数来自:y = a*x + b + epsilon
其中最后一项只是随机噪声。
没有什么比拟合基础函数更好的了 y = a*x + b
。拟合 espilon
只会导致对新数据的泛化损失。