循环神经网络
在处理序列数据(如时间序列、自然语言等)时,数据之间存在时序依赖关系。例如,天气预报中明天的天气往往受前几天天气影响,自然语言中词语的含义也依赖于上下文。传统的前馈神经网络无法有效建模这种序列依赖关系。循环神经网络(RNN)通过引入循环连接,能够保持和利用历史信息,特别适合处理序列数据。
介绍
- 核心公式
- 隐藏状态更新: ht = tanh(Whh h(t-1) + Whx xt + bh)
- ht: 当前时刻隐藏状态
- h(t-1): 上一时刻隐藏状态
- xt: 当前输入
- Whh,Whx: 权重矩阵
- bh: 偏置项
- 输出计算: yt = Why * ht + by
- yt: 当前时刻输出
- Why: 输出权重矩阵
- by: 输出偏置项
- 网络特点
- 引入循环连接,使网络具有"记忆"能力
- 参数共享:各时刻使用相同的权重矩阵
- 能够处理变长序列输入
- 适合建模序列数据的时序依赖关系
代码
https://github.com/Hao-yiwen/deeplearning/blob/master/pytorch/week3/practise_7_char_rnn.ipynb