当前位置: 首页 > news >正文

循环神经网络三

一.介绍

在普通的神经网络中,信息的传递是单向的,这种限制虽然使得网络变得更容易学习,单在一定程度上也减弱了神经网络模型的能力。特别是在现实生活中,网络的输出不仅和当前时刻的输入相关,也过去一段时间的输出相关。此外,普通网络难以处理时序任务,比如语言,视频,文本等等,时序数据的长度一般是不固定的,而前馈神经网络要求和输出的维数都是固定的,不能任意改变。所以处理这一类时序相关的问题时,需要一种能力更强的模型

循环神经网络(Recurrent Neural Network,RNN )是一类具有短期记忆的神经网络。在循环神经网络中,神经元不仅可以接收其他神经元的信息,还可以接收自身的信息,形成具有环路的网络结构。

 可以看到RNN比传统的审计网络多了一个循环,这个循环表示在下一个时间步上会返回作为输入的一部分,把RNN时间点展开就是:

就是在t_0时刻x_0输入后返回h_0的同时将h_0当成输入和下一个时间点的x_1一起输入,如此反复 

或者是:当x_t-1输入后返回的结果h_t-1和x_t一起当作输入后通过tanh计算后输出h_t同时向下一个时间点输入h_t

在不同的时间步中,RNN的输入都与之前的时间状态有关,t_n时刻网络的输出和之前的所有历史共同作用的结果。

 

 图1:固定长度的输入和输出,比如图像分类

图2:序列输入,输入一个数据,逐渐分析结果,比如图像转文字

图3:数列输入,输入一些数据,总结后得出结果,比如文本分类

图4:异步的序列输入和输出,比如文本翻译

图5:同步的序列输入和输出,比如根据视频的每一帧来对视频分类

二.LSTM

1.LSTM的基础介绍

假如现在有一个文本预测,比如天上的云朵漂浮在__,通过间隔不愿的位置可以预测到答案是天上。但是对于有些句子,答案可能在很远的位置,间隔非常大,随着间隔的增大对于RNN来说,效果就不怎么好了。而LSTM(Long Short-Term Memory)可以解决这个问题,LSTM是RNN的一种特殊类型,可以长期依赖信息,而RNN只能短期的依赖。

其中x表示相乘,+表示相加,\sigma表示使用某个函数

2.LSYM的核心

LSTM的核心在于单元中的状态,也就是图中最上边那根弦。

如果只要这跟线,那么就不能对信息增加或者删除,所以在LSTM是通过一个叫做门的结构实现的,门可以选择让信息通过或者不通过

这个门主要是通过sigmoid和点乘实现的

sigmoid函数的结果是在0-1之间的,如果结果为0那么就不让这个信息通过,如果是1就全部通过

3.遗忘门

遗忘门是通过sigmoid函数实现的,用来决定哪些信息保留,哪些信息遗忘。

下图就是h_t-1和x_t进行合并后乘上权重和偏置然后通过sigmoid函数,输入一个0-1之间的值,这个值会和前一个细胞输出的状态c_t-1进行点乘,从而决定是遗忘还是保留

4.输入门

i_i是sigmoid函数后,结果在0-1之间,决定哪些信息会被更新,tanh会创造一个新的候选量C_t如果i_i不是0的话可能会添加到细胞中,比如昨天我吃了苹果,今天我想吃梨,通过遗忘门可以遗忘掉苹果,通过输入门可以输入梨。

经过输入门后就可以更新细胞状态了,C_t-1更新为C_t。怎样更新呢

1.旧的细胞状态和遗忘门的结果相乘

2.然后加上输入门和tanh相乘的结果

5.输出门

最后,我们需要决定哪些信息会被输出,和输入门差不多,线通过sigmoid函数结果来决定哪些细胞状态会被输出

1.前一次的输出结果h_t-1和当前时间步输入的x_t组和通过sigmoid函数进行处理后结果

2.在输入门的时候更新过的细胞状态C_t会经过tanh层的处理将数据转换到(-1,1)之间

3.将1和2的结果点乘后得到结果,一个输入结果,一个输入到下一个时间步的结果

三.GPU

GRU(Gated Recurrent Unit),是一种LSTM的变形版本,它将遗忘门和输入门组合成一个“更新门”。它还合并了单元状态和隐藏状态,并进行了一些更改。

1.z_t就是上一次的结果和这一次的数据通过sigmoid函数后的结果

2.r_t和z_t一样

3.h_t一把是r_t和上一次的结果h_t-1点乘后于x_t组合后通过tanh后的结果

4.h_t是z_t通过1-后点乘上一次的结果后加上z_t点乘上h_t一把的结果

r_t到z_t是更新门,而后面的就是输入出门

四.双向LSTM

结合上面的例子,都是对前面的结果进行计算,而一个词语填空有些时候也要看后面的数据。那么就需要有一种计制,能够使模型不仅能够从前面获得记忆,还要从后获得记忆。此时就要用到双向LSTM了。

从图中可以看出,没给x的输入后不仅得到了结果,这个结果还传到了下一个时间步中计算,而且还生成了一个LSTM_b的结果,因为LSTM_0的箭头是从后往前的,所以使得当前这个时步同时拥有了前后的数据。

都看到这里了,一键三连呗!!!

相关文章:

循环神经网络三

一.介绍 在普通的神经网络中,信息的传递是单向的,这种限制虽然使得网络变得更容易学习,单在一定程度上也减弱了神经网络模型的能力。特别是在现实生活中,网络的输出不仅和当前时刻的输入相关,也过去一段时间的输出相关…...

优购电商小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,商品分类管理,商品信息管理,留言板管理,订单管理,系统管理 微信端账号功能包括:系统首页,商品信息&#xf…...

【ARM】v8架构programmer guide(4)_ARMv8的寄存器

目录 4.4Endianness(端序或字节序) 4.5 改变execution state 4.5.1 Registers at AArch32 4.5.2 PSTATE at AArch32 4.6 NEON 和浮点数寄存器 4.6.1 AArch64中浮点寄存器的组织结构 4.6.2 标量寄存器大小 4.6.3 向量寄存器大小 4.6.4 NEON在AArc…...

Java设计模式详细讲解

目录 设计模式概述 1.1 什么是设计模式1.2 设计模式的类型1.3 设计模式的历史与发展1.4 设计模式在软件开发中的重要性 创建型模式 2.1 单例模式2.2 工厂方法模式2.3 抽象工厂模式2.4 建造者模式2.5 原型模式 结构型模式 3.1 适配器模式3.2 装饰器模式3.3 代理模式3.4 外观模…...

图论------弗洛伊德(Floyd-Warshall)算法

题目描述: 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的 T-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助…...

C#实现动画效果

在C#中,实现动画效果通常可以使用Windows Forms的Timer类或者使用System.Windows.Media.Animation命名空间下的类(如果是WPF应用)。以下是一个Windows Forms应用中使用Timer类来创建简单的动画效果的例子。 假设我们有一个窗体(F…...

Git 对比 SVN 的区别和优势

引言 版本控制系统(VCS)是软件开发过程中不可或缺的一部分,它们用于管理代码的变更、协调开发团队的工作。Git 和 SVN(Apache Subversion)是目前最流行的两个版本控制系统。本文将详细分析 Git 和 SVN 的区别及各自的…...

Qt实现无边框窗口的拖动和缩放

在使用QT创建窗体的时候,为了使窗口美化,通常不使用QT自带的边框。会调用下面函数去除窗体边框。 setWindowFlags(Qt::FramelessWindowHint) 但是有个问题,当去除了QT自带边框后,窗体就变得不能移动了,也不能改变窗口大…...

入门岛2-python实现wordcount并进行云端debug

书生大模型学习 任务: 1.实现一个wordcount函数,统计英文字符串中每个单词出现的次数。返回一个字典,key为单词,value为对应单词出现的次数。 2.Vscode连接InternStudio debug TIPS:记得先去掉标点符号,然后把每个单词…...

c语言-链表1

10 链表 一、链表是什么? -- 数据的一种存储方式 -- 链式存储 (1)线性存储 -- 地址连续 -- 自动开辟,自动释放 -- 默认是线性存储 (2)链式存储 -- 地址不连续…...

你好! Git——企业级开发模型

企业级开发模型(6) 一、删除远程分支,git branch -a (查看所有本地分支与远程分支)还能看到已经删除的分支,怎么解决?二、企业级开发流程2.1 企业级开发流程2.2 系统开发环境 三、Git分支设计模…...

力扣面试150 查找和最小的 K 对数字 最小堆 去重

Problem: 373. 查找和最小的 K 对数字 &#x1f468;‍&#x1f3eb; 参考题解 class Solution {public List<List<Integer>> kSmallestPairs(int[] nums1, int[] nums2, int k) {// 创建一个大小为 k 的结果列表&#xff0c;用于存储和最小的 k 个数对List<Li…...

Oceanbase 执行计划

test100 CREATE TABLE `test100` ( `GRNT_CTR_NO` varchar(32) COLLATE utf8mb4_bin NOT NULL COMMENT 担保合同编号, `GRNT_CTR_TYP` varchar(3) COLLATE utf8mb4_bin NOT NULL COMMENT 担保合同类型, `COLC_GRNT_IND` varchar(1) COLLATE utf8mb4_bin DEFAULT NULL …...

精品丨模型关系介绍

PowerBI中的模型关系相信小伙伴们都不会感觉到陌生&#xff0c;因为一份优秀的报表无法离开数据模型的支撑。 对比其它BI类工具而言&#xff0c;白茶认为其建模功能才是最为突出的功能点。 模型关系类型 PowerBI中我们常用的模型关系一共包含5类&#xff1a; 一对一关系(1:1) …...

CentOS7 配置 nginx 和 php 方案

配置方案 一、安装软件二、编写配置文件&#xff0c;连接PHP三、引用文件四、测试 鉴于网上教程错综复杂&#xff0c;写下一这篇文章 本教程只需要三步即可 一、安装软件 yum install -y nginx php php-fpm二、编写配置文件&#xff0c;连接PHP 一般情况下在安装完 nginx 后…...

Promise.all全面解析:使用方法与实战技巧

Promise是JavaScript中处理异步操作的重要机制&#xff0c;它提供了一种优雅的方式来处理异步回调&#xff0c;避免了传统回调地狱的问题。而Promise.all作为Promise的一个静态方法&#xff0c;更是在处理多个异步操作时发挥着关键作用。本文将全面解析Promise.all的使用方法&a…...

NLP从零开始------9文本进阶处理之文本相似度计算

1.文本相似度计算简介 在自然语言处理中&#xff0c;经常会涉及度量两个文本相似度的问题。在诸如对话系统和信息减速等中&#xff0c;度量句子或短语之间的相似度尤为重要。在新闻学传媒中应用文本相似度可以帮助读者快速检索到想要了解的报道。 文本相似度的定义式如下所示&a…...

Electron 在 MAC 上的 build 签名应用配置

Electron 在 MAC 上的 build 签名应用配置涉及多个步骤,包括准备开发者账号、生成证书和配置文件、配置环境变量以及使用适当的工具进行签名和公证。以下是一个详细的配置流程: 一、准备开发者账号 首先,你需要在 Apple 开发者网站 注册并拥有一个开发者账号。这个账号将用…...

15 交换机命令行配置

交换机命令行配置 一、交换机命令行基本配置 &#xff08;一&#xff09;配置主机名 Switch>enable Switch#configure terminal Switch(config)#hostname S1&#xff08;二&#xff09;查看配置信息 Switch#show running-config Building configuration...Current confi…...

工作流之Flowable与SpringBoot结合

文章目录 1 Flowable1.1 flowable-ui部署运行1.2 绘制流程图1.2.1 绘制1.2.2 绘图细节1.2.3 bpmn文件导入 1.3 后台项目搭建1.3.1 pom.xml1.3.2 数据库表说明 1.4 流程引擎API与服务1.4.1 主要API1.4.2 示例 1 Flowable 1.1 flowable-ui部署运行 flowable-6.6.0 运行 官方dem…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...