神经网络回归饱和

时间:2021-03-23 18:39:50

标签: matlab machine-learning neural-network regression

我正在尝试使用回归建模物理行为。训练/测量数据在下图 the Data and Models 中以蓝色显示。它只有一个一维特征集(x 轴)和一个响应(y 轴)。我首先尝试使用线性回归模型 (LR) 对其进行建模,并在 the figure 中以橙色显示模型拟合。然后我尝试使用一个带有 10 个神经元的隐藏层的浅层神经网络 (NN),我获得了 the figure 中以黄色显示的模型。正如所见,NN 预测似乎在输入 < 228 时趋于平缓,这是我训练集中的最低输入值。

我没有在图中显示,但我有一个测试数据集,其中包含值低于 228 的输入样本,这些样本实际上代表了一些不寻常或不规则的情况。线性模型为我提供了对低于 228 的输入的准确预测,但神经网络模型的输出刚好在这一点以下饱和。我基本上希望神经网络的行为与这里的线性模型相同或收敛到它,而不是因为训练集中不存在的看不见的输入而饱和。

我尝试更改隐藏层的数量和每层中的神经元数量,但结果几乎相同。我想我在这里遗漏了一些关于神经网络回归的基本知识。 训练数据是否总是必须包含输入变量的所有可能范围?这种饱和的原因可能是什么,我该如何解决?我也在这里分享神经网络实现的Matlab代码,以便大家更好地理解。

trainFcn = 'trainlm';
hiddenLayer1Size = 10;
net = fitnet([hiddenLayer1Size],  trainFcn);
net.trainParam.epochs = 1000;
[net,tr] = train(net, X_train', Y_train');
vlt = linspace(205,240, 1000);
outputs = net(vlt);

0 个答案:

没有答案