递归神经网络 (RNN)

弗朗西斯科·佛朗哥

一、说明

        循环神经网络非常有趣,因为与前馈网络不同,在前馈网络中,数据只能在一个方向上传播,每个神经元可以与连续层的一个或多个神经元连接,在这种类型的网络中,神经元还可以环回自身或连接到前一层的神经元。

        循环网络允许神经元连接到先前层的神经元或同一层的神经元。这一特征使这些神经网络变得特殊,因为递归的概念带来了网络中的记忆概念。事实上,在 RNN 中,神经元的输出可以在时间上连续的阶段影响自身,或者可以影响前面层的神经元,进而影响原始神经元的行为,从而闭合循环。当然,实现 RNN 的方法不止一种。多年来,许多不同类型的 RNN 被提出和研究,其中最著名的是 LSTM(长短期记忆)和 GRU(门控循环单元),稍后将讨论。

二、什么时候应该使用 RNN?

        我们举一个简单的例子来说明。如果我正在分析一张照片,我想在其中观察一些感兴趣的物体,我需要向神经网络提供随时间变化的静态信息,即照片的像素。使用前馈网络可以轻松处理这种情况。例如,训练有素的卷积神经网络 (CNN),其输入层将由与照片中的像素乘以 3(对于 RGB 图像)一样多的神经元组成。

        但是如果我们处理的不是图像而是视频怎么办?如果我们仍然只想识别物体,那么什么都不会改变,但如果我们想识别和分类行为,事情就会完全不同。

        识别行为需要对某个行为进行随时间的分析,只有收集到的整套信息才能告诉我们所观察到的行为类型。识别视频中的一个人是一回事,而识别这个人是否正在喝酒或向瓶子里吹气则是另一回事。

        因此,我们的目标是了解如何处理随时间变化的动态信息,从而构建和指导具有记忆的网络  (RNN),以便它能够观察变化并识别不同的行为。该问题的解决方案是 RNN,其最简单的形式是 RNN 单元。

        然而,在解释什么是 RNN 单元之前,必须绝对清楚它们是按时间运行的,因此,与提供静态数据的经典前馈网络不同,RNN 设计用来处理的数据类型是时态数据。序列或系列。让我们看几个例子。

        时间序列或时间序列可以被认为是在许多时刻采样的函数。例如,它可以是采样声音的波形、股票市场中股票的行为或短语。

三、 RNN的工作流程

        在由短语组成的序列的情况下,样本是经过适当编码的单个单词。在这种情况下,随着时间的推移,RNN 单元将接收单个单词作为输入,这些单词将被视为前一个单词或多个单词的函数,具体取决于所使用的 RNN 单元的类型。

        在上图中,X_0 代表该短语的第一个单词。S_0 是细胞在 t=0 时的状态,S_1 是细胞在 t=1 时的状态,而 tanh(双曲正切)是激活函数。

        简而言之,在 RNN 单元中,在每个时刻 t,单元不仅会接收输入 X(t),还会接收 S(t-1) 之前时刻的自身输出。输出的追溯性将使网络能够根据其过去的历史做出决策。在这种类型的方法中,确定要使用的最大迭代次数显然很重要。否则网络将陷入无限循环。

        现在我们已经了解 RNN 可以用具有有限状态循环的单元来表示,让我们看看如何训练它。

        此时,我们应该引入网络展开的概念,它基本上转化为将 RNN 转换为前馈类型网络的操作。看下图,其实很容易看出Recurrent Neural Net已经变成了前馈网络。

        让我们尝试将上面阐述的概念形式化一点。RNN 单元是循环网络的一部分,它为每个瞬时保存一个内部状态 h(t)。它由固定数量的神经元组成,可以被视为网络的一种层。在我们的网络中,每一时刻的输出将是:

        其中 h_t 取决于输入 X_t 和之前的状态 h_(t-1)。

        继续展开网络意味着先确定要进行分析的时间步骤的数量。因此,一个 10 步展开的 RNN 相当于一个 10 层的前馈深度神经网络 (DNN)。

        对于具有两个输入的神经元,输出函数类似于:

        具有两个输入的 S 型神经元

        在这里:

        和:

        其中 sigmoid 是激活函数,我们称之为 phi,b=0。

        将相同的推理应用于 RNN,我们有:

        其中 w_x 和 w_h 是权重,b 是偏差,phi 是激活函数。

        最简单的细胞的学习能力和记住远距离步骤输入的能力都会受到限制。当需要跟踪遥远的事件时,这种限制可能会成为一个问题。例如,就短语而言,单词的上下文至关重要。事实上,在一个短语中,某些单词的出现并不是唯一的相关因素,而且单词之间的相互联系也很重要。因此,仅记住单词序列中紧邻的前一个单词是不够的。在这种情况下,我们需要更复杂的存储单元,例如 LSTM 和 GRU,我将在另一篇文章中讨论。

四、结论

        总之,RNN 是一种非常有价值的资产,经常用于自然语言处理NLP )问题。循环神经网络特殊的“记忆”特性使其具有惊人的创造力。

        通过要求他们识别旋律序列中最可能的连续音符,可以创建完全由人工智能编写的真实、原创乐谱,就像Google 的Magenta 项目使用Tensorflow创建的乐谱一样

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

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

相关文章

工作小计-GPU硬编以及依赖库 nvcuvidnvidia-encode

工作小计-GPU编码以及依赖库 已经是第三篇关于编解码的记录了。项目中用到GPU编码很久了,因为yuv太大,所以编码显得很重要。这次遇到的问题是环境的搭建问题。需要把开发机上的环境放到docker中,以保证docker中同样可以进行GPU的编码。 1 定…

世微 宽电压降压 DC-DC 电源管理芯片 以太网平衡车工业控制电源驱动12V6A AP8854

1,产品描述 AP8854 一款宽电压范围降压型 DC-D 电源管理芯片,内部集成使能开关控制、基 准电源、误差放大器、过热保护、限流保 护、短路保护等功能,非常适合宽电压输 入降压使用。 AP8854 带使能控制,可以大大节省外 围器件&…

《持续交付:发布可靠软件的系统方法》- 读书笔记(八)

持续交付:发布可靠软件的系统方法(八) 第 8 章 自动化验收测试8.1 引言8.2 为什么验收测试是至关重要的8.2.1 如何创建可维护的验收测试套件8.2.2 GUI 上的测试 8.3 创建验收测试8.3.1 分析人员和测试人员的角色8.3.2 迭代开发项目中的分析工…

你真的了解CPU和GPU?

目录 先举个栗子 CPU 什么是CPU CPU的定义 CPU的组成 CPU的功能 GPU 什么是GPU GPU的定义 GPU的组成 GPU的功能 CPU和GPU的区别 先举个栗子 假设你正在编辑一份文档,这时可以将CPU和GPU的角色比喻为文档编辑过程中的两个不同任务。 1. CPU CPU就好比是…

YOLOv5配置文件之 - yaml

在YOLOv5的目录中,models文件夹里存储了YOLO的模型配置。 ./models/yolov5.yaml 定义了YOLOv5s网络结构的定义文件 yaml的主要内容 参数配置 nc: 80 类别数量 depth_multiple: 0.33 模型深度缩放因子 width_multiple: 0.50 控制卷积特征图的通道个数 anchors配…

tinymce输入框怎么限制只输入空格或者回车时不能提交

项目场景: 项目相关背景: tinymce输入框只输入空格或者回车时提交的空数据毫无意义,所以需要限制一下 无意义的输入: 解决方案: 因为tinymce输入框传到后端的数据是代码形式,所以不能直接.trem&#…

uniapp开发小程序—picker结合后台数据实现二级联动的选择

一、效果图 二、完整代码 <template><view><picker mode"multiSelector" change"bindMultiPickerChange" columnchange"bindMultiPickerColumnChange":value"multiIndex" :range"multiArray"><view c…

硬件安全与机器学习的结合

文章目录 1. A HT Detection and Diagnosis Method for Gate-level Netlists based on Machine Learning摘要Introduction 2. 基于多维结构特征的硬件木马检测技术摘要Instruction 3. A Hardware Trojan Detection and Diagnosis Method for Gate-Level Netlists Based on Diff…

一文了解GC垃圾回收

一文了解GC垃圾回收 1 判断一个对象为垃圾对象的方法 引用计数法(弃用) 可达性分析算法 是否有指向GC root 的引用链&#xff0c;如果有&#xff0c;不是垃圾对象 ---->GC roo:即rt.jar包中内容 2 内存泄漏与内存溢出区别 泄漏&#xff1a;原本需要被回收的对象&#…

前端koa搭建服务器(保姆级教程)——part1

目录 koa简介前端项目搭建koa环境第一步&#xff1a;新建项目第二步&#xff1a;环境初始化&#xff0c;安装依赖初始化项目&#xff0c;生成package.json文件安装koa依赖安装koa-router 路由管理依赖安装dotenv 环境变量依赖安装nodemon 热启动依赖 第三步&#xff1a;代码调用…

2016年亚太杯APMCM数学建模大赛C题影视评价与定制求解全过程文档及程序

2016年亚太杯APMCM数学建模大赛 C题 影视评价与定制 原题再现 中华人民共和国成立以来&#xff0c;特别是政治改革和经济开放后&#xff0c;随着国家经济的增长、科技的发展和人民生活水平的提高&#xff0c;中国广播电视媒体取得了显著的成就&#xff0c;并得到了迅速的发展…

JVM虚拟机:对象在内存中的存储布局

本文重点 在前面的过程中,我们学习了对象创建过程,那么一个对象在内存中的布局是什么样的呢? 对象在内存中的存储布局 普通对象 当我们创建一个对象的时候,它由三部分组成,分别为对象头(MarkWord+class指针(指向class对象)),实例数据(对象的成员变量),填充。如果…

特殊类设计[下] --- 单例模式

文章目录 5.只能创建一个对象的类5.1设计模式[2.5 万字详解&#xff1a;23 种设计模式](https://zhuanlan.zhihu.com/p/433152245)5.2单例模式1.饿汉模式1.懒汉模式 6.饿汉模式7.懒汉模式7.1饿汉模式优缺点:7.2懒汉模式1.线程安全问题2.单例对象的析构问题 8.整体代码9.C11后可…

react-组件间的通讯

一、父传子 父组件在使用子组件时&#xff0c;提供要传递的数据子组件通过props接收数据 class Parent extends React.Component {render() {return (<div><div>我是父组件</div><Child name"张" age{16} /></div>)} }const Child …

【洛谷 P3654】First Step (ファーストステップ) 题解(模拟+循环枚举)

First Step (ファーストステップ) 题目背景 知らないことばかりなにもかもが&#xff08;どうしたらいいの&#xff1f;&#xff09; 一切的一切 尽是充满了未知数&#xff08;该如何是好&#xff09; それでも期待で足が軽いよ&#xff08;ジャンプだ&#xff01;&#xff09…

华为---DHCP中继代理简介及示例配置

DHCP中继代理简介 IP动态获取过程中&#xff0c;客户端&#xff08;DHCP Client&#xff09;总是以广播&#xff08;广播帧及广播IP报文&#xff09;方式来发送DHCPDISCOVER和DHCPREQUEST消息的。如果服务器&#xff08;DHCP Server&#xff09;和 客户端不在同一个二层网络(二…

人工智能:CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的知识梳理

卷积神经网络&#xff08;CNN&#xff09; 卷积神经网络&#xff08;CNN&#xff09;&#xff0c;也被称为ConvNets或Convolutional Neural Networks&#xff0c;是一种深度学习神经网络架构&#xff0c;主要用于处理和分析具有网格状结构的数据&#xff0c;特别是图像和视频数…

VSCode 开发 Vue 语法提示

一. 打开应用商店&#xff0c;搜索 vetur &#xff0c;选择第一个&#xff0c;点击安装。 二. 安装完成后&#xff0c;还可以下载 Vue Language Features 解决代码警告的问题。 最后重启 VSCode 就可以使用啦。另外输入 按回车键还可以自动生成 vue 代码格式哦。 原创作者&…

原生mysql与mybatis执行update语句的差异

在做一个解除绑定的接口中&#xff0c;发现了这个一个问题&#xff1a; 连续对接口进行测试&#xff0c;发现一直fan返回解除成功&#xff0c;但是逻辑上应该是解除之后&#xff0c;在解除它后就应该回显已解除绑定才对 就一直找原因&#xff0c;sql中使用的是mybatis的…

【Qt之QtConcurrent】描述及使用

描述 QtConcurrent是一个Qt库中的模块&#xff0c;用于实现多线程并发编程。它提供了一些高级API&#xff0c;使得在多核处理器上并行执行代码变得更加容易。 示例&#xff1a; 使用的话&#xff0c; 需要在pro文件中添加&#xff1a;QT concurrent模块。 #include <QC…