吴恩达第五门-序列模型-第一周7-12学习笔记

探讨了序列模型中RNN采样新序列、字符级RNN、梯度消失问题及解决方案,包括GRU单元、LSTM、双向RNN和深层RNN结构,深入解析模型优化。

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

吴恩达第五门-序列模型-第一周7-12学习笔记

1.7 对新序列采样

在训练一个序列模型之后,要想了解这个模型学到了什么,一种非正式的方法就是进行一次新序列采样,来看看到底应该怎么做。也就是说我们现在已经得到了一个模型,要使用该模型来生成一个新的单词序列。
在这里插入图片描述

利用RNN模型生成一个随机选择的句子

第一步做的就是对你想要模型生成的第一个词进行采样,经第一个时间步得到的是经过softmax层后得到的概率,然后根据这个softmax的分布进行随机采样。根据这个概率分布我们可以对第一个词进行采样。
然后我们继续下一个时间步,将上一个时间步的采样结果y^1\hat{y}^{1}y^1作为输入,计算出在确定上一个词的基础上,下一个词的可能结果,得到的结果就是y^2\hat{y}^{2}y^2,然后再次用这个采样函数来对y^2\hat{y}^{2}y^2进行采样。
然后再进行第三个时间步,无论你得到什么样的用one-hot码表示的选择结果,都把它传递到下一个时间步,然后对第三个词进行采样。不管得到什么都把它传递下去,一直这样直到最后一个时间步。
持续执行上述的采样步骤,直到采样得到了EOS标识,这代表着已经抵达结尾,可以停止采样了。或者发现字典中没有这个词,这时可以决定从20个或100个或其他个单词进行采样,然后一直将采样进行下去直到达到所设定的时间步。

基于字符的RNN序列

在这里插入图片描述
除了基于词构建RNN序列外,我们还可以基于字符构建RNN序列,此时字典仅包含从a到z的字母以及空格符。这种基于字符的RNN序列既有优点也存在缺点。
优点就是我们不必担心会出现未知的标识,例如基于字符的语言模型会将Mau这样的序列也视为可能性非零的序列。而对于基于词汇的语言模型,如果Mau不在字典中,我们只能将其看作未知标识UNK。
基于字符的语言模型一个主要缺点就是最后会得到太多太长的序列。基于字符的语言模型训练起来计算成本比较高昂,所以实际上更多地使用基于单词的语言模型。

1.8 循环神经网络的梯度消失

在上一节中,主要介绍了RNN工作生成序列的一个例子,实际上RNN算法存在着一个很大的问题,就是梯度消失问题。
加粗样式
以一个句子为例,“The cat, which already ate ……, was full.”,cat使用的是单数,对应着was的使用。“The cats, which ate ……, were full.”而对于cats应该使用were,这个例子中存在着长期依赖关系,也就是说句子中最前面的单词对后面的单词存在着影响。但我们目前见到的基本的RNN模型并不擅长捕获这种长期依赖效应。
对于深度很深的神经网络,我们在第一门课中就学习过其对应的梯度消失与梯度爆炸问题。RNN也有着同样的问题,RNN神经网络每一层的输出值主要受周围几层的影响,而比较靠前的层的影响实际是很小的。所以RNN神经网络无法很好地处理这类长期以来问题。
在这里插入图片描述
对于RNN神经网络来说,梯度消失、梯度爆炸都会发生,但由于出现梯度爆炸时,参数会变得很大,出现很多NaN,所以比较容易发现,可以使用梯度修剪的方法加以修正,所以相比之下梯度消失的问题更加严重。
所谓梯度修剪,就是指观察梯度向量,如果它大于某个阈值,缩放梯度向量,保证它不会太大,这就是通过一些最大值来修剪的方法。

1.9 GRU 单元

本节视频主要介绍了GRU单元,也就是门控循环单元,它改变了RNN的隐藏层,使其可以更好地捕捉深层连接,并改善了梯度消失问题。
在这里插入图片描述
上图是一个RNN隐藏层的单元,这里就不做赘述了。
在这里插入图片描述

GRU单元的应用

GRU单元会设置一个新的变量c,成为记忆细胞,为模型提供跨越层数限制的记忆功能。以上一节课的句子“The cat, which already ate ……, was full.”为例,记忆细胞就可以用于记录猫的单数或者复数。c&lt;t&gt;c^{&lt;t&gt;}c<t>表示在t时刻的记忆细胞。
在这里插入图片描述
在每一个时间步,我们要以上图中所示的3式计算出记忆细胞的替代值(但实际上不一定发生替换)。上图中的4式计算的是门值,门值大小在0到1之间(sigmoid函数映射的结果),计算出的门值决定了是否用3式计算出的替代值更新记忆细胞。“The cat, which already ate……, was full.”,还是以这句话为例,当看到the cat时,门值决定了要用新值替换记忆细胞,记录单复数形式,而当用完was这个系动词后,则不需要记忆细胞来记录单复数形式,可以将其忘记了。
在这里插入图片描述
接下来我们给出更新c&lt;t&gt;c^{&lt;t&gt;}c<t>的公式,如上图中的1式所示。如果门值为1,则可以直接以替代值作为新的记忆细胞值,如果门值为0则表示记忆细胞的值不发生改变。

GRU单元的作用

在这里插入图片描述
GRU单元的优点就是由门的应用决定的。当你从左(上图编号10处)到右扫描一个句子的时候,门值决定了是否更新,或者说怎样更新记忆细胞的值,在很多情况下记忆细胞值不会发生改变,可以很好地维持记忆细胞的值,也就可以在很多层网络之间传递特定信息了,从而缓解了梯度消失的问题。
记忆细胞可以是一个向量,其维数与门的维数相同,其中的叉乘表示向量间的运算,通过对门值的设定,可以只改变记忆细胞中向量的一个维度的值。

长短期记忆(LSTM)
LSTM就是长短期记忆网络,甚至比GRU更加有效。

1.11 双向神经网络

在这里插入图片描述

本节视频主要介绍了双向循环神经网络,可以用于构建更好的模型,该模型可以让使用者在序列的某点处不仅可以获取之前的信息,还可以获取到未来的信息。
在这里插入图片描述
先来看一下之前举过的一个例子,如何判断Teddy是不是人的名字。这不仅需要之前的信息,还需要后面的信息,也就是说我们现在的任务就是要获取未来的信息。这就需要用到双向神经网络了。
在这里插入图片描述
除了前向循环单元之外,我们还需要设置后向循环单元,由前向循环单元和后向循环单元共同得到预测值,具体结构如上图所示。
在这里插入图片描述
上图是一个双向循环神经网络例子。
双向循环神经网络的基本单元不仅仅只能是标准RNN单元,也可以是GRU单元或者LSTM单元。多的NLP问题,对于大量有自然语言处理问题的文本,有LSTM单元的双向RNN模型是用的最多的。所以如果有NLP问题,并且文本句子都是完整的,首先需要标定这些句子,一个有LSTM单元的双向RNN模型,有前向和反向过程是一个不错的首选。

1.12 深层循环神经网络

这节视频主要介绍了如何构建更深的RNN模型。
在这里插入图片描述
上图中展示了一个标准的RNN模型,一层一层堆叠而成。这里的表示符号做了一些改动,现在用啊a[l]&lt;t&gt;啊a^{[l]&lt;t&gt;}a[l]<t>来表示第l层的激活值,其中&lt;t&gt;&lt;t&gt;<t>表示第t个时间点。
在这里插入图片描述
对于普通的神经网络,比如上图左侧所示的神经网络,我们可能见过很深的。但对于RNN网络来说,三层就已经不少了。因为由于时间的维度,RNN网络会变得相当大,即使只有很少的几层。
但可能有一种非标准的深层的RNN网络的出现。可以在上图1处加上一个深层的网络,用于预测y&lt;1&gt;y^{&lt;1&gt;}y<1>,类似地也可以在2处添加。这种没有水平方向连接的结构比较常见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值