作者:Raimi Bin Karim编译:ronghuaiyang
导读
RNN, LSTM 和 GRU是3个非常常用的循环神经网络,这三个东西里面的内部结构又是什么样的呢,很多人可能并不清楚,不过除了RNN外,其他两个也确实比较复杂,记不住没关系,看总能看明白吧,看不明白也没关系,动画演示给你看!
循环神经网络是一类人工神经网络,常与序列数据一起使用。最常见的3种循环神经网络是普通循环神经网络(RNN)、长短时记忆(LSTM)和门控循环单元(GRU)。
有很多关于循环神经网络的图解。我个人最喜欢的是Michael Nguyen在这里发表的那篇文章,因为他让我们对这些模型有了直观的认识,更重要的是,他的漂亮的插图让我们更容易理解。但我这篇文章背后的动机是更好地可视化这些单元中发生的事情,以及节点如何被共享,以及它们如何转换以提供输出节点。迈克尔的动画也给了我灵感。
本文研究了普通的RNN、LSTM和GRU单元。这是一个简短的文章,是给那些对这几个东西有所了解的人准备的。(我建议在阅读本文之前先阅读Michael的文章。)需要注意的是,以下动画是连续的,但不反映向量计算时的时间顺序。
这是我在插图中使用的图例。
![940c1150c70959eb173fd146afb39b3f.png](https://i-blog.csdnimg.cn/blog_migrate/632b2b2c3c1425b07a84a867aac09686.jpeg)
Fig. 0: 动画中的图例
在我的动画中,我使用的输入尺寸为3(绿色)和输出尺寸为2的隐含单元(红色),batch size为1。
我们开始!
RNN
![cc2224084ca18e609f99ad4629a0fd56.gif](https://i-blog.csdnimg.cn/blog_migrate/1a0162fc4550ee73a455aaaca02efc55.gif)
Fig. 1: RNN cell的动画
- t — 时间步
- X — 输入
- h — 隐含状态
- length of X — 输入的尺寸/维度
- length of h — 隐含单元的数量,注意,不同的库名字不一样,但是含义是一样的:
- - Keras — state_size,units
- - PyTorch — hidden_size
- - TensorFlow — num_units
LSTM
![93d5c54ae7e39fc01ff30135f5c8f428.gif](https://i-blog.csdnimg.cn/blog_migrate/236d1f4bd6902a7296ab79e427511866.gif)
Fig. 2: LSTM cell的动画
- C — cell 状态
注意,cell状态的维度和隐含状态的维度是相同的
GRU
![c0a18425c9188fefc2b0bc48306e9419.gif](https://i-blog.csdnimg.cn/blog_migrate/1419a137c73afcfac78fd26e448ea488.gif)
Fig. 3: GRU cell的动画
希望这些动画可以帮助到你,这里是这些cells的静态图:
![e360b34f2da8159409edbf181f1e1631.png](https://i-blog.csdnimg.cn/blog_migrate/f31e6d0c32df902075365625c0537951.jpeg)
Fig. 4: RNN cell
![496d56e949d6d23fc16602b463e64fc4.png](https://i-blog.csdnimg.cn/blog_migrate/c08b6786e24fe1ebeed241e9830b1b2c.jpeg)
Fig. 5: LSTM cell
![015a297b3e64126c40851abe254c8e07.png](https://i-blog.csdnimg.cn/blog_migrate/6c41c99a0b09f941a6e5b77dfb866eba.jpeg)
Fig. 6: GRU cell
原文链接:
https://towardsdatascience.com/animated-rnn-lstm-and-gru-ef124d06cf45
更多文章,请关注微信公众号:AI公园