不同类型的循环神经网络(Different types of RNNs)

来源:Coursera吴恩达深度学习课程

到目前为止我们已经了解了一种RNN结构,它的输入量T_x等于输出数量T_y。事实上,对于其他一些应用,和l两者并不一定相等。接下来,我们会看到更多的RNN的结构

如上图,比如音乐生成(music generation),T_x可以是长度为1甚至为空集。再比如电影情感分类(sentiment classification),输出y可以是1到5的整数,而输入是一个序列。在命名实体识别(name entity recognition)中,这个例子中输入长度和输出长度是一样的。

还有一些情况,输入长度和输出长度不同,他们都是序列但长度不同,比如机器翻译(machine translation),一个法语句子和一个英语句子不同数量的单词却能表达同一个意思。

所以我们应该修改基本的RNN结构来处理这些问题,内容参考了Andrej Karpathy的博客,一篇叫做《循环神经网络的非理性效果》(“The Unreasonable Effectiveness of Recurrent Neural Networks”)的文章,我们看一些例子。

(备注:上图中小圆圈表示神经元。)如上图左侧所示,叫“多对多”(many-to-many)的结构,因为输入序列有很多的输入,而输出序列也有很多输出。再看一个例子(上图中间),处理情感分类问题时,x就是一个序列(可能是一段文本),而y可能是从1到5的一个数字,或者是0或1,这代表正面评价和负面评价,而数字1到5代表电影是1星,2星,3星,4星还是5星。这个神经网络叫做“多对一”(many-to-one)结构,因为它有很多输入,很多的单词,然后输出一个数字。接着“一对一”(one-to-one)的结构(上图最右侧所示),这个可能没有那么重要,这就是一个小型的标准的神经网络,输入x然后得到输出y。

除了“多对一”的结构,也可以有“一对多”(one-to-many)的结构。

如上图,对于一个“一对多”神经网络结构的例子就是音乐生成(music generation),x可以是空的输入,可设为0向量。首先是你的输入x,然后得到RNN的输出,第一个值,然后就没有输入了,再得到第二个输出,接着输出第三个值等等,一直到合成这个音乐作品的最后一个音符。这里用到了一个技术细节:在生成序列时通常会把第一个合成的输出也喂给下一层(上图红色标记)。

对于“多对多”的结构还有一个有趣的例子,就是输入和输出长度不同的情况。比如机器翻译(machine translation),输入句子的单词的数量(比如说一个法语的句子)和输出句子的单词数量(比如翻译成英语),这两个句子的长度可能不同,所以还需要一个新的网络结构(如上图右侧)。这个网络的结构有两个不同的部分,第一部分是一个编码器(encoder),获取输入,比如法语句子,然后是解码器(decoder),它会读取整个句子,然后输出翻译成其他语言的结果。

严格来说,还有“注意力”结构(attention based architectures),但是根据我们现在画的这些图不好理解这个模型。

接着我们总结一下这些各种各样的RNN结构:

①“一对一”的结构,当去掉a^时是一种标准类型的神经网络。②“一对多”的结构,比如音乐生成或者序列生成。③“多对一”,如情感分类,首先读取输入,然后判断他们是否喜欢电影还是不喜欢。还有“多对多”的结构,④命名实体识别就是“多对多”的例子,其中T_x = T_y。⑤还有一种“多对多”结构例如机器翻译,T_x和T_y可以不同。

本篇文章我们了解到用这些RNN的基本模块,把它们组合在一起就可以构建各种各样的模型。下篇文章深入探讨序列生成。

说明:记录学习笔记,如果错误欢迎指正!转载请联系我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值