LSTM三个门控机制详解
LSTM三个门控机制详解
1-LSTM的3个门的理解
长短期记忆网络(LSTM)通过三个关键门控机制(遗忘门、输入门、输出门)和细胞状态(Cell State)解决了传统RNN的长期依赖问题。以下是三个门的核心理解:
1. 遗忘门(Forget Gate)
- 作用:决定细胞状态中哪些信息需要被遗忘或保留。
- 实现:
( f t = σ ( W f ⋅ [ h t − 1 , x t ] + b f ) ) (f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f) ) (ft=σ(Wf⋅[ht−1,xt]+bf))
通过 Sigmoid 函数输出 0~1 之间的值:- 0:完全丢弃该部分信息
- 1:完全保留该部分信息
- 应用场景:
例如,在语言模型中遇到新主语时,遗忘门可丢弃旧主语的无关信息。
2. 输入门(Input Gate)
- 作用:决定当前输入中哪些新信息需要添加到细胞状态。
- 实现:
- 筛选: ( i t = σ ( W i ⋅ [ h t − 1 , x t ] + b i ) ) (i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i) ) (it=σ(Wi⋅[ht−1,xt]+bi))
- 候选值: ( C ~ t = tanh ( W C ⋅ [ h t − 1 , x t ] + b C ) ) (\tilde{C}_t = \tanh(W_C \cdot [h_{t-1}, x_t] + b_C) ) (C~t=tanh(WC⋅[ht−1,xt]+bC))
将筛选结果( ( i t ) (i_t) (it))与候选值( ( C ~ t ) (\tilde{C}_t) (C~t))相乘,更新细胞状态:
( C t = f t ⋅ C t − 1 + i t ⋅ C ~ t ) (C_t = f_t \cdot C_{t-1} + i_t \cdot \tilde{C}_t ) (Ct=ft⋅Ct−1+it⋅C~t)
- 意义:
选择性学习新特征(如新增的形容词或动词)。
3. 输出门(Output Gate)
- 作用:基于当前输入和细胞状态,决定当前时刻的输出(隐藏状态)。
- 实现:
- 筛选: ( o t = σ ( W o ⋅ [ h t − 1 , x t ] + b o ) ) (o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o) ) (ot=σ(Wo⋅[ht−1,xt]+bo))
- 输出: ( h t = o t ⋅ tanh ( C t ) ) (h_t = o_t \cdot \tanh(C_t) ) (ht=ot⋅tanh(Ct))
- 关键点:
隐藏状态 ( h t ) (h_t) (ht)作为当前时刻的输出,并传递至下一时间步。
协同工作流程
- 遗忘门:过滤旧细胞状态 ( C t − 1 ) (C_{t-1}) (Ct−1)中的冗余信息。
- 输入门:将新信息(如当前输入的上下文)融合到更新后的细胞状态 ( C t ) (C_t) (Ct)。
- 输出门:基于 ( C t ) (C_t) (Ct)生成当前输出 ( h t ) (h_t) (ht),影响后续时间步的计算。
核心优势
- 细胞状态(C):作为“传送带”,长期保留关键信息(如段落主题)。
- 门控机制:通过可学习的参数动态调节信息流,避免梯度消失/爆炸。
类比示例
假设用LSTM分析句子:
“The cat, which ate all the fish, was sleeping.”
- 遗忘门:在读到“was sleeping”时,丢弃“fish”的细节。
- 输入门:在遇到“cat”时记住主语,遇到“sleeping”时记录动作。
- 输出门:根据当前状态输出动词的正确形式(如“was sleeping”而非“were”)。
通过这三个门的协作,LSTM能够灵活控制信息的保留、更新和输出,从而高效建模长序列依赖关系。
2-数字运算来复现这三个门的计算-1
好的!我们通过一个 极简的数字示例 复现 LSTM 的三个门计算,假设所有向量和参数均为标量(单个数值),以便直观理解计算流程。
示例设定
- 输入:当前时刻输入 ( x t = 0.5 ) (x_t = 0.5 ) (xt=0.5)
- 上一时刻隐藏状态: ( h t − 1 = 0.2 ) (h_{t-1} = 0.2 ) (ht−1=0.2)
- 上一时刻细胞状态: ( C t − 1 = 0.8 ) (C_{t-1} = 0.8 ) (Ct−1=0.8)
- 参数(人为设定,实际中通过训练得到):
- 遗忘门权重 ( W f = 0.6 ) (W_f = 0.6 ) (Wf=0.6) ,偏置 ( b f = 0.1 ) (b_f = 0.1 ) (bf=0.1)
- 输入门权重 ( W i = 0.3 ) (W_i = 0.3 ) (Wi=0.3) ,偏置 ( b i = 0.2 ) (b_i = 0.2 ) (bi=0.2)
- 候选值权重 ( W C = 0.4 ) (W_C = 0.4 ) (WC=0.4) ,偏置 ( b C = 0.05 ) (b_C = 0.05 ) (bC=0.05)
- 输出门权重 ( W o = 0.5 ) (W_o = 0.5 ) (Wo=0.5) ,偏置 ( b o = 0.1 ) (b_o = 0.1 ) (bo=0.1)
Step 1: 遗忘门(Forget Gate)
计算遗忘门输出 ( f t ) (f_t ) (ft) ,决定保留多少旧细胞状态:
[ f t = σ ( W f ⋅ [ h t − 1 , x t ] + b f ) ] [ f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f) ] [ft=σ(Wf⋅[ht−1,xt]+bf)]
具体计算:
- 拼接 ( h t − 1 ) (h_{t-1} ) (ht−1) 和 ( x t ) (x_t ) (xt) : ( [ 0.2 , 0.5 ] ) ([0.2, 0.5] ) ([0.2,0.5])
- 线性变换: ( 0.6 × ( 0.2 + 0.5 ) + 0.1 = 0.6 × 0.7 + 0.1 = 0.52 ) (0.6 \times (0.2 + 0.5) + 0.1 = 0.6 \times 0.7 + 0.1 = 0.52 ) (0.6×(0.2+0.5)+0.1=0.6×0.7+0.1=0.52)
- Sigmoid激活: ( σ ( 0.52 ) = 1 1 + e − 0.52 ≈ 0.627 ) (\sigma(0.52) = \frac{1}{1+e^{-0.52}} \approx 0.627 ) (σ(0.52)=1+e−0.521≈0.627)
结果: ( f t ≈ 0.627 ) (f_t \approx 0.627 ) (ft≈0.627) (保留约 62.7% 的旧细胞状态)
Step 2: 输入门(Input Gate)
**(1) 输入门筛选值 ( i t ) (i_t ) (it) **:
[ i t = σ ( W i ⋅ [ h t − 1 , x t ] + b i ) ] [ i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i) ] [it=σ(Wi⋅[ht−1,xt]+bi)]
计算:
- 线性变换: ( 0.3 × ( 0.2 + 0.5 ) + 0.2 = 0.3 × 0.7 + 0.2 = 0.41 ) (0.3 \times (0.2 + 0.5) + 0.2 = 0.3 \times 0.7 + 0.2 = 0.41 ) (0.3×(0.2+0.5)+0.2=0.3×0.7+0.2=0.41)
- Sigmoid激活: ( σ ( 0.41 ) ≈ 0.601 ) (\sigma(0.41) \approx 0.601 ) (σ(0.41)≈0.601)
**(2) 候选值 ( C ~ t ) (\tilde{C}_t ) (C~t) **:
[ C ~ t = tanh ( W C ⋅ [ h t − 1 , x t ] + b C ) ] [ \tilde{C}_t = \tanh(W_C \cdot [h_{t-1}, x_t] + b_C) ] [C~t=tanh(WC⋅[ht−1,xt]+bC)]
计算:
- 线性变换: ( 0.4 × ( 0.2 + 0.5 ) + 0.05 = 0.4 × 0.7 + 0.05 = 0.33 ) (0.4 \times (0.2 + 0.5) + 0.05 = 0.4 \times 0.7 + 0.05 = 0.33 ) (0.4×(0.2+0.5)+0.05=0.4×0.7+0.05=0.33)
- Tanh激活: ( tanh ( 0.33 ) ≈ 0.318 ) (\tanh(0.33) \approx 0.318 ) (tanh(0.33)≈0.318)
**(3) 更新细胞状态 ( C t ) (C_t ) (Ct) **:
[ C t = f t ⋅ C t − 1 + i t ⋅ C ~ t ] [ C_t = f_t \cdot C_{t-1} + i_t \cdot \tilde{C}_t ] [Ct=ft⋅Ct−1+it⋅C~t]
计算:
[ C t = 0.627 × 0.8 + 0.601 × 0.318 ≈ 0.502 + 0.191 = 0.693 ] [ C_t = 0.627 \times 0.8 + 0.601 \times 0.318 \approx 0.502 + 0.191 = 0.693 ] [Ct=0.627×0.8+0.601×0.318≈0.502+0.191=0.693]
Step 3: 输出门(Output Gate)
**(1) 输出门筛选值 ( o t ) (o_t ) (ot) **:
[ o t = σ ( W o ⋅ [ h t − 1 , x t ] + b o ) ] [ o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o) ] [ot=σ(Wo⋅[ht−1,xt]+bo)]
计算:
- 线性变换: ( 0.5 × ( 0.2 + 0.5 ) + 0.1 = 0.5 × 0.7 + 0.1 = 0.45 ) (0.5 \times (0.2 + 0.5) + 0.1 = 0.5 \times 0.7 + 0.1 = 0.45 ) (0.5×(0.2+0.5)+0.1=0.5×0.7+0.1=0.45)
- Sigmoid激活: ( σ ( 0.45 ) ≈ 0.610 ) (\sigma(0.45) \approx 0.610 ) (σ(0.45)≈0.610)
**(2) 生成当前隐藏状态 ( h t ) (h_t ) (ht) **:
[ h t = o t ⋅ tanh ( C t ) ] [ h_t = o_t \cdot \tanh(C_t) ] [ht=ot⋅tanh(Ct)]
计算:
- ( tanh ( 0.693 ) ≈ 0.6 ) (\tanh(0.693) \approx 0.6 ) (tanh(0.693)≈0.6) (因为 ( tanh ( 0.693 ) ≈ 0.6 ) (\tanh(0.693) \approx 0.6 ) (tanh(0.693)≈0.6) )
- ( h t = 0.610 × 0.6 ≈ 0.366 ) (h_t = 0.610 \times 0.6 \approx 0.366 ) (ht=0.610×0.6≈0.366)
最终结果
- 新细胞状态: ( C t ≈ 0.693 ) (C_t \approx 0.693 ) (Ct≈0.693)
- 新隐藏状态: ( h t ≈ 0.366 ) (h_t \approx 0.366 ) (ht≈0.366)
计算总结
- 遗忘门:保留约 62.7% 的旧细胞状态 ( C t − 1 ) (C_{t-1} ) (Ct−1) 。
- 输入门:新增约 19.1% 的新信息到 ( C t ) (C_t ) (Ct) 。
- 输出门:基于更新后的 ( C t ) (C_t ) (Ct) ,生成当前时刻的输出 ( h t ) (h_t ) (ht) 。
关键点
- Sigmoid:控制“保留比例”(输出 0~1)。
- Tanh:压缩到 -1~1,稳定梯度。
- 标量示例仅为简化:实际中所有变量和参数均为向量/矩阵,计算方式类似(按元素或矩阵乘法)。
3-数字运算来复现这三个门的计算-2
好的!我们换一组新的数据和参数,再次分步推演LSTM三个门的计算过程,通过纯数值计算直观展示门的协作逻辑。
新示例设定
- 输入:当前时刻输入 ( x t = 1.2 ) (x_t = 1.2 ) (xt=1.2)
- 上一时刻隐藏状态: ( h t − 1 = 0.6 ) (h_{t-1} = 0.6 ) (ht−1=0.6)
- 上一时刻细胞状态: ( C t − 1 = 2.1 ) (C_{t-1} = 2.1 ) (Ct−1=2.1)
- 参数(简化为标量):
- 遗忘门权重 ( W f = 0.7 ) (W_f = 0.7 ) (Wf=0.7) ,偏置 ( b f = − 0.3 ) (b_f = -0.3 ) (bf=−0.3)
- 输入门权重 ( W i = 0.4 ) (W_i = 0.4 ) (Wi=0.4) ,偏置 ( b i = 0.1 ) (b_i = 0.1 ) (bi=0.1)
- 候选值权重 ( W C = 0.5 ) (W_C = 0.5 ) (WC=0.5) ,偏置 ( b C = 0.2 ) (b_C = 0.2 ) (bC=0.2)
- 输出门权重 ( W o = 0.6 ) (W_o = 0.6 ) (Wo=0.6) ,偏置 ( b o = − 0.2 ) (b_o = -0.2 ) (bo=−0.2)
Step 1: 遗忘门(Forget Gate)
公式:
[ f t = σ ( W f ⋅ [ h t − 1 , x t ] + b f ) ] [ f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f) ] [ft=σ(Wf⋅[ht−1,xt]+bf)]
计算过程:
- 拼接 ( h t − 1 ) (h_{t-1} ) (ht−1) 和 ( x t ) (x_t ) (xt) :实际为 ( [ 0.6 , 1.2 ] ) ([0.6, 1.2] ) ([0.6,1.2]) ,但标量运算中简化为相加 ( 0.6 + 1.2 = 1.8 ) (0.6 + 1.2 = 1.8 ) (0.6+1.2=1.8) 。
- 线性变换: ( W f ⋅ ( h t − 1 + x t ) + b f = 0.7 × 1.8 + ( − 0.3 ) = 1.26 − 0.3 = 0.96 ) (W_f \cdot (h_{t-1} + x_t) + b_f = 0.7 \times 1.8 + (-0.3) = 1.26 - 0.3 = 0.96 ) (Wf⋅(ht−1+xt)+bf=0.7×1.8+(−0.3)=1.26−0.3=0.96)
- Sigmoid激活: ( σ ( 0.96 ) = 1 1 + e − 0.96 ≈ 0.723 ) (\sigma(0.96) = \frac{1}{1 + e^{-0.96}} \approx 0.723 ) (σ(0.96)=1+e−0.961≈0.723)
结果: ( f t ≈ 0.723 ) (f_t \approx 0.723 ) (ft≈0.723) (保留约72.3%的旧细胞状态)
Step 2: 输入门(Input Gate)
**(1) 输入门筛选值 ( i t ) (i_t ) (it) **:
[ i t = σ ( W i ⋅ [ h t − 1 , x t ] + b i ) ] [ i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i) ] [it=σ(Wi⋅[ht−1,xt]+bi)]
计算:
- 线性变换: ( 0.4 × 1.8 + 0.1 = 0.72 + 0.1 = 0.82 ) (0.4 \times 1.8 + 0.1 = 0.72 + 0.1 = 0.82 ) (0.4×1.8+0.1=0.72+0.1=0.82)
- Sigmoid激活: ( σ ( 0.82 ) ≈ 0.694 ) (\sigma(0.82) \approx 0.694 ) (σ(0.82)≈0.694)
**(2) 候选值 ( C ~ t ) (\tilde{C}_t ) (C~t) **:
[ C ~ t = tanh ( W C ⋅ [ h t − 1 , x t ] + b C ) ] [ \tilde{C}_t = \tanh(W_C \cdot [h_{t-1}, x_t] + b_C) ] [C~t=tanh(WC⋅[ht−1,xt]+bC)]
计算:
- 线性变换: ( 0.5 × 1.8 + 0.2 = 0.9 + 0.2 = 1.1 ) (0.5 \times 1.8 + 0.2 = 0.9 + 0.2 = 1.1 ) (0.5×1.8+0.2=0.9+0.2=1.1)
- Tanh激活: ( tanh ( 1.1 ) ≈ 0.800 ) (\tanh(1.1) \approx 0.800 ) (tanh(1.1)≈0.800) (因为 ( tanh ( 1.1 ) ≈ e 1.1 − e − 1.1 e 1.1 + e − 1.1 ≈ 0.800 ) (\tanh(1.1) \approx \frac{e^{1.1} - e^{-1.1}}{e^{1.1} + e^{-1.1}} \approx 0.800) (tanh(1.1)≈e1.1+e−1.1e1.1−e−1.1≈0.800)
**(3) 更新细胞状态 ( C t ) (C_t ) (Ct) **:
[ C t = f t ⋅ C t − 1 + i t ⋅ C ~ t ] [ C_t = f_t \cdot C_{t-1} + i_t \cdot \tilde{C}_t ] [Ct=ft⋅Ct−1+it⋅C~t]
计算:
[ C t = 0.723 × 2.1 + 0.694 × 0.800 ≈ 1.518 + 0.555 = 2.073 ] [ C_t = 0.723 \times 2.1 + 0.694 \times 0.800 \approx 1.518 + 0.555 = 2.073 ] [Ct=0.723×2.1+0.694×0.800≈1.518+0.555=2.073]
Step 3: 输出门(Output Gate)
**(1) 输出门筛选值 ( o t ) (o_t ) (ot) **:
[ o t = σ ( W o ⋅ [ h t − 1 , x t ] + b o ) ] [ o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o) ] [ot=σ(Wo⋅[ht−1,xt]+bo)]
计算:
- 线性变换: ( 0.6 × 1.8 + ( − 0.2 ) = 1.08 − 0.2 = 0.88 ) (0.6 \times 1.8 + (-0.2) = 1.08 - 0.2 = 0.88 ) (0.6×1.8+(−0.2)=1.08−0.2=0.88)
- Sigmoid激活: ( σ ( 0.88 ) ≈ 0.707 ) (\sigma(0.88) \approx 0.707 ) (σ(0.88)≈0.707)
**(2) 生成当前隐藏状态 ( h t ) (h_t ) (ht) **:
[ h t = o t ⋅ tanh ( C t ) ] [ h_t = o_t \cdot \tanh(C_t) ] [ht=ot⋅tanh(Ct)]
计算:
- ( tanh ( 2.073 ) ≈ 0.969 ) (\tanh(2.073) \approx 0.969 ) (tanh(2.073)≈0.969) (因为 ( tanh ( 2 ) ≈ 0.964 ) (\tanh(2) \approx 0.964) (tanh(2)≈0.964) ,此处近似)
- ( h t = 0.707 × 0.969 ≈ 0.685 ) (h_t = 0.707 \times 0.969 \approx 0.685 ) (ht=0.707×0.969≈0.685)
最终结果
- 新细胞状态: ( C t ≈ 2.073 ) (C_t \approx 2.073 ) (Ct≈2.073) (相比旧状态 ( C t − 1 = 2.1 ) (C_{t-1}=2.1 ) (Ct−1=2.1) ,略微下降)
- 新隐藏状态: ( h t ≈ 0.685 ) (h_t \approx 0.685 ) (ht≈0.685)
对比分析
步骤 | 原示例结果 | 新示例结果 | 变化原因 |
---|---|---|---|
遗忘门 ( f t ) (f_t ) (ft) | 0.627 | 0.723 | 权重和偏置调整,保留更多旧信息 |
输入门 ( i t ) (i_t ) (it) | 0.601 | 0.694 | 输入数据更强( ( x t = 1.2 ) (x_t=1.2 ) (xt=1.2) ) |
候选值 ( C ~ t ) (\tilde{C}_t ) (C~t) | 0.318 | 0.800 | 更大的输入和权重导致更活跃的候选值 |
细胞状态 ( C t ) (C_t ) (Ct) | 0.693 → 0.693 | 2.1 → 2.073 | 遗忘门保留大部分旧状态,输入门新增少量信息 |
隐藏状态 ( h t ) (h_t ) (ht) | 0.366 | 0.685 | 输出门激活更强,细胞状态更大 |
关键结论
- 遗忘门:参数 ( W f ) (W_f ) (Wf) 和 ( b f ) (b_f ) (bf) 直接影响旧信息的保留比例。
- 输入门:输入值 ( x t ) (x_t ) (xt) 越大,候选值 ( C ~ t ) (\tilde{C}_t ) (C~t) 越显著。
- 输出门:最终输出 ( h t ) (h_t ) (ht) 同时依赖细胞状态 ( C t ) (C_t ) (Ct) 和门控的激活强度。
- 参数敏感性:权重和偏置的微小变化会显著影响门控行为和最终结果。
通过更换数据,可以清晰看到LSTM如何通过动态调整门控参数,灵活控制信息流。实际训练中,模型通过反向传播自动优化这些参数以适应任务需求。
4-分别从数学原理和逻辑架构上解释LSTM的三个门
LSTM(长短期记忆网络)是一种特殊的循环神经网络(RNN),通过引入遗忘门、输入门和输出门来解决传统RNN中的梯度消失和梯度爆炸问题。下面分别从数学原理和逻辑架构上解释LSTM的三个门及其记忆职责:
遗忘门(Forget Gate)
- 数学原理:
[ f t = σ ( W f ⋅ [ h t − 1 , x t ] + b f ) ] [ f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f) ] [ft=σ(Wf⋅[ht−1,xt]+bf)]
其中, ( f t ) (f_t) (ft) 是遗忘门的输出, ( h t − 1 ) (h_{t-1}) (ht−1) 是上一时间步的隐藏状态, ( x t ) (x_t) (xt) 是当前时间步的输入, ( W f ) (W_f) (Wf) 和 ( b f ) (b_f) (bf) 是遗忘门的权重和偏置, ( s i g m a ) (sigma) (sigma) 是 Sigmoid 激活函数。遗忘门的输出在 0 到 1 之间,表示对应位置的信息保留程度,0 表示完全遗忘,1 表示完全保留。 - 记忆职责:遗忘门的作用是决定哪些信息需要被丢弃。它通过 Sigmoid 函数的输出值来控制上一时间步细胞状态 ( C t − 1 ) (C_{t-1}) (Ct−1) 中的信息保留程度。如果遗忘门的值接近 0,则表示该部分信息将被遗忘;如果接近 1,则表示该部分信息将被保留。这种机制使得 LSTM 能够丢弃不再重要的信息,从而避免信息过载。
输入门(Input Gate)
- 数学原理:
[ i t = σ ( W i ⋅ [ h t − 1 , x t ] + b i ) ] [ i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i) ] [it=σ(Wi⋅[ht−1,xt]+bi)]
[ C ~ t = tanh ( W C ⋅ [ h t − 1 , x t ] + b C ) ] [ \tilde{C}_t = \tanh(W_C \cdot [h_{t-1}, x_t] + b_C) ] [C~t=tanh(WC⋅[ht−1,xt]+bC)]
其中, ( i t ) (i_t) (it) 是输入门的输出, ( t i l d e C t ) (tilde{C}_t) (tildeCt) 是当前时间步的候选记忆, ( W i ) (W_i) (Wi)、 ( W C ) (W_C) (WC) 和 ( b i ) (b_i) (bi)、 ( b C ) (b_C) (bC) 分别是输入门和候选记忆的权重和偏置, ( s i g m a ) (sigma) (sigma) 是 Sigmoid 函数, ( t a n h ) (tanh) (tanh) 是双曲正切函数。输入门的输出在 0 到 1 之间,表示对应位置的信息更新程度。 - 记忆职责:输入门的作用是决定哪些新信息需要被写入细胞状态。它由两部分组成:一部分是通过 Sigmoid 函数计算的输入门 ( i t ) (i_t) (it),表示当前时间步输入信息的重要性;另一部分是通过 ( t a n h ) (tanh) (tanh) 函数计算的候选记忆 ( t i l d e C t ) (tilde{C}_t) (tildeCt),表示当前时间步的新信息。输入门通过将这两部分相乘,决定哪些新信息需要被写入细胞状态。这种机制使得 LSTM 能够根据当前输入和上一时间步的隐藏状态,动态地更新细胞状态。
输出门(Output Gate)
- 数学原理:
[ o t = σ ( W o ⋅ [ h t − 1 , x t ] + b o ) ] [ o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o) ] [ot=σ(Wo⋅[ht−1,xt]+bo)]
[ h t = o t ⋅ tanh ( C t ) ] [ h_t = o_t \cdot \tanh(C_t) ] [ht=ot⋅tanh(Ct)]
其中, ( o t ) (o_t) (ot) 是输出门的输出, ( h t ) (h_t) (ht) 是当前时间步的隐藏状态, ( C t ) (C_t) (Ct) 是当前时间步的细胞状态, ( W o ) (W_o) (Wo) 和 ( b o ) (b_o) (bo) 是输出门的权重和偏置, ( s i g m a ) (sigma) (sigma) 是 Sigmoid 函数, ( t a n h ) (tanh) (tanh) 是双曲正切函数。输出门的输出在 0 到 1 之间,表示对应隐藏状态的输出程度。 - 记忆职责:输出门的作用是决定哪些信息需要被输出。它通过 Sigmoid 函数的输出值来控制当前时间步细胞状态 ( C t ) (C_t) (Ct) 中的信息输出程度。如果输出门的值接近 1,则表示该部分信息将被输出;如果接近 0,则表示该部分信息将被保留。这种机制使得 LSTM 能够根据当前输入和上一时间步的隐藏状态,动态地输出隐藏状态。
为什么可以这样实现
LSTM 的三个门通过不同的激活函数和权重矩阵,对信息进行加权和筛选,从而实现对长期依赖关系的建模。遗忘门通过 Sigmoid 函数决定哪些信息需要被丢弃,输入门通过 Sigmoid 函数和 ( t a n h ) (tanh) (tanh) 函数决定哪些新信息需要被写入细胞状态,输出门通过 Sigmoid 函数决定哪些信息需要被输出。这种门控机制使得 LSTM 能够动态地调整信息的保留和更新,从而有效地解决梯度消失和梯度爆炸问题。