差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
深度学习:循环神经网络 [2026/03/02 22:16] – [1.1 序列数据与循环神经网络] 张叶安深度学习:循环神经网络 [2026/03/02 22:23] (当前版本) – [4. 答案与解析] 张叶安
行 34: 行 34:
  
 其中: 其中:
-- $x_t$:时刻$t$的输入 +  - $x_t$:时刻$t$的输入 
-- $h_t$:时刻$t$的隐藏状态 +  - $h_t$:时刻$t$的隐藏状态 
-- $y_t$:时刻$t$的输出 +  - $y_t$:时刻$t$的输出 
-- $W_{hh}, W_{xh}, W_{hy}$:权重矩阵 +  - $W_{hh}, W_{xh}, W_{hy}$:权重矩阵 
-- $b_h, b_y$:偏置向量 +  - $b_h, b_y$:偏置向量 
-- $f, g$:激活函数(通常$f$为tanh或ReLU,$g$依任务而定)+  - $f, g$:激活函数(通常$f$为tanh或ReLU,$g$依任务而定)
  
 **1.2.2 展开表示** **1.2.2 展开表示**
行 45: 行 45:
 RNN可以按时间步展开为前馈网络的共享参数形式: RNN可以按时间步展开为前馈网络的共享参数形式:
  
-```+<code>
 x_1 → [RNN Cell] → h_1 → [RNN Cell] → h_2 → ... → h_T x_1 → [RNN Cell] → h_1 → [RNN Cell] → h_2 → ... → h_T
         ↑               ↑         ↑               ↑
        h_0             h_1        h_0             h_1
-```+</code>
  
 这种展开方式使得可以使用反向传播算法进行训练,称为**时间反向传播(Backpropagation Through Time,BPTT)**。 这种展开方式使得可以使用反向传播算法进行训练,称为**时间反向传播(Backpropagation Through Time,BPTT)**。
行 56: 行 56:
  
 RNN在不同时间步共享相同的参数($W_{hh}, W_{xh}, W_{hy}$),这使得模型能够: RNN在不同时间步共享相同的参数($W_{hh}, W_{xh}, W_{hy}$),这使得模型能够:
-- 处理任意长度的序列 +  - 处理任意长度的序列 
-- 减少参数量 +  - 减少参数量 
-- 学习时序不变的特征+  - 学习时序不变的特征
  
 ==== 1.3 RNN的变体与应用模式 ==== ==== 1.3 RNN的变体与应用模式 ====
行 67: 行 67:
  
 | 模式 | 输入 | 输出 | 应用示例 | | 模式 | 输入 | 输出 | 应用示例 |
-|------|------|------|----------| 
 | 一对多 | 固定向量 | 序列 | 图像描述生成 | | 一对多 | 固定向量 | 序列 | 图像描述生成 |
 | 多对一 | 序列 | 固定向量 | 情感分析、文本分类 | | 多对一 | 序列 | 固定向量 | 情感分析、文本分类 |
行 106: 行 105:
  
 **梯度消失问题**: **梯度消失问题**:
-- 当特征值小于1时,连乘导致梯度指数级减小 +  - 当特征值小于1时,连乘导致梯度指数级减小 
-- 长期依赖关系难以学习 +  - 长期依赖关系难以学习 
-- tanh和sigmoid的导数最大值为1,更容易出现此问题+  - tanh和sigmoid的导数最大值为1,更容易出现此问题
  
 **梯度爆炸问题**: **梯度爆炸问题**:
-- 当特征值大于1时,连乘导致梯度指数级增长 +  - 当特征值大于1时,连乘导致梯度指数级增长 
-- 参数更新不稳定,可能溢出+  - 参数更新不稳定,可能溢出
  
 **1.4.2 解决方案** **1.4.2 解决方案**
行 226: 行 225:
 **1.7.1 自然语言处理** **1.7.1 自然语言处理**
  
-- **语言建模**:预测下一个词的概率$P(w_t|w_1, ..., w_{t-1})$ +  - **语言建模**:预测下一个词的概率$P(w_t|w_1, ..., w_{t-1})$ 
-- **机器翻译**:Seq2Seq + Attention +  - **机器翻译**:Seq2Seq + Attention 
-- **文本摘要**:抽取式或生成式摘要 +  - **文本摘要**:抽取式或生成式摘要 
-- **情感分析**:多对一分类 +  - **情感分析**:多对一分类 
-- **命名实体识别**:序列标注+  - **命名实体识别**:序列标注
  
 **1.7.2 语音识别** **1.7.2 语音识别**
  
-- 声学模型:将音频特征映射到音素 +  - 声学模型:将音频特征映射到音素 
-- CTC(Connectionist Temporal Classification):处理输入输出对齐+  - CTC(Connectionist Temporal Classification):处理输入输出对齐
  
 **1.7.3 时间序列预测** **1.7.3 时间序列预测**
  
-- 股票价格预测 +  - 股票价格预测 
-- 天气预测 +  - 天气预测 
-- 设备故障预测+  - 设备故障预测
  
 **1.7.4 其他应用** **1.7.4 其他应用**
  
-- 视频分析 +  - 视频分析 
-- 音乐生成 +  - 音乐生成 
-- 手写识别+  - 手写识别
  
 ==== 1.8 RNN的局限与替代方案 ==== ==== 1.8 RNN的局限与替代方案 ====
行 254: 行 253:
  
 1. **顺序计算限制**:难以并行化 1. **顺序计算限制**:难以并行化
 +
 2. **长距离依赖**:即使LSTM也难以捕捉非常长的依赖 2. **长距离依赖**:即使LSTM也难以捕捉非常长的依赖
 +
 3. **计算效率**:逐时间步计算,速度慢 3. **计算效率**:逐时间步计算,速度慢
 +
 4. **梯度问题**:深层堆叠时仍面临梯度问题 4. **梯度问题**:深层堆叠时仍面临梯度问题
  
行 261: 行 263:
  
 Transformer完全基于注意力机制,摒弃了循环结构: Transformer完全基于注意力机制,摒弃了循环结构:
-- 完全并行计算 +  - 完全并行计算 
-- 捕捉任意距离的依赖关系 +  - 捕捉任意距离的依赖关系 
-- 在大规模数据上表现优异+  - 在大规模数据上表现优异
  
 **1.8.3 现代发展趋势** **1.8.3 现代发展趋势**
  
 1. **RNN与Transformer混合**:Reformer、Transformer-XL 1. **RNN与Transformer混合**:Reformer、Transformer-XL
 +
 2. **结构化稀疏注意力**:降低Transformer复杂度 2. **结构化稀疏注意力**:降低Transformer复杂度
 +
 3. **状态空间模型(SSM)**:Mamba等,结合RNN和CNN优点 3. **状态空间模型(SSM)**:Mamba等,结合RNN和CNN优点
  
行 276: 行 280:
  
 **题目**:考虑一个简单的RNN单元,输入维度为2,隐藏状态维度为3。给定: **题目**:考虑一个简单的RNN单元,输入维度为2,隐藏状态维度为3。给定:
-- $W_{xh} = \begin{bmatrix} 0.1 & 0.2 \\ 0.3 & 0.4 \\ 0.5 & 0.6 \end{bmatrix}$ +  - $W_{xh} = \begin{bmatrix} 0.1 & 0.2 \\ 0.3 & 0.4 \\ 0.5 & 0.6 \end{bmatrix}$ 
-- $W_{hh} = \begin{bmatrix} 0.1 & 0.2 & 0.3 \\ 0.4 & 0.5 & 0.6 \\ 0.7 & 0.8 & 0.9 \end{bmatrix}$ +  - $W_{hh} = \begin{bmatrix} 0.1 & 0.2 & 0.3 \\ 0.4 & 0.5 & 0.6 \\ 0.7 & 0.8 & 0.9 \end{bmatrix}$ 
-- $b_h = \begin{bmatrix} 0.1 \\ 0.2 \\ 0.3 \end{bmatrix}$ +  - $b_h = \begin{bmatrix} 0.1 \\ 0.2 \\ 0.3 \end{bmatrix}$ 
-- 初始隐藏状态$h_0 = \begin{bmatrix} 0 \\ 0 \\ 0 \end{bmatrix}$ +  - 初始隐藏状态$h_0 = \begin{bmatrix} 0 \\ 0 \\ 0 \end{bmatrix}$ 
-- 输入序列:$x_1 = \begin{bmatrix} 1 \\ 1 \end{bmatrix}$,$x_2 = \begin{bmatrix} 0.5 \\ 0.5 \end{bmatrix}$+  - 输入序列:$x_1 = \begin{bmatrix} 1 \\ 1 \end{bmatrix}$,$x_2 = \begin{bmatrix} 0.5 \\ 0.5 \end{bmatrix}$
  
 使用tanh激活函数,计算$h_1$和$h_2$。 使用tanh激活函数,计算$h_1$和$h_2$。
行 289: 行 293:
  
 首先计算线性组合: 首先计算线性组合:
 +
 $$z_1 = W_{xh} x_1 + W_{hh} h_0 + b_h$$ $$z_1 = W_{xh} x_1 + W_{hh} h_0 + b_h$$
  
行 313: 行 318:
  
 **结论**: **结论**:
-- $h_1 \approx [0.380, 0.716, 0.885]^T$ +  - $h_1 \approx [0.380, 0.716, 0.885]^T$ 
-- $h_2 \approx [0.602, 0.918, 0.986]^T$+  - $h_2 \approx [0.602, 0.918, 0.986]^T$
  
 ==== 例题2:LSTM门控机制分析 ==== ==== 例题2:LSTM门控机制分析 ====
  
 **题目**:分析LSTM的门控机制。假设在一个时间步: **题目**:分析LSTM的门控机制。假设在一个时间步:
-- 上一时刻细胞状态$C_{t-1} = 5$ +  - 上一时刻细胞状态$C_{t-1} = 5$ 
-- 遗忘门输出$f_t = 0.1$ +  - 遗忘门输出$f_t = 0.1$ 
-- 输入门输出$i_t = 0.9$ +  - 输入门输出$i_t = 0.9$ 
-- 候选状态$\tilde{C}_t = 0.5$+  - 候选状态$\tilde{C}_t = 0.5$
  
 (1) 计算新的细胞状态$C_t$ (1) 计算新的细胞状态$C_t$
 +
 (2) 分析遗忘门接近0和接近1时的不同行为 (2) 分析遗忘门接近0和接近1时的不同行为
 +
 (3) 说明为什么LSTM能解决梯度消失问题 (3) 说明为什么LSTM能解决梯度消失问题
  
行 333: 行 340:
  
 根据LSTM细胞状态更新公式: 根据LSTM细胞状态更新公式:
 +
 $$C_t = f_t \odot C_{t-1} + i_t \odot \tilde{C}_t$$ $$C_t = f_t \odot C_{t-1} + i_t \odot \tilde{C}_t$$
  
 代入数值: 代入数值:
 +
 $$C_t = 0.1 \times 5 + 0.9 \times 0.5$$ $$C_t = 0.1 \times 5 + 0.9 \times 0.5$$
 +
 $$= 0.5 + 0.45$$ $$= 0.5 + 0.45$$
 +
 $$= 0.95$$ $$= 0.95$$
  
行 343: 行 354:
  
 **情况A:$f_t \approx 0$** **情况A:$f_t \approx 0$**
-- 遗忘门关闭,丢弃大部分历史信息 +  - 遗忘门关闭,丢弃大部分历史信息 
-- $C_t \approx i_t \odot \tilde{C}_t$ +  - $C_t \approx i_t \odot \tilde{C}_t$ 
-- 细胞状态主要由当前输入决定 +  - 细胞状态主要由当前输入决定 
-- 用于"遗忘"不再相关的历史信息+  - 用于"遗忘"不再相关的历史信息
  
 **情况B:$f_t \approx 1$** **情况B:$f_t \approx 1$**
-- 遗忘门打开,保留历史信息 +  - 遗忘门打开,保留历史信息 
-- $C_t \approx C_{t-1} + i_t \odot \tilde{C}_t$ +  - $C_t \approx C_{t-1} + i_t \odot \tilde{C}_t$ 
-- 历史信息可以几乎无损耗地传递 +  - 历史信息可以几乎无损耗地传递 
-- 用于长期记忆的保持+  - 用于长期记忆的保持
  
 **示例**: **示例**:
-- 在语言模型中,遇到句号时遗忘门应较低,重置上下文 +  - 在语言模型中,遇到句号时遗忘门应较低,重置上下文 
-- 在描述同一人/物时遗忘门应较高,保持信息连续性+  - 在描述同一人/物时遗忘门应较高,保持信息连续性
  
 **(3) 解决梯度消失的原因** **(3) 解决梯度消失的原因**
行 365: 行 376:
  
 **导数分析**: **导数分析**:
 +
 $$\frac{\partial C_t}{\partial C_{t-1}} = f_t$$ $$\frac{\partial C_t}{\partial C_{t-1}} = f_t$$
  
 当$f_t \approx 1$时,梯度可以在时间步之间几乎无损传播: 当$f_t \approx 1$时,梯度可以在时间步之间几乎无损传播:
 +
 $$\frac{\partial C_T}{\partial C_1} = \prod_{t=2}^T f_t \approx 1$$ $$\frac{\partial C_T}{\partial C_1} = \prod_{t=2}^T f_t \approx 1$$
  
 相比之下,标准RNN使用乘法更新: 相比之下,标准RNN使用乘法更新:
 +
 $$h_t = \tanh(W_{hh} h_{t-1} + W_{xh} x_t)$$ $$h_t = \tanh(W_{hh} h_{t-1} + W_{xh} x_t)$$
  
行 376: 行 390:
  
 **实际意义**: **实际意义**:
 +
 LSTM可以学习在需要时保持细胞状态不变($f_t=1, i_t=0$),形成信息的高速公路,跨越数百个时间步传播梯度。 LSTM可以学习在需要时保持细胞状态不变($f_t=1, i_t=0$),形成信息的高速公路,跨越数百个时间步传播梯度。
  
行 421: 行 436:
  
 **分析**: **分析**:
-- 注意力权重:$[0.245, 0.665, 0.090]$ +  - 注意力权重:$[0.245, 0.665, 0.090]$ 
-- 解码器关注程度:$h_2 > h_1 > h_3$ +  - 解码器关注程度:$h_2 > h_1 > h_3$ 
-- 这是因为$s_{t-1} = [1, 0]$与$h_2 = [2, 0]$方向最相似(点积最大) +  - 这是因为$s_{t-1} = [1, 0]$与$h_2 = [2, 0]$方向最相似(点积最大) 
-- 上下文向量是编码器状态的加权平均,偏向与解码器状态相似的$h_2$+  - 上下文向量是编码器状态的加权平均,偏向与解码器状态相似的$h_2$
  
 ===== 3. 训练题 ===== ===== 3. 训练题 =====
行 485: 行 500:
  
 1. **答案:B** 1. **答案:B**
-   解析:RNN在不同时间步使用相同的权重矩阵($W_{xh}, W_{hh}$),这是RNN能够处理变长序列的基础。+ 
 +解析:RNN在不同时间步使用相同的权重矩阵($W_{xh}, W_{hh}$),这是RNN能够处理变长序列的基础。
  
 2. **答案:B** 2. **答案:B**
-   解析:遗忘门(Forget Gate)通过$f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f)$控制历史信息的保留程度。+ 
 +解析:遗忘门(Forget Gate)通过$f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f)$控制历史信息的保留程度。
  
 3. **答案:B** 3. **答案:B**
-   解析:GRU将LSTM的遗忘门和输入门合并为更新门,细胞状态和隐藏状态合并,参数量约为LSTM的75%。+ 
 +解析:GRU将LSTM的遗忘门和输入门合并为更新门,细胞状态和隐藏状态合并,参数量约为LSTM的75%。
  
 4. **答案:B** 4. **答案:B**
-   解析:注意力机制允许解码器动态关注输入序列的不同部分,解决了固定长度上下文向量的信息瓶颈问题。+ 
 +解析:注意力机制允许解码器动态关注输入序列的不同部分,解决了固定长度上下文向量的信息瓶颈问题。
  
 5. **答案:B** 5. **答案:B**
-   解析:双向RNN包含前向和后向两个RNN,分别捕获过去和未来的上下文信息。+ 
 +解析:双向RNN包含前向和后向两个RNN,分别捕获过去和未来的上下文信息。
  
 **二、填空题答案:** **二、填空题答案:**
  
 6. **答案:**输入;输出 6. **答案:**输入;输出
-   解析:LSTM的三个门是遗忘门(Forget Gate)、输入门(Input Gate)和输出门(Output Gate)。+ 
 +解析:LSTM的三个门是遗忘门(Forget Gate)、输入门(Input Gate)和输出门(Output Gate)。
  
 7. **答案:**加法 7. **答案:**加法
-   解析:$C_t = f_t \odot C_{t-1} + i_t \odot \tilde{C}_t$,加法更新使梯度可以直接传播,缓解了梯度消失。+ 
 +解析:$C_t = f_t \odot C_{t-1} + i_t \odot \tilde{C}_t$,加法更新使梯度可以直接传播,缓解了梯度消失。
  
 8. **答案:**BPTT(或Backpropagation Through Time) 8. **答案:**BPTT(或Backpropagation Through Time)
-   解析:BPTT将RNN按时间展开,使用反向传播算法计算梯度。+ 
 +解析:BPTT将RNN按时间展开,使用反向传播算法计算梯度。
  
 9. **答案:**编码(Encoder);解码(Decoder) 9. **答案:**编码(Encoder);解码(Decoder)
-   解析:Seq2Seq(序列到序列)模型由编码器处理输入序列,解码器生成输出序列。+ 
 +解析:Seq2Seq(序列到序列)模型由编码器处理输入序列,解码器生成输出序列。
  
 10. **答案:**梯度爆炸 10. **答案:**梯度爆炸
-    解析:当梯度过大时,梯度裁剪将其缩放到阈值以内,防止参数更新失控。+ 
 +解析:当梯度过大时,梯度裁剪将其缩放到阈值以内,防止参数更新失控。
  
 **三、计算题答案:** **三、计算题答案:**
行 520: 行 545:
 11. **解答:** 11. **解答:**
          
-    $h_1 = \tanh(0.5 \times 0 + 0.3 \times 1) = \tanh(0.3) \approx 0.291$+$h_1 = \tanh(0.5 \times 0 + 0.3 \times 1) = \tanh(0.3) \approx 0.291$
          
-    $h_2 = \tanh(0.5 \times 0.291 + 0.3 \times 2) = \tanh(0.146 + 0.6) = \tanh(0.746) \approx 0.633$+   
 +$h_2 = \tanh(0.5 \times 0.291 + 0.3 \times 2) = \tanh(0.146 + 0.6) = \tanh(0.746) \approx 0.633$
          
-    $h_3 = \tanh(0.5 \times 0.633 + 0.3 \times 1) = \tanh(0.317 + 0.3) = \tanh(0.617) \approx 0.549$+$h_3 = \tanh(0.5 \times 0.633 + 0.3 \times 1) = \tanh(0.317 + 0.3) = \tanh(0.617) \approx 0.549$
          
-    因此:$h_1 \approx 0.291$,$h_2 \approx 0.633$,$h_3 \approx 0.549$+因此:$h_1 \approx 0.291$,$h_2 \approx 0.633$,$h_3 \approx 0.549$
  
 12. **解答:** 12. **解答:**
          
-    $C_t = f_t \times C_{t-1} + i_t \times \tilde{C}_t$+ 
 +$C_t = f_t \times C_{t-1} + i_t \times \tilde{C}_t$
          
-    $= 0.2 \times 10 + 0.8 \times 2$+$= 0.2 \times 10 + 0.8 \times 2$
          
-    $= 2 + 1.6$+$= 2 + 1.6$
          
-    $= 3.6$+$= 3.6$
  
 13. **解答:** 13. **解答:**
          
-    计算点积: +计算点积: 
-    - $e_1 = s \cdot h_1 = [2, 1] \cdot [1, 0] = 2 \times 1 + 1 \times 0 = 2$ +  - $e_1 = s \cdot h_1 = [2, 1] \cdot [1, 0] = 2 \times 1 + 1 \times 0 = 2$ 
-    - $e_2 = s \cdot h_2 = [2, 1] \cdot [1, 1] = 2 \times 1 + 1 \times 1 = 3$ +  - $e_2 = s \cdot h_2 = [2, 1] \cdot [1, 1] = 2 \times 1 + 1 \times 1 = 3$ 
-    - $e_3 = s \cdot h_3 = [2, 1] \cdot [0, 1] = 2 \times 0 + 1 \times 1 = 1$+  - $e_3 = s \cdot h_3 = [2, 1] \cdot [0, 1] = 2 \times 0 + 1 \times 1 = 1$
          
-    Softmax: +Softmax: 
-    - $\sum \exp(e_i) = \exp(2) + \exp(3) + \exp(1) = 7.389 + 20.086 + 2.718 = 30.193$ +  - $\sum \exp(e_i) = \exp(2) + \exp(3) + \exp(1) = 7.389 + 20.086 + 2.718 = 30.193$ 
-    - $\alpha_1 = 7.389 / 30.193 \approx 0.245$ +  - $\alpha_1 = 7.389 / 30.193 \approx 0.245$ 
-    - $\alpha_2 = 20.086 / 30.193 \approx 0.665$ +  - $\alpha_2 = 20.086 / 30.193 \approx 0.665$ 
-    - $\alpha_3 = 2.718 / 30.193 \approx 0.090$+  - $\alpha_3 = 2.718 / 30.193 \approx 0.090$
          
-    注意力权重:$[0.245, 0.665, 0.090]$+注意力权重:$[0.245, 0.665, 0.090]$

该主题尚不存在

您访问的页面并不存在。如果允许,您可以使用创建该页面按钮来创建它。

  • 深度学习/循环神经网络.1772460962.txt.gz
  • 最后更改: 2026/03/02 22:16
  • 张叶安