文章目录
门机制
门机制是决定哪些信息保留,哪些信息被遗弃的机制
通俗易懂的解释
门机制的实现依赖于 Sigmoid 函数,它能够将任意输入值压缩到 0 0 0 到 1 1 1 之间,作为“保留程度”的权重。具体来说:
- 通过 Sigmoid 函数生成的门控向量 f f f,每个元素的取值都在 0 0 0 到 1 1 1 之间。
- 元素值越接近 1 1 1,表示对应位置的信息保留程度越高,接近“完全保留”。
- 元素值越接近 0 0 0,表示对应位置的信息被遗忘程度越高,接近“完全舍弃”。
门机制通过 逐项乘积(Hadamard 乘积) 的方式,将门控向量 f f f 与数据向量(如上一时刻的记忆单元 C t − 1 C_{t-1} Ct−1 或当前候选信息 C ~ t \tilde{C}_t C~t)相乘,实现对信息的筛选和保留。
公式表达为:
f
⊙
Y
f⊙Y
f⊙Y

-
横轴是输入值(通常来自于 X t X_t Xt 和 h t − 1 h_{t-1} ht−1 的线性组合结果)。
-
纵轴是 Sigmoid 函数的输出值(范围在 0 到 1 之间)。
-
蓝色曲线表示 Sigmoid 的映射关系:输入值越大,输出越接近 1(表示保留更多信息);输入值越小,输出越接近 0(表示遗忘更多信息)。
图标左右两侧分别表示
-
完全遗忘 (0):表示门完全关闭,信息完全阻断。
-
完全保留 (1):表示门完全打开,信息完整保留。
图中的阴影部分表明了 S i g m o i d Sigmoid Sigmoid 输出值的含义——即信息通过门控机制后的保留比例。
1. LSTM基本介绍
一个简单的例子
写日记。小明有个偏好就是不但记录当天的日记,还要复盘前一天的日记,所以他每天要进行的工作就是:记录下今天认为值得记录的信息,并且将昨天认为不重要的信息删掉。过了一年后,小明就得到了一本包含所有他认为重要的信息的日记本。
小明每天做的事情
- 记录 t t t 当天重要的事情
- 删除昨天 ( t − 1 ) (t-1) (t−1)不重要的信息
上述的例子就清楚地反应了LSTM的基本原理
2. LSTM 的核心
记录每个时刻 t t t 重要的信息,然后将 t − 1 t-1 t−1 时刻的信息不重要的信息遗忘,在LSTM中通过三个门控结构(输入门、遗忘门、输出门)来实现这一目标:
-
遗忘门(Forget Gate):决定 t − 1 t-1 t−1 时刻哪些信息应该被丢弃,即过滤掉不再需要的内容
-
输入门(Input Gate):决定当前时刻 t t t 的输入中哪些信息是重要的,需要存储下来
-
输出门(Output Gate):决定最终从LSTM单元中输出什么信息到下一层网络或下一时刻。
-
记忆单元(Cell State):可以携带并保存长期的信息,它贯穿整个时间序列。记忆单元通过遗忘门和输入门的操作,可以选择性地遗忘或记住某些信息。
-
状态单元(Hidden State):状态单元是每个LSTM单元的输出部分,它在每个时间步都会有一个输出。状态单元的信息是由记忆单元经过输出门的筛选后得到的,因此它包含了当前记忆单元所保存的,对当前任务有用的信息。
3. LSTM模型的过程
t t t 时刻的 L S T M LSTM LSTM 单元接受 ( t − 1 ) (t−1) (t−1) 时刻的记忆单元的信息 C t − 1 C_{t-1} Ct−1 以及 ( t − 1 ) (t−1) (t−1) 时刻的隐含层状态,以及 t t t 时刻的输入 X t X_t Xt,通过一系列的门,最终完成对 t − 1 t-1 t−1 时刻不重要信息的遗忘,当前 t t t 时刻信息的添加,实现对记忆单元的更新 C t C_t Ct 以及隐含层状态 h t h_t ht 的输出.

- C C C 的作用是存储不同时刻的重要的信息 -> 硬盘(长期存储),信息积累;
- H H H 的作用是存储当前时刻的信息 ->屏幕显示(展示当下需要的内容)。
3.1 遗忘门
作用:负责决定丢弃上一时刻 ( t − 1 ) (t−1) (t−1) 的部分信息
输入: t t t 时刻的输入,上一时刻 t − 1 t-1 t−1 的记忆单元
描述:当模型接受 t t t 时刻的数据时,首先需要将上一时刻不重要的信息删除(小明在写新日记的时候,先删除昨天不重要的信息)

遗忘门的激活值(门控权重)计算为::
f
t
=
s
i
g
m
o
i
d
(
W
x
f
x
t
+
W
h
f
h
t
−
1
+
b
f
)
f_t = sigmoid(W_{xf}x_t + W_{hf}h_{t-1} + b_f)
ft=sigmoid(Wxfxt+Whfht−1+bf)
遗忘门的遗忘过程:
f
t
∗
C
t
−
1
f_t * C_{t-1}
ft∗Ct−1
- W x f W_{xf} Wxf 表示输入数据到遗忘门的权重参数,是需要学习的参数
- W h f W_{hf} Whf 表示隐藏状态到遗忘门的权重参数,是需要学习的参数
- h t − 1 h_{t-1} ht−1表示 ( t − 1 ) (t-1) (t−1) 时刻隐含层的状态
- x t x_t xt表示 t t t 时刻的输入数据
- b f b_f bf表示偏置
- C t − 1 C_{t-1} Ct−1 表示 ( t − 1 ) (t-1) (t−1)时刻的输入数据
3.2 输入门
作用:决定当前 t t t 时刻的重要信息如何输入到记忆单元,因此称为输入门。
输入: t t t 时刻的输入数据 X t X_t Xt 和 t − 1 t-1 t−1 时刻的隐藏层状态 h t − 1 h_{t-1} ht−1
描述:输入门负责在当前时刻向记忆单元引入新的信息(小明每天都要写新的日记)。输入门主要分为以下两个步骤,

(1) 生成候选信息
C t ˉ = t a n h ( W x c x t + W h c h t − 1 + b c ) \bar{C_t} = tanh(W_{xc}x_t +W_{hc}h_{t-1} + b_c) Ctˉ=tanh(Wxcxt+Whcht−1+bc)
C t ˉ \bar{C_t} Ctˉ 表示候选记忆单元,暂时存储当前时刻需要存储的信息
- h t − 1 h_{t-1} ht−1 表示 t − 1 t-1 t−1 时刻隐含层的状态
- x t x_t xt 表示 t t t时刻的输入数据
- b c b_c bc 表示偏置
(2) 控制信息流入
i
t
=
s
i
g
m
o
i
d
(
W
x
i
x
t
+
W
h
i
h
t
1
+
b
i
)
i_t = sigmoid(W_{xi}x_t + W_{hi}h_{t_1}+ b_i)
it=sigmoid(Wxixt+Whiht1+bi)
i
t
i_t
it 是一个"门",元素均介于0到1之间,用于控制
C
~
t
\tilde{C}_t
C~t 的流入程度。
- W x i W_{xi} Wxi 表示输入数据到输入门的权重参数
- h t 1 h_{t_1} ht1 表示 t − 1 t-1 t−1 时刻隐含层的状态
- x t x_t xt 表示 t t t 时刻的输入数据
- b i b_i bi 表示输入门的偏置参数
- i t i_t it 是一个"门",元素均介于0到1之间,用于控制 C ~ t \tilde{C}_t C~t 的流入程度。
最终,输入门控制的当前时刻信息以以下形式被引入到记忆单元:
i
t
∗
C
ˉ
t
i_t * \bar{C}_t
it∗Cˉt
需要注意的是,输入门 i t i_t it 和遗忘门 f t f_t ft 的作用方向不同: f t f_t ft 控制对历史信息 C t − 1 C_{t-1} Ct−1 的遗忘程度,而 i t i_t it 控制当前信息 C ~ t \tilde{C}_t C~t 的引入程度。
(3) 记忆单元的更新
输入:上一时刻的重要信息 f t ⋅ C t − 1 f_t \cdot C_{t-1} ft⋅Ct−1,当前时刻的重要信息 i t ⋅ C ~ t i_t \cdot \tilde{C}_t it⋅C~t

C t = f t ∗ C t + i t ∗ C ˉ t C_t = f_t * C_t + i_t * \bar{C}_t Ct=ft∗Ct+it∗Cˉt
该公式描述了记忆单元 C t C_t Ct 的更新机制,其含义如下:
-
f t ⋅ C t − 1 f_t \cdot C_{t-1} ft⋅Ct−1:表示经过遗忘门筛选后,从上一时刻 C t − 1 C_{t-1} Ct−1 中保留的重要信息,体现了对历史记忆的“保留”或“遗忘”。
-
i t ⋅ C ~ t i_t \cdot \tilde{C}_t it⋅C~t:表示当前时刻经过输入门筛选后的新信息,体现了对新输入的“引入”或“接受”。
-
二者相加,表示历史信息与当前信息的综合更新,共同构成新的记忆单元状态 C t C_t Ct。
需要注意, C ~ t \tilde{C}_t C~t是基于 X t X_t Xt 和 h t − 1 h_{t-1} ht−1 生成的候选信息,通常通过 tanh \tanh tanh 激活函数生成,用于提供一个新的、规范化的输入表征。
3.3 输出门
作用:控制记忆单元中的信息有多少被传递到隐藏状态,最终作为当前时间步的输出。
输入:当前时刻的输入向量 X t X_t Xt 和前一时刻的隐藏状态 h t − 1 h_{t-1} ht−1。
描述:输出门决定了当前记忆单元中的哪些信息将被输出到隐藏状态 h t h_t ht,并参与下一时刻的计算以及最终的网络输出。具体而言,输出门通过以下步骤工作:

(1) 计算输出门门控向量
基于当前输入 X t X_t Xt 和上一时刻隐藏状态 h t − 1 h_{t-1} ht−1,通过一个 Sigmoid 函数生成门控向量 o t o_t ot:
o t = σ ( W o ⋅ [ h t − 1 , X t ] + b o ) o_{t}=\sigma\left(W_{o} \cdot\left[h_{t-1}, X_{t}\right]+b_{o}\right) ot=σ(Wo⋅[ht−1,Xt]+bo)
(2) 计算当前时刻隐藏状态
h t h_t ht:输出门 o t o_t ot 决定了多少来自当前记忆单元 C t C_t Ct 的信息能够流入隐藏状态 h t h_t ht。首先,将 C t C_t Ct 通过 tanh \tanh tanh 激活函数进行压缩到 [ − 1 , 1 ] [-1, 1] [−1,1],然后与 o t o_t ot 相乘:
h t = o t ⊙ tanh ( C t ) h_{t}=o_{t} \odot \tanh \left(C_{t}\right) ht=ot⊙tanh(Ct)
其中, ⊙ \odot ⊙ 表示逐元素相乘。
因此,输出门的作用是将处理后的记忆信息通过门控机制,决定性地流向隐藏状态 h t h_t ht,从而影响当前时刻的网络输出,并为下一时刻提供输入支持。
一些关于LSTM的问题
记忆单元是干什么的?
记忆单元(Cell State)是 LSTM 被称为“长短期记忆”模型的核心原因。它作为信息传递的主干,负责存储重要的历史信息,并引入当前时刻的新信息,从而实现“长期记忆”与“短期记忆”的平衡。具体来说,记忆单元通过以下机制更新:
- 输入门:存储当前时刻的重要信息,构建短期记忆。
- 遗忘门:决定舍弃哪些历史信息,筛选长期记忆的保留部分。
- 更新机制:记忆单元在保留部分历史信息的同时,融合当前时刻的新信息,形成新的 C t C_t Ct,实现对长期与短期记忆的动态管理。
三个门机制是如何作用于记忆单元以及隐藏状态单元的?
1、门机制听起来很吓唬人,核心是按位运算(Hadamard 乘积):将门向量 f f f(由 0~1 之间的值构成)与输入向量 Y Y Y(历史或当前信息)按位相乘。 f ⊙ Y f \odot Y f⊙Y 表示每个位置的信息通过门控机制被选择性保留, f f f 中的每个值就像一扇门,数值越大(接近 1),门开的幅度越大,信息保留越多;数值越小(接近 0),表示门关闭,信息被遗忘。这种机制实现了信息流的筛选与更新。
2、遗忘门是作用于上一时刻的记忆细胞 C t − 1 C_{t−1} Ct−1 ,输入门是作用于当前时刻的记忆细胞 C t C_t Ct ,遗忘门和输入门的共同作用是为了更新当前时刻的记忆细胞 C t C_t Ct ,使记忆细胞既存有上一时刻的重要信息,也保存了当前时刻的重要信息。而输出门是作用于当前时刻的记忆细胞 C t C_t Ct ,它决定了将当前记忆细胞中的哪些重要信息输出给下一时刻。
3、这三个门是同时进行的,并且每个门的参数是不一样的
- 遗忘门 f t f_t ft:作用于上一时刻的记忆单元 C t − 1 C_{t-1} Ct−1,决定保留多少历史信息。
- 输入门 i t i_t it:作用于当前时刻的候选记忆单元 C ~ t \tilde{C}_t C~t,决定引入多少新信息。
- 输出门 o t o_t ot:作用于当前时刻的记忆单元 C t C_t Ct,决定从 C t C_t Ct 中选取哪些信息输出到隐藏状态 h t h_t ht,供下一时刻使用。
遗忘门和输入门共同决定记忆单元 C t C_t Ct 的更新,而输出门决定 C t C_t Ct 中哪些信息需要通过隐藏状态 h t h_t ht 传递到下一个时间步。
三个门的并行性与独立性
这三个门在每个时间步是同时计算、并行更新的,它们各自的权重参数也是独立的:
遗忘门的参数: W x f W_{xf} Wxf, W h f W_{hf} Whf, b f b_f bf
输入门的参数: W x i W_{xi} Wxi, W h i W_{hi} Whi, b i b_i bi
输出门的参数: W x o W_{xo} Wxo, W h o W_{ho} Who, b o b_o bo
每个时间步,输入 h t − 1 h_{t-1} ht−1 和 x t x_t xt 会同时流入三个门,分别生成不同的门控向量,最终共同决定当前时刻的记忆单元 C t C_t Ct 以及隐藏状态 h t h_t ht 的更新与输出。
1169

被折叠的 条评论
为什么被折叠?



