吴恩达深度学习 Deeplearning.ai学习笔记 Course5 Week1 循环序列模型(Recurrent Neural Networks)

Recurrent Neural Networks

  • 1.1 Sequence Models
  • 1.2 数学符号(Notation)
    • 样本及数据的表示
    • 单个单词的表示
  • 1.3 循环神经网络模型(Recurrent Neural Network Model)
    • 简单神经网络的问题
    • RNN
  • 1.4 通过时间的反向传播(Backpropagation through time)
  • 1.5 不同类型的循环神经网络(Different types of RNNs)
    • 多对一
    • 一对多和多对多

1.1 Sequence Models

RNN在NLP方面有着令人震惊的影响。从Course5中,我们将通过NLP来学习RNN。
提一下序列模型,就是输入数据和输出数据都是序列;或者二者中有一个是序列。而且这些序列的长度可以不同。通常来说,这些序列是有时序性的。

1.2 数学符号(Notation)

老规矩,学一个新的东西的时候要先规定好符号问题。

样本及数据的表示

吴恩达深度学习 Deeplearning.ai学习笔记 Course5 Week1 循环序列模型(Recurrent Neural Networks)_第1张图片
比如上面的X作为输入序列,我们想要知道的是这句话中是否有人名。这个问题通常也被称作是命名实体识别问题。输出Y则是一串01序列,1代表对应位置上的单词是人名的一部分,0则代表不是。

好的,现在我们需要标记出每个单词的位置。我们将使用 x < 1 > , x < 2 > , x < 3 > . . . . . . . x < t > . . . . . . . x^{<1>},x^{<2>},x^{<3>}.......x^{<t>}....... x<1>,x<2>,x<3>.......x<t>.......来索引在输入序列X中每个位置。同样的,对于输出Y,我们有 y < 1 > , y < 2 > , y < 3 > . . . . . . . y < t > . . . . . . . y^{<1>},y^{<2>},y^{<3>}.......y^{<t>}....... y<1>,y<2>,y<3>.......y<t>.......来进行索引。序列的长度用 T x , T y T_x,T_y Tx,Ty来表示。如果再加上我们之前课程中引入的符号来代表第i个样本,那么索引将变成如 x ( i ) < 1 > , x ( i ) < 2 > , x ( i ) < 3 > . . . . . . . x ( i ) < t > . . . . . . . x^{(i)<1>},x^{(i)<2>},x^{(i)<3>}.......x^{(i)<t>}....... x(i)<1>,x(i)<2>,x(i)<3>.......x(i)<t>.......

单个单词的表示

这里老师介绍的是One-Hot表示法,会显得很笨重。另外的一些模型我之前有学习过了。对于One-Hot就不多说了。
https://blog.csdn.net/Raymond_MY/article/details/83240140

1.3 循环神经网络模型(Recurrent Neural Network Model)

搞定了符号之后,让我们来看看RNN的一个基本模型构造

简单神经网络的问题

吴恩达深度学习 Deeplearning.ai学习笔记 Course5 Week1 循环序列模型(Recurrent Neural Networks)_第2张图片
如果要用简单的神经网络来研究序列问题,对于一个简单的神经网络模型,我们只是单纯地将整个序列模型输入的话,会有几个问题:
1.输入和输出数据在不同例子中可以有不同的长度,使得中间的隐藏层不便于操作。
2.一个简单的神经网络结构,它并不共享从文本的不同位置上学到的特征。
3.如果采用One-Hot向量(就算是其他的表示法),都会使得模型中的参数量变多

RNN

吴恩达深度学习 Deeplearning.ai学习笔记 Course5 Week1 循环序列模型(Recurrent Neural Networks)_第3张图片
如上图所示,当我们输入了序列中的第一个单词时,神经网络会根据现有的参数进行计算给出一个对应的输出。但是当第二个单词输入时,我们就不仅仅依靠原有的参数进行计算了,而是还会利用第一个单词输入后得到的信息进行计算。这样就利用了之前的信息进行分析了。
要开始整个流程,在零时刻需要构造一个激活值 a < 0 > a^{<0>} a<0>,这通常是零向量。有些研究人员会随机用其他方法初始化 a < 0 > a^{<0>} a<0>,不过使用零向量作为零时刻的伪激活值是最常见的选择,因此我们把它输入神经网络。具体每个层的参数接下来讲。
吴恩达深度学习 Deeplearning.ai学习笔记 Course5 Week1 循环序列模型(Recurrent Neural Networks)_第4张图片
对于前向传播过程
在这里插入图片描述
吴恩达深度学习 Deeplearning.ai学习笔记 Course5 Week1 循环序列模型(Recurrent Neural Networks)_第5张图片
同时,如果觉得太复杂了,也有简化的版本
吴恩达深度学习 Deeplearning.ai学习笔记 Course5 Week1 循环序列模型(Recurrent Neural Networks)_第6张图片
总之上面的W代表了每层的参数,a表示输入第i个单词后得到的信息。

1.4 通过时间的反向传播(Backpropagation through time)

在本节视频中我们将来了解反向传播是怎样在循环神经网络中运行的。
吴恩达深度学习 Deeplearning.ai学习笔记 Course5 Week1 循环序列模型(Recurrent Neural Networks)_第7张图片
反向传播的计算如下:
通过前向传播,我们有了输出值Y。为了进行反向传播,我们要构造损失函数
在这里插入图片描述
这个损失函数比较像我们之前见过的损失函数,叫做交叉熵损失函数。这是关于单个位置上或者说某个时间步t上某个单词的预测值的损失函数。这是单个位置上的损失。那么对于整个序列的损失函数,定义为
在这里插入图片描述
以下是完整的计算图,在之前的例子中,你已经见过反向传播,所以你应该能够想得到反向传播算法需要在相反的方向上进行计算和传递信息,最终你做的就是把前向传播的箭头都反过来,在这之后你就可以计算出所有合适的量,然后你就可以通过导数相关的参数,用梯度下降法来更新参数。
吴恩达深度学习 Deeplearning.ai学习笔记 Course5 Week1 循环序列模型(Recurrent Neural Networks)_第8张图片

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

多对一

假如说,你想处理情感分类问题,这里可能是一段文本,比如一个电影的评论,“These is nothing to like in this movie.”所以就是一个序列,而可能是从1到5的一个数字,或者是0或1,这代表正面评价和负面评价,而数字1到5代表电影是1星,2星,3星,4星还是5星。所以在这个例子中,我们可以简化神经网络的结构,一次输入一个单词,如果输入文本是“These is nothing to like in this movie”。我们不再在每个时间上都有输出了,而是让这个RNN网络读入整个句子,然后在最后一个时间上得到输出,这样输入的就是整个句子,所以这个神经网络叫做“多对一”(many-to-one)结构,因为它有很多输入,很多的单词,然后输出一个数字。
吴恩达深度学习 Deeplearning.ai学习笔记 Course5 Week1 循环序列模型(Recurrent Neural Networks)_第9张图片

一对多和多对多

吴恩达深度学习 Deeplearning.ai学习笔记 Course5 Week1 循环序列模型(Recurrent Neural Networks)_第10张图片
对于“多对多”的结构还有一个有趣的例子值得详细说一下,就是输入和输出长度不同的情况。刚才看过的多对多的例子,它的输入长度和输出长度是完全一样的。而对于像机器翻译这样的应用,输入句子的单词的数量,比如说一个法语的句子翻译成英语,这两个句子的长度可能不同,所以还需要一个新的网络结构。首先读入这个句子,比如你要将法语翻译成英语,读完之后,这个网络就会输出翻译结果。有了这种结构和就可以是不同的长度了。具体的举例总结如下
吴恩达深度学习 Deeplearning.ai学习笔记 Course5 Week1 循环序列模型(Recurrent Neural Networks)_第11张图片

你可能感兴趣的:(Deepleraning)