5.1循环序列模型

觉得有用的话,欢迎一起讨论相互学习~Follow Me

1.5不同类型的循环神经网络

  • 上节中介绍的是 具有相同长度输入序列和输出序列的循环神经网络,但是对于很多应用\(T_{x}和T_{y}\)并不一定相等。 在此节会介绍不同的能够处理不同问题的循环神经网络。

    多对多循环神经网络

  • 对于命名实体识别的问题中,RNN的输出和输入序列长度一致--\(T_{x}=T_{y}\)。
    • 则在每读一个单词时都输出预测的值\(\hat{y}\)
    • 这是一个典型的多对多的问题。

      多对一循环神经网络

  • 对于情感识别问题而言,RNN的输入是一段文本序列,输出是一个分类的评价--输出的是一个数值。
    • 则只在输入整段文本后,在最后一个时间步进行预测,输出分类的结果,而不是每读入一个单词后输出结果。
    • 这是一个典型的多对一问题。

      一对多循环神经网络

  • 对于音乐生成问题而言,RNN的输入是一个数字或者一个单词,输出是一段音符。
    • X通常是一个数字用于表示想要生成的音乐类型,或者是生成音乐的第一个音符,或者X也可以为空为0向量。
    • 在第一个时间步输入X,再往后的时间步,不进行输入,但是输出随时间步的生成的音符,一直合成到这个音乐作品的最后一个音符。
    • 在这个例子中,需要将生成的输出也作为输入传入下一层(如图红线所示)

      输入和输出序列长度不等的循环神经网络

  • 对于机器翻译的问题而言,输入句子的单词的数量和输出句子的单词的数量可能不同
    • 通常在不同的时间步中依次读入输入序列,全部读完后,再输出RNN的结果,这样就可以使得RNN的输入序列长度和输出序列长度不同了。
    • 这种网络可以被分为两个部分,其中前段部分被称为编码器“encoder”用于获取输入序列,后段部分被称为解码器“decoder”,其会读取所有输入然后输出翻译成其他语言的结果。

      循环神经网络结构总结


1.6语言模型与序列生成Language model and sequence generation

语言模型

  • 对于语音识别系统,当你听见一个句子“the apple and pear salad was delicious”,但是语句发音会让语音识别系统识别出下面两个句子:

    • The apple and pair salad.(苹果和一对沙拉)
    • The apple and pear salad.(苹果和梨沙拉)
  • 句子的本意是输出下面的句子,但是由于1,2两句发音十分相似,并不能很好的识别1,2两句话.此时就需要语言模型--他能计算出这两句话各自的可能性。
    • 语言模型能判断句子出现的概率

      使用RNN建立语言模型

  • 训练集: 对于一个语言模型而言首先需要一个很大的文本语料库--数量众多的英文句子组成的文本
    • 对于语料库中的一个句子来说,首先按照单词将其标记成为一个个独立的单词,并且在句子末尾加上EOS符号用以表示一个完整的句子。
    • 对于标点符号,可以自己认定所建立的语言模型中是否需要标记出标点符号。
    • 如果训练集中有一些词并不在字典中,字典一般定义了最常用的词汇。例如:对于句子:"The Egyptian Mau is a bread of cat. "而言Mau是个不存在在字典中的词汇,此时将这个词标记为UNK--用于代表未知词。语言模型只针对UNK(unknown word)计算单词出现的概率而不是针对特定的Mau这个单词。

Cats average 15 hours of sleep a day.

  1. 初始化\(X^{<1>}=\vec{0},a^{<0>}=\vec{0}\) 通过前向传播使用Softmax计算字典中各个单词出现的概率 输出字典中所有词的概率\(\hat{y}^{<1>}\)
  2. 在第二时间步中,使用激活项\(a^{<1>}\),并且把正确的第一个单词cats传入作为\(y^{<1>}\)相当于告诉RNN模型第一个词的正确答案。然后计算出字典中各个词的概率\(\hat{y}^{<2>}\),相当于计算P( _ |"cats")
  3. 在第三时间步中,使用激活项\(a^{<2>}\),并且把正确的第而个单词average传入作为\(y^{<2>}\)相当于告诉RNN模型第二个词的正确答案。然后计算出字典中各个词的概率\(\hat{y}^{<3>}\),相当于计算P( _ |"cat average")

RNN损失函数

数学原理

[DeeplearningAI笔记]序列模型1.5-1.6不同类型的循环神经网络/语言模型与序列生成的更多相关文章

  1. Oracle-4 - :超级适合初学者的入门级笔记:plsql,基本语法,记录类型,循环,游标,异常处理,存储过程,存储函数,触发器

    初学者可以从查询到现在的pl/sql的内容都可以在我这里的笔记中找到,希望能帮到大家,视频资源在 资源, 我自己的全套笔记在  笔记 在pl/sql中可以继续使用的sql关键字有:update del ...

  2. DeepLearning.ai学习笔记(五)序列模型 -- week1 循环序列模型

    一.为什么选择序列模型 序列模型可以用于很多领域,如语音识别,撰写文章等等.总之很多优点... 二.数学符号 为了后面方便说明,先将会用到的数学符号进行介绍. 以下图为例,假如我们需要定位一句话中人名 ...

  3. ng-深度学习-课程笔记-15: 循环序列模型(Week1)

    1 数学符号(Notation) $ x^{<1>}, x^{<2>}, ..., x^{<t>}, ..., x^{<q>} $ 表示一段输入序列x, ...

  4. 吴恩达《深度学习》-第五门课 序列模型(Sequence Models)-第三周 序列模型和注意力机制(Sequence models & Attention mechanism)-课程笔记

    第三周 序列模型和注意力机制(Sequence models & Attention mechanism) 3.1 序列结构的各种序列(Various sequence to sequence ...

  5. 吴恩达《深度学习》第五门课(1)循环序列模型(RNN)

    1.1为什么选择序列模型 (1)序列模型广泛应用于语音识别,音乐生成,情感分析,DNA序列分析,机器翻译,视频行为识别,命名实体识别等众多领域. (2)上面那些问题可以看成使用(x,y)作为训练集的监 ...

  6. 序列模型(5)-----双向神经网络(BRNN)和深层循环神经网络(Deep RNN)

    一.双向循环神经网络BRNN 采用BRNN原因: 双向RNN,即可以从过去的时间点获取记忆,又可以从未来的时间点获取信息.为什么要获取未来的信息呢? 判断下面句子中Teddy是否是人名,如果只从前面两 ...

  7. 【学习笔记】循环神经网络(RNN)

    前言 多方寻找视频于博客.学习笔记,依然不能完全熟悉RNN,因此决定还是回到书本(<神经网络与深度学习>第六章),一点点把啃下来,因为这一章对于整个NLP学习十分重要,我想打好基础. 当然 ...

  8. [DeeplearningAI笔记]序列模型3.9-3.10语音辨识/CTC损失函数/触发字检测

    5.3序列模型与注意力机制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.9语音辨识 Speech recognition 问题描述 对于音频片段(audio clip)x ,y生成文本 ...

  9. [DeeplearningAI笔记]序列模型3.7-3.8注意力模型

    5.3序列模型与注意力机制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.7注意力模型直观理解Attention model intuition 长序列问题 The problem of ...

随机推荐

  1. Segments CodeForces 909B (找规律)

    Description You are given an integer N. Consider all possible segments (线段,划分)on the coordinate axis ...

  2. 【Alpha】阶段第二次Scrum Meeting

    [Alpha]阶段第二次Scrum Meeting 工作情况 团队成员 今日已完成任务 明日待完成任务 刘峻辰 发表评论接口 更新评论接口 赵智源 部署实际项目 编写脚本实现持续集成 肖萌威 编写注册 ...

  3. 团队开发——软件需求分析报告(Hello World 团队)

    一.   项目名称 超级迷宫 二.   设计背景 随着生活节奏加快,游戏更新速度的加快,游戏大同小异缺少新颖度,同时为了满足多游戏的结合,充实人们的生活,同时增加知识,有协作模式增进友谊和感情,在闲暇 ...

  4. CodeForces 508E Arthur and Brackets 贪心

    题目: E. Arthur and Brackets time limit per test 2 seconds memory limit per test 128 megabytes input s ...

  5. java 队列的使用(转载)

    转载声明:http://blog.csdn.net/lzy_lizhiyang/article/details/48311925 先我们要知道使用队列的目的是什么?一般情况下,如果是一些及时消息的处理 ...

  6. 【SSH框架】之Struts2系列(一)

    微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系 1.Struts2框架概述 (1).什么是Struts2 Struts2是一种基于MVC模式的轻量 ...

  7. lintcode-488-快乐数

    488-快乐数 写一个算法来判断一个数是不是"快乐数". 一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为 ...

  8. iOS- Swift和Object-C的混合编程

    1.前言   事实证明,在短时间内Swift还取代不了Object-C, 而且.... Apple Swift 开发小组的人说的:「We'll recommend people start with ...

  9. 【剑指offer】Java实现(持续更新中)

    面试题3 二维数组中的查找 Leetcode--74 Search a 2D Matrix /*Java Write an efficient algorithm that searches for ...

  10. 关于 Oracle Preinstallation RPM

    About the Oracle Preinstallation RPM 来源 https://docs.oracle.com/en/database/oracle/oracle-database/1 ...