RNN LSTM Seq2Seq Attention

非端到端:
data -》 cleaning -》 feature Engining (70%-80%工作 设计特征)-》 分类器 -》预测
端到端 End-to-End:
data -》 cleaning -》Deep learning(表示学习,从数据中学习特征) -》 预测
RNN(递归神经网络)
时序模型
我们知道人类并不是从零开始思考东西,就像你读这篇文章的时候,你对每个字的理解都是建立在前几个字上面,很多东西你要通过上下文才能理解。
然而传统的神经网络并不能做到持续记忆理解这一点,这是传统神经网络的主要缺点。举个例子,你打算使用传统的神经网络去对电影里每个时间点发生的事情进行分类的时候,传统的神经网络先让不能使用前一个事件去推理下一个事件。
RNN(递归神经网络)可以解决这个问题。他们是带有循环的神经网络,允许信息在其中保留。
应用 比如语音识别,语音模型,翻译,图片注释等
结构

序列形的数据就不太好用原始的神经网络处理了。为了建模序列问题,RNN引入了隐状态h(hidden state)的概念,h可以对序列形的数据提取特征,接着再转换为输出。
循环结构允许信息从当前输出传递到下一次(下个时间点)的网络输入。
RNN其实和传统的神经网络并没有太多的不同。RNN可以看作是一个网络的多次拷贝,其中每次网络的输出都是下一次的输入。
单输入单输出


RNN比BP多了参数h0,因此RNN的神经元公式会比BP神经元多一项(f为激励函数)
隐藏层h与输出y相同
多输入单输出
由结构和公式可知,整一个RNN结构共享1组(U, W, b),这是RNN结构最重要的特性,且每一个隐藏层神经元h的计算公式是由当前输入X与上一个隐藏层神经元的输出组成。
单输入多输出
这种结构通常应用于输入一个图像,输出描述该图像的文本。
多输入多输出
由于输入与输出等长,这种结构的用途就比较狭窄,仅限于输入与输出等长的序列数据如诗词文等,作诗机器人就是这么诞生的。
优点
相比于BP神经网络和CNN卷积神经网络,RNN的优势又在哪呢?我们可以看到上面的RNN结构,输入是可以多个且有序的,它可以模拟人类阅读的顺序去读取文本或者别的序列化数据,且通过隐藏层神经元的编码,上一个隐藏层神经元的信息可以传递到下一个隐藏层神经元,因而形成一定的记忆能力,能够更好地理解序列化数据。
LSTM长短期记忆网络
RNN结构的劣势
RNN结构共享1组参数(U, W, b),每一步使用的参数U、W、b都是一样的,,这是RNN结构最重要的特性。
因为 在(U, W, b)不变的情况下,梯度在反向传播过程中,不断连乘,数值不是越来越大就是越来越小,这样就出现了梯度爆炸或梯度消失的情况,所以往往用RNN去训练模型得不到预期的效果。
LSTM原理
由上文可知,RNN结构之所以出现梯度爆炸或者梯度消失,最本质的原因是因为梯度在传递过程中存在极大数量的连乘,为此有人提出了LSTM模型,它可以对有价值的信息进行记忆,放弃冗余记忆,从而减小学习难度。与RNN相比,LSTM的神经元还是基于输入X和上一级的隐藏层输出h来计算,只不过内部结构变了,也就是神经元的运算公式变了,而外部结构并没有任何变化,因此上面提及的RNN各种结构都能用LSTM来替换。
相对于RNN,LSTM的神经元加入了输入门i、遗忘门f、输出门o 和内部记忆单元c。博主这里先给上一个整体的LSTM结构图如下图,之后再对它内部结构的运算逻辑进行详细的解释。

LSTM整体结构
遗忘门f:控制输入X和上一层隐藏层输出h被遗忘的程度大小

遗忘门(forget gate)

遗忘门公式
输入门i:控制输入X和当前计算的状态更新到记忆单元的程度大小。


内部记忆单元c:


输出门o:控制输入X和当前输出取决于当前记忆单元的程度大小


其中σ一般选择Sigmoid作为激励函数,主要是起到门控作用。因为Sigmoid函数的输出为0~1,当输出接近0或1时,符合物理意义上的关与开。tanh函数作为生成候选记忆C的选项,因为其输出为-1~1,符合大多数场景下的0中心的特征分布,且梯度(求导)在接近0处,收敛速度比sigmoid函数
要快,这也是选择它的另外一个原因。不过LSTM的激励函数也不是一成不变的,大家可以根据自己的需求去更改,只要能更好地解决自己的问题即可。
对于一个训练好的LSTM模型,我们要知道它的每一个门(遗忘门、输出门和输入门)都有各自的(U, W, b),上述公式也有所体现,这是在训练过程中得到的。而且当输入的序列不存在有用信息时,遗忘门f的值就会接近1,那么输入门i的值接近0,这样过去有用的信息就会被保存。当输入的序列存在重要信息时,遗忘门f的值就会接近0,那么输入门i的值接近1,此时LSTM模型遗忘过去的记忆,记录重要记忆。
因此我们可以看出由遗忘门、输出门、输入门和内部记忆单元共同控制LSTM的输出h的设计,使得整个网络更好地把握序列信息之间的关系。
Seq2Seq
输入输出不等长的多输入多输出的RNN结构
叫Encoder-Decoder模型,也可以称之为Seq2Seq模型。
原始的N vs N RNN要求序列等长,然而我们遇到的大部分问题序列都是不等长的,如机器翻译
中,源语言和目标语言的句子往往并没有相同的长度。
为此,Encoder-Decoder结构先将输入数据编码成一个上下文向量c:

得到c有多种方式,最简单的方法就是把Encoder的最后一个隐状态赋值给c,还可以对最后的隐状态做一个变换得到c,也可以对所有的隐状态做变换。
拿到c之后,就用另一个RNN网络对其进行解码,这部分RNN网络被称为Decoder。具体做法就是将c当做之前的初始状态h0输入到Decoder中:

由于这种Encoder-Decoder结构不限制输入和输出的序列长度,因此应用的范围非常广泛,比如:
- 机器翻译。Encoder-Decoder的最经典应用,事实上这一结构就是在机器翻译领域最先提出的
- 文本摘要。输入是一段文本序列,输出是这段文本序列的摘要序列。
- 阅读理解。将输入的文章和问题分别编码,再对其进行解码得到问题的答案。
- 语音识别
。输入是语音信号序列,输出是文字序列。
利用RNN和自编码器的原理构造一个翻译机器人,同样的,这个自编码器(翻译机器人)的输入也等于输出,只不过输入与输出用不同的语言去表示罢了。


Seq2Seq + Attention
Seq2Seq模型可以完成机器翻译等任务,但我们从它的结构可以看出,解码器decoder的输入都是编码器encoder的同一个输出,也就是说不管输入的语句是什么,编码器encoder都会将它转换成同一个中间语义h'。而我们知道的是每一句话都有其侧重点,那翻译当然也应该注意其侧重点,不应该是每一个词在一个句子中都具有同等地位,这样翻译出来的句子肯定效果不佳。所以,有人为此提出了注意力机制(Attention Mechanism),让我们在使用Seq2Seq的过程中,加入注意力机制,聚焦重点,提升模型效果。

注意力模型(解码器Decoder)
如上图,注意力机制下的Seq2Seq模型的输入与输出是等长的,和上面博主介绍的多输入多输出的RNN结构一样,只是输入变了,输入不是直接的序列输入,而是经过编码器encoder转换的中间语义C,而这些输入C也各不相同,每一个C都是由权重w和译码器的隐藏层输出h加权组成,如下图。

中间语义转换示意图
在解码器decoder部分,由于输入的顺序不同,中间语义C1,C2,C3之间的权值表征也不同,这也就是我们所说的注意力机制。换言之,随着不同时刻,重点一直在变化,而这些变化则由上图的权重w去表示,比如C1的重点在‘中’这个字,那么中间语义可以表示为C1=0.6 * h1 + 0.2 * h2 + 0.1 * h3 + 0.1 * h4 (权值可以看成概率,且概率加起来为1)。

中间语义转换公式
此时,我们唯一要解决的是,如何去求中间语义C的权值w表征。这就涉及到注意力模型的另一部分(编码器Encoder),如下图。F函数和softmax函数,大家可以理解为我们要计算当前的hi与全部h(包括hi)之间的差别,从而计算出在i时刻下,每一个h对应的权值(即概率)。换言之,大家可以将下图看成分类问题,与hi越相近的,输出的概率也就越大。

注意力模型(编码器Encoder)
到这里,几种常见的RNN结构也就介绍完了,它们的训练过程与之前讲的多输入单输出的RNN结构训练过程并没有太多的区别,也是基于梯度下降原则去不断缩小真实值与预测值之间的差值,只不过有些结构的输出值多了一点罢了。
Attention
在Encoder-Decoder结构中,Encoder把所有的输入序列都编码成一个统一的语义特征c再解码,因此, c中必须包含原始序列中的所有信息,它的长度就成了限制模型性能的瓶颈。如机器翻译问题,当要翻译的句子较长时,一个c可能存不下那么多信息,就会造成翻译精度的下降。
Attention机制通过在每个时间输入不同的c来解决这个问题,下图是带有Attention机制Decoder:


以机器翻译为例(将中文翻译成英文):





相关文章:
RNN LSTM Seq2Seq Attention
非端到端: data -》 cleaning -》 feature Engining (70%-80%工作 设计特征)-》 分类器 -》预测 端到端 End-to-End: data -》 cleaning -》Deep learning(表示学习,从数据中学习特征) -》…...
硬件设计-ADC和低本底噪声为何至关重要
简介 在工程领域,精度是核心要素。无论是对先进电子设备执行质量和性能检测,还是对复杂系统进行调试,测量精度的高低都直接关系到项目的成功与否。这时,示波器中的垂直精度概念就显得尤为重要,它衡量的是电压与实际被…...
个性化域名配置
1 申请免费SSL证书 访问 https://certbot.eff.org ,可申请 通配符证书,每次申请可以使用3个月,到期可以免费续期。 2 配置nginx server index.conf 配置如下: server {listen 80;server_name biwow.com www.biwow.com;return …...
uniapp中打包应用后,组件在微信小程序和其他平台实现不同的样式
今天,我们来介绍一下,uniapp中如何实现打包应用后,组件在微信小程序和其他平台不同的样式,在这里,我们使用背景颜色进行演示,使用 UniApp 提供的 uni.getSystemInfoSync() 方法来获取系统信息,包…...
MRI脑肿瘤检测数据集,使用500张原始图片标注,支持yolo,coco,voc格式
MRI脑肿瘤检测数据集,使用500张原始图片标注,支持yolo,coco,voc格式 数据集下载: https://download.csdn.net/download/pbymw8iwm/90125474 https://download.csdn.net/download/pbymw8iwm/90125473 https://downl…...
JumpServer开源堡垒机搭建及使用
目录 一,产品介绍 二,功能介绍 三,系统架构 3.1 应用架构 3.2 组件说明 3.3 逻辑架构 3.3 逻辑架构 四,linux单机部署及方式选择 4.1 操作系统要求(JumpServer-v3系列版本) 4.1.1 数据库 4.1.3创建数据库参考 4.2 在线安装 4.2.1 环境访问 4.3 基于docker容…...
Java 编程旅程(二)
在前一篇博客中,我们介绍了 Java 编程的基础知识和入门步骤。现在,我们将继续深入探讨 Java 的一些高级特性,以帮助你进一步提升编程技能。通过这篇博客,你将学习到更复杂的概念和技术,比如面向对象编程(OO…...
一、springcloud 入门——笔记
1. 学习之前要知道的 springcloud 应用的技术 2. springboot 和 springcloud 的版本选型 官网介绍:https://spring.io/projects/spring-cloud/#overview 生成新的Spring Cloud项目 最简单的入门方法是访问start.spring.io,选择您的Spring Boot版本和要使…...
思考:VSCode 的宏观工作原理 快速入门 VSCodium (****)
23个常用的VSCode快捷键(动图演示)> https://www.php.cn/faq/441696.html VSCodium AppImage 版 使用记录 https://blog.csdn.net/ken2232/article/details/143591323 **** 初步比较:VSCode > pk < VSCodium << 在下…...
C++ day8——模版
笔记脑图 作业 template <class T> class mylist{ public:// 这是一个链表的节点struct Link{T val;Link* next; } 增 :insert(T val) 在链表中创建新节点,节点上保存的数据为 val删:remove(T val) 移除链表中数据为 val 的节点改…...
【CSS in Depth 2 精译_080】 13.1:CSS 渐变效果(中)——不同色彩空间的颜色插值算法在 CSS 渐变中的应用
当前内容所在位置(可进入专栏查看其他译好的章节内容) 第四部分 视觉增强技术 ✔️【第 13 章 渐变、阴影与混合模式】 ✔️ 13.1 渐变 ✔️ 13.1.1 使用多个颜色节点(上)13.1.2 颜色插值方法(中) ✔️13.1…...
红日靶场1(搭建打靶)
搭建 靶场下载: http://vulnstack.qiyuanxuetang.net/vuln/detail/2/ (13G,需要百度网盘会员) 下载好靶场文件后直接解压 直接用虚拟机打开靶场 更改网络ip 需要模拟内网和外网两个网段, Win7 虚拟机相当于网关服务器,所以需要…...
LivePortrait 部署笔记
LivePortrait 开源地址: https://github.com/KwaiVGI/LivePortrait 模型下载: export HF_ENDPOINThttps://hf-mirror.com huggingface-cli download --resume-download KwaiVGI/LivePortrait --local-dir models--KwaiVGI--LivePortrait...
Greenhills Lib操作-查看Lib信息与将lib中的data段link到指定区域
文章目录 前言Greenhillls中gsize的用法修改ld文件将lib中的data段指定区域示例定义与链接总结 前言 项目开发过程中,遇到客户开发ASW,提供Lib进行集成,但ASW中的标定量没有定义对应的data段,导致无法将标定量指定到特定的内存。…...
【十进制整数转换为其他进制数——短除形式的贪心算法】
之前写过一篇用贪心算法计算十进制转换二进制的方法,详见:用贪心算法计算十进制数转二进制数(整数部分)_短除法求二进制-CSDN博客 经过一段时间的研究,本人又发现两个规律: 1、不仅仅十进制整数转二进制可…...
【JavaEE】网络(2)
一、网络编程套接字 1.1 基础概念 【网络编程】指网络上的主机,通过不同的进程,以编程的方式实现网络通信;当然,我们只要满足进程不同就行,所以即便是同一个主机,只要是不同进程,基于网络来传…...
AI for Science 的完美实践——科研文献的智慧化提取获得“综述性文摘”的软件开发
实践是检验真理的唯一标准!show your codes! 1 综述性文摘的需求 再简单不过了。 甲方(综述性文摘)需求:针对项目特征或描述,从几百篇相关的科研论文(PDF)中智能提取相关内容,包括…...
前端使用xlsx.js实现 Excel 文件的导入与导出功能
前端使用xlsx.js实现 Excel 文件的导入与导出功能 在现代的 Web 开发中,处理文件上传和导出功能已经变得越来越常见,尤其是 Excel 文件的导入与导出。 我们将使用 Vue.js 和 XLSX.js 库来处理 Excel 文件的读取和生成。XLSX.js 是一个强大的 JavaScrip…...
React简单了解
原理简化了解 import React from "react" import { createRoot } form "react-dom/client"const element React.createElement(p,{id: hello},Hello World! )const container document.querySelector(#root) const root createRoot(container) root.r…...
backbone 和Run-Length Encoding (RLE)含义
在深度学习中,特别是在图像分割任务中,backbone(主干网络)是指用于特征提取的预训练神经网络模型。Backbone 的主要作用是从输入图像中提取有用的特征,这些特征随后会被用于更高层次的任务,如分类、检测或分…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
