LSTM时间序列预测模型对部分市场指数数据训练失效问题咨询
为什么即便训练上万epoch,所有LSTM模型都没有出现过拟合
核心原因是你处理的是单变量金融月度时间序列,这类数据的信噪比极低,有效可学习的预测模式极少:
- 金融价格序列本身接近随机游走,大部分波动都是无规律噪声,没有可重复的训练集特有模式可供模型记忆,就算你把模型容量拉满,也只能学到极其有限的趋势类特征,不会出现训练集损失持续下降、验证集损失上升的过拟合特征
- 金融时间序列普遍存在非平稳性,训练集和验证集的分布本身就存在差异,你使用的
nn.MSELoss对分布差异敏感,模型就算在训练集上拟合到极限,也很难把泛化误差拉高到过拟合的阈值 - 你的任务是用历史月度数据预测下一月价格,任务本身的可预测上限就很低,模型很难出现对训练数据的过度拟合。
为什么部分样本量不低的指数对应的LSTM模型训练完全失效
不同指数的序列特征差异极大,样本量足够不代表可预测性足够:
- 你可以先计算失效指数的序列自相关系数(ACF),如果滞后你设定的序列长度窗口期的自相关系数接近0,说明序列本身几乎没有时序依赖性,LSTM根本学不到任何有预测价值的模式,自然训练失效
- 大概率你是直接用原始价格序列训练,没有做平稳化处理:部分指数的原始序列存在明显的结构性断点、异常跳变,或者一阶差分都不平稳,LSTM对非平稳序列的拟合能力本身就很差,很容易无法收敛
- 不同指数的数值范围差异极大,如果你没有对每条序列单独做标准化/归一化,数值量级过大的指数会导致梯度更新异常,模型直接卡在局部最优位置无法更新
- 部分另类指数(如你数据里的HFRX对冲基金类指数)的净值曲线本身平滑度极高,时序变动极小,也会导致模型没有有效特征可学习
- 你每个模型都是单独随机初始化的,小概率会出现初始化权重刚好落在损失平面的平坦区域,导致模型从训练一开始就没有有效更新。
为什么训练失效的模型损失曲线非常平滑
失效的模型本质上没有进行有效学习,全程输出固定值:
你可以打印失效模型的所有预测结果,会发现所有样本的预测值几乎完全一致,基本等于训练集标签的均值。对于你使用的nn.MSELoss来说,输出训练集均值是模型在学不到任何有效模式时的最优不动点,迭代过程中参数没有有效更新,损失自然不会有任何波动,呈现完全平滑的状态。
内容的提问来源于stack exchange,提问作者Nicolas Buchwalder
相关产品推荐
相关产品推荐

