1118 字
6 分钟
长短期记忆网络 - LSTM

前言#

最新目标 YOLOv7,但在之前估计需要先完成 LSTMYOLO 的学习,两个网络将只对他们的前向传播过程进行推导,像 YOLO 这种比较复杂的算法,在学习的过程中,我准备将它按实现步骤,逐步对其中一些有意思的方法进行实现。

这篇文章将记录我关于 长短期记忆网络(LSTM) 的学习过程。1

LSTM 网络结构#

下面是偷来的 LSTM 总体(组合模型)的结构图2

由于 LSTM 是一种改进之后的循环神经网络,所以在网络的前向传播的流程和 RNN 一致,都是通过上一时刻的隐藏状态和本时刻的输入,计算本时刻的输出,不同的是 LSTM 在计算过程中新增了 细胞状态,该状态将保存过去的信息。

LSTM 也通过这一改动,一举解决了 RNN 对于 短期输入敏感无法处理长距离依赖 的问题。

然后像 RNN 一样,剖析一下单个模型的输入输出:

单个模型中包含有3个输入,当前时刻的输入向量 xtx_t、上一时刻的隐藏状态 ht1h_{t-1} 和 上一时刻的细胞状态 Ct1C_{t-1}

单个模型中包含有2个输出,当前时刻的隐藏状态 hth_{t} 和 当前时刻的细胞状态 CtC_{t}

门结构(Gate)#

门结构(Gate) 就是以向量作为输入进行全连接,得到的输出通过激活,输出0到1之间的向量:

Gate(x)=σ(Wx+b)Gate(x) = \sigma(W \cdot x + b)

其中的 σ\sigma 就是就是门结构的 门控函数3

σ\sigma 为 0 时,任何向量与之相乘都会得到零向量,这就相当于什么都不能通过;

σ\sigma 为 1 时,任何向量与之相乘都不会有任何改变,这就相当于什么都可以通过。

简单来说:一个门结构 = 一个有输出激活的隐藏层

LSTM 前向传播#

这里我按 LSTM 的网络结构和我个人的理解方法,重新绘制了一份 LSTM 的网络结构图,下面将通过该图对 LSTM 的前向传播过程进行解析:

遗忘门(Forget Gate)#

遗忘门 将决定上一时刻的细胞状态 Ct1C_{t-1} 有多少保留到当前时刻 CtC_t,相当于是计算上一时刻细胞状态的权重。

LSTM 中的遗忘门结构如下:

ft=σ(Wf[ht1,xt]+bf)f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f)

[ht1,xt][h_{t-1}, x_t] 是将两个向量连接成一个更长的向量。

WfW_fbfb_f 分别是遗忘门的全连接中的权重和偏置,并且在各个时刻的遗忘门中共享。

σ\sigma 是遗忘门的门函数(激活函数),一般指代 SigmoidSigmoid 函数。

ftf_t 是遗忘门当前时刻的输出,在计算当前时刻细胞状态时,它将作为上一时刻细胞状态的权重。

输入门(Input Gate)#

输入门 将决定当前时刻的输入 xtx_t 有多少保留到当前时刻 CtC_t

it=σ(Wi[ht1,xt]+bi)i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i)

gt=tanh(Wg[ht1,xt]+bg)g_t = \tanh(W_g \cdot [h_{t-1}, x_t] + b_g)

输入门的基本计算方法和结构与遗忘门一致,不同的是输入门中包含有2个门结构,iti_tgtg_t 是输入门当前时刻的输出。

在已有 Ct1C_{t-1}ftf_titi_tgtg_t 之后,就能获得当前时刻细胞状态 CtC_t 的表达式:

Ct=ftCt1+itgtC_t = f_t * C_{t-1} + i_t * g_t

输出门(Output Gate)#

输出门 有两个部分,分别将决定 CtC_t[ht1,xt][h_{t-1}, x_t] 有多少输出到当前时刻的 hth_t

ot=σ(Wo[ht1,xt]+bo)o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o)

ht=ottanh(Ct) h_t = o_t * \tanh(C_t)

hth_t 是当前时刻的隐藏状态也是当前时刻的输出,后续将 hth_t 作为输入,实现多层的 LSTM 网络。4

LSTM 反向传播#

反向传播就不多讲了,反正就是求偏导、求累加、求转置,之后看看有没有现成的深度学习框架,做个案例就行,目前还没有深入的打算。

因为 时间要开始加速了 !!

好吧,现在的主要目标是 YOLO,目前假期只有一个半月了,我怕来不及了。

零基础入门深度学习(6) - 长短时记忆网络(LSTM)

人人都能看懂的LSTM介绍及反向传播算法推导(非常详细

Footnotes#

  1. Long Short-Term Memory

  2. LSTM 详解

  3. LSTM原理——输入门、遗忘门、输出门

  4. 白话机器学习-长短期记忆网络LSTM

长短期记忆网络 - LSTM
https://fuwari.vercel.app/posts/人工智能/神经网络/长短期记忆网络-lstm/
作者
Asuwee
发布于
2022-07-19
许可协议
CC BY-NC-SA 4.0