吴恩达deepLearning.ai循环神经网络RNN学习笔记_看图就懂了!!!(理论篇)

吴恩达deepLearning.ai循环神经网络RNN学习笔记_看图就懂了!!!(理论篇)

 

数学系的一线研发,关注 数据结构 | 深度学习 | 职场文章分享 

 

前言

目录:

    RNN提出的背景

        - 一个问题

        - 为什么不用标准神经网络

        - RNN模型怎么解决这个问题

        - RNN模型适用的数据特征

        - RNN几种类型

    RNN模型结构

        - RNN block

        - 简化符号表示

        - stacked RNN

        - 双向RNN

        - 梯度消失爆炸问题

     GRU模型结构

     LSTM模型结构 

        - LSTM背后的关键思想

        - Step by Step理解LSTM

 

本文可以解答:

RNN用来解决什么问题,什么样的数据特征适合用它来解决

​RNN的缺陷是什么,LSTM,GRU是如何解决这些缺陷的

理解从简单RNN到LSTM的每个模型的结构

 

RNN提出背景/适用场景

 

一个问题

 

我们考虑一下这么一个问题,任意给定一句话,判断句子里的单词是不是人名的一部分。比如输入

x : Harry Potter and Hermione Granger invented a new spell.

单词有

['Harry', 'Potter', 'and', 'Hermione', 'Granger', 'invented', 'a', 'new', 'spell']

如果1表示单词是人名一部分,0表示不是人名的部分,那么输出的y就应该是

[1, 1, 0, 1, 1, 0, 0, 0, 0]

y的组成是和x等长,相同的index对应x中元素是不是人名。我们把x中的每个单词用one-hot向量来表征,如下所示。

 

吴恩达deepLearning.ai循环神经网络RNN学习笔记_看图就懂了!!!(理论篇)

 

为什么不用标准的神经网络?

 

如果我们用标准的神经网络来解决这个问题,标准神经网络的结构是这样的

 

吴恩达deepLearning.ai循环神经网络RNN学习笔记_看图就懂了!!!(理论篇)

 

标准神经网络的流程,将样本数据x一次性输入,从左边传到右边(输出层)。这样做不好的地方在于:

输入和输出的长度不固定,比如有的句子输入长度是10,有的句子长度就不是10。

如果使用标准网络,它不能共享文本不同位置学习到的东西,比如知道Harry是人名一部分,如果第i个位置又出现了Harray,它是不能自动识别的。

 

RNN模型怎么解决这个问题

 

吴恩达deepLearning.ai循环神经网络RNN学习笔记_看图就懂了!!!(理论篇)

 

RNN对数据的处理流程如上图所示,它不会同时输入数据。我们将首先输入X1(第一个单词Harray)得到预估值y1(Harray是不是人名一部分),然后将X1计算的结果传递到下一层与输入X2(第二个单词Potter)结合输出对X2的预测y2(Potter是不是人名一部分),这样y2的预测其实受X1的影响,以此类推。这样就解决了标准神经网络带来的问题。

 

RNN模型适用的数据特征

 

上面的句子有个特征:

States Dependency:当前的状态和上一步的状态是相关的;

数据是序列的(sequential): 当我们说一个数据是序列的,是指数据之间有时间顺序,它是在不同时间输入的,如果我们更改顺序,把句子中的单词打乱,它就变的不同失去含义了。能用标准神经网络训练的数据就是可以打乱顺序,所以我们可以在一开始就输入它们。

 

所以用RNN最大的动力就是它可以连接之前的数据,意味着这个模型关心之前的东西是什么,接下来将要出现什么。

 

RNN的几种类型

 

除了上面的例子,RNN根据不同的输入和输出数量,有以下几种类型:

 

吴恩达deepLearning.ai循环神经网络RNN学习笔记_看图就懂了!!!(理论篇)

 

one on one: 输入一张图片,输出图片中的活动。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjxgx.html