循环神经网络(RNN)主要用于预测任务:基于当前和历史输入序列,预测序列的下一个字符。循环神经网络相对于普通神经网络而言,最大的特点在于颖仓变量H H H 的引进,用H t H_{t} H t 表示H H H 在时间步t t t 的值,该变量记录了到当前字符为止的序列信息。历史信息的使用使得预测更为精确。循环神经网络的示意图:
循环神经网络模型
假设X t ∈ R n × d boldsymbol{X_{t} in mathbb{R}^{n times d}} X t ∈ R n × d 是时间步t t t 的小批量输入,H t ∈ R n × h boldsymbol{H_{t} in mathbb{R}^{n times h}} H t ∈ R n × h 是该时间步的隐藏变量,则:H t = Φ ( X t W x h + H t − 1 W h h + b h ) boldsymbol{H_{t}}=Phi(boldsymbol{X_{t}}boldsymbol{W_{xh}}+boldsymbol{H_{t-1}}boldsymbol{W_{hh}}+boldsymbol{b_{h}}) H t = Φ ( X t W x h + H t − 1 W h h + b h )
其中W x h ∈ R d × h boldsymbol{W_{xh} in mathbb{R}^{d times h}} W x h ∈ R d × h ,W h h ∈ R h × h boldsymbol{W_{hh} in mathbb{R}^{h times h}} W h h ∈ R h × h ,b h ∈ R 1 × h boldsymbol{b_{h} in mathbb{R}^{1 times h}} b h ∈ R 1 × h ,Φ Phi Φ 函数是非线性**函数。由于引入了H t − 1 W h h boldsymbol{H_{t-1}}boldsymbol{W_{hh}} H t − 1 W h h ,H t boldsymbol{H_{t}} H t 能够捕捉截至当前时间步的序列的历史信息,就像是神经网络当前时间步的状态或记忆一样。循环神经网络的展开式示意图如下所示: 在时间步,输出层的输出为:O t = H t W h q + b q boldsymbol{O_{t}}=boldsymbol{H_{t}}boldsymbol{W_{hq}}+boldsymbol{b_{q}} O t = H t W h q + b q
其中W h q ∈ R d × h boldsymbol{W_{hq} in mathbb{R}^{d times h}} W h q ∈ R d × h ,b q ∈ R 1 × q boldsymbol{b_{q} in mathbb{R}^{1 times q}} b q ∈ R 1 × q 。
注:上述来源于伯禹学习平台的《动手学深度学习》的学习笔记
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:动手学深度学习——循环神经网络 - Python技术站