深层循环神经网络 (Deep RNNs)
目前你学到的不同RNN的版本,每一个都可以独当一面。但是要学习非常复杂的函数,通常我们会把RNN的多个层堆叠在一起构建更深的模型。这节视频里我们会学到如何构建这些更深的RNN。
一个标准的神经网络,首先是输入,然后堆叠上隐含层,所以这里应该有**值,比如说第一层是,接着堆叠上下一层,**值,可以再加一层,然后得到预测值。深层的RNN网络跟这个有点像,用手画的这个网络(下图编号1所示),然后把它按时间展开就是了,我们看看。
这是我们一直见到的标准的RNN(上图编号3所示方框内的RNN),只是我把这里的符号稍微改了一下,不再用原来的表示0时刻的**值了,而是用来表示第一层(上图编号4所示),所以我们现在用来表示第l层的**值,这个表示第个时间点,这样就可以表示。第一层第一个时间点的**值,这()就是第一层第二个时间点的**值,和。然后我们把这些(上图编号4方框内所示的部分)堆叠在上面,这就是一个有三个隐层的新的网络。
我们看个具体的例子,看看这个值(,上图编号5所示)是怎么算的。**值有两个输入,一个是从下面过来的输入(上图编号6所示),还有一个是从左边过来的输入(上图编号7所示),,这就是这个**值的计算方法。参数和在这一层的计算里都一样,相对应地第一层也有自己的参数和。
对于像左边这样标准的神经网络,你可能见过很深的网络,甚至于100层深,而对于RNN来说,有三层就已经不少了。由于时间的维度,RNN网络会变得相当大,即使只有很少的几层,很少会看到这种网络堆叠到100层。但有一种会容易见到,就是在每一个上面堆叠循环层,把这里的输出去掉(上图编号1所示),然后换成一些深的层,这些层并不水平连接,只是一个深层的网络,然后用来预测。同样这里(上图编号2所示)也加上一个深层网络,然后预测。这种类型的网络结构用的会稍微多一点,这种结构有三个循环单元,在时间上连接,接着一个网络在后面接一个网络,当然和也一样,这是一个深层网络,但没有水平方向上的连接,所以这种类型的结构我们会见得多一点。通常这些单元(上图编号3所示)没必要非是标准的RNN,最简单的RNN模型,也可以是GRU单元或者LSTM单元,并且,你也可以构建深层的双向RNN网络。由于深层的RNN训练需要很多计算资源,需要很长的时间,尽管看起来没有多少循环层,这个也就是在时间上连接了三个深层的循环层,你看不到多少深层的循环层,不像卷积神经网络一样有大量的隐含层。
这就是深层RNN的内容,从基本的RNN网络,基本的循环单元到GRU,LSTM,再到双向RNN,还有深层版的模型。这节课后,你已经可以构建很不错的学习序列的模型了。
课程板书
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:1.12 深层循环神经网络-深度学习第五课《序列模型》-Stanford吴恩达教授 - Python技术站