从RNN到GRU和LSTM

本文深入探讨了循环神经网络(RNN)在处理序列数据的优势,包括RNN的工作流程、梯度消失问题以及解决方案如GRU和LSTM单元。通过时间的反向传播解释了RNN的训练过程,并介绍了双向RNN和深层RNN以提升模型性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

要处理序列模型,使用标准神经网络的效果并不好,这时应该使用循环神经网络(RNN)。
本文为吴恩达深度学习序列部分的学习笔记。

1.循环神经网络模型

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

使用标准神经网络来处理序列模型效果并不好,原因有二:
标准神经网络的缺点

  1. 输入和输出的长度不一定相同。即使使用填充(pad)或零填充(zero pad)使每个输入语句达到设定的最大长度(假设有的话),这样的效果也并不好。
  2. 一个普通的神经网络结构,它并不共享从文本的不同位置上学到的特征。例如,如果神经网络已经学习到了在位置1出现的 Harry 可能是人名的一部分,那么如果Harry出现在其他位置,比如x时,它不能够自动识别其为人名的一部分。

另外,如果输入都是维数较多的向量,这会造成非常庞大的输入层,第一层的权重矩阵会有着巨大的参数。

1.2 RNN

RNN就没有上述的问题。
用循环神经网络(Recurrent Neural Networks)从左到右读一个句子,在读到第二个单词x<2>时,它不仅用x<2>来预测y<2>,还会输入一些来自时间步1(time step 1)的信息,以此类推。在每一个时间步中,RNN都会传递一个激活值到下一个时间步中用于计算。
RNN
其简化结构为:
简化结构

1.3 RNN工作流程

在零时刻构造一个激活值a<0>,通常是0向量。RNN从左到右扫描数据,同时每个时间步的参数是共享的。用Wax来表示从x<1>到隐藏层的一系列参数,每个时间步使用的是相同的参数Wax,同时每个时间步使用相同的参数Waa,输出结果由同样的Wya决定。
工作流程
在RNN中,在预测y<3>时,不仅要使用x<3>的信息,还要使用来自x<1> 和x<2>的信息,前面的信息通过图中的绿色箭头来帮助预测。这个循环神经网络有一个缺点是它只用了这个序列之前的信息来做出预测,在预测y<3>时,它没有用到后面的信息,如果是一些需要结合后文的句子,那么预测可能会出现差错。这就是前向传播RNN。
流程
开始先输入a<0>,一般是零向量,随着向前传播的过程,先计算激活值a<1>,然后再计算y<1>。一般情况下,t时刻的激活值和输出值如下图所示。这些等式定义了神经网络的前向传播,像图中这样,从 左到右完成前向传播。
激活值和输出值
Wax第二个下标意味着Wax要乘以某个x类型的量,然后第一个下标a表示它是用来计算某个a类型的变量。同样的,可以看出这里的Wya乘上了某个a类型的量,用来计算出某个y类型的量。
循环神经网络用的激活函数经常是 tanh,不过有时候也会用 ReLU,选用哪个激活函数 是取决于你的输出y,如果它是一个二分问题,用 sigmoid 函数作为激活函数, 如果是k类别分类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值