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

本篇文章结合具体的例子来介绍一下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.mzph.cn/news/739823.shtml

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

相关文章

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

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

备战蓝桥之搜索

2024.3.12 P2802 回家 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) import java.awt.Checkbox; import java.awt.PageAttributes.OriginType; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWrite…

k8s-生产级的k8s高可用(2) 25

部署containerd k8s2、k8s3、k8s4在配置前需要重置节点(reset)在上一章已完成 禁用所有节点docker和cri-docker服务 所有节点清除iptables规则 重置后全部节点重启 由于之前部署过docker,因此containerd默认已安装 修改配置 启动containe…

python学习、开发实用文档分享

今天给大家分享两个好用的关于python django框架使用的在线文档 Django中文在线文档: Django 文档 | Django 文档 | Django django rest framework 文档 1 - Serialization - Django REST framework中文站点 有开发和学习中遇到不会的, 或者需要学习的技能点直接去上面两个…

嵌入式工资为啥比纯软工资低那么多?

嵌入式工资为啥比纯软工资低那么多? 在开始前我分享下我的经历,我刚入行时遇到一个好公司和师父,给了我机会,一年时间从3k薪资涨到18k的, 我师父给了一些 电气工程师学习方法和资料,让我不断提升自己&…

并发支持库(3)-互斥

互斥可以对操作集合上锁,避免多个线程同时访问共享资源。这些操作集合可以看作是一次原子操作。 本文章的代码库: https://gitee.com/gamestorm577/CppStd 1. 互斥类 c提供了各种互斥类。 mutex 构造函数 默认构造函数构造一个处于未锁定状态的互…

短路逻辑运算--c语言

#include<stdio.h>int main() { int i1; i,i||i; printf("%d",i);//3return 0; } 再逻辑运算的原则一定优先于其他逻辑判断&#xff0c;再这个式子中||前面的结果已经为真存在逻辑短路的情况所以不用管后面的式子。 i&#xff0c;i自增两次i3&#xff0c;

爬虫技术之正则提取静态页面数据

第一天 简单示例 在爬虫过程中&#xff0c;我们获取到了页面之后&#xff0c;通常需要做的就是解析数据&#xff0c;将数据持久化到数据库为我所用。如何又快又准确得提取有效数据&#xff1f;这是一门技术&#xff0c;看了我的博客之前可能略有难度&#xff0c;但各位大师看…

redis源码分析

是什么 是基于内存(而不是磁盘)的kv(而不是关系型mysql那种)数据库&#xff0c;通过空间换时间 源码分析 跳表skiplist 假设你有个有序链表&#xff0c;你想看某个特定的值是否出现在这个链表中&#xff0c;那你是不是只能遍历一次链表才能知道&#xff0c;时间复杂度为O(n…

Postman环境变量全局变量设置(详解版)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 在公司中&#xff0c;一般会存在开发环境、测试环境、线上环境等…

找不到mfc140u.dll怎么办?修复缺失mfc140u.dll的多种方案分享

mfc140u.dll文件是一个重要的动态链接库文件&#xff0c;它在Windows操作系统中发挥着关键的作用。由于各种原因&#xff0c;例如应用程序冲突或系统错误等&#xff0c;mfc140u.dll文件有时会出现丢失的情况。一旦发生这种问题&#xff0c;运行依赖此文件的应用程序将无法正常启…

力扣刷题日记——L724. 寻找数组的中心下标

1. 前言 今天是力扣刷题日记的第二天&#xff0c;今天依旧是一道简单题啊&#xff0c;慢慢来&#xff0c;先看看题目是什么吧。 2. 题目描述 给你一个整数数组 nums &#xff0c;请计算数组的 中心下标。 数组 中心下标 是数组的一个下标&#xff0c;其左侧所有元素相加的和…

JSP中间件漏洞

jsp的注入最难挖 另外3个好挖 struts2 url有action 就代表是struts2 用漏洞利用工具 下面之这两个一般都可以用工具扫一下 、 有些网站看起来没有 action实际上我们提交了 我们的账号和密码 之后就有了 工具包是下面 这些 github上面也有 用法就是如下图 把url放进去就…

数据库驱动和url连接示例

1.MySQL 配置示例&#xff1a;↓ driver_class:com.mysql.cj.jdbc.Driver url:jdbc:mysql://IP地址:端口号/数据库名?characterEncodingUTF-8&useSSLfalse&useUnicodetrue&serverTimezoneUTC 2.MySQL(使用information_schema查询表结构) 配置示例&#xff1a;↓…

关于数据预处理的重要性

主要是为了计算机能够准确的理解数据 以下是需要处理的数据&#xff1a; 1、缺失值 仅一部分实例有值的特性&#xff0c;以及没有任何特征值的实例都被视为缺失数据 一个特征丢失了超过5%~10%的值&#xff0c;被认为是缺失数据 缺失值实例应该被删除&#xff0c;避免引入偏…

【ST-学习链接】

ST-学习链接 ■ 江科大STM32学习笔记&#xff08;上下&#xff09;■ STM32 学习&#xff08;四&#xff09;中断系统 ■ 江科大STM32学习笔记&#xff08;上下&#xff09; 江科大STM32学习笔记&#xff08;上&#xff09; 江科大STM32学习笔记&#xff08;下 ■ STM32 学习…

整数和浮点数在内存中储存的形式

整数 整数的二进制表示法有三种&#xff0c;即原码、反码、补码。 三种表示方式均有符号位和数值位 符号位位于数值位最高位的那一位&#xff0c;分别用0和1表示&#xff0c;0表示正数&#xff0c;1表示负数。 数值位&#xff0c;除最高位的那一位外其他都是数值位。 正整数…

续篇:展开聊下 state 与 渲染树中位置的关系

&#x1f43e; 上篇的结尾处&#xff0c;提到了 > 为了提升性能&#xff0c; React 仅在渲染之间 存在差异 时才会更改 DOM 节点。 本篇&#xff0c;✓ &#x1f1e8;&#x1f1f3; 展开聊下 state 与 渲染树中位置的关系 &#x1f4e2;&#x1f4e2;&#x1f4e2; 状态与…

PAT 2024年春季(乙级)

补题链接&#xff1a;PAT 2024春&#xff08;乙级&#xff09; B-1 合成 2024 给定n和m&#xff0c;让我们判断能不能由n个不同的偶数和m个不同的奇数组成2024。 正难则反&#xff0c;我们考虑什么情况下不能组成2024。 先从奇偶性判断&#xff0c;n个偶数一定是偶数&#…

每日OJ题_哈希表②_力扣面试题 01.02. 判定是否互为字符重排

目录 力扣面试题 01.02. 判定是否互为字符重排 解析代码 力扣面试题 01.02. 判定是否互为字符重排 面试题 01.02. 判定是否互为字符重排 难度 简单 给定两个由小写字母组成的字符串 s1 和 s2&#xff0c;请编写一个程序&#xff0c;确定其中一个字符串的字符重新排列后&am…