深度学习之循环神经网络

视频链接:6 循环神经网络_哔哩哔哩_bilibili

给神经网络增加记忆能力

对全连接层而言,输入输出的维数固定,因此无法处理序列信息

对卷积层而言,因为卷积核的参数是共享的,所以卷积操作与序列的长度无关。但是因为卷积层的后面往往会跟着一些全连接层,从而导致卷积层的输出不能任意改变

这是一个有限状态自动机:遇到不同的输入会跳到另一个状态上去

从这不难看出,当前结果的输出不仅依赖于当前时刻的输入,还依赖于上一时刻所处的状态

这是一个图灵机:一种抽象的数学模型,可以用来模拟任何可计算问题

输出不单单依靠输入,同时也与控制器的行为、纸带上存下来的信息等有关,比起有限状态自动机更加复杂

对于有限状态机,我们可以改造前馈网络实现。但是对于更加复杂的图灵机就不能仅依靠改造前馈网络实现,而是需要引入记忆能力

当前的输入经过z延时单元就得到了上一时刻的信息

第一个隐藏层中的t-2是由输入层中的t-2与t-3得到的,t-1是由t-1、t-2、t-3得到的,t同理

自回归模型:w0是偏置,wk是权重,当前时刻的yt由前k个时刻的yt-k加权得到

非线性自回归模型:自回归模型没有外部输入,只是y自己预测自己。因此非线性自回归模型引入了非线性函数,x是输入,y是输出,做到了通过时间序列的输入与时间序列的输出一起预测

循环神经网络

通过上一时刻的状态与当前时刻的输入计算当前时刻的状态

Q:循环神经网络与时延神经网络和自回归模型在记忆方式上的差异?

A:循环神经网络(RNN)具有短期记忆能力,可以通过递归的方式对序列数据中的依赖关系进行建模。RNN 的记忆能力来源于网络中的递归结构,它能够记住最近几个时间点的输入信息。然而,随着时间的推移,RNN 的记忆能力会逐渐减弱。
时延神经网络(DTNN)具有长期记忆能力,它通过在时间轴上增加延迟连接来实现对长期依赖关系的建模。DTNN 可以在一定程度上克服 RNN 记忆能力有限的问题,但由于其结构复杂,训练和计算成本较高。
自回归模型(AR)是一种基于 AR 过程的线性模型,它通过自回归系数矩阵来描述过去时刻观测值之间的依赖关系。AR 模型可以看作是一种特殊的 DTNN,其记忆能力取决于自回归系数矩阵的规模。


RNN在时间维度上是很深的网络,但是在非时间维度上却是很浅的网络。因为在时间维度上过深,所以需要考虑梯度消失的问题;因为在非时间维度上过浅,所以需要考虑增加模型的复杂度

如果我们认为前馈神经网络可以模拟任何函数的话,那么循环神经网络就可以模拟任何程序

应用到机器学习

序列到类别

两种常见的方法:

情感分类

因为文本是一个变长的序列,把每个字看成不同时刻的输入(一个词向量),所以可以使用RNN

把不同字的状态拼到一起送到分类器中得到不同的结果

同步的序列到序列模式

输入一个序列,输出一个序列,且输入输出之间有对应关系

中文分词

把一句话以词为单位分隔开

示例中的这句话分词应为:他说的,确实,在理

但是在中文中,的确是一个词,实在是一个词,词语分隔存在歧义性

在机器学习中我们把这个任务变成一个序列标注的任务,S表示单个词语,B表示一个词语的开始,E表示一个词语的结束

在RNN中我们直接把词向量输入RNN得到结果就行了

信息抽取

CRF是条件随机场

抽取小米——品牌,雷军——人名,2015年——时间等信息

语音识别

异步的序列到序列模式

左边输入x得到状态,可以看作是编码器encoder

EOS表示上一个序列的结束

右边的状态是通过上一时刻的状态与上一时刻的输出得到的,没有输入x,可以看作是解码器decoder

右边y影响h,是自回归的方法,h影响h是RNN的方法

机器翻译

参数学习与长程依赖问题

随时间反向传播

对误差在时间维度上求和就得到了总误差,因此反向传播时也可分为不同时刻的反向传播结果U的结果求和

Lt对U求偏导,就是第t时刻的loss对(第k时刻的zk的导数)*(上一时刻隐藏状态的转置)求和

按照链式法则展开为上图所示

长程依赖问题

将链式法则求出的式子继续展开得到(t-k个激活函数的导数的对角矩阵乘U的转置)再乘Lt对zt的偏导

由于f'(zτ)是一个有界函数,U是共享的参数,所以把他们近似看作γ

因此δt,k近似等于γ^t-kδt,t,当γ>1时,若t时刻距离k时刻很长,则会梯度爆炸,反之则会梯度消失,所以实际上只能学到短周期的时间依赖关系

如何解决长程依赖问题

我们希望γ=1,首先把f的非线性f去掉,也就是让ht=Uht-1+Wxt+b,这样使得f’为1。接下来把U变成1也就是单位矩阵,因此ht=ht-1+Wxt+b,此时的γ=1

如图所示,激活函数g是对Wxt+b引入非线性,但是由于ht-1与ht之间变成了线性关系,导致模型能力变差

进一步改进,后面的g(xt,ht-1;θ)其实就是原来的f(Uht-1+Wxt+b),这样改进既保留了非线性,又解决了梯度的问题

当激活函数g选取sigmoid、relu等一直为正的激活函数,加上ht-1是一个累计的状态(不断增大)

例如当激活函数为sigmoid时,由于h不断累计,导致g(xt,ht-1;θ)趋近0或1而出现梯度消失,从而导致难以向网络增加新的信息。因此我们可以在ht-1中选择性地丢弃一些信息,接下来会给大家介绍两种基于门控的方法

残差:如果把g(xt,ht-1;θ)中的xt去掉,得到ht = g(ht-1;θ),这个式子与残差网络是十分相似的,都解决了梯度消失的问题

GRU与LSTM

GRU

zt是一个与h维度相同的向量,每一维都在0~1之间,用sigmoid激活函数

g用得到是tanh激活函数,将0~1变成-1~1,且梯度更大一些

当zt接近1时,ht的信息更多来自于ht-1;当zt接近0,ht的信息更多来自于xt

若想要ht的信息只来源于xt,则可以加一个rt在ht-1之前

LSTM

引入了内部记忆单元c,通过c进行记忆线性的传递,把h释放出来更好地去做非线性

i是input gate,决定加入多少新信息

f是forget gate,决定遗忘多少旧信息

o是output gate,决定输出多少信息

深层循环神经网络

虽然循环神经网络在时间维度上可以认为是一个非常深的网络,但在非线性维度上是非常浅的,我们希望把它加深,看看模型能力有没有提升

堆叠循环神经网络

时间维度上是对齐的

变式

可以使某个状态来自于下一层所有时刻的状态

也可以使某个状态来自于上一时刻的所有层

双向循环神经网络

对输入的时序数据,既可以从左往右建模,也可以从右往左建模,好处是得到了双向的信息与趋势,模型效果更好

Q:如何增加循环神经网络的并行能力?

A:

双向循环神经网络(BRNN):BRNN 通过在输入层引入未来信息,使得网络可以同时利用过去和未来的数据。这种结构在处理自然语言处理、语音识别等任务时具有较好的性能。BRNN 可以在一定程度上提高并行计算能力,但仍然受到循环连接的限制。
增加网络层数:通过增加网络层数,可以降低梯度消失和梯度爆炸的问题,提高模型性能。同时,深度循环神经网络具有较强的并行计算能力,因为大部分计算可以在各层之间并行进行。
跳步连接(skip connection):在循环神经网络中引入跳步连接,可以使得网络在训练过程中更快地收敛,并提高模型的并行计算能力。跳步连接使得网络可以在不同层之间直接传递信息,减少了梯度消失问题,同时提高了并行处理能力。
分离式循环神经网络(Separable Recurrent Neural Network,SRNN):SRNN 将循环神经网络的内部循环结构分离成两个独立的子网络,一个负责处理过去信息,另一个负责处理未来信息。这种结构在训练和预测过程中可以实现部分并行计算,提高网络的性能。
准并行循环神经网络(Quasi-Parallel Recurrent Neural Network,QPRNN):QPRNN 采用一种准并行的结构,将循环神经网络中的递归关系用多个并行子网络表示。这种结构可以在一定程度上提高并行计算能力,但仍然受到梯度消失和梯度爆炸问题的限制。
内存增强神经网络(Memory-Augmented Neural Network,MANN):MANN 在循环神经网络中引入了一种新型内存模块,用于存储和检索相关信息。这种结构可以提高网络的并行计算能力,同时增强了对长序列数据的处理能力。
转换器架构(Transformer):转换器架构是一种基于自注意力机制的深度神经网络,其在自然语言处理等领域取得了显著的成果。虽然转换器并非典型的循环神经网络,但其在并行计算方面具有很强的能力。通过将循环神经网络与转换器相结合,可以进一步提高网络的并行能力。

循环神经网络应用

扩展到图结构

树结构

递归神经网络把循环神经网络从序列结构扩展到树结构

应用到自然能语言上:

先将red与bike组合,再与a组合

图结构

在实际应用中,很多数据是图结构的,比如知识图谱、社交网络、分子网络等。而前馈网络和循环网络很难处理图结构的数据

v是结点向量、e是边向量、u是全局向量

图的更新步骤为:

(1)更新边:通过边所连的两点与u更新

(2)更新点:通过所有指向该点的边与u更新

(3)更新u

mt(v)是指v收到的信息,ht-1是上一时刻的状态,u是v的所有邻居结点

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

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

相关文章

人工智能与供应链行业融合:预测算法的通用化与实战化

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 让我们一起深入探索人工智能与供应链的融合,以及预测算法在实际应用中的价值!🔍🚀 文章目录 前言供应链预测算法的基本流程统计学习模型与机…

【亚马逊云】基于EC2以 All-in-One 模式快速部署 KubeSphere 和 Kubernetes

文章目录 1. 云实例配置说明2. SSH连接云实例3. 查看系统版本4. 修改主机名5. 安装依赖项6. 安全组和DNS修改7. 下载KubeKey8. 同时安装Kubesphere和Kubernetes[可选]单独安装Kubernetes[可选]单独安装KubeSphere9. 验证KubeSphere安装结果10. 登录KubeSphere控制台[可选]安装K…

C/C++字节对齐

C/C字节对齐 C/C字节对齐1.G_PACKED2.1 pack(push)2.2 pack(1) 全部例子 C/C字节对齐 1.G_PACKED #ifdef __GNUC__#define G_PACKED( __Declaration__ ) __Declaration__ __attribute__((packed)) #else#define G_PACKED( __Declaration__ ) __pragma( pack(push,1)) __Decla…

sqli-labs靶场详解(less11-less16)

目录 less-11 less-12 less-13 less-14 less-15 less-16 提交参数后 动态参数不存在url中 存在于post表单中 于是在表单中进行注入点测试 先看一看这种提交数据的关卡输入提交后会有什么反应 unameadmin&passwdadmin&submitSubmit 输出 usernameadmin passwordadmin un…

seata集成springboot的一些错误小计

1 seata依赖没找到 dependencies.dependency.version for com.alibaba.cloud:spring-cloud-starter-alibaba-seata:jar is missing. line 126, column 21错误原因:未指定具体的seata版本 解决 <!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-st…

稳定视频扩散数据管理解密【stable video diffusion】

Stability AI 最近于 2023 年 11 月 21 日推出了其最新模型—稳定视频扩散&#xff08;SVD&#xff09;。视频生成模型的这一突破取决于数据管理的关键作用。 除了模型检查点之外&#xff0c;他们还发布了一份技术报告。 让我们在 Stability AI 的技术报告和一些引人注目的示例…

js的数组去重方法

目录 es6数组中对象去重 1. filter()用法 2. findIndex()用法 3. 去重 其他方法&#xff1a; 方法二&#xff1a;reduce()去重 1. reduce()用法 1.1 找出字符长度最长的数组成员。 1.2 扁平化二维数组 1.3 扁平化多维数组 三、总结方案&#xff1a; 使用Set&#xf…

k8s-deployment控制器 5

K8s控制器是Kubernetes&#xff08;简称k8s&#xff09;系统中一个重要的组成部分&#xff0c;它是一个管理Pod的中间层&#xff0c;可以创建和管理多个Pod副本&#xff0c;确保它们按照预定的数量和行为进行运行。 通过编写yaml文件将信息全部存到etcd中&#xff0c;控制器通…

《微信小程序开发从入门到实战》学习三十三

第四章 云开发 本章云开发技术的功能与使用&#xff0c;包括以下几点&#xff1a; 1.学习使用云开发控制台 2.学习云开发JSON数据库功能 3.学习云开文件存储功能 4.学习云函数功能 5.使用云开发技术实现投票小程序的服务端功能 投票小程序大部分已经实现。需要实现&#…

高端制造业中的通用性超精密3D光学测量仪器

超精密光学3D测量仪器具有高精度、自动化程度高、实时反馈和范围广等优势。它能够实现微米级别的精确测量&#xff0c;能够精确测量产品的尺寸、形状和表面粗糙度等&#xff0c;具有广泛的应用价值和重要意义。 超精密光学3D测量仪器配备多种传感器、控制器和计算机系统&#…

深入理解OS--数值编码

信息的表示和处理 寻址和字节顺序 位于0x100处&#xff0c;int类型值0x01234567在大端和小端下的存储。 字符串的存储不受字节序影响。 移位 1.对左移&#xff0c;右边统一补0 2.对右移&#xff0c;分为算术右移&#xff0c;逻辑右移 算术右移下&#xff0c;左边补原最高有效…

OpenCvSharp从入门到实践-(03)像素

目录 像素 1、确定像素位置 2、获取像素的BGR值 3、修改像素的BGR值 像素 图像数字化是指用数字表示图像&#xff0c;每一幅数字图像都是有M行N列的像素组成的&#xff0c;其中每一个像素都存储一个像素值。计算机通常会把像素值处理为256个灰度级别&#xff0c;这256个灰…

k8s中安装consul集群

一、准备知识 headless services一般结合StatefulSet来部署有状态的应用&#xff0c;比如kafka集群&#xff0c;mysql集群&#xff0c;zk集群等&#xff0c;也包括本文要部署的consul集群。 0、consul集群 consul集群的分布式协议算法采用的是raft协议&#xff0c;这意味着必…

【后端】数据字典自动生成枚举

前言 随着我老板给我灌溉的思想,逐渐开始利用代码来完成一些重复性且没有创造性的工作(我变懒啦),当我发现数据字典可以生成枚举从而大大减少开发时间的时候,我意识到事情的重要性。 数据字典 我一开始在网上找各种代码生成器的框架,然后突然意识到,这个不就是简单的…

2022年MathorCup大数据竞赛B题北京移动用户体验影响因素研究求解全过程文档及程序

2022年MathorCup高校数学建模挑战赛—大数据竞赛 B题 北京移动用户体验影响因素研究 原题再现&#xff1a; 移动通信技术飞速发展&#xff0c;给人们带来了极大便利&#xff0c;人们也越来越离不开移动通信技术带来的各种便捷。随着网络不断的建设&#xff0c;网络覆盖越来越…

XIAO ESP32S3之套件简绍

很高兴收到柴火创客空间寄来的XIAO ESP32S3开发套件。 一、套件介绍 1、电路板部分 一块XIAO ESP32S3主板、一块摄像头接口板&#xff08;可接SD卡&#xff09;&#xff0c;一根2.4G天线。 2、配件部分 一根USB-A转TypeC数据线、一个USB3.0转TypeC转接头、一个SD卡读卡器&am…

vue中keep-alive的使用

什么是keep-alive&#xff1f; keep-alive是一个内置组件&#xff0c;用于缓存和管理组件的状态。 当 keep-alive包裹一个组件时&#xff0c;这个组件的状态将会被缓存起来&#xff0c;而不是每次重新渲染。这在多个视图之间切换时特别有用&#xff0c;可以避免重复的创建和销…

vue项目通过HBuilder打包成apk,实现apk自动更新下载

vue 项目通过 HBuilder 打包成 apk&#xff0c;实现 apk 自动更新下载 1、vue 项目通过 HBuilder 打包成 apk vue 项目在终端执行 npm run build 打包成 dist 文件&#xff0c;生成的 dist 文件在 项目根目录下 在 HBuilder 中 新建一个项目 默认选择 5APP 的默认模板项目…

springboot+vue智能企业设备管理系统05k50

智能设备管理系统主要是为了提高工作人员的工作效率和更方便快捷的满足用户&#xff0c;更好存储所有数据信息及快速方便的检索功能&#xff0c;对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑用户的可操作性&#xff0c;遵循开发的系统优化的原则&#xf…

linux 命令 sudo、su 命令

sudo命令详解 1、初识sudo sudo是linux下常用的允许普通用户使用超级用户权限的工具&#xff0c;sudo 用来执行需要提升权限&#xff08;通常是作为 root 用户&#xff09;的命令&#xff0c;允许系统管理员让普通用户执行一些或者全部的root命令&#xff0c;如halt&#xff…