高估和低估 LSTM 网络中的最低值和最高值

人工智能 神经网络 Python 喀拉斯 循环神经网络 长短期记忆
2021-11-07 08:14:11

我正在训练一个具有多个输入和多个 LSTM 层的 LSTM 网络,以建立一个时间序列间隙填充程序。LSTM 在 LSTM 的输出上使用“tanh”激活进行双向训练,最后一个具有“线性”激活的 Dense 层来预测输出。以下实际输出与预测的散点图说明了这个问题:

输出(X 轴)与预测(Y 轴):

图片

网络的性能肯定不会太差,我将在下一次试验中更新参数,但手头的问题总是会再次出现。最高产出明显被低估,最低产出被高估,明显是系统的。

我已经尝试对输入和输出进行最小-最大缩放以及对输入和输出进行归一化,后者的性能稍好一些,但问题仍然存在。

我在现有的线程和问答中看了很多,但我还没有看到类似的东西。

我想知道这里是否有人看到这一点并立即知道可能的原因(激活函数?预处理?优化器?训练期间缺少权重?...?)。或者,在这种情况下,如果不进行广泛的测试就不可能知道这一点也很好。

1个回答

RNN 是一个随时间变化的深度非线性函数,黑色线性线是如何推导出来的?

如果使用最小二乘误差作为损失函数,假设您只进行线性回归,它将具有概率解释

y(i)|x(i);θN(θTx(i),σ2)

YX参数化θ,具有高斯分布,因此对于每个数据点x, 有对应的y如果您正在进行最大似然估计,则它只是高斯的平均值,因此会引入方差来表达噪声。如果您正在做小批量,则不能保证达到全局最小值。

旁注:如果你用 min-max scaling 对数据进行归一化,请确保只使用训练集,如果你包括开发/测试集,你正在做某种数据窥探,泛化错误将会有偏差。