# RNN

结构图\
![](https://352802547-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M7DcNFZmOW8qzXTiAei%2Fsync%2F43695b02b55d2f0dc7cd2e66a136ad8b660ad56d.png?generation=1589383553575741\&alt=media)

![](https://352802547-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M7DcNFZmOW8qzXTiAei%2Fsync%2Fef01c6c3380bf3cd137734daf076670fbac84087.png?generation=1589383541044061\&alt=media)

## 前向传播公式

$$a\_k$$是输出层,输入仅有隐含层的输出。\
$$\theta(a\_h)$$是隐含层输出,输入输入层+上一个隐含节点的输出。 也就是隐含层的输出，作为 输出层和下一个隐含节点 的输入。

![](https://352802547-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M7DcNFZmOW8qzXTiAei%2Fsync%2F4976d13f18b5e553603ae6e74fd55608d16c1f22.png?generation=1589383541160895\&alt=media)

## 后向传播公式

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

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

## 实践

* 每个隐藏层输出只是一个向量，跟普通神经网络一样。只不过这个输出向量会作为本层的上一时刻输入。
* RNN的输出也会作为输入，维度相同，那么该层的$$h\_{t-1}$$的参数是方阵。

  > 所需要知道的是： 输入的维度，本层的节点数（即输出的维度）。 即可知道 w\_x ,w\_h的shape。(tensorlayer每个层的节点数得一致啊，这没必要吧)
* 那么序列的长（时刻数）与输出：\
  一个输出：最后一层的输出都作为上一时刻的输入，只输出最后一个时刻的输出\
  多个输出：前层只有一个输出时刻， 再接一层 多个时刻输出

  > 所需要知道的是： 每层的时刻数 n\_steps ， 是否输出层 return\_last ，输出的时刻（比如最后三个时刻输出作为输出序列，但是tensorlayer没有个参数啊）

## 参考佳文

[循环神经网络(RNN, Recurrent Neural Networks)介绍](http://blog.csdn.net/heyongluoyao8/article/details/48636251)

[白话CTC(connectionist temporal classification)算法讲解](http://blog.csdn.net/luodongri/article/details/77005948)

[CTC模型](http://www.voidcn.com/blog/dream_catcher_10/article/p-2421996.html)

[CTC实现——compute ctc loss（2）](https://zhuanlan.zhihu.com/p/23309693)

[ 基于循环神经网络（RNN）的端到端（end-to-end）对话系统](http://blog.inet198.cn/?linmingan/article/details/51077837)\
[ 循环神经网络（RNN）反向传播算法（BPTT）理解 ](http://blog.inet198.cn/?linmingan/article/details/50958304)\
[递归神经网络不可思议的有效性](http://www.csdn.net/article/2015-08-28/2825569)\
[RNN以及LSTM的介绍和公式梳理](http://blog.csdn.net/Dark_Scope/article/details/47056361)\
[能模仿韩寒小四写作的神奇循环神经网络](http://blog.csdn.net/han_xiaoyang/article/details/51253274)

[AI 技术讲座精选：GOOGLE 基于神经网络的新型翻译系统是如何实现的](https://mp.weixin.qq.com/s?__biz=MzI0ODcxODk5OA==\&mid=2247484005\&idx=1\&sn=6b589b3761294b5c61efb13c67d7d98b)

[爆款论文提出简单循环单元SRU：像CNN一样快速训练RNN](https://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==\&mid=2650730786\&idx=1\&sn=4d6d1356e42bca7430b36654a983ec3f\&chksm=871b355cb06cbc4ab39bb3d286670e1d8e6b77eb27e8f7b6bfba33992994aacb1474ecb0463c#rd)

[机器学习大神Bengio最新论文发布，专注RNN优化难题，将在NIPS提出新概念fraternal dropout](https://mp.weixin.qq.com/s?__biz=MzI0ODcxODk5OA==\&mid=2247490509\&idx=1\&sn=287cfe9456e95ad662dabea79c648a61)

[重磅！一文彻底读懂智能对话系统！当前研究综述和未来趋势](https://mp.weixin.qq.com/s/Y-_Y8PLBRLE3wn1CPRogsw)
