RNN

结构图

前向传播公式

aka_k是输出层,输入仅有隐含层的输出。 θ(ah)\theta(a_h)是隐含层输出,输入输入层+上一个隐含节点的输出。 也就是隐含层的输出,作为 输出层和下一个隐含节点 的输入。

后向传播公式

一个公式括号中的两个部分,一个是接收当前时间输出层传回的残差,第二个是接收下一时间隐藏层传回的残差。

原生的RNN会遇到一个很大的问题,叫做 The vanishing gradient problem for RNNs,也就是后面时间的节点对于前面时间的节点感知力下降,也就是忘事儿,网络一深就没法训练了。 所以出现了LSTM,加了记忆节点。

实践

  • 每个隐藏层输出只是一个向量,跟普通神经网络一样。只不过这个输出向量会作为本层的上一时刻输入。

  • RNN的输出也会作为输入,维度相同,那么该层的ht1h_{t-1}的参数是方阵。

    所需要知道的是: 输入的维度,本层的节点数(即输出的维度)。 即可知道 w_x ,w_h的shape。(tensorlayer每个层的节点数得一致啊,这没必要吧)

  • 那么序列的长(时刻数)与输出: 一个输出:最后一层的输出都作为上一时刻的输入,只输出最后一个时刻的输出 多个输出:前层只有一个输出时刻, 再接一层 多个时刻输出

    所需要知道的是: 每层的时刻数 n_steps , 是否输出层 return_last ,输出的时刻(比如最后三个时刻输出作为输出序列,但是tensorlayer没有个参数啊)

参考佳文

循环神经网络(RNN, Recurrent Neural Networks)介绍

白话CTC(connectionist temporal classification)算法讲解

CTC模型

CTC实现——compute ctc loss(2)

基于循环神经网络(RNN)的端到端(end-to-end)对话系统 循环神经网络(RNN)反向传播算法(BPTT)理解 递归神经网络不可思议的有效性 RNN以及LSTM的介绍和公式梳理 能模仿韩寒小四写作的神奇循环神经网络

AI 技术讲座精选:GOOGLE 基于神经网络的新型翻译系统是如何实现的

爆款论文提出简单循环单元SRU:像CNN一样快速训练RNN

机器学习大神Bengio最新论文发布,专注RNN优化难题,将在NIPS提出新概念fraternal dropout

重磅!一文彻底读懂智能对话系统!当前研究综述和未来趋势