开发者学习笔记【阿里云人工智能工程师ACA认证(2023版):循环神经网络(一)】
课程地址:https://edu.aliyun.com/course/3112108/lesson/19269
循环神经网络(一)
内容介绍
一、 循环神经网络的概述
二、 循环神经网络的结构及类别
三、 经典循环神经网络
四、 循环神经网络的应用
一、循环神经网络的概述
循环神经网络(Recurrent Neural Network,RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递日神经网络(recursive neural network)。
如上图表示:先去右边掉W和循环,左边为神经网络,X是输入、U是输入全动矩阵、S是隐藏层、O 是输出,v是输出全动矩阵。在普通神经网络循环上加入W ,就变成循环神经网络。
神经网络处理的数据是有序列,前后相关的,例如,在处理文字、语音或时间序列数据等任务时,往往需要考虑上下文信息的相关性。普通的神经网络在这方面表现不佳,因为它们没有内置的记忆机制,这就是引入循环神经网络的原因。RNN 具有短期记忆,允许它们处理序列数据,实现信息的传递和记忆。
为了更好地理解,让我们深入研究一下图示。图示中展示了一个按照时间序列展开的循环神经网络,每个时间步骤用 t、t+1 表示。注意到,输入包括 x_t-1、x_t 和 x_t+1,对应的输出是 o_t-1、o_t 和 o_t+1。这个图表明了 RNN 在处理序列数据时的特点。与普通神经网络不同的是,RNN 的输入不仅包括当前时间步的输入 x_t,还包括上一时间步的结果,而其输出不仅作为当前时间步的输出 o_t,还会作为下一时间步的输入。
因此,循环神经网络通过这种递归机制具有了记忆能力,允许信息在不同时间步之间传递和影响,这是其独特之处。
二、循环神经网络的结构及类别
典型的循环神经网络包括一个输入(x)和一个输出,我们用这些符号来表示。然后,它包含一个神经网络单元(用a表示)。不同于普通的神经网络,循环神经网络(RNN)中的神经网络单元a不仅与输入和输出相关,它还具有自我循环的结构,这使得它能够保留状态信息,并将其传递到下一个时间步,实际上就是网络的上一个状态。这个自我循环结构使得RNN具备了记忆的能力。
如果我们将这个循环神经网络的结构展开,那么它会变成右侧图示的形式。这意味着它就像是同一个网络被复制并连接成一条线,以便将自身的信息传递给下一个时间步。在这种情况下,我们可以将输入视为时间的流逝,也可以将其视为一个序列,这个序列按照0、1、2、3、4、5、6、7的顺序进行输入。
需要注意的是,尽管我们一直在用 "a" 来表示神经元,但实际上,随着时间推移,不同时刻的 "a" 是不同的。可以将这个现象比喻为观看电影的效果,电影胶片的左边可能看不太清楚。但如果我们将电影胶片逐帧按照时间顺序排列开来,你将会看到每一帧的画面。对于循环神经网络中的 "a",也是类似的,它随着时间的推移向右移动,同时会因为不同的输入而发生微小的变化。
让我们看一下循环神经网络神经元的结构。下图展示了一个时间序列展开的模型,其中中间时刻是t。它的输入部分来自于上一个时刻的输出,同时还有当前时刻的输入xt。这两者的输入会合并并通过激活函数(例如双曲正切)得到输出ht。同时,这个输出ht也会传递到下一个时间步,成为下一时刻的输入。这个时间前进的过程被称为RNN的正向传播。
循环神经网络有不同的类别,首先是一对一(One-to-One),它是最简单、最基本的单层网络。当输入是x时,我们对其进行线性变换(加法和乘法),然后通过激活函数得到输出y。这种模式通常用于输入一个图像并输出其对应的类别。
接下来是一对多(One-to-Many),在这个情况下,你的输入是一个 x,但输出可以包含多个 y。这种结构适用于一些任务,例如你输入一张图像,然后期望输出图像的特征或一系列描述文字,就像图像标注(Image Captioning)任务一样。
另一种情况是多对一(Many-to-One),它处理的是序列输入,但只生成一个输出。这可以用于序列分类问题,例如输入一段文本,使用循环神经网络来判断它属于所属类别。
最后,我们有最经典的 Many-to-Many 结构,其中输入序列和输出序列必须具有相同的长度。这种结构非常适合视频分类等任务,其中你需要对每一帧进行分类,因此输入和输出序列的长度都相同。这就是循环神经网络的几种主要类型:一对一,一对多,多对一,以及多对多。