循环神经网络

循环神经网络(Recurrent Neural Network,RNN)与卷积神经网络一样,都是深度学习中的重要部分。循环神经网络可以看作一类具有短期记忆能力的神经网络。在循环神经网络中,神经元不但可以接收其他神经元的信息,也可以接收自身的信息,形成具有环路的网络结构,正因为能够接收自身神经元信息的特点,让循环神经网络具有更强的记忆能力。
卷积神经网络和全连接网络的数据表示能力已经非常强了,为什么还需要RNN呢?这是因为现实世界中面临的问题更加复杂,而且很多数据的输入顺序对结果有重要影响。如文本数据,其是字母和文字的组合,先后顺序具有非常重要的意义。语音数据、视频数据,这些数据如果打乱了原始的时间顺序,就会无法正确表示原始的信息。针对这种情况,与其他神经网络相比,循环神经网络因其具有记忆能力,所以更加有效。循环神经网络已经被广泛应用在语音识别、语言模型以及自然语言生成、文本情感分类等任务上。
最常见、最基本的循环神经网络有RNN、LSTM(长短期记忆)和GRU等。下面我们逐个简单讲解一下这三个循环神经网络。

1.RNN

首先看一下RNN简单网络结构示意图

 上图中展示了RNN中基础的链接结构,针对t时刻的隐状态h_{t},可以由下面的公式进行计算:

 式中,h_{t}是t时刻的隐藏状态;x_{t}是t时刻的输入;h_{t-1}是t-1时刻的隐藏状态;w_{ih}是输入到隐藏层的权重;w_{hh}是隐藏层到隐藏层的权重;b_{ih}是输人到隐藏层的偏置;b_{hh}是隐藏层到隐藏层的偏置;\sigma表示激活函数,在PyTorch中可以使用Tanh或者ReLU激活函数。

虽然在对序列数据进行建模时,RNN对信息有一定的记忆能力,但是单纯的RNN会随着递归次数的增加,出现权重指数级爆炸或消失的问题,从而难以捕捉长时间的关联,并且导致RNN训练时收敛困难,而LSTM网络则通过引入门的机制,使网络具有更强的记忆能力,弥补了RNN网络的一些缺点。

2、LSTM

LSTM ( Long Short-Term Memory)网络又叫作长短期记忆网络,是一种特殊的RNN,主要用于解决长序列训练过程中的梯度消失和梯度爆炸问题,相比普通的RNN网络,LSTM能够在更长的序列中获得更好的分析效果。其简单的网络结构如下图所示:

在LSTM网络中,每个LSTM单元针对输入进行下面函数的计算:

 上式中,h_{t}是t时刻的隐藏状态( hidden state ) ;c_{t}是t时刻的元组状态( cellstate); x_{t}是t时刻的输入;h_{t-1}是t-1时刻的隐藏状态,初始时刻的隐藏状态为0;i_{t}f_{t}g_{t}o_{t}分别是输入门、遗忘门、选择门和输出门;\sigma表示sigmoid激活函数。在每个单元的传递过程中,通常c_{t}是上一个状态传过来的   c_{t-1}加上一些数值,其改变的速度较慢,而h_{t}的取值变化则较大,不同的节点往往会有很大的区别。LSTM在信息处理方面主要分为三个阶段:
(1)遗忘阶段。这个阶段主要是对上一个节点传进来的输人进行选择性忘记,会“忘记不重要的,记住重要的”。即通过f_{t}的值来控制上一状态c_{t-1}中哪些需要记住,哪些需要遗忘。
(2)选择记忆阶段。这个阶段将输人X_{t}有选择性地进行“记忆”。哪些重要则着重记录,哪些不重要则少记录。当前单元的输入内容是计算得到的i_{t},可以通过g_{t}对其进行有选择地输出。
(3)输出阶段。这个阶段将决定哪些会被当成当前状态的输出。主要通过o_{t}进行控制,并且要对c_{t}使用tanh激活函数进行缩放。
LSTM网络输出y_{t}通常可以通过h_{t}变化得到。

3、GRU

虽然LSTM通过门控状态来控制传输状态,记住需要长时间记忆的,忘记不重要的信息,而不像普通的RNN那样只能够有一种记忆叠加,这对很多需要“长期记忆”的任务来说效果显著,但是也因多个门控状态的引入,导致需要训练更多的参数,使得训练难度大大增加。针对这种情况,循环门控单元(Gate Recurrent Unit,GRU)网络被提出,GRU通过将遗忘门和输入门组合在一起,从而减少了门的数量,并且做了一些其他的改变,在保证记忆能力的同时,提升了网络的训练效率。在网络中每个GRU单元的示意图如下图所示。

 在该网络中,每个GRU单元针对输入进行下面函数的计算:

 式中,h_{t}是t时刻的隐藏状态( hidden state );x_{t}是t时刻的输入;h_{t-1}是t-1时刻的隐藏状态,初始时刻的隐藏状态为0;r_{t}z_{t}n_{t} 分别是重置门、更新门和计算候选隐藏层;\sigma 表示sigmoid激活函数。在每个单元的传递过程中,r_{t} 用来控制需要保留之前的记忆。如果 r_{t} 为0,则n_{t}=tanh(W_{in}x_{t}+b_{in}) 只包含当前输入状态的信息,而 z_{t} 则控制前一时刻的隐藏层忘记的信息量。循环神经网络根据循环单元的输入和输出数量之间的对应关系,可以将其分为多种应用方式。下图给出了循环神经网络常用的应用方式:

 图中显示了5种循环神经网络的输入输出对应情况。其中,一对多的网络结构可以用于图像描述,即根据输入的一张图像,自动使用文字描述图像的内容;多对一的网络结构可用于文本分类,即根据一段描述文字,自动对文本内容归类;多对多的网络结构可用于语言翻译,即针对输入的一种语言,自动翻译为另一种语言。

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

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

相关文章

Python实现PDF转Word文档

1. 模块安装 pip install pdf2docx安装时可能报错: 到 Microsoft C Build Tools 下载C编译环境安装即可。 2. 模块介绍 pdf2docx是一个Python模块,可以用来将PDF文件转换成Word文档。它是基于Python的pdfminer和python-docx库开发的,可以…

toArray转换 java.lang.ClassCastException

[toArray转换踩坑 java.lang.ClassCastException] 问题 List<String> auditOptions Lists.newArrayList(); //一系列灌数据操作 auditOption.add... String[] options (String[]) auditOptions.toArray();报错信息java.lang.ClassCastException: class [Ljava.lang.O…

【Blender】如何在Blender中添加HDRI环境贴图

​ 什么是HDRI环境贴图 环境贴图或HDRI贴图是在Blender中照亮3D场景并实现逼真效果的最有效和最快捷的方法之一。 HDRIs本质上是现实世界照明的快照&#xff0c;其中包含高动态范围成像&#xff08;HDRI&#xff09;的准确照明细节。HDRI是一个包含亮度信息&#xff08;从暗…

ToBeWritten之IoT 技战法

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 转移发布平台通知&#xff1a;将不再在CSDN博客发布新文章&#xff0c;敬…

VMware ESXi 8.0c - 领先的裸机 Hypervisor (sysin Custom Image)

本站发布 Dell 和 HPE 定制版 ESXi 8.0c 镜像 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-esxi-8/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 产品简介 VMware ESXi&#xff1a;专门构建的裸机 Hyperviso…

问卷调查怎么帮助餐饮行业?

在餐饮行业中&#xff0c;顾客的口碑占据非常重要的地位&#xff0c;直接影响着门店的销售额。好口碑能一传十、十传百&#xff0c;为门店带来持续不断的流量和收益。所以&#xff0c;在顾客体验这一块&#xff0c;餐饮门店要尤为重视。 某餐饮品牌作为全球知名品牌&#xff0…

MongoDB【使用场景简介体系结构数据模型特点】

目录 1&#xff1a;MongoDB相关概念 1.1&#xff1a;业务应用场景 1.2&#xff1a;MongoDB简介 1.3&#xff1a;体系结构 1.4&#xff1a;数据模型 1.5&#xff1a;MongoDB的特点 1&#xff1a;MongoDB相关概念 1.1&#xff1a;业务应用场景 传统的关系型数据库&#x…

AOP原理 - 分析AnnotationAwareAspectJAutoProxyCreator源码

文章目录一、回顾EnableAspectJAutoProxy二、AbstractAutoProxyCreator类三、AbstractAdvisorAutoProxyCreator类四、AspectJAwareAdvisorAutoProxyCreator类五、AnnotationAwareAspectJAutoProxyCreator类一、回顾EnableAspectJAutoProxy 在上一章中&#xff0c;通过查看Enabl…

Spring原理学习(三):BeanFactory后处理器原理解析与模拟实现

一、简单认识BeanFactory后处理器 1.1 BeanFactory后处理器的作用 接前文&#xff1a;Spring原理学习&#xff08;一&#xff09;&#xff1a;BeanFactory和ApplicationContext的原理和实现 我们已经简单介绍了 BeanFactory后处理器 的作用&#xff0c;今天我们先再来再次体验…

酒店拥有VR全景是一种什么样的体验?

每一家酒店都希望自己门庭若市&#xff0c;有更多的人来&#xff0c;随着信息化和互联网的发展时代的到来&#xff0c;酒店营销也逐渐加入了更多的现代元素&#xff0c;那么&#xff0c;酒店怎么样更好地利用互联网来做宣传、来获得更多的客户呢&#xff1f;VR全景作为新兴的富…

排序和分页

排序和分页一、排序1.简单用法3.不同字段不同排序现实二、分页1.简单分页2.order by 配合limit三、分页8.0新特性1.offset总结提示&#xff1a;以下是本篇文章正文内容 一、排序 1.简单用法 select employee_id,last_name,salary from employees order by salary;默认是升序…

Maven高级-分模块开发依赖管理

Maven高级-分模块开发&依赖管理1&#xff0c;分模块开发1.1 分模块开发设计1.2 分模块开发实现1.2.1 环境准备1.2.2 抽取domain层步骤1:创建新模块步骤2:项目中创建domain包步骤3:删除原项目中的domain包步骤4:建立依赖关系步骤5:编译maven_02_ssm项目步骤6:将项目安装本地…

Memory Map

主要介绍AM64x的MSRAM和DDR的内存分布&#xff1a; MSRAM:总共2MB,被分成8个banks,每个256KB。 首先了解一下&#xff0c;两种Domain: In TI documentation, the MCU Domain may be referred to as “M4FSS Island”, “MCU Island”, “MCU Channel”, or “MCU Subsystem…

Redis分布式缓存

文章目录一、 概述1. 单节点Redis存在的问题2. 单节点Redis问题针对解决方案二、Redis持久化1. RDB持久化2.RDB异步持久化原理介绍3. AOF持久化4. ROB和AOF对比三、Redis主从架构1. 搭建主从架构2. 主从数据同步原理四、Redis哨兵1. 哨兵的作用和原理2.搭建哨兵集群3. RedisTem…

Linux 操作系统原理 — RSS 多队列网卡

目录 文章目录目录RSS 多队列网卡RSS 技术实现原理RSS FilterRSS HASH硬中断信号绑定ethtool 操作指令RSS 多队列网卡 在以往&#xff0c;一张 NIC 只具有一个 Rx Queue&#xff0c;对应一个 CPU Core 来进行收包处理。在多核时代&#xff0c;为了充分利用 Multi-CPU Cores&am…

如何使用pandas提取含有指定字符串

这里写自定义目录标题name age state point0 Alice 24 NY 641 Bob 42 CA 922 Charlie 18 CA 70name age state point0 Alice 24 NY 642 Charlie 18 CA 700 False1 True2 TrueName: state, dtype: boolname age state point1 Bob 42 CA 922 Charlie 18 CA 700 True1 False2 True…

tmall.service.settleadjustment.modify( 修改结算调整单 )

&#xffe5;开放平台免费API必须用户授权 提供给服务商在对结算有异议时&#xff0c;发起结算调整单。 通过说明调整单ID&#xff0c;调整费用值&#xff0c;调整原因进行结算调整单修改。 公共参数 请求地址: 公共请求参数: 公共响应参数: 请求参数 响应参数 点击获取key和…

MyBatisPlus-DML编程控制

MyBatisPlus-DML编程控制4&#xff0c;DML编程控制4.1 id生成策略控制知识点1&#xff1a;TableId4.1.1 环境构建4.1.2 代码演示AUTO策略步骤1:设置生成策略为AUTO步骤2:删除测试数据并修改自增值步骤3:运行新增方法INPUT策略步骤1:设置生成策略为INPUT步骤2:添加数据手动设置I…

【hello Linux】Linux权限管理

目录 1.shell命令以及运行原理 2. Linux权限的概念 3. Linux权限管理 3.1 文件访问者的分类 3.2 文件类型 3.3 访问权限 3.4 访问权限的表示方法 4. 访问权限的相关设置 4.1 chmod命令&#xff1a;修改权限 4.2 chown命令&#xff1a;修改文件的拥有者 4.3 chgrp 命令&#xff…

idea中的项目上传gitee

1.把gitee插件安装找重启idea 2.打开gitee网站从设置->私有令牌 获取token信息完成登录 复制到idea中点击log in 点击ok 3.把项目转为git管理 4.上传到gitee 5.去刷新gitee仓库此时就会发现多了一个我们的项目 以下是拷贝新项目到idea操作 http://t.csdn.cn/ycnSX