基本的RNN模型
RNN模型的隐藏层是循环连接的,它的上一次输出会被重新输入
其中z是隐藏层,x是输入,y是输出;隐藏层的输出是与时间相关的,可以记为
zt=gz(Wz,zzt−1+Wx,zxt)
输出层倒是只与隐藏层输出有关
yt=gy(Wz,yzt)
基于时间的反向传播
给定一系列的输入向量及其对应的输出
x1,⋯,xT,y1⋯,yT
可以将网络进行T步展开,转换为前馈网络

其中的权重是同步更新的,称为基于时间的反向传播(BPTT)
堆叠循环神经网络(SRNN)
堆叠循环神经网络具有多个隐藏层,它们的输出都是与时间相关的。同样可以将它展开

长短期记忆(LSTM)
LSTM是一种特殊的RNN,它分为三个步骤:遗忘,记忆,输出,它分为四层,结构如下

其中h是隐藏层的输出,x是输入
首先由遗忘门f决定要舍弃哪些信息,它接收上一次隐藏层的输出ht−1与本次的输入xt,经由Sigmoid输出0−1之间的指数。输出1表示保留全部记忆,输出0表示忘记全部记忆

输出可以抽象地写为
ft=σ(Wf[ht−1,xt]+bf)
然后由输入门i决定要保存的新信息,它接收上一次的隐藏层输出ht−1和输入xt,经由Sigmoid输出0−1之间的指数;tanh层接收ht−1与xt,输出一个新信息向量Ct~,它被上面输入门的指数作用后向下一层传递。当it等于1时表示完整传递,it为0时表示不记忆新信息

可以抽象地将它们的输出表示为
it=σ(Wi[ht−1,xt]+bi)
Ct~=tanh(Wc[ht−1,xt]+bc)
然后根据遗忘门和输入门更新记忆单元

Ct=ft⋅Ct−1+it⋅Ct
最后由输出门o决定记忆单元的输出。它接收ht−1,x,经由SIgmoid输出一个0−1之间的指数,与记忆单元的值作用后输出

ot=σ(Wo[ht−1,xt]+bo)
ht=ot⋅tanh(Ct)