您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

将时序数据馈入有状态LSTM的正确方法?

将时序数据馈入有状态LSTM的正确方法?

答案是:取决于眼前的问题。对于单步 预测的情况-是的,可以,但是不必这样做。但是,无论您是否这样做, 都会对学习产生重大影响。

批处理与示例机制(“参见AI” =参见“其他信息”部分)

所有模型都将样本视为独立的示例;一批32个样品 就像一次32个样品(有差异-参见AI)。从 模型的角度来看,数据被分成批维batch_shape[0], 和特征的尺寸,batch_shape[1:]- “不说话”两 在 两者之间唯一的关系是通过梯度(见AI)。

重叠与非重叠批处理

理解它的最佳方法也许是基于信息的。我将从 时间序列二进制分类开始,然后将其与预测联系起来:假设您 有10分钟的EEG记录,每个记录有240000个时间步长。任务:癫痫发作还是非 癫痫发作?

由于240k对于RNN来说处理不了,因此我们使用CNN进行降维 我们可以选择使用“滑动窗口”-即一次填充一个子段;我们用54k 取10个样本,定形(240000, 1)。怎么喂?

1 (10, 54000, 1)包括所有样品,切片为sample[0:54000]; sample[24000:81000]… 更合理;现在我们的窗户有50%的重叠,而不是 99.998%。

预测:重叠不好吗?

如果您要进行单步预测,则信息格局现在已 更改:

预测变量必须对其初始样本具有鲁棒性,尤其是对于LSTM-因此,我们通过滑动序列来训练每个这样的“开始”,如您所示 由于标签在时间步长上不同,因此损失函数在时间步长上有很大变化,因此过拟合的风险要小得多 我该怎么办?

首先,请确保您了解整篇文章,因为这里没有什么是真正的 “可选”。然后,这是每批重叠与不重叠的关键:

转移了一个样本:模型学会了更好地预测每个开始步骤的前进步-意思是:(1)LSTM对初始细胞状态的鲁棒性;(2)在落后X步的情况下,LSTM可以很好地预测前进 许多样本在以后的批次中转移:模型不太可能“记住”火车设置和过拟合 您的目标:平衡两者;1在2上的主要优势是:

1允许模型通过检查样品的多个起点和终点(标签)并相应地平均梯度来提取更好的质量特征 我应该在预测中使用(2)吗?

如果您的序列长度非常长,并且您有能力负担“滑动窗口” w /?其长度的50%,但这可能取决于数据的性质:信号(EEG)?是。股票,天气?对此感到怀疑。

当LSTM无法一次处理整个序列(因此会 “分裂”)时,或者当反向传播需要不同的梯度时,可以使用有状态。 对于前者,想法是-LSTM在评估 后者时会考虑前者的顺序:

何时使用有状态:何时LSTM 在评估下一个时受益于先前的批次。这可以包括一步预测,但 前提是您无法一次输入整个序列:

问题:不容易以编程方式实现。您将需要找到一种在不应用渐变的情况下输入LSTM的方法,例如冻结砝码或设置lr = 0。 LSTM何时以及如何在状态中“通过状态”?

时间:仅批次之间;样品是完全独立的

如何:在Keras,只批样品批次样品:stateful=True 需要你指定batch_shape,而不是input_shape-因为,Keras建立batch_size了LSTM的独立的国家在编制 根据以上情况,您不能执行以下操作:

batch1 = [sample10, sample20, sample30, sample40] batch2 = [sample21, sample41, sample11, sample31]

This implies 21 causally follows 10 - and will wreck training. Instead do:

batch1 = [sample10, sample20, sample30, sample40]
batch2 = [sample11, sample21, sample31, sample41]

批次与样本:其他信息

“批”是一组样本-1个或更大(此 答案总是假定为后者)。三种迭代数据的方法:批量梯度下降 (一次整个数据集),随机GD(一次一个样本)和Minibatch GD(中间)。( 但是,在实践中,我们也称最后一个SGD,仅区分vs BGD- 对此答案假设如此。)差异:

其他 2022/1/1 18:31:12 有544人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶