【期末复习向】走进循环神经网络系列-RNN,LSTM,GRU

RNN

上篇文章复习了最简单的神经网络MLP,它是由输入层,隐藏层和输出层构成的。当然这也是所有神经网络最基本的架构。但是MLP过于简单,存在的问题之一就是无法考虑全局的信息,也就是前后输入的信息,这对于解决时间序列的问题是极为不利的。因此引入了存储前一时刻输入信息单元的RNN应运而生。【期末复习向】走进MLP多层感知机-CSDN博客​​​​​​文章浏览阅读202次,点赞7次,收藏5次。mlp多层感知机,属于最简单的人工神经网络,也被称为全连接神经网络、前馈网络。它是了解神经网络的基础,包括输入层、隐藏层和输出层3个架构。输入层就是具有维度的向量,输出层也是向量。只有隐藏层是包括了所谓的人造神经元。https://blog.csdn.net/weixin_62588253/article/details/133016982?spm=1001.2014.3001.5502

RNN网络中间的隐藏层部分和MLP没有区别,唯一的区别在于RNN最后一个隐藏层的输出会被存储起来,并和下一次输入的向量相加。(如果是第一个输入,那么相加的隐藏层输出设为0)这样每一次的输入都会考虑上一次的输出信息。

RNN就是为了解决时序问题而生的,那么具体到应用,RNN可以解决序列到类别、同步的序列到序列和异步的序列到序列问题。

(1)序列到类别

所谓序列到类别就是给一段文本,对文本进行分类的问题。如新闻分类、情感分类等等。如下图是未展开的RNN网络用于分类的示意图。可以输入的维度一个是由词向量决定的,另一个是由隐藏层的输出维度决定的,2者相加构成了输入层的维度大小。同时要注意U,W,b参数是不变的,这个等会把网络展开后容易理解错误。要记住RNN网络每个步骤的参数是共享不变的。

参数U是输入层x1到隐藏层的权重矩阵,参数W是隐藏层输出h0到隐藏层的权重矩阵。有人会说不是把x1和h0拼接起来一起传入到隐藏层吗?那为什么x1和h0分别乘以不同的权重矩阵呢?其实仔细看我下面的图,x1和h0可以看做一个向量,然后他们一起乘以由权重矩阵U和W构成的矩阵的倒置,而这就满足了把上一时刻的隐藏层的输入融入当前时刻的输出,然后再一起经过隐藏层的概念。最后再经过一个激活函数(一般是tanh)。

如果hidden layer中有多个隐藏层,那么U和W也就对应的有多个。

多个隐藏层可以参考下面这个图

 下面是按照时间顺序对其展开后的示意图(如果是分类问题的话那么输入只有一个,在最后输出)

(2)同步的序列到序列

RNN还可以解决例如中文分词、信息抽取、语音识别等同步的序列到序列的问题

(3)异步的序列到序列

对于机器翻译、自动问答等异步的序列到序列问题,RNN也是可以解决的,但是此时就需要采用编码器-解码器架构,利用2个RNN来解决问题。前一个RNN做特征提取,后一个RNN根据第一个输入BOS,逐个输出对应的字(根据字典的数量和最大概率对应的字),最后遇见END字符结束生成。因为这个和后面的transformer重复了,这里就不赘述。可以参考这个文章具体了解编码器-解码器架构:

【期末考复习向】transformer的运作机制-CSDN博客文章浏览阅读467次,点赞10次,收藏11次。W的行数等于独热向量的维度,W的列数则是期望的稠密向量每个字的维度。同时decoder的输入是bos的独热向量,在cross attention部分bos的词向量会得到q,结合深度学习的词向量的kv,重新得到一个新的bos的词向量。这里的cross attention之所以是交叉,就是因为q向量来自于decoder的第一个Add&Norm操作后的一排向量,乘一个新的Wq矩阵得到的,而k,v向量则来自于encoder的输出向量乘上新的Wk和Wv矩阵得到的,然后q向量对k相乘加上v向量得到新的输出向量。https://blog.csdn.net/weixin_62588253/article/details/134967914?spm=1001.2014.3001.5501

总结:RNN是最简单的一种循环神经网络。它本身还存在着许多的问题,其中一个便是长期依赖(Long-TermDependencies)问题

所谓长期依赖就是随着RNN处理的序列逐渐变成,前面的信息在传到后面时会逐渐丢失,而在训练时则会导致梯度消失的问题。因此,RNN只具备短时记忆的能力。

LSTM

为了解决RNN的短期记忆问题,LSTM在RNN的基础上学会了利用有限的记忆能力,即忘记不重要的信息,只保留重要的信息。先放出LSTM的一种表示图

 可以发现相比于RNN,在隐藏层部分,LSTM加入了更多的sigmoid函数,原因就在于它的值域是0-1,0就把不重要的信息遗忘;1就把重要的信息完美的保存下来。除此之外,除了和RNN一样引入之前时刻的信息ht,LSTM还增加了一个细胞状态ct,并通过ct来完成经过遗忘或保留操作后的最终改变。而想要影响到细胞的状态,就要通过三个被称作“门”的结构,分别是遗忘门,更新门(也叫输入门)和输出门,这三个门都会对细胞状态产生影响。

(1)遗忘门

顾名思义,这个门用于决定细胞应该忘记之前的哪些信息。输入是前一时刻的输出ht-1与当前输入xt的拼接,然后经过一个sigmoid激活函数后得到ft。这个ft中的每一维度值的范围都在0-1,表示信息的完全遗忘和完全记住。最后通过与细胞状态ct-1做对位乘(就是向量对应维度相乘,维度大小不变,对应的值相乘)来改变细胞状态。

(2)输入门(更新门)

这一步是为了确定把什么新的信息添加到细胞状态中。其中包括两个部分,一个是sigmoid层,用于决定对原来的信息我们做哪些更新;另一个是tanh层,这个则是在原来信息的基础上产生一个全新的向量,这个向量是全新的作为候选向量加入到细胞状态中。在产生这2个向量后,对他们同样进行对位乘。

(3)更新细胞状态

基于前面2步,我们就可以完成对细胞状态ct-1的更新。首先是ct-1对位乘ft,用于遗忘掉细胞状态中不重要的信息;然后是让ct-1加上更新门的向量完成对细胞状态信息的更新。

(4)输出门

在完成细胞状态的更新后,我们要依据新的细胞状态决定下一时刻的输出是什么。首先是由输入ht-1与xt经过输出门确定哪些信息需要被输出。同样是经过一个sigmoid激活函数得到ot。接着把更新后的细胞状态通过一个tanh函数,然后与ot进行对位乘得到最终的输出ht。

需要注意的是,LSTM的参数并不是随时间共享的,因此图中一共有4套不同的参数

 GRU

基于LSTM有很多的变种,讲讲其中的GRU。GRU对LSTM的主要改动就在于把细胞状态和隐藏层输出混合在一起,同时只保留了一个重置门和一个更新门。

(1)重置门

 重置门rt决定了当前信息与上一时刻的信息如何结合,其实就是遗忘多少信息,具体做法是ht-1与xt拼接后乘一个变换矩阵,然后经过sigmoid函数。

rt = sigmoid(Wr·xt + Ur·ht-1 + br)

(2)更新门

更新门zt决定了如何更新或者更新多少新的信息。具体做法是ht-1与xt拼接后乘一个变换矩阵,然后经过sigmoid函数,与重置门做法是一样的。

zt  = sigmoid(Wz·xt + Uz·ht-1 + bz)

(3)准备候选隐藏状态

ht-1与rt做对位乘后,再与xt拼接并做变换后,经过一个tanh函数得到候选隐藏状态

 = tanh(Wh·xt + Uh·(ht-1 * rt))

(4)得到隐藏层输出

基于上面3步,可以完成对隐藏层输出的更新。首先是ht-1与更新门的输出zt做对位乘;然后是隐藏状态与1-zt做对位乘后,加上上一步的输出。

ht = ht-1 * rt + (1-zt) * 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【操作系统】实验四 进程调度

实验名称: 实验四 进程调度 实验目的: 1. 加深理解有关进程控制块、进程队列的概念 2. 体会和了解优先级和时间片轮转调度算法的具体实施办法 实验内容: 1. 设计进程控制块 PCB 表结构(与实验一的结构相同)&#xff…

【倒立摆】仿真、起摆

建模 在此示例中,我们将考虑带有推车的倒立摆系统的二维版本,其中摆锤位于 被限制在垂直平面内移动,如下图所示。对于该系统,控制输入是水平移动小车的力 F F F,输出是摆的角位置KaTeX parse error: Undefined contro…

计算机网络:数据链路层(广域网、PPP协议、HDLC协议)

今天又学会了一个知识,加油! 目录 一、广域网 二、PPP协议 1、PPP协议应满足的要求 2、PPP协议无需满足的要求 3、PPP协议的三个组成部分 4、PPP协议的状态图 5、PPP协议的帧格式 三、HDLC协议 1、HDLC的站(主站、从站、复合站&…

使用Kaptcha实现的验证码功能

目录 一.需求 二.验证码功能实现步骤 验证码 引入kaptcha依赖 完成application.yml配置文件 浏览器显示验证码 前端页面 登录页面 验证成功页面 后端 此验证码功能是以SpringBoot框架下基于kaptcha插件来实现的。 一.需求 1.页面生成验证码 2.输入验证码&#xff…

关于react native项目中使用react-native-wechat-lib@3.0.4

关于react native项目中使用react-native-wechat-lib3.0.4 插件官网安装依赖包(Android和iOS下载插件完成后记得更新依赖,)Android中配置1.在项目文件夹下面创建文件夹wxapi(如上图)2.在文件MainApplication.java中如下…

使用数组模拟栈的相关操作【栈1.1】

public class ArrayStackDemo {public static void main(String[] args) {ArrayStack arrayStack new ArrayStack(4);Scanner sc new Scanner(System.in);boolean loop true;char key ;while (loop) {System.out.println("栈操作菜单项");System.out.println(&q…

教育机构小程序管理系统的全方位优化

随着互联网的快速发展,线上教育也日益受到人们的关注和欢迎。为了满足广大学生和家长的需求,教育机构纷纷开发出自己的小程序管理系统。本文将详细介绍如何使用乔拓云平台,一键开发出自己的教育机构小程序管理系统。 1.进入乔拓云后台 首先&…

【SpringBoot】参数校验及异常处理

实现注册功能时经常遇到参数校验的问题。 参数校验 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId> </dependency>参数前添加注解&#xff0c;并指定校验规…

60V恒流IC SL8443B内置功率MOS 兼容PWM 降压LED恒流驱动芯片

以下是根据您的要求&#xff0c;按照知识经验类文章的特征所写的一篇关于“60V恒流IC 内置5V功率MOS 兼容PWM 降压LED恒流驱动芯片 SL8443B”的文章&#xff1a; 一、概述 SL8443B是一款60V恒流IC&#xff0c;内置5V功率MOS&#xff0c;兼容PWM降压LED恒流驱动芯片。它广泛应用…

Baumer工业相机堡盟工业相机如何通过BGAPISDK获取相机的各种信息如SN/ID等等(C++)

Baumer工业相机堡盟工业相机如何通过BGAPISDK获取相机的各种信息如SN/ID等等&#xff08;C&#xff09; Baumer工业相机Baumer工业相机通过SDK获取相关生产信息的技术背景通过SDK获取相机信息的代码分析获取Baumer工业相机相关信息Baumer工业相机相关参数信息获取的测试 Baumer…

neuq-acm预备队训练week 9 P8604 [蓝桥杯 2013 国 C] 危险系数

题目背景 抗日战争时期&#xff0c;冀中平原的地道战曾发挥重要作用。 题目限制 题目描述 地道的多个站点间有通道连接&#xff0c;形成了庞大的网络。但也有隐患&#xff0c;当敌人发现了某个站点后&#xff0c;其它站点间可能因此会失去联系。 我们来定义一个危险系数 DF…

【Linux】Linux运维基础

Linux简介&#xff1a; Linux是一个开源的操作系统内核&#xff0c;最初由Linus Torvalds创建。它通常与GNU工具一起使用&#xff0c;以创建一个完整的操作系统。Linux操作系统有许多基于内核的发行版&#xff0c;如Ubuntu、CentOS、Debian等&#xff0c;每个发行版都有其独特的…

KUKA机器人Loop循环的具体使用方法示例

KUKA机器人Loop循环的具体使用方法示例 如下图所示&#xff0c;新建一个示例程序&#xff0c; 如下图所示&#xff0c;添加一些动作指令&#xff0c; 如下图所示&#xff0c;如果想要机器人在第5行和第9行之间循环执行程序&#xff0c;则可以在第5行添加指令loop&#xff0…

Vue中插槽的使用

目录 一、默认插槽 &#xff08;1&#xff09;概念 &#xff08;2&#xff09;代码展示 &#xff08;3&#xff09;后备内容 二、具名插槽 &#xff08;1&#xff09;概念 &#xff08;2&#xff09;代码展示 三、作用域插槽 &#xff08;1&#xff09;概念 &#xff0…

配电室综合监测系统

配电室综合监测系统是一种集成了自动化、智能化等技术手段的电力监控系统。它通过对配电室内的电力设备进行实时监控、数据分析和处理&#xff0c;能够提高电力设备的安全性和效率&#xff0c;及时发现并解决电力故障和潜在问题&#xff0c;保证电力系统的稳定运行。 该系统通常…

MS5510模数转换器可Pin to Pin兼容TLC5510

MS5510 是 8 比特&#xff0c;20MSPS 模数转换器&#xff08;ADCs&#xff09;,同时使用一个半闪速结构。可Pin to Pin兼容TLC5510。MS5510在 5V 的电源电压下工作&#xff0c;其典型功耗只有 130mW&#xff0c;包括一个内部的采样保持电路&#xff0c;具有高阻抗方式的并行输出…

2024最新FL Studio21.2MAC电脑版中文版下载安装步骤教程

FL Studio 简称FL&#xff0c;全称Fruity Loops Studio&#xff0c;因此国人习惯叫它"水果"。目前最新版本是FL Studio21.1.1.3750版本&#xff0c;它让你的计算机就像是全功能的录音室&#xff0c;大混音盘&#xff0c;非常先进的制作工具&#xff0c;让你的音乐突破…

【sprintboot+vue3】解决前后端分离项目遇到的问题

目录 一、Access to XMLHttpRequest at http://127.0.0.1:8088/api/hello from origin http://localhost:5173 has been blocked by CORS policy: No Access-Control-Allow-Origin header is present on the requested resource. 二、报错[vue/compiler-sfc] 一、Access to …

人工智能革命:共同探索AIGC时代的未来

一、引言 随着大数据和强大的计算能力的兴起&#xff0c;人工智能技术&#xff08;AI&#xff09;正在快速发展&#xff0c;并为各个领域带来革命性的变化。人工智能与智能计算技术&#xff08;AIGC&#xff09;的融合不仅为企业、科研机构和普通用户提供了巨大的机遇&#xff…

LT8712EXI Type-C/DP1.2 to HDMI2.0/VGA Converter

Type-C/DP1.2 to HDMI2.0/VGA Converter Type-C/DP1.2 to HDMI2.0/VGA Converter  USB Type-C 接口  符合 USB TypeC 标准 V1.0 上的 VESA DisplayPort Alt 模式  符合 USB 供电规范 R2.0&#xff0c; V1.0版本  兼容USB Type-C电缆和连接器 规格 R1.2 内置双CC控制…