深度学习 DAY1:RNN 神经网络及其变体网络(LSTM、GRU)

实验介绍

RNN 网络是一种基础的多层反馈神经网络,该神经网络的节点定向连接成环,其内部状态可以展示动态时序行为。相比于前馈神经网络,该网络内部具有很强的记忆性,它可以利用它内部的记忆来处理任意时序的输入序列,这让它在自然语言处理方面取得了很大的成功。

知识点
  • 循环网络的概念
  • RNN 网络结构
  • LSTM 网络结构
  • 细胞体三个门的工作方式
  • 其他 LSTM 网络变体的结构

循环神经网络

循环网络是一种对序列数据有较强处理能力的网络,类似于CNN 网络,这两种网路的结构中都存在权值共享的思想。

在网络模型的不同部分进行权值共享使得模型可以扩展到不同样式的样本,正如 CNN 网络中一个确定好的卷积核模板,几乎可以处理任何大小的图片。将图片中分成多个区域,使用同样的卷积核对每一个区域进行处理,最后可以获得非常好的处理结果。

同样的,循环网络使用的类似的模块( 形式上类似,之后会进行讲解 )对整个序列进行处理,可以将很长的序列进行泛化,得到需要的结果。

这里提到一点,因为循环神经网络可以将序列进行较好的处理,且时间同样也是有序数列,在实际应用中,RNN 循环神经网络对于处理时序数据具有天然的优势。

网络的结构

类似于 CNN 神经网络的卷积核概念,在 RNN 网络中也类有类似的概念 “ 计算图 ” 。

计算图其实质上是用来描述一个函数方法的模块,也等同于一个数据处理 “ 盒子 ” 。

每一个计算图有输入和输出的数据,同时在某一时刻的计算图的数据对下一时刻计算图造成影响。

计算图可以将按照序列进行展开成为一个具有深度的链结构,在这个深度结构中,也构成了参数的共享。

其中最为普遍的系统形式为:

                                                     

利用这个公式可以将每一个序列的元素进行连接处理,将公式进行展开可以得到类似于下面的形式:

进行展开后可以得到序列的第 t 个节点(或第 t 时刻)的处理结果。在式子中有不变的参数 θ ,通过保证 θ 使得整个网络可以进行权值共享,每一阶段通过参数将前一阶段的状态导入。

RNN 网络

介绍

在前面的讲解中,提到了什么是循环网络,以及循环网络的公式构造,RNN 网络模型即是循环神经网络的表现。相比于前面描述的循环网络,RNN 中加入了其他参数的输入。即在某一个节点或某一时刻 t (以下统称为某一时刻 t ),输入网络的参数还有外界的信号 x(t) ,这样将上式进行重写,有:

                                        

因为网络的参数通过循环不断地传入网络,这一点类似于人思考的过程,RNN 网络可以保持信息的持久性,这一点在其他的神经网络结构中是不具备的。也正是因为这个特征,RNN 网络可以很好的对时序模块进行处理。

在对于网络的理解,也可以理解成为对于同一个网络,每次传入的参数不同。传入参数的一部分是某一时刻 t 的新参数,另一部分是上一时刻 t−1 已经获取到的参数。 

RNN 拓扑结构

将 RNN 网络函数

                                                    

 进行展开后可以获得下图所示的链结构:

                          

在图中黄色框标注的部分为网络的一个计算图,也可以将其称作为一个细胞体。同时图中分别用蓝色和橙色标注了两种不同的参数传导方式。先解释一下每一个参数的含义, x(t) 为 t 时刻的输入参数,h(t) 为隐藏层的激活函数,o(t) 为 t 时刻的输出参数, L(t) 为网络的损失值, y(t) 为目标函数。一般情况下使用图中蓝色线标注的迭代方式,当整个网络位数很高并且信息非常多时,可以利用橙色算法进行传参。

通过将网络展开,能够较好的看到对于一个序列 x(t) ,可以使用 RNN 循环神经网络进行处理,网络具有联想能力,可以将之前的信息加以保存,并在之后的循环中进行调用。

RNN 的记忆功能

在上图中我们可以看到 RNN 展开链的形式,这里利用实例解释一下 RNN 的记忆功能。我们将 RNN 网络的拓扑图进行简化。

假如需要使用 RNN 循环网络对一段话进行预测,“ 我是中国人,我爱中国,我的母语是()” 。对于网络来说,现假设 “ 中国人 ” 信息在 x(2) 输入,括号中的内容在 o(n) 输出。这里就涉及到联想功能,如果说是一个训练好的网络,输出信息时网络会根据前文的信息进行判断该点的输出应该为一种语言的名字,并通过之前的输入 “ 中国人 ” 判断此处应该是 “ 汉语 ” 。 

但是对于 RNN 网络仍然是存在一些局限性的,输出的信息还有很多依赖的因素。在理想情况下,RNN 网络的输出精度并不受循环次数的增加而降低。但是在实际应用中,当输入关键信息的位置和输出信息的位置之间的节点变得非常长之后,RNN 神经网络会丧失链接到判断输出的关键信息位置的能力。在实际的应用中,对于循环神经网络,人们经常应用的是 RNN 网络的变体,例如 LSTM 网络。在 LSTM 网络中没有因为位置远近而降低输出精度的问题。 

RNN 变体 LSTM 网络

LSTM 网络,即为长短期记忆网络。因为该网络的结构,该网络适合处理序列中间隔和延时较长的事件。在实际生活中,LSTM 网络已经应用在诸多方面, 2015 年谷歌将其应用在安卓系统语音识别功能中,在苹果手机中 Siri 功能也整合了 LSTM 网络,百度、亚马逊等公司的产品中很多也应用到了 LSTM 网络。

LSTM 细胞体结构

在基础 RNN 网络中,之所以不能解决长期依赖问题,是因为 RNN 处理数据的计算图( 细胞体 )结构简单,只有一个非常简单的结构,比如说只进行一个 Sigmoid 函数的数据处理,这使得网络很难对长时间的信息进行记忆,同时网络对于哪些信息需要舍弃,哪些信息需要保留也无法做出很好的判断。

在 LSTM 网络中,通过将细胞体结构复杂化,在算法中加入了判断信息是否有用的处理器。在网络中加入了三道 “ 门 ” ,分别叫做:遗忘门、输入门、输出门。信息进入网络中,网络会根据一定的规则来判断信息是否有用,有用的信息将加以保留,无用的信息将进行遗忘。下面我们将 LSTM 的一个细胞体以简图形式呈现。

                             

在这里需要解释一下上图中的一些符号。 σ 层代表一个输出的权重,表示信息通过的量,其取值范围为 [0 1] 。

当取值为 0 时,代表所有信息都不能通过;

当取值为 1 时,代表所有信息都能通过。

网络通过接受前一个细胞体的两个参数 ,以及外界给予的参数  ,经过三个门的过滤整合将信息传递给下一个细胞体。上图中黑色和蓝色的线是信息在整个网络中信息的传送带,将信息在网络中不断的传输。 

在上图两条线合并的地方表示将信息进行合并(蓝线和黑线不相交),在实际处理中,表示将两个向量进行合并。一条线分开成两条线的地方表示将信息进行复制(不需要考虑颜色),黑色方块代表 LSTM 神经网络中的一层,而圆圈代表将信息进行相应的处理。 

细胞体中颜色的区分是为了让读者更好理解三个门的概念。第一个门用橙色线进行标注为忘记门;第二个门用绿色线和黄色线标注为输入门;第三个门是用灰色线进行标注为输出门。下面将详细讲三个门结构进行讲解。 

结构分步讲解

LSTM 网络涉及到三个门的操作,将三个门分开进行讨论会使得该网络便于读者进行理解。

遗忘门

遗忘门为网络中的第一个门,网络会对信息进行判断,决定信息的弃留。为什么遗忘门作为网络的第一个门,是因为需要将网络信息进行过滤,放在之后容易对新加入的信息进行错误处理。

 应用到实际应用中,细胞体中可能含有的是 “ 小明 ” 这个人名,我们很希望使用它来预测之后的词语,网络中可能已经获取的信息是 “ 忧伤的 ” ,但经过网络处理中后该词需要进行更新,遗忘门就会将该词进行过滤。

输入门

输入门分为两步进行,首先绿色线的部分需要选择什么值需要进行更新,之后黄色线的部分是确定将什么值进行传输。这两步中可以用如下公式进行解释。

 

现在我们已经将网络信息中需要更新的旧信息予以遗忘,新信息定位好并获取其内容,之后就是将信息进行整合,更新细胞体状态,并且这里得到细胞体的一部分输出:

输出门

最后是将信息进行输出,输出门所采用的信息是将细胞状态进行处理并和初始信息整合后进行输出。

 通过最后输出门的处理,将细胞信息进行了选择,输出了我们需要的那部分信息,比如按照之前的语料信息,“ 小明 ” 现在的状态并不是 “ 忧伤的 ” 而是 “ 快乐的 ” 。这时网络的输出会将 “ 快乐的 ” 这个信息进行输出。

RNN 其他形式变体介绍

在实际应用中,会使用到很多 LSTM 网络的变体,通过这些变体也演化出非常多的应用。

Peephole 网络

这个变体是由 GersGers 和 Schmidhuber 在 2000 年提出的,该网络将细胞体的状态作为网络神经层的一部分输入。整合了细胞状态的输入,使得网络判断可依据的信息变多,这种优化的方法也称作是窥孔优化。

                      

 

Coupled 网络

在这个网络中,细胞状态的遗忘是相对的,遗忘门遗忘了一些信息之后,相应的在输入门就会生成一些信息。未被遗忘的信息将传输到输入门中,有:

                                                                    

                                      

GRU 网络

该网络是简化版的 LSTM 网络,在这个网络中将细胞状态的概念去掉,通过一条输出链在每时刻和输入信息进行整合作为输出并传输到下一时刻。正因为这样的结构,使得 GRU 网络收敛的时间和需要的信息量的要求上都优于 LSTM 网络。

                               

实验总结

本文大体介绍了 RNN 算法及其变体算法 LSTM 算法,通过讲解循环网络的结构使得读者能够初步理解 RNN 网络的运行模式,对 RNN 算法进行了解。之后将 RNN 算法的变体 LSTM 算法进行讲解。通过对 LSTM 细胞体结构的讲解,使用户能理解 LSTM 网络中三个门的概念,然后分步进行每个门的运算展示。最后希望读者能够了解其他 LSTM 网络的变体。

小练习

希望读者能思考整个算法的流程并将算法进行复述,能较好的说出三个门结构的运行特点,以及怎样将信号进行处理。同时希望读者能够思考怎样将 LSTM 网络用代码实现,并且那些希望深入研究的读者可以继续理解其他变体网络。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/4195.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[STM32 HAL库]串口空闲中断+DMA接收不定长数据

一、空闲中断 STM32的串口具有空闲中断,什么叫做空闲呢?如何触发空闲中断呢? 空闲:串口发送的两个字符之间间隔非常短,所以在两个字符之间不叫空闲。空闲的定义是总线上在一个字节的时间内没有再接收到数据。触发条件…

计算机网络 (49)网络安全问题概述

前言 计算机网络安全问题是一个复杂且多维的领域,它涉及到网络系统的硬件、软件以及数据的安全保护,确保这些元素不因偶然的或恶意的原因而遭到破坏、更改或泄露。 一、计算机网络安全的定义 计算机网络安全是指利用网络管理控制和技术措施,保…

机器学习中的方差与偏差

文章目录 方差与偏差1.1 数据1.1.1 数据的分布1.1.2 拟合 1.2 方差与偏差1.2.1 泛化误差的拆分1.2.2 理解方差偏差 1.3 方差-偏差trade-off1.3.1 方差-偏差trade-off1.3.2 方差与偏差诊断 1.4 降低策略1.4.1 噪声1.4.2 高偏差1.4.3 高方差 方差与偏差 1.1 数据 1.1.1 数据的分…

力扣 有效的括号

括号匹配问题,找到符合的进行抵消。 题目 从题可以看出是嵌套的括号先匹配先做抵消,类似就近原则,这也是栈的典型例题。可以通过枚举多种不同的情况慢慢用if与else做返回。 时间复杂度:O(n),其中 n 是字符串的长度。…

js: 区分后端返回数字是否为null、‘-’ 或正常number类型数字。

问&#xff1a; 这是我的代码<CountTo v-if!isNaN(Number(item.num))> <span v-else>{{item.num}}</span> 我希望不是null的时候走countTo&#xff0c;是null的时候直接<span>{{item.num}}</span>显示 回答&#xff1a; 最终结果&#xff1a; …

Chapter5.4 Loading and saving model weights in PyTorch

5 Pretraining on Unlabeled Data 5.4 Loading and saving model weights in PyTorch 训练LLM的计算成本很高&#xff0c;因此能够保存和加载LLM的权重至关重要。 ​ 在PyTorch中&#xff0c;推荐的方式是通过将torch.save函数应用于.state_dict()方法来保存模型权重&#x…

运动相机拍视频过程中摔了,导致录视频打不开怎么办

3-11 在使用运动相机拍摄激烈运动的时候&#xff0c;极大的震动会有一定概率使得保存在存储卡中的视频出现打不开的情况&#xff0c;原因是存储卡和相机在极端情况下&#xff0c;可能会出现接触不良的问题&#xff0c;如果遇到这种问题&#xff0c;就不得不进行视频修复了。 本…

Python制作简易PDF查看工具PDFViewerV1.0

PDFViewer PDF浏览工具&#xff0c;Python自制PDF查看工具&#xff0c;可实现基本翻页浏览功能&#xff0c;其它功能在进一步开发完善当中&#xff0c;如果有想一起开发的朋友&#xff0c;可以留言。本软件完全免费&#xff0c;自由使用。 软件界面简洁&#xff0c;有菜单栏、…

SpringBoot实现定时任务,使用自带的定时任务以及调度框架quartz的配置使用

SpringBoot实现定时任务&#xff0c;使用自带的定时任务以及调度框架quartz的配置使用 文章目录 SpringBoot实现定时任务&#xff0c;使用自带的定时任务以及调度框架quartz的配置使用一. 使用SpringBoot自带的定时任务&#xff08;适用于小型应用&#xff09;二. 使用调度框架…

Output

AUTOSAR OS模块详解(三) Alarm 本文主要介绍AUTOSAR OS的Alarm&#xff0c;并对基于英飞凌Aurix TC3XX系列芯片的Vector Microsar代码和配置进行部分讲解。 文章目录 AUTOSAR OS模块详解(三) Alarm1 简介2 功能介绍2.1 触发原理2.2 工作类型2.3 Alarm启动方式2.4 Alarm配置2.5…

openharmony应用开发快速入门

开发准备 本文档适用于OpenHarmony应用开发的初学者。通过构建一个简单的具有页面跳转/返回功能的应用&#xff08;如下图所示&#xff09;&#xff0c;快速了解工程目录的主要文件&#xff0c;熟悉OpenHarmony应用开发流程。 在开始之前&#xff0c;您需要了解有关OpenHarmon…

使用傅里叶变换进行图像边缘检测

使用傅里叶变换进行图像边缘检测 今天我们介绍通过傅里叶变换求得图像的边缘 什么是傅立叶变换&#xff1f; 简单来说&#xff0c;傅里叶变换是将输入的信号分解成指定样式的构造块。例如&#xff0c;首先通过叠加具有不同频率的两个或更多个正弦函数而生成信号f&#xff08;x…

用户中心项目教程(四)---Vue脚手架完成前端初始化

目录 1.项目的创建 2.使用开发工具打开 3.项目运行方法 4.使用按钮组件 5.全局注册 6.如何进行组件的测试 7.使用组件的效果展示 8.关于这个vue项目内容的说明 1.项目的创建 这个前提你是你完成了我的教程&#xff08;三&#xff09;里面的相关配置&#xff0c;不然你可…

《自动驾驶与机器人中的SLAM技术》ch4:基于预积分和图优化的 GINS

前言&#xff1a;预积分图优化的结构 1 预积分的图优化顶点 这里使用 《自动驾驶与机器人中的SLAM技术》ch4&#xff1a;预积分学 中提到的散装的形式来实现预积分的顶点部分&#xff0c;所以每个状态被分为位姿&#xff08;&#xff09;、速度、陀螺零偏、加计零偏四种顶点&am…

二叉搜索树(TreeMapTreeSet)

文章目录 1.概念2.二叉搜索树的底层代码实现(1)首先构建二叉树(2)实现插入功能&#xff1b;(3)实现查找(4)删除&#xff08;重点&#xff09; 3.TreeMap 1.概念 TreeMap&TreeSet都是有序的集合都是基于二叉搜索树来实现的 二叉搜索树&#xff1a;是一种特殊的二叉树 若左子…

【QT用户登录与界面跳转】

【QT用户登录与界面跳转】 1.前言2. 项目设置3.设计登录界面3.1 login.pro参数3.2 界面设置3.2.1 登录界面3.2.2 串口主界面 4. 实现登录逻辑5.串口界面6.测试功能7.总结 1.前言 在Qt应用程序开发中&#xff0c;实现用户登录及界面跳转功能是构建交互式应用的重要步骤之一。下…

基于springboot的口腔管理平台

作者&#xff1a;学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”&#xff0c;支持远程部署调试、运行安装。 项目包含&#xff1a; 完整源码数据库功能演示视频万字文档PPT 项目编码&#xff1…

4 AXI USER IP

前言 使用AXI Interface封装IP&#xff0c;并使用AXI Interface实现对IP内部寄存器进行读写实现控制LED的demo&#xff0c;这个demo是非常必要的&#xff0c;因为在前面的笔记中基本都需哟PS端与PL端就行通信互相交互&#xff0c;在PL端可以通过中断的形式来告知PS端一些事情&…

实力认证 | 海云安入选《信创安全产品及服务购买决策参考》

近日&#xff0c;国内知名安全调研机构GoUpSec发布了2024年中国网络安全行业《信创安全产品及服务购买决策参考》&#xff0c;报告从产品特点、产品优势、成功案例、安全策略等维度对各厂商信创安全产品及服务进行调研了解。 海云安凭借AI大模型技术在信创安全领域中的创新应用…

二、点灯基础实验

嵌入式基础实验第一个就是点灯&#xff0c;地位相当于编程界的hello world。 如下为LED原理图&#xff0c;要让相应LED发光&#xff0c;需要给I/O口设置输出引脚&#xff0c;低电平&#xff0c;二极管才会导通 2.1 打开初始工程&#xff0c;编写代码 以下会实现BLINKY常亮&…