- 6. 循环神经网络
6. 循环神经网络
与之前介绍的多层感知机和能有效处理空间信息的卷积神经网络不同,循环神经网络是为更好地处理时序信息而设计的。它引入状态变量来存储过去的信息,并用其与当前的输入共同决定当前的输出。
循环神经网络常用于处理序列数据,如一段文字或声音、购物或观影的顺序,甚至是图像中的一行或一列像素。因此,循环神经网络有着极为广泛的实际应用,如语言模型、文本分类、机器翻译、语音识别、图像分析、手写识别和推荐系统。
因为本章中的应用是基于语言模型的,所以我们将先介绍语言模型的基本概念,并由此激发循环神经网络的设计灵感。接着,我们将描述循环神经网络中的梯度计算方法,从而探究循环神经网络训练可能存在的问题。对于其中的部分问题,我们可以使用本章稍后介绍的含门控的循环神经网络来解决。最后,我们将拓展循环神经网络的架构。
- 6.1. 语言模型
- 6.1.1. 语言模型的计算
- 6.1.2.
元语法 - 6.1.3. 小结
- 6.1.4. 练习
- 6.1.5. 参与讨论
- 6.2. 循环神经网络
- 6.2.1. 不含隐藏状态的神经网络
- 6.2.2. 含隐藏状态的循环神经网络
- 6.2.3. 应用:基于字符级循环神经网络的语言模型
- 6.2.4. 小结
- 6.2.5. 练习
- 6.2.6. 参与讨论
- 6.3. 语言模型数据集(周杰伦专辑歌词)
- 6.3.1. 读取数据集
- 6.3.2. 建立字符索引
- 6.3.3. 时序数据的采样
- 6.3.4. 小结
- 6.3.5. 练习
- 6.3.6. 参与讨论
- 6.4. 循环神经网络的从零开始实现
- 6.4.1. one-hot向量
- 6.4.2. 初始化模型参数
- 6.4.3. 定义模型
- 6.4.4. 定义预测函数
- 6.4.5. 裁剪梯度
- 6.4.6. 困惑度
- 6.4.7. 定义模型训练函数
- 6.4.8. 训练模型并创作歌词
- 6.4.9. 小结
- 6.4.10. 练习
- 6.4.11. 参与讨论
- 6.5. 循环神经网络的简洁实现
- 6.5.1. 定义模型
- 6.5.2. 训练模型
- 6.5.3. 小结
- 6.5.4. 练习
- 6.5.5. 参与讨论
- 6.6. 通过时间反向传播
- 6.6.1. 定义模型
- 6.6.2. 模型计算图
- 6.6.3. 方法
- 6.6.4. 小结
- 6.6.5. 练习
- 6.6.6. 参与讨论
- 6.7. 门控循环单元(GRU)
- 6.7.1. 门控循环单元
- 6.7.2. 读取数据集
- 6.7.3. 从零开始实现
- 6.7.4. 简洁实现
- 6.7.5. 小结
- 6.7.6. 练习
- 6.7.7. 参考文献
- 6.7.8. 参与讨论
- 6.8. 长短期记忆(LSTM)
- 6.8.1. 长短期记忆
- 6.8.2. 读取数据集
- 6.8.3. 从零开始实现
- 6.8.4. 定义模型
- 6.8.5. 简洁实现
- 6.8.6. 小结
- 6.8.7. 练习
- 6.8.8. 参考文献
- 6.8.9. 参与讨论
- 6.9. 深度循环神经网络
- 6.9.1. 小结
- 6.9.2. 练习
- 6.9.3. 参与讨论
- 6.10. 双向循环神经网络
- 6.10.1. 小结
- 6.10.2. 练习
- 6.10.3. 参与讨论