您现在的位置是:首页 >其他 >LSTM与ConvLSTM网站首页其他

LSTM与ConvLSTM

捂好小马甲 2023-06-21 00:00:03
简介LSTM与ConvLSTM

LSTM论文链接:LSTM
Conv论文链接:ConvLSTM

LSTM

RNN网络的每个细胞单元在时间轴的维度上,向下一时刻的RNN细胞单元共享权重,来实现处理时间维度的信息,同时RNN网络对短期数据显得较为敏感,但是对长期数据显得疲惫,LSTM是RNN 网络的一种变体,为了解决长期记忆的问题。


LSTM架构背后的中心思想是一个可以随时间保持的记忆细胞 C t C_t Ct),以及调节细胞内外信息流的非线性门控单元(输入门,输出门,遗忘门)。记忆细胞 C t C_t Ct本质上充当了状态信息的累加器。同时采用多个具有参数的控制门对记忆细胞进行访问、写入和清除。

遗忘门

f t = σ ( W f t [ h t − 1 x t ] + b f ) f_t=sigma(W_ftegin{bmatrix}h_{t-1}\x_tend{bmatrix}+b_f) ft=σ(Wft[ht1xt]+bf)
上一时刻的隐藏状态信息 h t − 1 h_{t-1} ht1与本时刻的数据 x t x_t xt拼接,共同输入到Sigmoid函数,得到的输出结果介于0~1之间,用于判断过去信息是否重要,接近0表示信息不重要可以忘记,接近1表示信息很重要需要记住,最后得到的值会与前一时刻的记忆细胞 C t − 1 C_{t-1} Ct1做乘积运算,用来限制前面的记忆对后面的影响。

输入门
i t = σ ( W t [ h t − 1 x t ] + b i i_t = sigma(W_tegin{bmatrix}h_{t-1}\x_tend{bmatrix}+b_i it=σ(Wt[ht1xt]+bi
c t ^ = t a n h ( W C t [ h t − 1 x t ] + b c ) hat{c_t} = tanh(W_Ctegin{bmatrix}h_{t-1}\x_tend{bmatrix}+b_c) ct^=tanh(WCt[ht1xt]+bc)
c t = f t ⊙ c t − 1 + i t ⊙ c t ^ c_t = f_todot c_{t-1}+i_todot hat{c_t} ct=ftct1+itct^

i t i_t it与遗忘门的结构几乎一致,产生一个0~1的数值,作为输入重要性因子 C t ^ hat{C_t} Ct^的输入也是由 h t − 1 , x t h_{t-1},x_t ht1,xt组成,通过tanh激活函数,可以使数据关于y轴对称,起到了数据中心化的效果,加快了数据的收敛,与输入重要性因子相乘用于判断输入信息是否重要,如果重要则该信息可以用于更新记忆细胞

输出门
o t = σ ( W o [ h t − 1 x t ] + b o ) o_t=sigma(W_oegin{bmatrix}h_{t-1}\x_tend{bmatrix}+b_o) ot=σ(Wo[ht1xt]+bo)
h t = o t ⊙ t a n h ( c n ) h_t = o_todot tanh(c_n) ht=ottanh(cn)

o t o_t ot用来衡量输出的重要性,与经过tanh激活函数的该层记忆细胞 C t C_t Ct相乘后,作为本层的输出 y t y_t yt,同时也作为下一层的隐层函数 h t h_t ht

因此遗忘门,输入门,输出门,都是作为非线性激活函数用来衡量细胞内外信息的重要性.三类激活函数具有三个不同的矩阵,我们在训练模型的时候就是为了训练矩阵的数值.在遗忘门中,它决定了 C t − 1 C_{t-1} Ct1是否应该忘记,在输入门中它决定了 C t ^ hat{C_t} Ct^是否需要加入记忆细胞中用于记忆,在输出门中,它决定了更新的细胞有多重要作用到下一个隐藏层中。

ConvLSTM

FC-LSTM可以看作是LSTM的多变量版本,其中输入、单元输出和状态都是一维向量,尽管它在处理时序信息中十分有效,但是对于空间信息而言存在较多的冗余信息。为了解决这个问题,我们提出了FC - LSTM的扩展,在输入到状态状态到状态的转换中都具有卷积结构。
在这里插入图片描述
如图1所示,我们可以将输入和状态信息,想象成站在空间网格上的向量,此时特征信息从2D图像格式,转变为3D tensor格式。与FC-LSTM不同,ConvLSTM中所有的输入信息、隐藏层、输出信息、门控信息都是3D向量形式。ConvLSTM将LSTM具有的矩阵计算转变成了卷积计算,当前网格中具体细胞信息由上一时刻细胞周围信息和此时的输入计算而来。公式如下:

i t = σ ( W x i ∗ X t + W h i ∗ H t − 1 + W c i ∘ C t − 1 + b i i_t = sigma(W_{xi}astmathcal{X_{t}}+W_{hi}astmathcal{H_{t-1}}+W_{ci}circ mathcal{C_{t-1}}+b_i it=σ(WxiXt+WhiHt1+WciCt1+bi
f t = σ ( W x f ∗ X t + W h f ∗ H t − 1 + W c f ∘ C t − 1 + b f ) f_t=sigma(W_{xf}astmathcal{X_{t}}+W_{hf}astmathcal{H_{t-1}}+W_{cf}circ mathcal{C_{t-1}}+b_f) ft=σ(WxfXt+WhfHt1+WcfCt1+bf)

C t = f t ∘ C t − 1 + i t ∘ t a n h ( W x c ∗ X t + W h c ∗ H t − 1 + b c ) mathcal{C_t} = f_tcirc C_{t-1}+i_tcirc tanh(W_{xc}astmathcal{X_{t}}+W_{hc}astmathcal{H_{t-1}}+b_c) Ct=ftCt1+ittanh(WxcXt+WhcHt1+bc)
o t = σ ( W x o ∗ X t + W h o ∗ H t − 1 + W c o ∘ C t − 1 + b o ) o_t=sigma(W_{xo}astmathcal{X_{t}}+W_{ho}astmathcal{H_{t-1}}+W_{co}circ mathcal{C_{t-1}}+b_o) ot=σ(WxoXt+WhoHt1+WcoCt1+bo)
H t = o t ∘ t a n h ( C t ) mathcal{H_t} = o_tcirc tanh(mathcal{C_t}) Ht=ottanh(Ct)

其中 ∗ ast 代表卷积, ∘ circ 代表Hadamard积(相同位置上对应元素的内积)。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。