循环神经网络(一)

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 循环神经网络(一)

开发者学习笔记【阿里云人工智能工程师ACA认证(2023版):循环神经网络(一)

课程地址:https://edu.aliyun.com/course/3112108/lesson/19269

 

循环神经网络(一)

 

内容介绍

一、 循环神经网络的概述

二、 循环神经网络的结构及类别

三、 经典循环神经网络

四、 循环神经网络的应用

 

一、循环神经网络的概述


图片532.png

循环神经网络(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,还会作为下一时间步的输入。


因此,循环神经网络通过这种递归机制具有了记忆能力,允许信息在不同时间步之间传递和影响,这是其独特之处。

 

二、循环神经网络的结构及类别


图片533.png

典型的循环神经网络包括一个输入(x)和一个输出,我们用这些符号来表示。然后,它包含一个神经网络单元(用a表示)。不同于普通的神经网络,循环神经网络(RNN)中的神经网络单元a不仅与输入和输出相关,它还具有自我循环的结构,这使得它能够保留状态信息,并将其传递到下一个时间步,实际上就是网络的上一个状态。这个自我循环结构使得RNN具备了记忆的能力。


如果我们将这个循环神经网络的结构展开,那么它会变成右侧图示的形式。这意味着它就像是同一个网络被复制并连接成一条线,以便将自身的信息传递给下一个时间步。在这种情况下,我们可以将输入视为时间的流逝,也可以将其视为一个序列,这个序列按照0、1、2、3、4、5、6、7的顺序进行输入。

图片534.png

需要注意的是,尽管我们一直在用 "a" 来表示神经元,但实际上,随着时间推移,不同时刻的 "a" 是不同的。可以将这个现象比喻为观看电影的效果,电影胶片的左边可能看不太清楚。但如果我们将电影胶片逐帧按照时间顺序排列开来,你将会看到每一帧的画面。对于循环神经网络中的 "a",也是类似的,它随着时间的推移向右移动,同时会因为不同的输入而发生微小的变化。

图片535.png

让我们看一下循环神经网络神经元的结构。下图展示了一个时间序列展开的模型,其中中间时刻是t。它的输入部分来自于上一个时刻的输出,同时还有当前时刻的输入xt。这两者的输入会合并并通过激活函数(例如双曲正切)得到输出ht。同时,这个输出ht也会传递到下一个时间步,成为下一时刻的输入。这个时间前进的过程被称为RNN的正向传播。

图片536.png循环神经网络有不同的类别,首先是一对一(One-to-One),它是最简单、最基本的单层网络。当输入是x时,我们对其进行线性变换(加法和乘法),然后通过激活函数得到输出y。这种模式通常用于输入一个图像并输出其对应的类别。


接下来是一对多(One-to-Many),在这个情况下,你的输入是一个 x,但输出可以包含多个 y。这种结构适用于一些任务,例如你输入一张图像,然后期望输出图像的特征或一系列描述文字,就像图像标注(Image Captioning)任务一样。


另一种情况是多对一(Many-to-One),它处理的是序列输入,但只生成一个输出。这可以用于序列分类问题,例如输入一段文本,使用循环神经网络来判断它属于所属类别。


最后,我们有最经典的 Many-to-Many 结构,其中输入序列和输出序列必须具有相同的长度。这种结构非常适合视频分类等任务,其中你需要对每一帧进行分类,因此输入和输出序列的长度都相同。这就是循环神经网络的几种主要类型:一对一,一对多,多对一,以及多对多。

相关文章
|
存储 运维 机器人
Nvidia和AMD显卡是如何制作的
Nvidia和AMD显卡是如何制作的
1013 0
|
机器学习/深度学习 算法 索引
LSTM(长短期记忆网络)原理介绍
LSTM算法是一种重要的目前使用最多的时间序列算法,是一种特殊的RNN(Recurrent Neural Network,循环神经网络),能够学习长期的依赖关系。主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的RNN,LSTM能够在更长的序列中有更好的表现。
9073 0
LSTM(长短期记忆网络)原理介绍
|
IDE 开发工具 索引
在Python中安装第三方库
在Python中安装第三方库
3192 156
|
12月前
|
存储 C++ 容器
unordered_set、unordered_multiset、unordered_map、unordered_multimap的介绍及使用
unordered_set是不按特定顺序存储键值的关联式容器,其允许通过键值快速的索引到对应的元素。在unordered_set中,元素的值同时也是唯一地标识它的key。在内部,unordered_set中的元素没有按照任何特定的顺序排序,为了能在常数范围内找到指定的key,unordered_set将相同哈希值的键值放在相同的桶中。unordered_set容器通过key访问单个元素要比set快,但它通常在遍历元素子集的范围迭代方面效率较低。它的迭代器至少是前向迭代器。前向迭代器的特性。
686 0
|
机器学习/深度学习 人工智能 自然语言处理
深度学习基础之经典神经网络模型
深度学习模型来源于神经系统层次化结构特性,主要机制是层层递进,逐层抽象,主要应用于计算机视觉(computer vision,CV)和自然语言处理(Natural language processing,NLP)。
799 1
|
机器学习/深度学习 XML 监控
使用A10单卡24G复现DeepSeek R1强化学习过程
使用A10单卡24G复现DeepSeek R1强化学习过程
|
机器学习/深度学习 算法
生成对抗网络(Generative Adversarial Networks,简称GANs)
生成对抗网络(GANs)由Ian Goodfellow等人于2014年提出,是一种通过生成器和判别器的对抗训练生成逼真数据样本的深度学习模型。生成器创造数据,判别器评估真实性,两者相互竞争优化,广泛应用于图像生成、数据增强等领域。
2087 1
|
机器学习/深度学习 人工智能 API
百度飞桨(PaddlePaddle)- 张量(Tensor)
百度飞桨(PaddlePaddle)- 张量(Tensor)
436 3
百度飞桨(PaddlePaddle)- 张量(Tensor)
|
机器学习/深度学习 数据可视化 算法框架/工具
【深度学习】Generative Adversarial Networks ,GAN生成对抗网络分类
文章概述了生成对抗网络(GANs)的不同变体,并对几种经典GAN模型进行了简介,包括它们的结构特点和应用场景。此外,文章还提供了一个GitHub项目链接,该项目汇总了使用Keras实现的各种GAN模型的代码。
1678 0
|
存储 NoSQL 安全
Redis内存碎片详解
Redis在存储数据时可能申请超过实际需求的内存,导致内存碎片。内存碎片率=used_memory_rss/used_memory,大于1.5时需清理。Redis 4.0-RC3后引入`activedefrag`配置来自动整理内存,可通过`config set`命令启用,并通过`active-defrag-ignore-bytes`和`active-defrag-threshold-lower`参数设定清理条件。内存清理可能影响性能,`active-defrag-cycle-min`和`active-defrag-cycle-max`参数调整CPU占用比例以缓解
917 1