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

RNN:Long Short-term Memory(中)

目录

1  LSTM 的简图

2  LSTM 的整体结构

2.1  结构图

2.2  流程图

3  举个例子

3.1  简单看看

3.2  代入 LSTM

4  Original Network v.s. LSTM

5  细看 LSTM


原视频:李宏毅 2020:Recurrent Neural Network (Part I)

1  LSTM 的简图

LSTM 实际上就是一种特殊的神经元,只是长得比较复杂罢了。可以看出,它就是在 memory 的基础上加了三个门:输入门(Input Gate)、遗忘门(Forget Gate)和输出门(Output Gate),四者关系如下图所示:

LSTM 三个门的作用:

  • 输入门(Input Gate):控制 LSTM 是否接收当前的输入
  • 遗忘门(Forget Gate):控制 LSTM 是否丢掉 memory 中的内容
  • 输出门(Output Gate):控制 LSTM 是否允许对处理结果进行输出

三个门的开或闭均由信号(signal)控制,这些信号均来自网络的其他部分。

LSTM 的特点是:

  • 四个输入,图中用红线表示,输入均来自网络的其他部分
  • 一个输出,图中用绿线表示,输出也将送往网络的其他部分

如何理解 Long Short-term Memory 这个名称?它的意思就是 Long 的 Short-term 的 Memory,即虽然长但毕竟还是短期的记忆。在 RNN 中,一旦计算出当前时刻隐层的输出,那么 memory 中的内容会立马被冲掉或者说是被替换掉。而在 LSTM 中,有了输入门(Input Gate)和遗忘门(Forget Gate)的控制,memory 中的内容可能不变,也可能只变一部分。因此在一定程度上,LSTM 延长了对某些信息的记忆时间,所以是 Long 的。

2  LSTM 的整体结构

这一节来看 LSTM 具体长啥样。

2.1  结构图

下图就是把 LSTM 中的内容细化了,没有想象的那么复杂:

图中的黑色虚线指明了输入门(Input Gate)、遗忘门(Forget Gate)和输出门(Output Gate)其实就是激活函数的输出。这里的激活函数用的是 Sigmod,输出的值在 0 到 1 之间,用于表示开门的程度。

门不是想象中的要么开要么闭,而是可以半开半闭。

2.2  流程图

下图使用各种变量符号标注了 LSTM 的处理流程:

可以看出,LSTM 门控的方式就是 “乘法”(multiply)。乘的数字越接近于 1,输入、记住、或输出的越多;乘的数字越接近于 0,输入、记住、或输出的越少。

遗忘门(Forget Gate)是反着来的,越接近于 1 遗忘的越少,越接近于 0 遗忘的越多。

3  举个例子

李宏毅老师先是直接让我们感受各个门的作用,然后才是代入 LSTM 中进行说明。

3.1  简单看看

下图中,x_1、x_2 和 x_3 是一个输入向量的不同维度,并不是三个输入。这里没有让我们通过激活函数算各个门的值,而是用底部的三句话指明了处理规则:

三句话的含义:

  • 若 x_2 = 1,则把 x_1 的值送入 memory 中与其内容相加
  • 若 x_2 = -1,则把 memory 中的内容清空,即进行遗忘
  • 若 x_3 = 1,则输出处理结果,否则不输出

根据这三条规则,我们便画出了上图。

3.2  代入 LSTM

假设这是我们训练好的 LSTM,黑色箭头上的数字表示这条线权重:

我们可以先来看看。对于左上角的那组权重,如果 x_3 较大,那么经 Sigmoid 处理的结果就会接近于 1,表示输出门(Output Gate)打开。反之,如果 x_3 较小,那么经 Sigmoid 处理的结果就会接近于 0,表示输出门(Output Gate)关闭。

由于画图过于痛苦,所以这里只演示一组处理过程:

为了简化例子,李宏毅老师还是假设除 Sigmoid 以外的激活函数均为线性函数,并且权重均为 1 。

4  Original Network v.s. LSTM

或许我们会认为 LSTM 这么复杂,看起来和 FFN 没有什么关系啊?事实上,LSTM 只是把 FFN 中的神经元替换为了 LSTM 单元罢了,并且 LSTM 单元也就是个特殊的神经元。

在 FFN 中,一个神经元只要求 x_1 和 x_2 输入一次。而在 LSTM 中,一个 LSTM 单元要求 x_1 和 x_2 输入四次:

同样地,x_1 和 x_2 是一个输入向量的不同维度,而不是两个输入。此外,图中相同颜色的连线,只表示 x_1 和 x_2 使用的是同一组权重,而不代表它们各自乘的权值相同。

5  细看 LSTM

t 时刻的输入 x_t 是一个输入向量,而不是一个维度。x_t 与不同的权值矩阵相乘后得到 z_f、z_i、z、z_o,z_f、z_i、z、z_o 也是一个向量而不是一个维度。最后分别把 z_f、z_i、z、z_o 的各个维度送入到各个 LSTM 单元的不同门处:

c_{t-1} 也是一个向量而不是一个维度,它是 t-1 时刻所有 memory 内容的集合。

有请神图 1 号登场:

通过这张图可以看出,从输入 x_t 到输出 y_t 都是用的矩阵运算。即每次处理的对象都是整个矩阵,而不是挨个输入 x_t 的每个维度,再挨个计算。

有请神图 2 号登场:

这张图完美诠释了 LSTM 是怎么将不同时刻的输入关联起来的。

图中的红色虚线是指,在高级的 LSTM 中,memory 的内容 c_t 和隐层输出 h_t 也会被拉来和 x_{t+1} 一起当输入。


写完这篇再也不想画图了(bushi)

相关文章:

RNN:Long Short-term Memory(中)

目录 1 LSTM 的简图 2 LSTM 的整体结构 2.1 结构图 2.2 流程图 3 举个例子 3.1 简单看看 3.2 代入 LSTM 4 Original Network v.s. LSTM 5 细看 LSTM 原视频:李宏毅 2020:Recurrent Neural Network (Part I) 1 LSTM 的简图 LSTM 实际…...

C# .NET读取Excel文件并将数据导出到DataTable、数据库及文本

Excel文件是存储表格数据的普遍格式,因此能够高效地读取和提取信息对于我们来说至关重要。C#语言借助.NET Framework和各种库的广泛功能,能够进行高效的数据操作。利用C#读取Excel文件并将数据写入数据库和DataTable,或者将数据用于其他目的&…...

移动云助力智慧交通数智化升级

智慧交通是在整个交通运输领域充分利用物联网、空间感知、云计算、移动互联网等新一代信息技术,综合运用交通科学、系统方法、人工智能、知识挖掘等理论与工具,以全面感知、深度融合、主动服务、科学决策为目标,推动交通运输更安全、更高效、…...

【Vue技巧】vue 阻止a链接跳转事件的两种方法

ChatGPT4.0国内站点&#xff0c;支持设计稿转代码&#xff1a;https://www.atalk-ai.com/ 在Vue中&#xff0c;如果你想阻止<a>链接的默认跳转事件&#xff0c;你可以使用click.prevent或者click配合.prevent修饰符。这样做可以阻止链接的默认行为&#xff0c;即不会跳转…...

006.Oracle事务处理

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…...

成功解决VScode进入到内置函数中调试

主要有两个关键步骤&#xff0c; 第一步 将launch.json中的"justMyCode"设为false 可通过使用ctrlshiftP搜索lauch.json找到次文件 如果找不到的话&#xff0c;可点击debug按钮&#xff0c;然后找到点击create a launch.json file创建 创建得到的launch.json如下&am…...

29、WEB攻防——通用漏洞SQL注入增删改查盲注延迟布尔报错

文章目录 盲注增删改查 盲注 概念&#xff1a;在注入过程中&#xff0c;获取的数据不能回显至前端页面&#xff0c;此时我们需要利用一些方法进行判断或尝试&#xff0c;这个过程被称为盲注。 解决&#xff1a;常规的联合查询注入不行的情况。 分类&#xff1a; 基于布尔的SQ…...

【设计模式 行为型】策略模式

它允许在运行时根据需要选择算法的行为。该模式通过将算法封装成独立的类&#xff0c;使得它们可以相互替换&#xff0c;而不影响使用算法的客户端代码。 策略模式主要包含以下角色&#xff1a; 环境&#xff08;Context&#xff09;&#xff1a;环境对象持有一个策略对象的引…...

JVM:双亲委派机制类加载器

JVM&#xff1a;双亲委派机制 1. 例子2. 类加载器总结3. 类加载过程4. 双亲委派模型的执行流程&#xff1a;5. 双亲委派模型的好处 1. 例子 Java运行时环境有一个java.lang包&#xff0c;里面有一个ClassLoader类 我们自定义一个String类在java.lang包下&#xff0c;下面的…...

从入门到精通:ThinkPHP6异步请求的全面解析!

在ThinkPHP6中使用异步请求 在Web应用程序的开发中&#xff0c;经常会需要使用异步请求。异步请求能够在后台执行而不干扰页面的其他操作&#xff0c;提高了用户的体验。而在ThinkPHP6框架中&#xff0c;也提供了方便的异步请求方式&#xff0c;本文将详细介绍如何在ThinkPHP6…...

C++写csv文件

C写csv文件 其中有一个点需要注意&#xff0c;csv芬里尔之间要用逗号隔开 p_str_filename "D:\\1.csv"; int writelog(string p_str_filename, double p_double[]) {SYSTEMTIME timeCur;GetLocalTime(&timeCur);char t_logbuffer[1024] { 0 };sprintf(t_logbu…...

将Matlab图窗中的可视化保存为背景透明的矢量图

将matlab绘制的结果复制为矢量图时&#xff0c;去除背景的操作如下&#xff1a; 先打开/绘制图形窗口(不要关闭)在命令行终端输入axis off关闭坐标系继续在命令行终端分别输入&#xff1a; ax gca; copygraphics(ax,ContentType,vector,BackgroundColor,none); 此时&#xff…...

希尔(Shell)排序

文章目录 希尔排序的基本思想本质增量&#xff08;间隔&#xff09;的选取 希尔排序的时间复杂度希尔排序代码实现希尔排序的稳定性 希尔排序的基本思想 将要排序的序列按一定间隔&#xff08;增量&#xff09;分组&#xff0c;将每一组的数据按插入排序进行排序&#xff0c;再…...

【已解决】Qt Creator设计模式被禁用不能点的原因及解决方案

Qt Creator 下载地址&#xff08;含历史版本&#xff09;&#xff1a;https://download.qt.io/official_releases/qtcreator/ 症状 Qt Creator 目前最新版为12.0.1&#xff0c;安装后打开.qml文件发现设计工具图标为禁用状态。 原因及解决方案 根据官网材料&#xff08;Qt C…...

树莓派5 Ubuntu 23.04 安装 DisplayLink 驱动

树莓派5 Ubuntu 23.04 安装 DisplayLink 驱动 PreparationSynaptics APT RepositoryInstall evdiInstall displaylink-driver Preparation lsusb -d 17e9: sudo apt-get install dkmsSynaptics APT Repository wget https://www.synaptics.com/sites/default/files/Ubuntu/po…...

SpringBoot 实现 PDF 添加水印有哪些方案

SpringBoot 实现 PDF 添加水印有哪些方案 方式一&#xff1a;使用 Apache PDFBox 库方式二&#xff1a;使用 iText 库方式三&#xff1a;用 Ghostscript 命令行方式四&#xff1a;Free Spire.PDF for Java方式五&#xff1a;Aspose.PDF for Java 简介 PDF&#xff08;Portable …...

【blender渲染】blender流体模拟基础

各位新年好哇&#xff0c;最近在做demo的时候&#xff0c;为了更好的效果&#xff0c;开始摸索一点离线渲染的东西。像这种后续渲染的处理&#xff0c;由于3ds max是更偏向于建模的dcc&#xff0c;有点不那么好使&#xff08;没有说看不起vray的意思哈&#xff09;。 像在实时…...

小白进阶之字符串处理

#include <cstdio> #include <cstring> int main() {char str[105];int count0,len0;scanf("%s",str);//输入字符lenstrlen(str);//求字符长for(int i0;i<len;i){if(str[i]A)//匹配计数count;}printf("%d",count); }#include <cstdio>…...

自定义Dubbo RPC通信协议

前言 Dubbo 协议层的核心SPI接口是org.apache.dubbo.rpc.Protocol&#xff0c;通过扩展该接口和围绕的相关接口&#xff0c;就可以让 Dubbo 使用我们自定义的协议来通信。默认的协议是 dubbo&#xff0c;本文提供一个 Grpc 协议的实现。 设计思路 Google 提供了 Java 的 Grpc…...

VB6.0报错:操作符AddressOf使用无效

VB调试&#xff0c;尝试调用DLL中的方法并带有回调函数&#xff0c;报错提示&#xff1a; 操作符AddressOf使用无效 代码&#xff1a; Private Sub btnScan_Click()... WCHBLEStartScanBLEDevices AddressOf callBackEnd Sub This function is called from the dll Public Fu…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...