如何理解RNN以及LSTM? 深度学习面试_01

本文详细介绍了RNN的构造过程,从单层网络开始,逐步引入隐状态,形成经典的RNN结构。讨论了RNN在序列问题上的应用,并指出其在处理长期依赖问题时的局限性。然后,文章深入浅出地解释了LSTM如何通过遗忘门、输入门和输出门解决梯度消失问题,增强长期记忆能力。最后,提到了LSTM的变种GRU及其工作原理。
摘要由CSDN通过智能技术生成

鸣谢&参考:

  1. ChristopherOlah的博⽂《理解LSTM⽹络》
  2. @Not_GOD翻译ChristopherOlah的博⽂《理解LSTM⽹络》
  3. 通过⼀张张动图形象的理解LSTM
  4. 如何理解LSTM⽹络(超经典的ChristopherOlah的博⽂之July注解版)
  5. LSTM相关的典型⾯试题_七月在线
  6. @知乎何之源_完全图解RNN、RNN变体、Seq2Seq、Attention机制
  7. 七月在线面试题库

1. RNN是怎么从单层网络⼀一步⼀一步构造的?

1.1从单层网络谈起

在学习RNN之前,⾸先要了解⼀下最基本的单层⽹络,它的结构如图:
在这里插入图片描述
输⼊是x,经过变换Wx+b和激活函数f得到输出y。

1.2 经典的RNN结构

在实际应⽤中,我们还会遇到很多序列形的数据:
在这里插入图片描述
如:
1.⾃然语⾔处理问题。x1可以看做是第⼀个单词,x2可以看做是第⼆个单词,依次类推。
2.语⾳处理。此时,x1、x2、x3……是每帧的声⾳信号。
3.时间序列问题。例如每天的股票价格等等。

为了建模序列问题,RNN引⼊了隐状态h(hidden state)的概念,h可以对序列形的数据提取特征,接着再转换为输出。先从h1的计算开始看:
在这里插入图片描述
图⽰中记号的含义是:
a)圆圈或⽅块表⽰的是向量。
b)⼀个箭头就表⽰对该向量做⼀次变换。如上图中h0和x1分别有⼀个箭头连接,就表⽰对h0和x1各 做了⼀次变换。

在很多论⽂中也会出现类似的记号,初学的时候很容易搞乱,但只要把握住以上两点,就可以⽐ 较轻松地理解图⽰背后的含义。h2的计算和h1类似。要注意的是,在计算时,每⼀步使⽤的参数U、 W、b都是⼀样的,也就是说每个步骤的参数都是共享的,这是RNN的重要特点,⼀定要牢记。
在这里插入图片描述

依次计算剩下来的(使⽤相同的参数U、W、b)

我们这⾥为了⽅便起见,只画出序列长度为4的情况,实际上,这个计算过程可以⽆限地持续下 去。
我们⽬前的RNN还没有输出,得到输出值的⽅法就是直接通过h进⾏计算:
在这里插入图片描述
正如之前所说,⼀个箭头就表⽰对对应的向量做⼀次类似于f(Wx+b)的变换,这⾥的这个箭头就表 ⽰对h1进⾏⼀次变换,得到输出y1。
剩下的输出类似进⾏(使⽤和y1同样的参数V和c):
在这里插入图片描述
OK!⼤功告成!这就是最经典的RNN结构,我们像搭积⽊⼀样把它搭好了。它的输⼊是x1, x2, …xn,输出为y1, y2, …yn,也就是说,输⼊和输出序列必须要是等长的。

由于这个限制的存 在,经典RNN的适⽤范围⽐较⼩,但也有⼀些问题适合⽤经典的RNN结构建模,如:
1.计算视频中每⼀帧的分类标签。因为要对每⼀帧进⾏计算,因此输⼊和输出序列等长。
2.输⼊为字符,输出为下⼀个字符的概率。这就是著名的Char RNN

1.3 N --> 1

有的时候,我们要处理的问题输⼊是⼀个序列,输出是⼀个单独的值⽽不是序列,应该怎样建模 呢?实际上,我们只在最后⼀个h上进⾏输出变换就可以了:
在这里插入图片描述

这种结构通常⽤来处理序列分类问题。如输⼊⼀段⽂字判别它所属的类别,输⼊⼀个句⼦判断其 情感倾向,输⼊⼀段视频并判断它的类别等等。

1.4 1 --> N

在这里插入图片描述
这种1 --> N的结构可以处理的问题有:
1.从图像⽣成⽂字(image caption),此时输⼊的X就是图像的特征,⽽输出的y序列就是⼀段句⼦.
2.从类别⽣成语⾳或⾳乐等 .

1.4 N --> M

下⾯我们来介绍RNN最重要的⼀个变种:N vs M。这种结构又叫Encoder-Decoder模型,也可以称 之为Seq2Seq模型。
原始的N vs N RNN要求序列等长,然⽽我们遇到的⼤部分问题序列都是不等长的,如机器翻译 中,源语⾔和⽬标语⾔的句⼦往往并没有相同的长度。为此,Encoder-Decoder结构先将输⼊数据编码 成⼀个上下⽂向量c:
在这里插入图片描述
得到c有多种⽅式,最简单的⽅法就是把Encoder的最后⼀个隐状态赋值给c,还可以对最后的隐状 态做⼀个变换得到c,也可以对所有的隐状态做变换。
拿到c之后,就⽤另⼀个RNN⽹络对其进⾏解 码,这部分RNN⽹络被称为Decoder。具体做法就是将c当做之前

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值