之前跟大家聊了不少LSTM在时间序列预测里的用法。不过呢,传统的长短期记忆网络(LSTM)虽然靠门控机制能抓住时序里的长短期依赖,但碰到带空间结构的数据(比如视频帧、气象图这类),把输入摊平成一维向量就很亏——局部空间信息直接丢了!
那咋解决?卷积LSTM(ConvLSTM)就来了!它把原来的矩阵乘法换成卷积操作,不光能抓时间依赖,还能保住空间局部性。
而且实际问题里,数据往往是“多尺度”的:
- 空间上:既有局部细节,又有全局信息;
- 时间上:短期波动和长期趋势同时存在。
所以在ConvLSTM基础上加入多尺度建模,用不同感受野的卷积核或者金字塔结构提取不同尺度特征,预测精度能再上一个台阶!
老规矩:最近文章对你有帮助的话,文末点个赞、转个发,照样送《机器学习小册》哦~
卷积LSTM到底是啥?
ConvLSTM保留了标准LSTM的门控机制,但把输入、隐藏状态和细胞状态之间的线性变换,从全连接层改成了卷积操作。
假设在时刻ttt的输入是XtX_tXt(保留空间维度),上一时刻的隐藏状态是Ht−1H_{t-1}Ht−1,细胞状态是Ct−1C_{t-1}Ct−1,那它的计算过程是这样的:
- 输入门:it=σ(Conv(Xt,Wxi)+Conv(Ht−1,Whi)+bi)i_t = \sigma(Conv(X_t, W_{xi}) + Conv(H_{t-1}, W_{hi}) + b_i)it=σ(Conv(Xt,Wxi)+Conv(Ht−1,Whi)+bi)
- 遗忘门:ft=σ(Conv(Xt,Wxf)+Conv(Ht−1,Whf)+bf)f_t = \sigma(Conv(X_t, W_{xf}) + Conv(H_{t-1}, W_{hf}) + b_f)ft=σ(Conv(Xt,Wxf)+Conv(Ht−1,Whf)+bf)
- 细胞状态更新:Ct=ft⊙Ct−1+it⊙tanh(Conv(Xt,Wxc)+Conv(Ht−1,Whc)+bc)C_t = f_t \odot C_{t-1} + i_t \odot \tanh(Conv(X_t, W_{xc}) + Conv(H_{t-1}, W_{hc}) + b_c)Ct=ft⊙Ct−1+it⊙tanh(Conv(Xt,Wxc)+Conv(Ht−1,Whc)+bc)
- 输出门:ot=σ(Conv(Xt,Wxo)+Conv(Ht−1,Who)+bo)o_t = \sigma(Conv(X_t, W_{xo}) + Conv(H_{t-1}, W_{ho}) + b_o)ot=σ(Conv(Xt,Wxo)+Conv(Ht−1,Who)+bo)
- 隐藏状态:Ht=ot⊙tanh(Ct)H_t = o_t \odot \tanh(C_t)Ht=ot⊙tanh(Ct)
这里面:
- “ConvConvConv”代表卷积操作;
- “⊙\odot⊙”是逐元素(Hadamard)乘法;
- σ\sigmaσ是sigmoid激活函数,tanh\tanhtanh是双曲正切函数;
- Wxi、WhiW_{xi}、W_{hi}W