动手学深度学习 6.9 深度循环神经网络

前言

从零开始学习ai文章系列计划是个人在《动手学深度学习》和《磨菇书》两本书的学习中的个人笔记,文章也会以课本中的章节分开,即每个章节一片笔记。我会尽量的把主要内容以及遇到的难点进行记录与解决,如果哪里有错误的欢迎指正。或者不清晰的可以直接查看原文部分。

《动手学深度学习》原文(课本):https://tangshusen.me/Dive-into-DL-PyTorch/#/

《动手学深度学习》代码:https://github.com/ShusenTang/Dive-into-DL-PyTorch

(由于有时候公式太多,可能会直接贴图片)


(6.9和6.10都是网络架构的简单变化,因为原文中没有实验,因此这两篇理解其结构即可)

本章到目前为止介绍的循环神经网络只有一个单向的隐藏层,在深度学习应用里,我们通常会用到含有多个隐藏层的循环神经网络,也称作深度循环神经网络。

图6.11演示了一个有L个隐藏层的深度循环神经网络,每个隐藏状态不断传递至当前层的下一时间步和当前时间步的下一层。

具体来说,在时间步t里,设小批量输入 \(X_t \in \mathbb{R}^{n\times d}\) (样本数为n,输入个数为d),第 ℓ 隐藏层(ℓ=1,…,L)的隐藏状态为 \(H_t^{(ℓ)} \in \mathbb{R}^{n\times h}\) (隐藏单元个数为h),输出层变量为 \(O_t \in \mathbb{R}^{n\times q}\) (输出个数为q),且隐藏层的激活函数为ϕ。第1隐藏层的隐藏状态和之前的计算一样:

第一层的第一个式子来自 \(X_t\) ,即输入 \(X_tW_{xh}^{1}\)

其中权重 \(W_{xh}^{(1)} \in \mathbb{R}^{d \times h}\)\(W_{hh}^{(1)} \in \mathbb{R}^{h \times h}\) 和偏差 \(b_{h}^{(1)} \in \mathbb{R}^{1 \times h}\) 分别为第1隐藏层的模型参数。

当1<ℓ≤L时,第ℓ隐藏层的隐藏状态的表达式为

第二层开始的第一个式子来自上一层的 \(H_t\) ,即 \(H_t^{(ℓ-1)}W_{xh}^{ℓ}\)

最终,输出层的输出只需基于第L隐藏层的隐藏状态: \[ O_t=H^{(L)}_tW_{hq}+b_q \] 同多层感知机一样,隐藏层个数L和隐藏单元个数h都是超参数。此外,如果将隐藏状态的计算换成门控循环单元或者长短期记忆的计算,我们可以得到深度门控循环神经网络