【人工智能基础四】循环神经网络(RNN)与长短时记忆网络(LSTM)

news2024/9/30 0:28:51

文章目录

  • 一. RNN
    • 1. 循环神经网络结构
    • 2. 循环神经网络计算
      • 2.1. 机器翻译
      • 2.2. 循环体
  • 二. 长短时记忆网路(LSTM)
    • 1. 产生背景
    • 2. LSTM的设计思想与LSTM的链式结构
      • 2.1. LSTM的设计思想
      • 2.2. LSTM链式结构图与遗忘门
    • 3. 长短时记忆网络结构

一. RNN

RNN出现的原因与基本逻辑

  1. 卷积神经网络模型,层与层之间是全连接或部分连接的,但每层之间的节点没有连接。
  2. 考虑这样一个问题,如果要预测一个句子的下一个单词是什么,一般需要用到当前单词及前面的单词,因为句子中前后单词并不是独立的。例如,当前单词是“很”,前一个单词是“天空”,那么下一个单词很大概率是“蓝”。这样的应用CNN并不擅长。 由此出现了可以用来处理和预测序列数据的循环神经网络(RNN)。
  3. 人类在阅读时会根据之前已经加过工过的信息来理解现在看到的文字,与此类似,RNN对信息的处理方式也是如此,会记忆之前的信息,并利用之前的信息影响后面节点的输出。
    体现在网络结构上,RNN隐藏层之间的节点是有连接的,隐藏层的输入不仅包括输入层的输出, 还包括上一时刻隐藏层的输出。

 

RNN的发展

随着更加有效的循环神经网络结构(LSTM、GRU)等被不断提出,以RNN为基础的网络挖掘数据中的时序信息和语义信息的深度表达能力被充分利用,并广泛应用于情感分析、机器翻译、语言模型和语音识别等领域。

本文介绍的循环神经网络指的是简单RNN。

 

1. 循环神经网络结构

循环神经网络结构

下图展示了一个典型的循环神经网络结构图,主体结构A的输入除了来自输入层 x t x_t xt ,还有一个循环的边提供上一时刻的隐藏状态 h t − 1 h_{t-1} ht1。在每一时刻,循环神经网络的模块A在读取了 x t x_t xt h t − 1 h_{t-1} ht1之后,会生成新的隐藏状态 h t h_{t} ht ,并产生本时刻的输出 O t O_{t} Ot

 

序列的保存逻辑

由于序列长度可以无限长,维度有限的 h t h_{t} ht状态不可能将序列的全部信息都保存下来,因此循环神经网络只保存与后面任务 O t , O t + 1 . . . O_{t},O_{t+1}... Ot,Ot+1...相关的最重要信息。卷积神经网络在不同的空间位置共享参数,循环神经网络是在不同的时间位置共享参数,从而能够使用有限的参数处理任意长度的序列。

 

按时间展开后的结构

将循环神经网络按时间展开后如下图,RNN在每一个适合会有一个输入 x t x_t xt,然后根据前一时刻的隐藏状态 h t − 1 h_{t-1} ht1,计算新的隐藏状态 h t h_t ht,并输出 O t O_t Ot,其中 h t − 1 h_{t-1} ht1浓缩了之前序列 x 0 , x 1 , x t − 1 x_0,x_1,x_{t-1} x0,x1,xt1的信息。

 
在这里插入图片描述

循环网络的展开在模型训练中有重要意义,假设序列长度为N,将RNN展开后可以视为一个有N个中间层的前馈神经网络模,可以利用反向传播算法进行训练。

 

2. 循环神经网络计算

从RNN的结构特征可以很容易看出它最擅长解决与时间序列相关的问题。对于一个序列数据,可以将这个序列上不同时刻的数据依次传入RNN的输入层,而输出可以是对序列中下一个时刻的预测,也可以是对当前时刻信息的处理结果,例如语音识别结果

RNN中的状态是通过一个向量来表示的,这个向量的维度也称为RNN隐藏层的大小,假设其为n。

  • 对于时间序列数据来说(例如不同时刻商品的销量),每一时刻的输入样例可以是当前时刻的数值(例如销量值);
  • 对于语言模型来说,输入样例可以是当前单词对应的单词向量(Word Embedding)。

 

2.1. 机器翻译

RNN中每一个时刻的输入为需要翻译的句子中的单词。如下图,如果需要翻译的句子为ABCD,那么RNN第一段每一个时刻的输入就分别是A、 B、C 和 D,然后用“_”作为待翻译句子的结束符。

在第一段中,循环神经网络没有输出。从结束符“_”开始,循环神经网络进入翻译阶段。该阶段中每一个时刻的输入是上一个时刻的输出,如虚线所示,而最终得到的输出就是句子ABCD翻译的结果。从图中可以看到句子ABCD对应的翻译结果就是XYZ,当网络输出“_”时表示翻译结束。
在这里插入图片描述

 

2.2. 循环体

RNN可以看做同一个神经网络结构(输入层-隐藏层-输出层)在时间序列上被复制多次的结果,这个被复制多次的结构称为循环体,如何设计循环体的网络结构是循环神经网络效果的关键,如简单RNN、LSTM和GRU等不同的神经网络关于循环体结构是不一致的

如下图展示了简单RNN的循环体结构,这个循环体只使用了类似全连接层的网络结构,图中tanh作为激活函数的全连接层,下面通过下图所示的网络结构来标识RNN前向传播的完整流程

在这里插入图片描述

 

上图所示的循环体包括两个全连接层,第一个包含在tanh内,第二个连接层用于当前时刻的输出。假设当前输入向量的维度是x,隐藏状态的维度为n,输入大小为n+x,也就是将前一段时刻的状态和当前时刻的输入拼接成了一个大的向量作为循环体中神经网络的输入。该部分的直接输出为隐藏状态,因此第一个全连接层的参数个数为( n + x ) * n + n。循环体除了提供给下一时刻的状态,还有当前时刻的输出,当前时刻的输出是下一个时刻的输入,维度为x。因此第二个全连接层的参数为 n * x + x

下图展示了RNN前向传播的具体分析:

在这里插入图片描述

下图展示了RNN前向传播的具体计算过程
在这里插入图片描述

 

二. 长短时记忆网路(LSTM)

1. 产生背景

RNN的问题

  1. 循环神经网络处理序列较短的数据效果较好,但是当序列较长时,RNN可能会丧失学习到长近距离信息的能力,比如用RNN构建模型预测下一个词,当预测the clouds are in the sky最后的词,这个时候其 实并不需要任何其他的上下文,因为下一个词很显然就应该是sky。但如果预测I grew up in China…I speak fluent Chinese最后的词。当前的信息建议下一个词可能是一种语言的名字, 但是如果我们需要弄清楚是什么语言,我们就需要离当前位置很远的 Chinese的上下文信息。
  2. 理论上,RNN可以处理这样的问题,但在实践中,即使仔细挑选参数,RNN也不能有效处理这种长期依赖问题。随着间隔不断增大,RNN会彻底丧失学习到连接远信息的能力。除此之外,RNN还容易出现梯度消失和梯度爆炸问题。

 

长短时记忆网络的提出

由此,Hochreiter 和Schmidhuber提出了长短时记忆网络(Long Short-Term Memory, LSTM),本质上,LSTM是一种时间循环神经网络。LSTM可以解决RNN中普遍存在的长期依赖问题,能有效传递和表达长时间序列中的信息并且不会导致长时间前的有效信息被忽略。并且也能解决RNN的梯度消失以及梯度爆炸的问题。

 

2. LSTM的设计思想与LSTM的链式结构

2.1. LSTM的设计思想

LSTM的设计借鉴了人类对自然语言处理的直觉性经验,一是在时间序列中,不是多有信息都等同有效,大多数情况存在“关键词”或“关键帧”,二是我们在阅读时会自动概括已阅读部分的内容并且用之前的内容帮助理解后文。基于这两点,LSTM提出了“长短期记忆”的概念,只有一部分信息需要长期记忆,而且还需要动态地处理神经网络的记忆,因为有的信息一开始价值很高,后面价值逐渐衰减,因此需要让神经网络学会遗忘特定的信息。

 

2.2. LSTM链式结构图与遗忘门

同循环神经网络一 样,LSTM也具有RNN重复模块链的形式,如下图。

在这里插入图片描述

假设输入的句子为I am from China.I am fluent in______。为了正确预测出下一 个单词Chinese,LSTM会更加关注上一句中的China并且利用神经元 (cell)对其进行记忆。在处理序列时神经元会对获取的信息进行存储,这些信息会用于预测下一个单词。

LSTM网络节点中会单独设计一 个“遗忘门”,当遇到句号时,遗忘门会意识到句子中的上下文发生了改变,并忽略当前神经元中存储的状态信息。换句话说,遗忘门的作用是让循环神经网络“遗忘”之前没有用到的信息。

 

3. 长短时记忆网络结构

实际上,LSTM链式结构中每一个计算节点是一种拥有3个“门”结构 的特殊网络结构,如下图。LSTM靠一些“门”的结构让信息有选择性地影响循环神经网络中每个时刻的状态。

门的结构

  • “门”结构就是一个使用Sigmod神经网络和一个按位做乘法的运算,这两个操作合在一起就是一个“门”结构。
  • 使用Sigmod作为激活函数的全连接神经网络层会输出一个0~1之间的数值,描述当前输入有多少信息量可以通过这个结构。当门打开时,如果Sigmoid神经网络层输出为1,则全部信息都可以通过。当门关上时,如果Sigmoid神经网络层输出为 0,则任何信息都无法通过。

在这里插入图片描述
遗忘门和输入门可以使神经网络更有效的保存需长期记忆的信息,遗忘门的作用是让网络忘记之前没有用的信息,更具当前输入 x i x_i xi和上一时刻的输出 h t − 1 h_{t-1} ht1决定那一部分信息被遗忘,哪一部分信息被记忆。

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

五种多目标算法(MOGOA、MOMA、MODA、MOPSO、NSGA2)性能对比(MATLAB代码)

一、算法介绍 MOGOA:多目标蝗虫优化算法 MOMA:多目标蜉蝣算法 MODA:多目标蜻蜓算法 MOPSO:多目标粒子群优化算法 NSGA2:非支配排序遗传算法II 这些算法都是针对多目标优化问题设计的元启发式算法,每种…

Java | Leetcode Java题解之第321题拼接最大数

题目&#xff1a; 题解&#xff1a; class Solution {public int[] maxNumber(int[] nums1, int[] nums2, int k) {int m nums1.length, n nums2.length;int[] maxSubsequence new int[k];int start Math.max(0, k - n), end Math.min(k, m);for (int i start; i < e…

C语言 | Leetcode C语言题解之第321题拼接最大数

题目&#xff1a; 题解&#xff1a; int compare(int* subseq1, int subseq1Size, int index1, int* subseq2, int subseq2Size, int index2) {while (index1 < subseq1Size && index2 < subseq2Size) {int difference subseq1[index1] - subseq2[index2];if (…

Codeforces Round 963 (Div. 2) A~C

封面原图 画师やんよ 掉大分的一场 连夜补题 真的不会写啊真的红温了 A - Question Marks 题意 选择题中答案为ABCD的题目各有n道&#xff0c;小明的答案给你&#xff0c;其中&#xff1f;表示这道题空着没写&#xff0c;问他的最高得分 思路 空着的题目肯定没分 超出选项…

【连续数组】python刷题记录

R3-前缀和专题 绝对要用字典记录 ben神&#xff0c;前缀和字典 class Solution:def findMaxLength(self, nums: List[int]) -> int:#前缀和字典,key为差值&#xff0c;value为坐标dict{0:-1}#当前1和0的差值counter0ret0for i,num in enumerate(nums):#多1&#xff0b;1if…

服务器自动部署网络安装环境

实验环境 rhel7&#xff1a;IP地址为172.25.254.200、主机名为node1.rhel7.org 实验配置 一.kickstart自动安装脚本制作 1.安装图形化生成kickstart自动安装脚本的工具 [rootnode1 ~]# yum install system-config-kickstart 2. 启动图形制作工具 [rootnode1 ~]# system-…

[Meachines] [Easy] shocker CGI-BIN Shell Shock + Perl权限提升

信息收集 IP AddressOpening Ports10.10.10.56TCP:80,2222 $ nmap -p- 10.10.10.56 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) |_http-title: Site doesnt have a title (text/html). |_http-server-…

《集成学习实战》:解锁机器学习的智慧合力

《集成学习实战》&#xff1a;解锁机器学习的智慧合力 在机器学习的浩瀚领域中&#xff0c;集成学习以其独特的“集体智慧”理念脱颖而出&#xff0c;成为解决复杂问题、提升模型性能的强大工具。《集成学习实战》一书&#xff0c;正是这样一本引领读者深入探索集成学习奥秘的…

task1打卡:Linux

闯关任务 hello_world 任务1 Linux命令 任务2 conda创建虚拟环境并运行test.py 任务3 test.sh

Spark wordcount实验

Spark WordCount实验一 启动spark 1. 数据准备 创建建数据文件夹 进入data文件夹 创建文本文件 并查看是否创建成功 文件内容 查看文件目录 启动pyspark 3、输入代码 从本地读入文本数据 读入1中创建好的data.txt文本文件。 并计算打印结果 Spark WordCount实验二 切工作目…

链表(真题)

1.两两交换&#xff1a;给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。【2021计专】 struct ListNode* swapPairs(struct ListNode* head) {typedef struct ListNode LTNode;//设置虚拟头结点LTNode* dummyHead (LTNode*)malloc(siz…

浅谈哈希与哈希表(c++)

目录 一、哈希的基本概念&#xff08;一&#xff09;哈希函数的特性&#xff08;二&#xff09;哈希冲突 二、C 中的哈希表实现三、哈希表的性能分析四、哈希表的应用场景五、优化哈希表的策略六、例题讲解【模板】字符串哈希题目描述输入格式输出格式样例 #1样例输入 #1样例输…

Vue Amazing UI:高颜值、高性能的前端组件库

Vue Amazing UI&#xff1a;高颜值、高性能的前端组件库 在当今前端开发中&#xff0c;Vue Amazing UI 作为一款功能强大的 UI 组件库&#xff0c;为开发者提供了全面的解决方案。本文将介绍 Vue Amazing UI 的基本信息、特点以及如何快速部署和使用。 软件简介 Vue Amazing U…

解决方案:Cannot write to ‘torch-2.0.1+cu118-cp310-cp310-linux_x86_64.whl.3’ (成功).

文章目录 一、现象二、解决方案 一、现象 在服务器执行以下语句 wget https://download.pytorch.org/whl/cu118/torch-2.0.1%2Bcu118-cp310-cp310-linux_x86_64.whl报的错误如下&#xff1a; --2024-06-16 17:01:40-- https://download.pytorch.org/whl/cu118/torch-2.0.1%…

Visual Studio 配置Go开发环境

文章目录 安装Go配置环境变量Visual Studio 配置Go开发环境安装GO扩展安装/更新GO工具 编写Hello World 安装Go 本文基于Windows安装演示&#xff0c;安装链接Go安装包&#xff0c;根据需要选择对应安装包即可&#xff0c;没有需要直接根据系统选择最新安装包。 安装包长这样…

C语言程序设计-[3] 运算符和表达式

C语言的运算符也存在优先级和结合性的概念&#xff0c;在同一表达式中&#xff0c;优先级高的先结合&#xff0c;优先级相同时&#xff0c;就需要考虑结合性(分为左结合性和右结合性——对于单目、三目和赋值运算符表达式&#xff0c;从右至左运算&#xff1b;其他运算符表达式…

【Android】跨程序共享数据——内容提供器初识

跨程序共享数据——探究内容提供器 内容提供器的简介 主要用于在不同的应用程序之间实现数据共享的功能&#xff0c;它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访数据的安全性。目前,使用内容提供器是Android实现跨程序共享数据的标准方式。…

modbus控制传感器

文章目录 modbus报文分析实例移植libmodbus问题 添加freertos初始化发送和接收发送和接收的回调函数flush 主从设备代码分析-主控如何读写从机1、串口传输&#xff0c;设置哪个串口、波特率、校验码、数据个数、体制位2、connect连接只是初始化3、主设备读写从设备14、硬件操作…

LinuxC++(11):创建一个进程

Linux的0、1和2号进程 整个linux系统全部的进程是一个树形结构。 0号进程&#xff08;系统进程&#xff09;是所有进程的祖先&#xff0c;它创建了1号和2号进程。 &#xff08;相当于是我们世界的时间线&#xff09; 1号进程&#xff08;systemd&#xff09;负责执行内核的…

批发行业手机入库识别单据 源码CyberWinApp-SAAS 本地化及未来之窗行业应用跨平台架构

一、手机入库好处 1. 便捷性高&#xff1a;可以随时随地通过手机进行入库操作&#xff0c;不受时间和地点的限制&#xff0c;方便库存管理者或相关人员及时记录商品或物品的入库信息。 2. 提高效率&#xff1a;采用手机端快速数据录入&#xff0c;避免了繁琐的手工记录&#x…