1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 花书+吴恩达深度学习(十五)序列模型之循环神经网络 RNN

花书+吴恩达深度学习(十五)序列模型之循环神经网络 RNN

时间:2020-05-23 10:07:28

相关推荐

花书+吴恩达深度学习(十五)序列模型之循环神经网络 RNN

目录

0.前言

1. RNN计算图

2. RNN前向传播

3. RNN反向传播

4.导师驱动过程(teacher forcing)

5.不同序列长度的 RNN

如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~

花书+吴恩达深度学习(十五)序列模型之循环神经网络 RNN

花书+吴恩达深度学习(十六)序列模型之双向循环网络 BRNN 和深度循环网络 Deep RNN

花书+吴恩达深度学习(十七)序列模型之长短期记忆 LSTM 和门控循环单元 GRU

0.前言

循环神经网络 RNN(Recurrent Neural Network)是一类专门用于处理序列数据的神经网络。

标准的神经网络无法适应不同长度的输入和输出, 没有共享参数,无法泛化文本不同位置的同个词。

RNN在几个时间步内共享参数,使得模型可以扩展到不同长度的序列样本进行泛化,不需要分别学习句子每个位置的规则。

RNN减少参数付出的代价是优化参数困难。

用一个识别是否是人名的例子,初始定义符号如下:

输入:“Harry Potter and Hermione Granger invented a new spell.”输出:“110110000”表示 中第 个输入,例如表示 Harry表示 中第 个输出,例如 表示 1表示 的长度表示 的长度当时,也表示序列长度

对于自然语言处理(Natural Language Processing),构建一个词汇表,对于一个输入 , 中的每一个单词都构建一个 one-hot 向量,向量长度是词汇表的长度,单词的对应位置为 1 ,其余位置为 0 。

1. RNN计算图

对于一个输入 ,从左至右将每一个单词依次输入到神经网络中(相当于第 个时刻)。

每次计算不仅输入 ,还输入上一个单词 的激活函数值。

如下图所示(图源:吴恩达深度学习):

2. RNN前向传播

在 RNN 中,隐藏单元激活函数多采用 tanh

初始。

按照深度学习花书中的符号表示(表示隐藏单元,表示输出单元):

按照吴恩达深度学习的符号表示(表示隐藏单元):

对上式子进行修改可简化参数:

其中,是将 横向叠加在一起,是将纵向叠加在一起。例如,,,,,则 ,,计算结果是相同的。

前向传播的运行时间是,且不能通过并行化来降低,因为前向传播图是固有循序的,每个时间只能一前一后计算。

前向传播中各个状态必须保存,直到它们反向传播中再次被使用,因此内存代价也是。

3. RNN反向传播

反向传播不仅仅通过每个单词的输出路径,而且还通过每个激活函数的传递路径。

RNN反向传播通常也称为穿越时间的反向传播 BPTT(back propagation through time)。

代价函数根据输出的情况,可以采用logistic regression loss或者最大对数似然

总的代价函数为各时间代价函数之和。

这里使用深度学习花书上的符号表示反向传播:

4.导师驱动过程(teacher forcing)

由上一个的输出反馈到下一个的输入的模型可用导师驱动过程进行训练。

训练时,无论输出等于多少,我们将正确的输出反馈到。

如下图所示(图源:吴恩达深度学习):

采样时(即模型部署后),真正的输出通常是未知的,我们用模型输出近似正确的输出。

每一次输入不是,而是上一次输出,模型就可以根据上一个单词预测下一个单词。

如下图所示(图源:吴恩达深度学习):

满足。

如果模型仍存在外界的输入,则可将正确的输出反馈到隐藏单元。

如下图所示(图源:深度学习):

5.不同序列长度的 RNN

根据输入序列和输出序列的长度,可以分为如下几种:

one to one,即(图源:吴恩达深度学习):

one to many,即(图源:吴恩达深度学习):

还有一种设计模式,是将作为每个时刻的额外输入,而不是第一个时刻(图源:深度学习):

这类 RNN适用于很多任务,例如单个图像作为模型的输入,产生描述图像的词序列。

many to one,即(图源:吴恩达深度学习):

many to many(相等),即(图源:吴恩达深度学习):

还有一种设计模式,是由输出反馈至下一个隐藏单元,而不是隐藏单元至隐藏单元(图源:深度学习):

这种 RNN并没有那么强大,输出是允许传播到未来的唯一信息,它要求输出单元捕捉用于预测未来的关于过去的所有信息,因为输出单元明确训练成匹配训练集的目标,它们不太能捕获关于过去输入历史的必要信息,除非它非常高维且内容丰富。

many to many(不相等),即 (图源:深度学习):

将输入序列映射到不一定等长的输出序列,如语音识别、机器翻译等。

编码器(encoder)RNN处理输入序列,输出上下文。

解码器(decoder)RNN以固定长度的向量为条件产生输出序列。

此架构的一个明显不足是的维度太小难以适当概括长序列,可让成为可变长度序列。

如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。