←上一篇 ↓↑ 下一篇→
1.4 通过时间的方向传播 回到目录 1.6 语言模型和序列生成

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

现在你已经了解了一种RNN结构,它的输入量 TxT_xTx​ 等于输出数量 TyT_yTy​ 。事实上,对于其他一些应用, TxT_xTx​ 和 TyT_yTy​ 并不一定相等。在这个视频里,你会看到更多的RNN的结构。

你应该还记得这周第一个视频中的那个幻灯片,那里有很多例子输入 xxx 和输出 yyy ,有各种类型,并不是所有的情况都满足 Tx=TyT_x=T_yTx​=Ty​ 。

比如音乐生成这个例子, TxT_xTx​ 可以是长度为1甚至为空集。再比如电影情感分类,输出 yyy 可以是1到5的整数,而输入是一个序列。在命名实体识别中,这个例子中输入长度和输出长度是一样的。

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

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

你已经见过 Tx=TyT_x=T_yTx​=Ty​ 的例子了(下图编号1所示),也就是我们输入序列 x<1>,x<2>x^{<1>},x^{<2>}x<1>,x<2> ,一直到 x<Tx>x^{<T_x>}x<Tx​> ,我们的循环神经网络这样工作,输入 x<1>x^{<1>}x<1> 来计算 y^<1>,y^<2>\hat{y}^{<1>},\hat{y}^{<2>}y^​<1>,y^​<2> 等等一直到 y^<Tx>\hat{y}^{<T_x>}y^​<Tx​> 。在原先的图里,我会画一串圆圈表示神经元,大部分时候为了让符号更加简单,此处就以简单的小圈表示。这个就叫做“多对多”(many-to-many)的结构,因为输入序列有很多的输入,而输出序列也有很多输出。

现在我们看另外一个例子,假如说,你想处理情感分类问题(下图编号2所示),这里 xxx 可能是一段文本,比如一个电影的评论,“These is nothing to like in this movie.”(“这部电影没什么还看的。”),所以 xxx 就是一个序列,而 yyy 可能是从1到5的一个数字,或者是0或1,这代表正面评价和负面评价,而数字1到5代表电影是1星,2星,3星,4星还是5星。所以在这个例子中,我们可以简化神经网络的结构,输入 x<1>,x<2>x^{<1>},x^{<2>}x<1>,x<2> ,一次输入一个单词,如果输入文本是“These is nothing to like in this movie”,那么单词的对应如下图编号2所示。我们不再在每个时间上都有输出了,而是让这个RNN网络读入整个句子,然后在最后一个时间上得到输出,这样输入的就是整个句子,所以这个神经网络叫做“多对一”(many-to-one)结构,因为它有很多输入,很多的单词,然后输出一个数字。

为了完整性,还要补充一个“一对一”(one-to-one)的结构(上图编号3所示),这个可能没有那么重要,这就是一个小型的标准的神经网络,输入 xxx 然后得到输出 yyy ,我们这个系列课程的前两个课程已经讨论过这种类型的神经网络了。

除了“多对一”的结构,也可以有“一对多”(one-to-many)的结构。对于一个“一对多”神经网络结构的例子就是音乐生成(上图编号1所示),事实上,你会在这个课后编程练习中去实现这样的模型,你的目标是使用一个神经网络输出一些音符。对应于一段音乐,输入 xxx 可以是一个整数,表示你想要的音乐类型或者是你想要的音乐的第一个音符,并且如果你什么都不想输入, xxx 可以是空的输入,可设为0向量。

这样这个神经网络的结构,首先是你的输入 xxx ,然后得到RNN的输出,第一个值,然后就没有输入了,再得到第二个输出,接着输出第三个值等等,一直到合成这个音乐作品的最后一个音符,这里也可以写上输入 a<0>a^{<0>}a<0> (上图编号3所示)。有一个后面才会讲到的技术细节,当你生成序列时通常会把第一个合成的输出也喂给下一层(上图编号4所示),所以实际的网络结构最终就像这个样子。

我们已经讨论了“多对多”、“多对一”、“一对一”和“一对多”的结构,对于“多对多”的结构还有一个有趣的例子值得详细说一下,就是输入和输出长度不同的情况。你刚才看过的多对多的例子,它的输入长度和输出长度是完全一样的。而对于像机器翻译这样的应用,输入句子的单词的数量,比如说一个法语的句子,和输出句子的单词数量,比如翻译成英语,这两个句子的长度可能不同,所以还需要一个新的网络结构,一个不同的神经网络(上图编号2所示)。首先读入这个句子,读入这个输入,比如你要将法语翻译成英语,读完之后,这个网络就会输出翻译结果。有了这种结构 TxT_xTx​ 和 TyT_yTy​ 就可以是不同的长度了。同样,你也可以画上这个 a<0>a^{<0>}a<0> 。这个网络的结构有两个不同的部分,这(上图编号5所示)是一个编码器,获取输入,比如法语句子,这(上图编号6所示)是解码器,它会读取整个句子,然后输出翻译成其他语言的结果。

这就是一个“多对多”结构的例子,到这周结束的时候,你就能对这些各种各样结构的基本构件有一个很好的理解。严格来说,还有一种结构,我们会在第四周涉及到,就是“注意力”(attention based)结构,但是根据我们现在画的这些图不好理解这个模型。

总结一下这些各种各样的RNN结构,这(上图编号1所示)是“一对一”的结构,当去掉 a<0>a^{<0>}a<0> 时它就是一种标准类型的神经网络。还有一种“一对多”的结构(上图编号2所示),比如音乐生成或者序列生成。还有“多对一”,这(上图编号3所示)是情感分类的例子,首先读取输入,一个电影评论的文本,然后判断他们是否喜欢电影还是不喜欢。还有“多对多”的结构(上图编号4所示),命名实体识别就是“多对多”的例子,其中 Tx=TyT_x=T_yTx​=Ty​ 。最后还有一种“多对多”结构的其他版本(上图编号5所示),对于像机器翻译这样的应用, TxT_xTx​ 和 TyT_yTy​ 就可以不同了。

现在,你已经了解了大部分基本的模块,这些就是差不多所有的神经网络了,除了序列生成,有些细节的问题我们会在下节课讲解。

我希望你从本视频中了解到用这些RNN的基本模块,把它们组合在一起就可以构建各种各样的模型。但是正如我前面提到的,序列生成还有一些不一样的地方,在这周的练习里,你也会实现它,你需要构建一个语言模型,结果好的话会得到一些有趣的序列或者有意思的文本。下节课深入探讨序列生成。

课程板书






←上一篇 ↓↑ 下一篇→
1.4 通过时间的方向传播 回到目录 1.6 语言模型和序列生成

1.5 不同类型的循环网络-深度学习第五课《序列模型》-Stanford吴恩达教授相关推荐

  1. 2.19 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.18 Logistic 损失函数的解释 回到目录 3.1 神经网络概览 文章目录 总结 习题 第 11 题 第 12 题 第 13 题 第 14 题 第 15 题 第 1 ...

  2. 深度学习教程(6) | 神经网络优化算法(吴恩达·完整版)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/35 本文地址:https://www.showmeai.tech/article-d ...

  3. 深度学习教程(10) | 卷积神经网络解读(吴恩达·完整版)

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/35 本文地址:http://www.showmeai.tech/article-det ...

  4. 3.12 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.11 随机初始化 回到目录 4.1 深层神经网络 文章目录 总结 习题 第 21 题 第 22 题 第 23 题 第 24 题 第 25 题 第 26 题 第 27 题 ...

  5. 3.5 向量化实现的解释-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.4 多个例子中的向量化 回到目录 3.6 激活函数 向量化实现的解释 (Explanation for Vectorized Implementation) 在上一个视频 ...

  6. 1.1 欢迎-深度学习第一课《神经网络与深度学习》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 无 回到目录 1.2 什么是神经网络 欢迎 第一个视频主要讲了什么是深度学习,深度学习能做些什么事情.以下是吴恩达老师的原话: 深度学习改变了传统互联网业务,例如如网络搜索和 ...

  7. 机器学习和深度学习到底怎么学?顶尖专家吴恩达告诉你

    机器学习和深度学习到底怎么学? 在外国版知乎上,有位网友问:新手如何学习机器学习?学习完MOOC的课程后有没有能力阅读研究论文或者真正的做出一点研究成果? 这个困惑很多人的问题吴恩达给出了详细的回答, ...

  8. 2.7 Inception 网络-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.6 谷歌 Inception 网络简介 回到目录 2.8 使用开源的实现方案 Inception 网络 (Inception Network) 在上节视频中,你已经见到了 ...

  9. 2.4 残差网络为什么有用-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.3 残差网络 回到目录 2.5 网络中的网络以及1x1卷积 残差网络为什么有用 (Why ResNets work?) 为什么ResNets能有如此好的表现,我们来看个例 ...

最新文章

  1. React 的性能优化(一)当 PureComponent 遇上 ImmutableJS
  2. Fluently NHibernate 插入CLOB字段
  3. 国内大数据开发中比较受欢迎的几款工具
  4. VisualBox中增大linux硬盘空间的方法
  5. MangoFix:iOS热修复另辟蹊径
  6. [剑指offer]面试题35:第一个只出现一次的字符
  7. 字符串hash(一)
  8. 【学习笔记】DAG / 一般有向图的支配树 / 灭绝树
  9. swift UIActivityIndicatorView
  10. delphi7 安装delphi 5 delphi 6控件
  11. C++ 虚析构函数作用
  12. iOS蓝牙开发(一)蓝牙相关基础知识
  13. android开发经典实战!来自阿里巴巴佛系安卓程序员的指南,专题解析
  14. 如何简单的将中文翻译为英文
  15. 交响曲、协奏曲、奏鸣曲
  16. 江苏省计算机二级高级office知识点,计算机二级高级Office常见知识点积累
  17. Ambiguous method overloading for method ****** 异常的解决办法
  18. IDC许可证是什么,如何申请IDC许可证办理
  19. Django连接MySQL数据库错误:django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module
  20. 【第十七届智能车】智能车图像处理(2)-赛道边界的简单提取和无元素循迹

热门文章

  1. 【LeetCode 剑指offer刷题】树题16:Kth Smallest Element in a BST
  2. flask基础之LocalProxy代理对象(八)
  3. MongoDB复制集与Raft协议异同点分析
  4. 初识Django —Python API接口编程入门
  5. 使用Windbg调试StackOverflowException异常
  6. 20150127--Session入库
  7. lamda表达式 随机取数据的方法
  8. OA学习笔记-001-项目介绍
  9. SparkStreaming运行出现 java.lang.NoClassDefFoundError: org/apache/htrace/Trace 错误
  10. 纪念逝去的岁月——C/C++字符串反转