【深層学習】RNN-Recurrent Neural Network

【深層学習】RNN-Recurrent Neural Network

RNN’s structure

Alt text

Alt text
如果去掉图中的w,那么这个图就是一个普通的全连接神经网络。
x代表输入,U代表输入到隐藏层的权重矩阵.V是将隐藏层值映射到输出层的权重矩阵
加入了w后,代表当前隐藏层的值不仅取决于当前的输入x,还取决于上一时刻的输入.每计算完一次隐藏层后,将他存储在w里,将会在下一时刻计算隐藏层时用到.用公式来具体表示就是

展开上面的图后就是Alt text
Alt text

N to 1

Alt text

N to N

Alt text

N to M

Alt text
Alt text

这种结构又叫Encoder-Decoder模型,也可以称之为Seq2Seq模型。在实现问题中,我们遇到的大部分序列都是不等长的,如机器翻译中,源语言和目标语言的句子往往并没有相同的长度。而Encoder-Decoder结构先将输入数据编码成一个上下文向量c,之后在通过这个上下文向量输出预测序列。

BPTT

Alt text

另$J=\sum_{t=1}^n J_t$
$s_t=\phi(Ux_t+Ws_{t-1})\\o_t=\varphi(Vs_t)$
另$s^_t=Ux_t+Ws_{t-1}\\o^_t=Vs_t$

Alt text
Alt text
Alt text

BRNN(双向RNN)

RNN 中对于当前时刻 t 通常会考虑之前时刻的信息而没有考虑下文的信息,Bidirectional RNNs 克服了这一缺点,其引入了对下文的考虑,其结构如下:

Alt text
可见 BRNN 引入了一套额外的隐层,但是输入与输出层是共享的,多了一个隐层意味着多了三套参数分别为 $U′、V′、W′ $。BRNN 的训练算法类似于 RNN ,forward pass 的过程如下:
Alt text

Gradient clipping: solution for exploding gradient

Alt text

-------------End of this passage-------------