时序数据深度学习笔记——LSTM

一、LSTM

        长期短期记忆(LSTM) 是递归神经网络(RNN)的一个特殊情况。这种类型的神经网络用于处理数据序列,顺序在其中起到重要了作用。 RNN 和 LSTM 常用于自然语言处理,因为句子中的单词有一个顺序,改变这个顺序可以完全改变句子的意思,而时间序列中数据顺序也很重要,它们的顺序也是不可改变的。

        LSTM主用有三个门组成,遗忘门、输入门与输出门,遗忘门决定哪些来自过去和现在的信息必须保留,输入门决定来自序列的当前元素的相关信息,输出门使用存储在内存中的信息生成预测。

二、LSTM模型使用

        与DNN的使用类似,LSTM的使用仅需将Sequential函数中的Dense替换为LSTM即可。此次发现个问题,书本《Time Series Forecasting in Python》中的第十五章代码中在LSTM单步与多输出模型中,LSTM使用的是为了便于观看的相对宽度更大的单步数据窗口(wide_window),而之前基线、线性、DNN使用的是单步数据窗口(single_step_window),因此为了后续学习实验的准确性,同一都使用数据窗口(wide_window)。

1、单步模型

lstm_model = Sequential([
    LSTM(32, return_sequences=True),
    Dense(units=1)
])
history = compile_and_fit(lstm_model, wide_window)

时序数据深度学习笔记——LSTM_第1张图片

        与基线、线性、DNN的MAE结果对比,可以发现在单步模式下LSTM的效果最佳。

时序数据深度学习笔记——LSTM_第2张图片

2、多步模型

lstm_model = Sequential([
    LSTM(32, return_sequences=True),
    Dense(units=1)
])
history = compile_and_fit(lstm_model, multi_window)

时序数据深度学习笔记——LSTM_第3张图片

        与基线、线性、DNN的MAE结果对比,可以发现在多步模式下LSTM的效果最佳。

时序数据深度学习笔记——LSTM_第4张图片 

3、多输出模型

lstm_model = Sequential([
    LSTM(32, return_sequences=True),
    Dense(units=2)
])
history = compile_and_fit(lstm_model, mo_wide_window)

时序数据深度学习笔记——LSTM_第5张图片

时序数据深度学习笔记——LSTM_第6张图片

        由于数据窗口的修改,最终得到的结果与书本中不再一致,在测试集上的表现LSTM(0.019)相比DNN(0.018)的效果略差。

时序数据深度学习笔记——LSTM_第7张图片

基线、线性、DNN、LSTM单步模型学习代码:https://download.csdn.net/download/HughYue1990/86745262

基线、线性、DNN、LSTM多步模型学习代码:https://download.csdn.net/download/HughYue1990/86745265

基线、线性、DNN、LSTM多输出模型学习代码:https://download.csdn.net/download/HughYue1990/86745268

你可能感兴趣的:(深度学习,lstm,机器学习)