You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

简单测试集上循环网络动态特性:为何前期预测更精准?

问题分析:LSTM预测前期准确后期偏差的原因

问题背景

我正在理解RNN工作原理,设计了一个用电预测示例:输入一周的用电数据,预测次日每小时的用电量。为简化模拟,用电函数设为c(h)=h(h为小时数,c(h)为对应小时用电量),单日用电量序列为[0,1,2,...,23]。

训练后发现,仅前期小时的预测接近理想的恒等函数,增加训练轮数后准确时段会延长;若起始小时设为5,曲线从5开始呈线性。想知道为何会出现前期预测远优于后期的现象?我的猜测是前期数据影响贯穿更多训练步骤,但不确定该推测是否正确。

实现代码

#!/usr/bin/env python
import sys
from keras.models import Sequential
from keras import layers
import matplotlib
import matplotlib.pyplot as plt
import numpy as np

matplotlib.use('TKAgg')

Inputs = np.tile(np.arange(24), (7)).reshape(1, 7*24, 1)
Outputs = np.arange(24).reshape(1, 24, 1)

model2 = Sequential()
model2.add(layers.LSTM(32, # 32 is choosen at random
                      input_shape=(7*24, Inputs.shape[-1])
                       ))
model2.add(layers.Dense(24, activation='linear'))
model2.compile(loss='mean_squared_error', optimizer='adam')
history = model2.fit(x=Inputs, y=Outputs, epochs=200,
                    batch_size= 1,
                    validation_data = (Inputs, Outputs))
plt.figure()
plt.ylim([0, 24])
plt.xlim([0, 24])
y = model2(Inputs, training=False)
plt.plot(y[0])
plt.show()

核心原因分析

你的猜测方向是对的,但更准确的解释要结合LSTM的输出结构和任务特性:

  1. 单LSTM输出的信息容量限制
    当前模型用LSTM处理完168小时的输入后,仅输出最后一个时间步的隐藏状态,再通过全连接层一次性预测24个小时的结果。LSTM的隐藏状态(32维)容量有限:

    • 预测序列的前几个小时,只需要从隐藏状态中提取输入末尾的“小时递增”模式,这个模式在输入最后一段(第7天的20-23点)反复出现,容易被捕捉。
    • 但后期的预测需要从单一隐藏状态中推导更长的递增序列,隐藏状态无法完整存储整个输入的递增逻辑,导致越往后的预测偏差越大。
  2. 梯度衰减的更新效率差异
    虽然LSTM缓解了传统RNN的梯度消失问题,但后期预测的损失梯度需要反向传播回168个时间步:

    • 前期预测的损失梯度传递路径短,能直接关联到输入末尾部分,参数更新更高效,所以先收敛。
    • 后期预测的梯度需要穿越更长的路径,会逐渐衰减,参数更新效率低,需要更多训练轮次才能逐步拟合。
  3. 外推任务的天然难度
    你的任务本质是从已知递增序列外推后续序列,而非拟合已有模式。模型需要学习“输入是连续递增,输出也应连续递增”的逻辑,但单LSTM+全连接的结构很难一次性掌握完整的线性外推能力,只能先拟合开头部分,随着训练轮数增加才会覆盖更长的序列。

改进建议

  • 改用Seq2Seq(序列到序列)结构:用LSTM做编码器处理输入,再用另一个LSTM做解码器逐个输出预测值,解码器可利用前一时刻的输出作为输入,更适配序列预测逻辑。
  • 增加LSTM隐藏层维度,提升状态的信息存储能力。
  • 调整损失权重,给后期预测的损失更高权重,强制模型关注后期拟合。

内容的提问来源于stack exchange,提问作者jcm69

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 10:45:46