1. 数据偏态(Skewness)或归一化问题:
- 如果输入数据在归一化时进行了错误的平移或缩放,可能导致模型学习的分布偏离实际分布。
- 未显示是否反归一化: 如果
RevIN
或归一化/反归一化未正确处理,预测值可能偏离实际范围。
2. 模型学习偏差(Underfitting):
- 训练过程中,模型可能对损失函数的优化存在偏差。例如,MSE 优化会倾向于降低大值误差,但忽略小值误差,可能导致预测值偏向均值。
- 使用 KL 散度引入的正则化约束也可能使潜在空间的表示能力受到限制。
3. VAE 模型特性:
- VAE 模型在重构时往往倾向于生成更平滑、更保守的输出(特别是低复杂度的潜在空间)。
- 对于时间序列预测,这种特性可能导致输出的幅值较小。
4. 训练策略与超参数设置:
- 学习率问题: 代码中学习率设为 0.01,但在较深的模型中可能过高,导致训练过程不稳定,权重未能充分学习细节。
- 早停策略过早: 如果模型未充分训练,可能导致对训练集的拟合不足。
5. 序列间的信息丢失:
- 编码器中的 CNN 和 LSTM 没有多层设计,可能不足以捕获序列中的高阶特征,从而影响预测值的幅度。
改进建议
数据处理改进
- 确保输入序列和目标值的归一化过程正确,并在解码输出时正确反归一化。
- 检查数据分布,使用对称分布(如标准化)改善模型学习。
模型结构改进
- 使用更复杂的编码器和解码器架构,如堆叠 LSTM 或更深的 CNN 提取高阶特征。
- 在解码阶段增加额外的全连接层,优化隐变量的解码能力。
超参数优化
- 调整学习率:尝试较小的学习率(如 10−310^{-3}10−3 或 10−410^{-4}10−4),并采用自适应调整策略(如学习率衰减)。
- 提高
early_stopping_patience
值,确保模型有足够时间训练。
训练过程
- 增加训练轮次,或引入 warm-up 阶段让模型更稳定地学习