从动图中理解 RNN,LSTM 和 GRU
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从动图中理解 RNN,LSTM 和 GRU相关的知识,希望对你有一定的参考价值。
参考技术A递归神经网络(RNNs)是一类常用的序列数据人工神经网络。三种最常见的递归神经网络类型分别是:
要指出的一点是,我将使用"RNNS"来统称本质上是递归神经网络结构,"vanilla RNN"来指代在图一所展示的最简单的循环神经网络结构.
有很多关于递归神经网络的图解.
我个人最喜欢的一个是Michael Nguyen发表在《走向数据科学》(Towards Data Science)的这篇文章,因为他不仅给我们提供了对这些模型的直觉,更重要的是这些漂亮的插图,使我们更容易理解。但我发表这篇文章的动机是为了更好地理解这些单元中发生了什么,节点是如何共享的,以及它们是如何转换为输出节点。这里,我也受到了Michael的动画启发。
本文研究了vanilla RNN、LSTM和GRU单元。这是一个简短的概述,是为那些读过关于这些主题的文章的人准备的。(我建议在阅读本文之前先阅读Michael的文章),需要注意的是,以下动画是按顺序引导的,但在向量化的机器计算过程中并不反映时间上的顺序。
下面是我用来做说明的图例:
图0:动画图例
在我的动画中,我使用了大小为3(绿色)的输入和2个隐藏单元(红色),批量大小为1。
让我们开始吧!
图1:vanilla RNN 示意动画
图2:LSTM 示意动画
注意,单元状态的维度与隐藏状态的维度相同。
图3:GRU 示意动画
希望这些动画能以某种方式帮助你!以下是静态图像中的概况:
图4:Vanilla RNN 单元
图5:LSTM 单元
图6:GRU 单元
一个提醒:我使用Google绘图来创建的这些示意图。
想要继续查看该篇文章相关链接和参考文献?雷锋网雷锋网雷锋网
点击【从动图中理解 RNN,LSTM 和 GRU】即可访问!
今日资源推荐: CCF-GAIR | 张大鹏教授演讲 PPT:生物特征识别的新进展 - 纪念中国人工智能40年
非常高兴受邀参加本次会议,让我有机会汇报我的最新工作。今天我的讲题是“纪念中国人工智能40周年”,而我本人是中国学位法公布后首届入学的研究生,也是哈工大毕业的首个计算机博士,从 1980 年入学开始算起,我基本见证了中国人工智能这 40 年的发展历程。
这是我研究生期间所能找到最早的一篇论文,选题与指纹识别有关。 1984 年,陈光熙教授是我的博士生导师,图片展示的是当年哈工大进行博士学位论文答辩的场景。
点击链接获取:https://ai.yanxishe.com/page/resourceDetail/905
lstm和gru结构的再理解
参考技术A我看大部分介绍rnn的文章里面都只画了cell的图,但是这对一个刚入门的人来说是会造成很大的误解,而正确的介绍方法应该先介绍rnn的总体结构,然后再介绍cell的结构。这才有可能对rnn有一个更清晰的认识。
我们在网上多是看到这样的图
cell是什么呢,我们首先回到MLP结构中
RNN中的cell其实就是MLP结构中隐藏层的神经元。但是这个神经元有点特殊,它加入了时序的特点,所以不同时间段它的表达是不一样的。
所以,RNN正确的模型结构图应该是这样:
横向是不同的时序,纵向是不同的层。这样是不是会更好理解了呢。
而LSTM和GRU只是cell的变种形式,总体上RNN的结构是不变的。双向RNN的总体结构也没变,也只是cell的形式有所变化。
好了,下面回到经常看到的图
这张图是一个lstm的总体结构,我们知道,lstm里面最重要的概念是“门结构(gate)”,分为遗忘门,输入门和输出门。这里分4步来理解这个cell的结构。
可以看到公式里面的[h, x],这里表示将这一时刻的输入x[t],和上一时刻t-1的输出h[t-1]做一个concat,然后经过sigmoid函数。
因为sigmoid输出是0和1(大部分),这里面0和1与后面做乘法的时候,等于相应的让一些信息变成了0,就等于是忘记了一些信息。这里其实一个开关,控制信息的通过。
举个例子,比如完形填空中填“他”或者“她”的问题,细胞状态可能包含当前主语的类别,当我们看到新的代词,我们希望忘记旧的代词。
公式中[h,x]还是做的concat操作。
这里的意思可以看作为放什么新信息到细胞状态(C[t])中。
i[t]有一个sigmoid,类似于遗忘操作,这里就是对新知识的筛选, C`[t]可以将其看作全部的新知识。
之前两补的操作就是为了更新细胞的状态,更新知识体系。包括让细胞忘记一些东西,然后给细胞补充新知识。
这里另外说一点,为什么lstm可以解决RNN中梯度弥散/消失的问题。
因为C[t]是又两个结果相加得到,求导时会保留更新梯度。
lstm结构理解完了,其实gru结构的理解方式基本一致。还是那张图
这里和lstm不同的是:
如果r[t] = 1,z[t] = 1,那么gru和普通rnn的cell就是一样的。
因为gru参数更少,所以gru训练起来比lstm更简单。
但是, 这两种cell最后的结果差不了太多! 用的时候不必纠结选择哪种结构。
好了,lstm和gru说完了,下次来点新玩意,seq2seq和attention。
以上是关于从动图中理解 RNN,LSTM 和 GRU的主要内容,如果未能解决你的问题,请参考以下文章