循环神经网络

循环神经网络(RNN)主要用于预测任务:基于当前和历史输入序列,预测序列的下一个字符。循环神经网络相对于普通神经网络而言,最大的特点在于颖仓变量HH的引进,用HtH_{t}表示HH在时间步tt的值,该变量记录了到当前字符为止的序列信息。历史信息的使用使得预测更为精确。循环神经网络的示意图:
动手学深度学习——循环神经网络

循环神经网络模型

假设XtRn×dboldsymbol{X_{t} in mathbb{R}^{n times d}}是时间步tt的小批量输入,HtRn×hboldsymbol{H_{t} in mathbb{R}^{n times h}}是该时间步的隐藏变量,则:
Ht=Φ(XtWxh+Ht1Whh+bh)boldsymbol{H_{t}}=Phi(boldsymbol{X_{t}}boldsymbol{W_{xh}}+boldsymbol{H_{t-1}}boldsymbol{W_{hh}}+boldsymbol{b_{h}})

其中WxhRd×hboldsymbol{W_{xh} in mathbb{R}^{d times h}}WhhRh×hboldsymbol{W_{hh} in mathbb{R}^{h times h}}bhR1×hboldsymbol{b_{h} in mathbb{R}^{1 times h}}ΦPhi函数是非线性**函数。由于引入了Ht1Whhboldsymbol{H_{t-1}}boldsymbol{W_{hh}}Htboldsymbol{H_{t}}能够捕捉截至当前时间步的序列的历史信息,就像是神经网络当前时间步的状态或记忆一样。循环神经网络的展开式示意图如下所示:
动手学深度学习——循环神经网络
在时间步,输出层的输出为:
Ot=HtWhq+bqboldsymbol{O_{t}}=boldsymbol{H_{t}}boldsymbol{W_{hq}}+boldsymbol{b_{q}}

其中WhqRd×hboldsymbol{W_{hq} in mathbb{R}^{d times h}}bqR1×qboldsymbol{b_{q} in mathbb{R}^{1 times q}}

注:上述来源于伯禹学习平台的《动手学深度学习》的学习笔记