循环神经网络是一类常用在序列数据上的人工神经网络。三种最常见的循环神经网络分别是:
1.维尼拉循环神经网络(vanilla RNN)
2.长短期记忆网络(LSTM),由Hochreiter和Schmidhuber于1997年提出
3.门控循环单元网络(GRU),由Cho等人于2014年提出
现在可以查到许多解释循环神经网络这一概念的图示。不过我个人比较推荐的是Michael Nguyen在《迈向数据科学》上发表的这篇文章,因为这篇文章撰写了关于这些模型的很多知识,而且提供了清楚易懂的插图,易于读者理解。这篇文章目的是启发大家思考如何更好地可视化这些单元中发生的情况,节点是如何共享的,以及它们怎么转换为输出节点这些问题。Michael 的精彩动画也给了我很大的启发,从中受益匪浅。
本文主要研究了维尼拉循环神经(RNN)、长短期记忆(LSTM)和门控循环单元(GRU)这三个网络,介绍的比较简短,适用于已经了解过这几个网络的读者(并且建议在阅读本文之前阅读Michael的文章)。请读者注意,下面的动画是按顺序排列的,读者请依序查看。
如下图所示,是我用来做插图的图例。
在所演示的动画中,我使用了3(绿色)和2个隐藏单元(红色)的输入大小,批处理大小为1。
演示如下:
Vanilla RNN
Fig. 1: Animated RNN cell
* t — time step 时间步长
* X — input 输入
* h — hidden state 隐藏状态
* length of X — size/dimension of input X的长度表示输入的大小,尺寸
* length of h — no. of hidden units. h的长度表示不属于隐蔽的单位
注意,不同的库可以用不同的方式调用它们,但它们的含义都是相同的。
- Keras — state_size ,units
- PyTorch — hidden_size
- TensorFlow — num_units
LSTM
Fig. 2: Animated LSTM cell
* C — cell state
注意,单元格状态的维度与隐藏状态的维度相同。
GRU
Fig. 3: Animated GRU cell
希望这些动画片对你有所帮助!以下是静态图像中的单元格的概述:
非常感谢德里克和任杰对本文的想法、建议和纠正。
如果您想继续了解人工智能和深度学习,可以在Twitter@remykarem上阅读我写的关于这些的摘要文章和演示。
原文链接
本文为云栖社区原创内容,未经允许不得转载。