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)

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

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

相关文章

站长为什么都说WordPress太复杂不会用要放弃?

网络上经常看到有站长说要放弃WordPress,理由各有不同,比如有些说WordPress太复杂不会用;有些说WordPress是国外建站系统,在国内用来搭建访问速度太慢;也有些说WordPress是针对谷歌优化的,不适合国内的搜索…

Datawhale 强化学习笔记(二)马尔可夫过程,DQN 算法

文章目录 参考马尔可夫过程DQN 算法(Deep Q-Network)如何用神经网络来近似 Q 函数如何用梯度下降的方式更新网络参数强化学习 vs 深度学习 提高训练稳定性的技巧经验回放目标网络 代码实战 DQN 算法进阶Double DQNDueling DQN 算法代码实战 参考 在线阅…

Apache Solr <= 8.8.1任意文件读取漏洞复现CVE-2019-17558

一、环境准备 搭建环境vulhub,需要提前安装docker环境 docker安装:docker--安装docker-ce-CSDN博客 vulhub地址:https://github.com/vulhub/vulhub #创建靶场环境 mkdir /opt/vulhub cd /opt/vulhub git https://github.com/vulhub/vulhu…

2023.1.19 关于 Redis 事务详解

目录 Redis 事务对比 MySQL 事务 MySQL 事务 Redis 事务 Redis 事务原子性解释 Redis 事务详解 执行流程 典型使用场景 Redis 事务命令 WATCH 的使用 WATCH 实现原理 总结 阅读下文之前建议点击下方链接了解 MySQL 事务详解 MySQL 事务详解 Redis 事务对比 MySQL 事…

hadoop-common: CMake failed with error code 1

问题 在编译hadoop源码时遇到如下错误 hadoop-common: CMake failed with error code 1 看了这个错误表示一脸懵逼 排查 在mvn 的命令中增加 -X 和 -e mvn clean package -e -X -Pdist,native -DskipTests -Dmaven.javadoc.skip -Dopenssl.prefix/usr/local/bin/openssl 在…

【1】SM4 CBC-MAC 机制

0x01 题目 MSG1: e55e3e24a3ae7797808fdca05a16ac15eb5fa2e6185c23a814a35ba32b4637c2 MAC1: 0712c867aa6ec7c1bb2b66312367b2c8 ----------------------------------------------------- MSG2: d8d94f33797e1f41cab9217793b2d0f02b93d46c2ead104dce4bfec453767719 MAC2: 4366…

助力焊接场景下自动化缺陷检测识别,基于YOLOv3模型开发构建工业焊接场景下缺陷检测识别分析系统

焊接是一个不陌生但是对于开发来说相对小众的场景,在我们前面的博文开发实践中也有一些相关的实践,感兴趣的话可以自行移步阅读即可: 《轻量级模型YOLOv5-Lite基于自己的数据集【焊接质量检测】从零构建模型超详细教程》 《基于DeepLabV3Pl…

Elasticsearch 分布式架构剖析及扩展性优化

1. 背景 Elasticsearch 是一个实时的分布式搜索分析引擎,简称 ES。一个集群由多个节点组成,节点的角色可以根据用户的使用场景自由配置,集群可以以节点为单位自由扩缩容,数据以索引、分片的形式散列在各个节点上。本文介绍 ES 分布…

阿里云ECS使用docke搭建redis服务

目录 1.确保正确安装好docker 2.安装redis镜像 3.创建容器设置端口映射 1.确保正确安装好docker 安装教程: 阿里云ECS(CentOS镜像)安装docker-CSDN博客https://blog.csdn.net/qq_62262918/article/details/135686614?spm1001.2014.3001.5501 2.安装redis镜像…

音乐人声分离工具:极简的人声和背景音乐分离工具

项目地址:jianchang512/vocal-separate: an extremely simple tool for separating vocals and background music, completely localized for web operation, using 2stems/4stems/5stems models 这是一个极简的人声和背景音乐分离工具,本地化网页操作&a…

appium连接手机进行启动失败 ,怎么办 ?检查下这几个地方 。

在使用appium做app自动化,首先需要启动appium连接到手机,然后进行后续操作。 但是往往在启动的时候就会卡住,在点击start session后就会出现报错,具体如下图 : 那么,出现如上的情况该如何解决呢 &#xff1…

计算机安全学习笔记(V):UDP和网络扫描

User Datagram Protocol (UDP) UDP是最简单的传输协议。多个程序(服务)可以在主机上侦听,因此操作系统需要知道将流量发送到哪个程序。 在传输协议中,每个程序都与源和目标处的端口相关联,该端口显示为程序的套接字。…