1、为什么选择序列模型

2、数学符号

用1来代表人名,0来代表非人名,句子x便可以用y=[1 1 0 1 1 0 0 0 0]来表示

3、循环网络模型


值得一提的是,共享特征还有助于减少神经网络中的参数数量,一定程度上减小了模型的计算复杂度。

RNN模型包含三类权重系数,分别是Wax,Waa,Wya。
优点:不同元素之间同一位置共享同一权重系数。
缺点:它只使用了这个序列中之前的信息来做出预测。比如作出预测y<3>的时候没有用到之后x<4> 、x<5>的信息。

4、正向传播


简化RNN标记

5、反向传播

6、循环神经网络的其他结构

吴恩达参考的论文《The Unreasonable Effectiveness of Recurrent Neural Networks》

  • many-to-many :Name entity recognition、Machine translation
  • many-to-one : Sentiment Classification
  • one-to-one : 之前学习的网络
  • one-to-many : Music generation

7、构建语言模型

在单词表中对句子中的每个单词进行one-hot编码,句子结尾用< EOS >进行编码,如果有不在单词表中的单词出现,用< UNK >进行编码。

输入a<0>和x<1>都是零向量,用softmax输出预测值y^ <1>代表第一个词可能是词汇表中每个词的概率p(a)、p(an)、p(be)…p(< unk>)、p(< EOS>),接下来x<2>等于真实值y<1>:cats作为输入,得到预测值y^ <2>代表在第一个词是cats的情况下第二个词可能是词汇表中每个词的概率p(a|cats)、p(an|cats)、p(be|cats)…p(< unk>|cats)、p(< EOS>|cats)。

最后这句话是“cats average 15 hours of sleep a day.< EOS>”的的概率p(y<1>,y<2>,···y<9>)可以用条件概率公式计算得到。

对语料库的每条语句进行RNN模型训练,最终得到的模型可以根据给出语句的前几个单词预测其余部分,将语句补充完整。例如给出“Cats average 15”,RNN模型可能预测完整的语句是“Cats average 15 hours of sleep a day.”。

7、对新序列进行采样

利用训练好的RNN语言模型,可以进行新的序列采样,从而随机产生新的语句。
基于字符的语言模型
优点:不会出现不在词汇表中的单词
缺点:会得到太多太长的序列

8、RNN中的梯度消失

RNN缺点:不擅长处理长期依赖

语句中可能存在跨度很大的依赖关系,即某个单词可能与它距离较远的某个单词具有强依赖关系。例如下面这两条语句:

  • The cat, which already ate fish, was full.
  • The cats, which already ate fish, were full.

由于跨度很大,普通的RNN网络容易出现梯度消失,捕捉不到它们之间的依赖,造成语法错误。
另一方面,RNN也可能出现梯度爆炸的问题,即gradient过大。常用的解决办法是设定一个阈值,一旦梯度最大值达到这个阈值,就对整个梯度向量进行尺度缩小。这种做法被称为梯度修剪(gradient clipping)。

9、门控制循环单元(GRU)

门控制循环单元(Gated Recurrent Unit):有效解决梯度消失问题,使RNN能捕获更长的依赖。
RNN的隐层单元结构如下:

其中a< t >的表达式为:

为解决上述问题,对上述单元进行修改,增加了记忆单元Cmemory cell,提供了记忆功能,GRU单元如下所示:

相关公式如下:

Γu意为update gate,更新门,是一个从0到1的数字。当Γu=1时,代表更新;当Γu=0时,代表记忆,保留之前的模块输出。

比如:The cat, which already ate…,was full.
cat处会产生一个c< t > 将猫是单数的信息传播到was处的Γu中,根据公式第三行,如果此时计算出来的Γu=0,则c< t >=c< t -1>不进行更新,谓词为was,如果Γu=1,则c< t >=c~< t >谓词更新为were。

由于Γu 使用了sigma激活函数,这个激活函数的特点是对于大部分输入的数来说,其对应的函数值都接近零,这样就能很大程度的保留之前的信息,这样就能很好的解决梯度消失的问题。

这一点跟CNN中的ResNets的作用有点类似。因此,Γu能够保证RNN模型中跨度很大的依赖关系不受影响,消除梯度消失问题。

上面介绍的是简化的GRU模型,完整的GRU添加了另外一个gate,即Γr,这个 Γr 告诉计算出的下一个c< t >的候选值跟c< t-1 >有多大的相关性。
表达式如下:

GRU特点:模型简单,计算速度快,易于构建大规模神经网络,出现在LSTM之后,现在逐渐在被人们采用。

10、长短期记忆(LSTM)

Long Short Term Memory甚至比GRU更加高效,对应的RNN隐层结构如图所示:


如果考虑c<t−1>对Γu,Γf,Γo的影响,可加入peephole connection,对LSTM的表达式进行修改:

GRU可以看成是简化的LSTM,两种方法都具有各自的优势。

11、双向循环网络(BRNN)

Bidirectional RNN:这个模型可以让你在序列的某点处,不仅可以获取之前的信息,还可以获取未来的信息。每个单元可以采用GRU或LSTM结构。BRNN的结构图如下:

这样网络就构成了无环图Acyclic graph:给定一个输入序列x^<1> 到 x^<3>, 这个序列首先计算前向的a^<1> 、a^<2>、 a^<3>, 而反向序列由a^<3> 开始计算到a^<1>,把这些所有激活值计算完后就可以计算预测结果了,比如下面的计算公式:

BRNN缺点:需要完整的数据的序列,才能预测任意位置。
比如:语音识别中,需要人完整的说完话,然后获取整段语音,才能处理这段语音进行识别。

12、深度循环网络(DRNN)

Deep RNN:当需要解决很复杂的问题时,可以将上面的一些RNN进行整合形成DRNN。

三层深度循环网络的结构示意图如下,其中 []:表示层数,<>:表示时间序

某个单元激活值的计算方式如下:

我们知道DNN层数可达100多,而Deep RNNs一般没有那么多层,3层RNNs已经较复杂了。

另外一种比较常用的Deep RNNs结构是每个输出层上还有一些垂直单元,如下图所示:

同样,每个单元可以是RNN、GRU、LSTM、BRNN。

RNN循环神经网络(吴恩达《序列模型》笔记一)相关推荐

  1. 吴恩达深度学习笔记(四)

    吴恩达深度学习笔记(四) 卷积神经网络CNN-第二版 卷积神经网络 深度卷积网络:实例探究 目标检测 特殊应用:人脸识别和神经风格转换 卷积神经网络编程作业 卷积神经网络CNN-第二版 卷积神经网络 ...

  2. 吴恩达机器学习学习笔记第七章:逻辑回归

    分类Classification分为正类和负类 (规定谁是正谁是负无所谓) 吴恩达老师举例几个例子:判断邮箱是否是垃圾邮箱 一个在线交易是否是诈骗 一个肿瘤是良性的还是恶性 如果我们用之前学习的lin ...

  3. 吴恩达机器学习课程笔记一

    吴恩达机器学习课程笔记 前言 监督学习---`Supervised learning` 无监督学习---`Unsupervised learning` 聚类 异常检测 降维 增强学习---`Reinf ...

  4. Machine Learning(吴恩达) 学习笔记(一)

    Machine Learning(吴恩达) 学习笔记(一) 1.什么是机器学习? 2.监督学习 3.无监督学习 4.单变量线性回归 4.1代价函数 4.2 梯度下降 5.代码回顾 最近在听吴恩达老师的 ...

  5. 吴恩达深度学习笔记六:序列模型

    周末出去耍了一下,回来又玩了两天游戏,耽误了好多时间啊,关键是连输20多局.哎,以后还是少玩游戏,多去做些有趣的事情吧,免得费时费力还不开心. 1. 循环神经网络(RNN:Recurrent Neur ...

  6. 吴恩达深度学习笔记——卷积神经网络(Convolutional Neural Networks)

    深度学习笔记导航 前言 传送门 卷积神经网络(Convolutional Neural Networks) 卷积神经网络基础(Foundations of Convolutional Neural N ...

  7. 吴恩达深度学习笔记——神经网络与深度学习(Neural Networks and Deep Learning)

    文章目录 前言 传送门 神经网络与深度学习(Neural Networks and Deep Learning) 绪论 梯度下降法与二分逻辑回归(Gradient Descend and Logist ...

  8. 神经网络 卷积神经网络,卷积神经网络 吴恩达

    吴恩达的人物经历 吴恩达1976年出生于伦敦,父亲是一位香港医生,英文名叫AndrewNg,吴恩达年轻时候在香港和新加坡度过. 1992年吴恩达就读新加坡莱佛士书院,并于1997年获得了卡内基梅隆大学 ...

  9. 吴恩达 深度神经网络,吴恩达神经网络课程

    如何评价吴恩达的学术地位 吴恩达(AndrewNg),斯坦福计算机系的副教授,师从机器学习的大师级人物MichaelI.Jordan. 同门师兄弟包括ZoubinGhahramani,TommiJaa ...

  10. 吴恩达深度学习笔记- lesson4 卷积神经网络

    文章目录 Week 1 卷积神经网络基础 4.1.1 计算机视觉(Computer vision) 4.1.2 边缘检测示例(Edge detection example) 4.1.3 更多边缘检测内 ...

最新文章

  1. SpringBoot 项目瘦身指南,瘦到不可思议!
  2. 电脑php在哪里,电脑上地址栏在哪?
  3. HDU 1269 移动城堡 联通分量 Tarjan
  4. jsapi.php必须传openid,【微信统一支付】发起支付, returnCode != SUCCESS, returnMsg = JSAPI支付必须传openid...
  5. 修改mysql数据库名方法_安全快速修改Mysql数据库名的5种方法
  6. 八大攻略破解高级口译阅读
  7. WIndows10下 MySQL 5.7(社区版)安装
  8. html meta标签
  9. gerrit docker运行失败 chown: /var/gerrit/review_site: Permission denied 【已解决】
  10. Node.js~在linux上的部署~pm2管理工具的使用
  11. Java爬虫爬取京东商城
  12. Android兼容性测试应该怎么做逼格更高呢?
  13. 区块链(一) 初识区块链
  14. Vue 的双向数据绑定原理是什么?
  15. 励志:滴滴打车CTO张博:生死战役,技术和时间赛跑
  16. python两张图片无缝合成一张,Python实现拼接多张图片的方法
  17. word 图片导入不翻转_如何在Microsoft Word中翻转图片
  18. 基于STM32F103系列单片机四路定时器电机编码器模式配置过程附源码
  19. 一加3t刷机后还卡_一加3T刷机包
  20. 【牛客网华为机试】HJ89 24点运算

热门文章

  1. 任务、进程、线程之间的区别
  2. 百面机器学习——第一章特征工程
  3. mysql查询数据库第一条记录_SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)...
  4. C++_IO类型_文件输入输出流_字符串流
  5. 智慧交通day01-算法库03:cv.dnn
  6. 数据结构之图:有向图的介绍与实现,Python代码实现——25
  7. 贪吃蛇python小白_面向 python 小白的贪吃蛇游戏
  8. 论文阅读:Spatial Transformer Networks
  9. Java 给编译器看的注释--Annotation
  10. LeetCode 1680. 连接连续二进制数字(位运算)