RNN的5种典型结构

40 篇文章 0 订阅
19 篇文章 1 订阅

引入

我已经在文章[1]中介绍了一些序列模型的应用,比如“中文翻译为英文”,“NER命名实体识别”,“歌词生成”,“情绪识别”。

也在文章[2]中介绍了RNN结构的基本原理。

那问题来了,要实现“中译英”和“歌词生成”,我们选用的RNN结构是一样的吗?RNN有哪些典型的结构,分别对应哪些应用场景呢?

RNN的5种典型结构

首先,直接给出RNN的5中典型结构,如下图。

在这里插入图片描述

然后我们依次讲解。

1. One to One

这是最简单的RNN结构,可以理解为输入一个单词(或词向量),输出一个单词(label)。

这种结构其实就是最普通的神经网络,和RNN其实没多大关系,写到这里也只是为了保持理论的完整性,实践中几乎没有这样用RNN的。

2. One to Many

可以理解为输入一个label,就能输出很多单词。

这样的应用比如“根据音乐类型(输入int型的一个x),生成一篇音乐”,或者“生成文章”。

当然这里有一个技术细节

  • 当你生成序列时,通常会把第一个合成的输出,也喂给下一层
  • 所以图中把第一个字符的输出y,作为了第二个字符的输入

3. Many to One

可以理解为,输入一篇文章,输出文章作者的情绪(0/1)。

这种“多对一”的结构,主要用于做“情绪识别”,或者“文章分类”。

4. Many to Many (Tx=Ty)

这就是[2]中介绍的最经典的RNN结构,这种结构的输入序列数量和输出序列数量相同,主要用于实现“NER命名实体识别”的应用。

Tx表示输入序列的长度,Ty表示输出序列的长度。

5. Many to Many (Tx!=Ty)

在某些情况中,比如做“中译英”,我们的输入中文汉字数量,和输出的英文单词数量不一样。就必须要实现输入输出不等长的RNN。

这样的RNN有两部分组成,左半部分叫做“Encoder”(编码器,获取输入),右半部分叫做“Decoder”(解码器)。

参考

  • [0]. AndrewNg的《序列模型》教程
  • [1]. https://blog.csdn.net/ybdesire/article/details/102963683
  • [2]. https://blog.csdn.net/ybdesire/article/details/103449597
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值