Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 第5章:循环神经网络(RNN)

第5章:循环神经网络(RNN)

LSTM与GRU模型

1. 长期依赖问题与RNN的局限性

  • 问题描述:传统RNN在处理长序列时容易出现梯度消失/爆炸,难以学习远距离依赖关系。
  • 数学表现:通过BPTT(随时间反向传播)分析,梯度在多层时间步上连乘导致指数级衰减或增长。
  • 典型场景:语言建模中预测当前词可能需要依赖数百步前的上下文。

2. LSTM(长短期记忆网络)

2.1 核心结构

# 伪代码表示LSTM单元的计算流程
def lstm_cell(input, hidden_state, cell_state):
    forget_gate = sigmoid(W_f @ [hidden_state, input] + b_f)
    input_gate = sigmoid(W_i @ [hidden_state, input] + b_i)
    output_gate = sigmoid(W_o @ [hidden_state, input] + b_o)
    candidate_cell = tanh(W_c @ [hidden_state, input] + b_c)
    
    new_cell = forget_gate * cell_state + input_gate * candidate_cell
    new_hidden = output_gate * tanh(new_cell)
    return new_hidden, new_cell

2.2 关键组件

  • 遗忘门:控制历史信息的保留比例(0~1)
  • 输入门:调节新候选值的写入程度
  • 输出门:决定当前隐藏状态的输出内容
  • 细胞状态:贯穿时间线的“记忆通道”,支持梯度稳定流动

2.3 变体架构

  • Peephole连接:让门控单元直接观察细胞状态
  • Coupled门:合并输入门和遗忘门

3. GRU(门控循环单元)

3.1 简化设计

# GRU单元的简化实现
def gru_cell(input, hidden_state):
    reset_gate = sigmoid(W_r @ [hidden_state, input] + b_r)
    update_gate = sigmoid(W_z @ [hidden_state, input] + b_z)
    candidate = tanh(W @ [reset_gate * hidden_state, input] + b)
    
    new_hidden = (1-update_gate)*hidden_state + update_gate*candidate
    return new_hidden

3.2 核心特性

  • 更新门:替代LSTM的输入门+遗忘门,平衡新旧信息
  • 重置门:控制历史信息对候选值的影响程度
  • 参数效率:比LSTM少1/3参数,训练速度更快

4. 对比与选型指南

特性LSTMGRU
参数数量较多(4组权重)较少(3组权重)
计算开销较高较低
长序列表现更稳定略逊但足够
典型应用场景语音识别、机器翻译文本生成、时序预测

5. 实践建议

  1. 默认尝试GRU:在大多数任务中表现接近LSTM但更高效
  2. 超参数调整:
    • 初始化门控偏置:遗忘门偏置初始化为1(LSTM)有助于记忆保留
    • Dropout应用:仅在非循环连接使用(如PyTorch的nn.LSTM(dropout=0.5))
  3. 可视化工具:使用torchviz绘制计算图分析梯度流

6. 前沿发展

  • 双向架构:BiLSTM/BiGRU捕捉前后文依赖
  • 注意力增强:如LSTM+Attention的混合模型
  • 神经架构搜索:自动发现最优门控结构

案例研究:在Google的Smart Compose系统中,GRU模型以8ms延迟实现实时输入预测,比同等精度LSTM快40%

Last Updated:: 6/17/25, 10:13 AM