机器学习--循环神经网络(RNN)3

news2025/6/20 6:59:32

本篇文章结合具体的例子来介绍一下LSTM运算方式以及原理。请结合上篇文章的介绍食用。

一、具体例子

在这里插入图片描述
如上图所示,网络里面只有一个 LSTM 的单元,输入都是三维的向量,输出都是一维的输出。
这三维的向量跟输出还有记忆元的关系是这样的。
假设 x2 的值是1时,x1 的值就会被写到记忆元里;假设 x2 的值是-1时,就会重置这个记忆元;
假设 x3 的值为1时,才会把输出打开,才能看到输出,看到记忆元的数字。
下面我们来具体来体验一下上述过程:
先看第二个输入,原来存到记忆元里面的值是0,第二个输入 x2 的值是1,3会被存到记忆元里面去。
第四个输入: x2 等于1,所以4会被存到记忆元里面去,所以会得到7。
第六个输入:x3 等于1,这时候7会被输出。
第七个输入: x2 的值为-1,记忆元里面的值会被洗掉变为0。
第八个输入:x2 的值为1,所以把6存进去,因为 x3 的值为1,所以把6输出

二、LSTM运算示例

在这里插入图片描述

记忆元的四个输入标量是这样来的:输入的三维向量乘以线性变换(linear transform)后所得到的结果,x1, x2, x3 乘以权重再加上偏置。

假设这些值是已知的,在实际运算之前,先根据它的输入,分析下可能会得到的结果。
在这里插入图片描述

(1)底下这个外界传入的单元,x1 乘以 1,其他的向量乘以 0,所以就直接把 x1 当做输入。

(2)输入门,x2 乘以 100,偏置乘以 −10。假设 x2 是没有值的话,通常输入门是关闭的(偏置等于 −10)。因为 −10 通过 sigmoid 函数之后会接近 0,所以就代表是关闭的,若 x2 的值大于 1 的话,结果会是一个正值,代表输入门会被打开。

(3)遗忘门通常会被打开的,因为其偏置等于 10,它平常会一直记得东西,只有当 x2 的值为一个很大的负值时,才会把遗忘门关起来。

(4)输出门平常是被关闭的,因为偏置是一个很大的负值,若 x3 有一个很大的正值的话,压过偏置把输出打开。

假设 g 和 h 都是线性的。
在这里插入图片描述

假设存到记忆元里面的初始值是 0,输入第一个向量 [3, 1, 0]T,输入这边 3*1=3,这边输入的是的值为 3。
输入门这边 (1 ∗ 100 − 10 ≈ 1) 是被打开 (输入门约等于 1)。(g(z) ∗ f(zi) = 3)。
遗忘门 (1 ∗ 100 + 10 ≈ 1) 是被打开的 (遗忘门约等于 1)。
0 *1+3=3(c′= g(z)f(zi) + cf(zf)),所以存到记忆元里面的为 3。
输出门 (-10) 是被关起来的,所以 3 无关通过,所以输出值为 0。

在这里插入图片描述
再来看一个[1,0,1]T , 传入输入的值为1,输入门(-10)是关闭的,遗忘门(10)是打开的,记忆元里面存的值不变,输出门(100-10=90)被打开,整个输出为 7,记忆元里面存的 7 会被读取出来。

其他三个留给大家作为练习了。

三、LSTM运作原理

在原来的神经网络里面会有很多的神经元,我们会把输入乘以不同的权重当做不同神经元的输入,每一个神经元都是一个函数,输入一个值然后输出一个值。但是如果是 LSTM 的话,只要把 LSTM 想成是一个神经元。所以要用一个 LSTM 的神经元,其实就是原来简单的神经元换成 LSTM。
在这里插入图片描述
在这里插入图片描述
如图所示,为了简化,假设隐藏层只有两个神经元,输入 x1, x2 会乘以不同的权重当做 LSTM 不同的输入。

输入(x1, x2)会乘以不同的权重会去操控输出门,乘以不同的权重操控输入门,乘以不同的权重当做底下的输入,乘以不同的权重当做遗忘门。第二个 LSTM也是一样的。

所以 LSTM 是有四个输入跟一个输出,对于 LSTM 来说,这四个输入是不一样的(每个门的weight,bias是不一样的)。在原来的神经网络里是一个输入一个输出。在 LSTM 里面它需要四个输入,它才能产生一个输出。假设用的神经元的数量跟 LSTM 是一样的,则LSTM需要的参数量是一般神经网络的四倍。

在这里插入图片描述

假设有一整排的 LSTM,这些 LSTM 里面的记忆元都存了一个值,把所有的值接起来就变成了向量写为 ct−1(一个值就代表一个维度)。

现在在时间点 t,输入向量 xt,这个向量首先会乘上一矩阵(线性变换)变成一个向量 z,向量 z 的维度就代表了操控每一个 LSTM 的输入。z 这个维度正好就是 LSTM 记忆元的数量。z 的第一维就丢给第一个单元。这个 xt 会乘上另外的一个矩阵得到 zi,然后这个 zi 的维度也跟单元的数量一样,zi 的每一个维度都会去操控输入门。遗忘门跟输出门同理。

所以我们把 xt 乘以四个不同的变换得到四个不同的向量,四个向量的维度跟单元的数量一样,用着四个向量合起来去操控这些记忆元运作。

在这里插入图片描述

如上图所示,输入分别就是 z, zi, zo, zf(都是向量),丢到单元里面的值其实是向量的一个维度,因为每一个单元输入的维度都是不一样的,所以每一个单元输入的值都会是不一样。

所以单元是可以共同一起被运算的。zi 通过激活函数跟 z 相乘,zf 通过激活函数跟之前存在记忆元里面的值相乘,然后将 z 跟 zi 相乘的值加上 zf 跟 ct−1 相乘的值,zo 通过激活函数的结果输出,跟之前相加的结果再相乘,最后就得到了输出 yt。

之前那个相加以后的结果就是记忆元里面存放的值 ct,这个过程反复的进行,在下一个时间点输入 xt+1,把 z 跟输入门相乘,把遗忘门跟存在记忆元里面的值相乘,将前面两个值再相加起来,在乘上输出门的值,得到下一个时间点的输出 yt+1。
在这里插入图片描述

但这还不是 LSTM 的最终形态,真正的 LSTM 会把上一个时间的输出接进来,当做下一个时间的输入,即下一个时间点操控这些门的值不是只看那个时间点的输入 xt ,还看前一个时间点的输出 ht 。其实还不止这样,还会添加 peephole 连接。peephole 就是把存在记忆元里面的值也拉过来。操控 LSTM 四个门的时候,同时考虑了 xt+1, ht, ct ,把这三个向量并在一起乘上不同的变换得到四个不同的向量再去操控 LSTM。

LSTM 通常不会只有一层,若有五六层的话,如下图所示。一般做 RNN 的时候,其实指的就用 LSTM。
在这里插入图片描述

门控循环单元(Gated Recurrent Unit,GRU)是 LSTM 稍微简化的版本,它只有两个门。虽然少了一个门,但其性能跟 LSTM 差不多,少了 1/3 的参数,也是比较不容易过拟合。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【蓝桥杯】k倍区间

一.题目描述 二.问题分析 对于该问题,标签上写的是暴力,但是如果使用暴力的话,会超时。 首先,对于两个数a,b(假设a小于b),若a与b对k取余后结果相同,则b-a可以整除k。 …

Edu 18 Colored balls -- 题解

目录 Colored Balls: 题目大意: 思路解析: 代码实现: Colored Balls: 题目大意: 思路解析: 我们对于一个数n,如果分组大小超过了 根号n,那么便不可能将n 分为多个组,并且组间差距…

苍穹外卖学习-----2024/03/09

1.菜品分页查询 代码在这里 分页查询菜品 2.删除菜品 [链接]param 1、概览 本文将带你了解 Spring 中 RequestParam 注解的用法。 简单地说,可以使用 RequestParam 从请求中提取查询参数、表单参数甚至是多个参数。 2、示例端点 假设我们有一个端点 /api/foos&a…

qt一个项目只能有一个QMainWindow,其他小窗口只能继承QWidget

我继承QMainWindow,结果就出现奇奇怪怪的现象,我人都疯了 这些接口全他妈不能用 删了换成QWidget就可以用了

重建大师下图界面上的颜色区域分别代表着什么?

分别代表相对精度、绝对精度。 重建大师是一款专为超大规模实景三维数据生产而设计的集群并行处理软件,输入倾斜照片,激光点云,POS信息及像控点,输出高精度彩色网格模型,可一键完成空三、自动建模和LOD构建。 下载地…

idea连接远程服务器

1. 双击shift,出现如下界面 2. 远程连接 原文来自这个up主的,点击蓝色字体就可以跳转啦! 输入主机ip、用户名、密码,点击Test Connection验证,最后点击ok添加成功 有用的话记得给俺点个赞,靴靴~

赶紧来学Python回调函数

在Python中,回调函数是一种非常重要的编程概念,它允许我们将一个函数作为参数传递给另一个函数,并在需要时由另一个函数调用。回调函数的使用可以使代码更加灵活和可重用,尤其在异步编程、事件驱动编程中非常常用。 1.普通函数调…

波动数列 刷题笔记

思路分析 dp 找出状态转移方程 设d为a或者-b 代码 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N1010,MOD100000007; int get_mod(int a,int b){ return (a%bb)%b; …

悲观锁和乐观锁

悲观锁&#xff1a;比较悲观&#xff0c;认为线程安全问题一定会发生&#xff0c;因此在操作数据之前先获取锁&#xff0c;确保线程串行执行。-例如Synchronized、Lock都属于悲观锁。 乐观锁&#xff1a;比较乐观&#xff0c;认为线程安全问题不一定会发生&#xff0c;因此不加…

数论<1>——数论基础

这期博客是一个数论入门介绍&#xff0c;dalao们可以自动忽略。 Part 1:素数(质数) 说到数论&#xff0c;小学奥数里也有。我最先想到的就是质数了。素数就是一个只能被1和它自己整除的数。判断的方法也很简单&#xff0c;可以扫一遍就结束了&#xff0c;但是没必要。由于一个…

使用yarn创建vite+vue3electron多端运行

文章目录 第一步 使用yarn创建vite+vue3项目遇到创建报错看第二步 引入electron第三步 创建main.js在electron下面的main.js写入下面代码第四步 安装同时运行多条命令npm包&&修改package.json文件npm包增加一条electron运行脚本命令效果图第一步 使用yarn创建vite+vue3…

[Electron]中IPC进程间通信

Electron中IPC 进程间通信 (IPC) 是在 Electron 中构建功能丰富的桌面应用程序的关键部分之一。在 Electron 中&#xff0c;进程使用 ipcMain 和 ipcRenderer 模块&#xff0c;通过开发人员定义的“通道”传递消息来进行通信。 本文介绍以下几个方面&#xff1a; 1-渲染进程到…

SpringCloud基础

SpringCloud基础环境 1、基本环境版本选择 Java&#xff1a; Java17&#xff1b;spring cloud&#xff1a;2023.0.0&#xff1b;spring boot&#xff1a;3.2.0&#xff1b;cloud alibaba&#xff1a;2022.0.0.0-RC2&#xff1b;Maven&#xff1a;3.9&#xff1b;Mysql&#x…

SQL设计时增加说明列

后关闭sql Studio,然后打开注册表,注册表地址: 计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\SQL Server Management Studio\18.0_IsoShell\DataProject 如有版本不同,红色内容有所变化,修改内容如下: SSVPropViewColumnsSQL70,SSVPropViewColumnsSQL80 全修改为 1,2,6,7…

SHA算法:数据完整性的守护者

title: SHA算法&#xff1a;数据完整性的守护者 date: 2024/3/9 20:38:59 updated: 2024/3/9 20:38:59 tags: SHA算法起源安全性演进碰撞攻击风险数据完整性验证数字签名应用Python实现示例算法优势对比 一、SHA算法的起源与演进 SHA&#xff08;Secure Hash Algorithm&#…

深度学习:如何面对隐私和安全方面的挑战

深度学习技术的广泛应用推动了人工智能的快速发展&#xff0c;但同时也引发了关于隐私和安全的深层次担忧。如何在保护用户隐私的同时实现高效的模型训练和推理&#xff0c;是深度学习领域亟待解决的问题。差分隐私、联邦学习等技术的出现&#xff0c;为这一挑战提供了可能的解…

16. C++标准库

C标准库兼容C语言标准函数库&#xff0c;可以在C标准库中直接使用C语言标准函数库文件&#xff0c;同时C标准库增加了自己的源代码文件&#xff0c;新增文件使用C编写&#xff0c;多数代码放在std命名空间中&#xff0c;所以连接C标准库文件后还需要 using namespace std;。 【…

Java高频面试之并发篇

有需要互关的小伙伴,关注一下,有关必回关,争取今年认证早日拿到博客专家 并行和并发有什么区别&#xff1f; 并行是同时执行多个任务&#xff0c;而并发是多个任务在一段时间内交替执行。并行&#xff08;Parallel&#xff09;是指同时执行多个任务或操作&#xff0c;通过同时…

腾讯云轻量应用服务器限制月流量,你知道吗?

腾讯云轻量应用服务器相对于云服务器CVM是有一些限制的&#xff0c;比如轻量服务器不支持更换内网IP地址&#xff0c;不支持自定义私有网络VPC&#xff0c;内网连通性方面也有限制&#xff0c;轻量不支持CPU内存、带宽或系统盘单独升级&#xff0c;只能整个套餐整体升级&#x…

11. 搭建较通用的GoWeb开发脚手架

文章目录 导言一、加载配置二、初始化日志三、初始化MySQL连接四、初始化Redis连接五、初始化gin框架内置的校验器使用的翻译器六、注册路由七、 启动服务八、测试运行九&#xff1a;注意事项 代码地址&#xff1a;https://gitee.com/lymgoforIT/bluebell 导言 有了前述知识的…