【动手学深度学习笔记】深度循环神经网络 & 双向循环神经网络

293 阅读1分钟

视频链接

深度循环神经网络

双向循环神经网络

注解

一、RNN的深度

00:01 为了获得更强大的模型,我们通常把神经网络模型做的很“深”,这里要注意的是,在循环神经网络中,我们取很长的序列来做下一步的预测,这里的”长“,指的并不是深度,这里指的深度指的是隐藏层的深度,这里用图说明会更清晰

从数学公式的角度来说明深度

Ht(1)=f1(Ht1(1),Xt)Ht(j)=fj(Ht1(j),Ht(j1))Ot=g(Ht(L)) \begin{aligned} H^{(1)}_t&=f_1(H^{(1)}_{t-1},X_t)\\ &\cdots\\ H^{(j)}_t&=f_j(H^{(j)}_{t-1},H_t^{(j-1)})\\ &\cdots\\ O_t&=g(H_t^{(L)}) \end{aligned}

其中j=1Lj=1\cdots L,代表的是深度;其中t=1Tt=1\cdots T,代表的是序列长度

二、双向RNN

00:01 在日常生活中,未来的数据也很重要,当我们的任务是根据过去与未来预测中间的一个时间点时,我们就需要使用到双向的RNN,要构建反向的RNN,我们只需要增加一个从后到前的隐状态即可

此时我们的输出就需要合并两个隐状态来得到(将他们组合在一起的权重WhqW_{hq}是学出来的),得到公式:

Ht=ϕ(XtWxhforward+Ht1XtWhhforward+bhforward)Ht=ϕ(XtWxhbackward+Ht1XtWhhbackward+bhbackward)Ht=[Ht,Ht]Ot=HtWhq+bq \begin{aligned} \overrightarrow H_t&=\phi(X_tW_{xh}^{forward}+\overrightarrow H_{t-1}X_tW_{hh}^{forward}+b_h^{forward}) \\ \\ \overrightarrow H_t&=\phi(X_tW_{xh}^{backward}+\overrightarrow H_{t-1}X_tW_{hh}^{backward}+b_h^{backward}) \\ \\ H_t&=[\overrightarrow H_t,\overleftarrow H_t] \\ \\ O_t&=H_tW_{hq}+b_q \end{aligned}

然而,双向循环神经网络的推理是个难题,由于我们一般无法获取未来的数据,因此双向循环神经网络经常用于对特征的提取、填空,而不是预测未来