IT教程 ·

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

[源码分析] 从源码入手看 Flink Watermark 之传播过程

吴恩达deepLearning.ai循环神经网络RNN学习条记_看图就懂了!!!(理论篇) IT教程 第1张

媒介

目次:

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向量来表征,以下所示。

 

 

 

为何不必规范的神经收集?

 

假如我们用规范的神经收集来处置惩罚这个问题,规范神经收集的构造是如许的

 

 

 

规范神经收集的流程,将样本数据x一次性输入,从左侧传到右侧(输出层)。如许做不好的处所在于:

  • 输入和输出的长度不牢固,比方有的句子输入长度是10,有的句子长度就不是10。
  • 假如运用规范收集,它不能同享文本差别位置进修到的东西,比方晓得Harry是人名一部份,假如第i个位置又涌现了Harray,它是不能自动辨认的。

 

RNN模子怎样处置惩罚这个问题

 

 

 

RNN对数据的处置惩罚流程如上图所示,它不会同时输入数据。我们将起首输入X1(第一个单词Harray)获得预估值y1(Harray是否是人名一部份),然后将X1盘算的效果通报到下一层与输入X2(第二个单词Potter)连系输出对X2的展望y2(Potter是否是人名一部份),如许y2的展望实在受X1的影响,以此类推。如许就处置惩罚了规范神经收集带来的问题。

 

RNN模子实用的数据特性

 

上面的句子有个特性:

  • States Dependency:当前的状况和上一步的状况是相干的;
  • 数据是序列的(sequential): 当我们说一个数据是序列的,是指数据之间有时刻次序,它是在差别时刻输入的,假如我们变动次序,把句子中的单词打乱,它就变的差别落空寄义了。能用规范神经收集练习的数据就是可以打乱次序,所以我们可以在一开始就输入它们。

 

所以用RNN最大的动力就是它可以衔接之前的数据,意味着这个模子体贴之前的东西是什么,接下来将要涌现什么。

 

RNN的几种范例

 

除了上面的例子,RNN依据差别的输入和输出数目,有以下几种范例:

 

 

 

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

 

one  to many: 输入一张图片,输出形貌图片中的内容,个中输出的内容前后是有依靠的,相干的,比方上面一张图就是‘一个人在跑步’,‘一个’和‘人’是相干的,假如‘一个’变了,那末‘人’大概也会变。

 

many to one: 情绪分类,输入是一个句子,输出是评分,输入的前后是依靠相干的。

 

 

many to many: 翻译体系,将德语翻译成英语,输入和输出都是相干的。

 

 

many to many: 语音辨认,传入一段语音,输出是转换成的笔墨。

 

 

RNN的模子构造

 

RNN block

 

 

我们的模子将会采纳两个值,t时刻处,X的输入值和前一个单位格 t-1 时刻处的输出值A。左侧是传统的神经收集模子,它在左侧基础上是怎样变成右侧的?我们用第一个单位的运算来举例。

 

方程①:就像我们运用简朴ANN所做的那样,它也存在权重Wax,Waa和误差Ba。它只是增添一个输入值A0(前一个单位的输出值)。

单位有两个差别的输出: A1的输出(由公式②获得)将转到下一个单位,公式③的终究输出Y1。

一切权重的下标意义是,第一个下标是盘算某范例的量,第二个下标是你要乘以的范例。比方Wax,它乘以的是X1,要盘算的是A1,所以它的下标是ax。

 

如今,让我们进入下一个单位。悉数历程以下图所示。

 

 

 

简化标记示意

 

然则为了简化标记,背面图中的公式都是简化的标记, 令:

 

因而:

 

我们将

 

变成

 

标记变了,然则意义是没有变的,只是为了轻易简写,所以背面都是用简化后的公式。

 

Stacked RNN

 

假如把RNN堆在一起,输出的y又可以作为x输入到另一个神经收集中,那末它的构造就是如许的。

 

 

双向RNN

 

假如我们输入以下句子:

He said, “Teddy bears are on sale!”

模子大概会推断‘Teddy’是一个人名,是因为模子没有斟酌以后句子的寄义,所以,这时刻又要斟酌前面又要斟酌背面,就须要双向的RNN,它的构造是如许的:

 

 

梯度消逝/爆炸问题

 

我们看如许一个例子:

The cat,which already ate ...(中心省略很长很长), was(展望这个单词) full

The cats,which ate ...(中心省略很长很长), were(展望这个单词) full

当展望一个很长的句子,而展望的值依靠于很前面的信息(cat/cats),RNN就难以展望,这就是RNN不擅长处置惩罚的长依靠关联。为何呢?

 

症结问题就在于向后流传。

向后流传的目标是在每一层更新权重,为了更新权重,我们将盘算丧失函数的梯度,而且因为链式法则,会把多个梯度相乘。试想一下,假如梯度大于1,那末多个梯度相乘将会使得数值比较大,用它来更新优化权重会比较大,这类状况我们叫做梯度爆炸(exploding gradients),这还不是大问题,因为我们可以做个梯度修剪,假如大于某个值就缩放就好了;真正的问题是,假如梯度小于1,那末连乘梯度将使得效果异常的小,如许它就不能更新权重,输出的效果就没有什么差别,如许的状况我们叫梯度消逝(vanishing gradients),这就表明向后流传是不能影响很前面层的。

 

这就是人们说RNN的影象不好,假如输入长度太长,我们就不能展望现实的值,形成如许效果最根本原因就是神经收集中的权重更新。

 

那末我们怎样处置惩罚这个问题呢?

一个头脑就是,与其记着一切的过去,不如选择性的记着主要的信息而疏忽别的信息。

 

GRU模子构造

 

怎样做到选择性的影象之前的信息?症结头脑是提出了一个门控轮回单位(Units Gated Recurrent Units),用它来掌握主要信息。

 

注: 图中的tanh就是上面图中激活函数g的具体化函数。

 

GRU相对于RNN,多了一个绿色的框框,这个框框就是门掌握器,我们把它叫做更新门,用来决议记着过去的信息若干的,供应模子的影象才能。

 

 

 

GRU第一步也是和RNN第一步一样,用激活函数激活,然则它不会立时被运用,而是作为候选值悄悄守候。接着盘算GRU更新门的值,因为它采纳的是sigmoid函数,所以它的输出值局限是在0到1之间的。所以将第2步的值乘以第1步的值现实上就是在做"选择性影象",假如是0,那末就是“不影象/不更新/不运用”,假如是1,那末就是"影象/更新/运用",就像一个翻开封闭的门。GRU第三步就是用更新门的值来决议当前是用新的盘算值照样用之前的值。

 

它比接下来说的LSTM要简朴,参数要少,更少的参数就意味着削减过拟合,削减练习时刻。

 

LSTM的模子构造

 

LSTM背地的症结头脑

 

LSTM的全称是Long Short Term Memory networks,LSTM被明白设想为防止历久依靠问题。长时刻记着信息是它的默许行动,而不是它努力进修的东西。LSTM的症结是单位状况(cell state),最上面那条水平线。图中C示意,它将包含放在隐蔽状况值以外的影象值。它有点像是传送带,仅仅在一些细小的线性变换下贯串悉数链条,信息不加转变地活动异常轻易。

 

LSTM可以经由过程门这类构造给cell state移除或增添信息。门可以选择性让信息经由过程,它由sigmoid神经收集层和逐点乘法操作符构成。sigmoid层输出0到1的数字,形貌每一个组件应当让它经由过程若干。数值0示意都不经由过程,1示意让它悉数经由过程。

 

 

LSTM有三个门来庇护和掌握cell state的状况。悉数模子构造以下图

 

 

 

图中的三个绿色框框从左到右依次是遗忘门(forget gate),更新门(update gate),输出门(output gate)。

 

Step by Step明白LSTM

 

先团体看一下LSTM和GRU的差别:

 

 

 

让我们看看右侧,前两行实在就是和GRU一样,第3行等式,它是盘算遗忘门的值,它用于更新单位状况(第四行等式),末了第5行是盘算输出门,用于获得第6行A在t时刻的值。

 

 

 

第一步就是决议我们要从cell state中抛弃哪些信息。这个决议是由叫‘forget gate layer’的sigmoid层指定的。它看起来像输入ht-1,xt,然后为每一个ct-1(t-1时刻的cell state)变量中的数据输出0到1之间的数字。1就是保存悉数,0是悉数不要。

 

 

 

下一步是肯定要在cell state下存储哪些新信息

这一步包含两个部份:

  • 起首,称为“更新门”的sigmoid层决议了我们将更新哪些值。
  • 接下来,tanh层建立新候选值(可以添加到cell state中的值)C̃ t向量。

下一步将会连系这两个值去对状况举行更新。

 

 

 

这一步是更新cell state

我们将旧状况值和遗忘门相乘,目标是遗忘该遗忘的信息,只记着主要的信息;然后用更新门和候选状况相乘,目标是决议究竟我们须要若干新状况值的信息。

末了,我们须要决议要输出什么

这个输出是在cell state基础上盘算的,然则是它的过滤版本。起首我们用sigmoid层来肯定要输出当前cell state的哪些部份;接着我们把效果送到tanh并和输出门相乘,如许我们就可以只输出我们希冀的那部份效果。

因为有这三个分外的门,LSTM有着更强的影象才能,它们掌握着哪一个部份须要记着,记着若干,所以它在处置惩罚序列模子的时刻很受迎接。

 

参考资料:

  • 吴恩达deeplearning.ai第五门课 Module 1: Recurrent Neural Networks (RNNs)
  • The Most Intuitive and Easiest Guide for Recurrent Neural Network
  • Must-Read Tutorial to Learn Sequence Modeling (deeplearning.ai Course #5)
  • 2015-08-Understanding-LSTMs

 

本日互动

 

文首的问题你想清晰了吗?

 

Solr搜索解析及查询解析器用法概述

参与评论