【LSTM】LSTM cell的门结构学习笔记

文章目录

      • 1. LSTM cell
      • 2. 门结构
      • 3. 门的公式
      • 4. 门的参数
      • 5. 重点关系厘清

1. LSTM cell

  • 如文章 LSTM网络与参数学习笔记 中介绍, LSTM cell指的是一个包含隐藏层所有神经元的结构.
  • 但是LSTM门控单元的公式如何理解、门和LSTM cell神经元如何对应、门函数的参数维度、不同时间步不同隐藏层之间数据如何传递等, 这些问题将在本文厘清

2. 门结构

  • RNN存在长期记忆逐渐消失以及梯度消失/爆炸的问题

  • LSTM通过引入cell state保存长期记忆, 通过设置精妙的门控机制很大程度缓解梯度消失/爆炸问题.

  • LSTM中有三个门, 分别是遗忘门, 输入门和输出门

    • 遗忘门: f门

      • 决定我们会从细胞状态中丢弃什么信息
      • 它接收 h t − 1 h_{t-1} ht1 x t x_{t} xt作为输入参数,通过 s i g m o i d sigmoid sigmoid层得到对应的遗忘门的参数
      • 弄清楚今天发生的事情(输入 x x x)和最近发生的事情(隐藏状态 h h h),二者会影响你对情况的长期判断(细胞状态 C C C
    • 输入门: i门

      • 确定什么样的新信息被存放在细胞状态中
      • s i g m o i d sigmoid sigmoid层得到输入门参数 i t i_t it, 确定要更新的信息, t a n h tanh tanh层产生新的候选值 C ~ t \widetilde{C}_t C t. 最后将 i t i_t it C ~ t \widetilde{C}_t C t相乘得到更新的信息;同时将上面得到的遗忘门 f t f_t ft和旧元胞状态 C t − 1 C_{t-1} Ct1相乘,以忘掉其中的一些信息。二者相结合,便得到更新后的状态 C t C_t Ct
      • 最近发生的事情(隐藏状态 h h h)和今天发生的事情(输入 x x x)中的哪些信息需要记录到你对所处情况的长远判断中(细胞状态 C C C)
    • 输出门:o门

      • 计算最后的输出信息
      • 通过 t a n h tanh tanh层将细胞状态的值规范到 − 1 ∼ 1 -1\sim 1 11之间, 然后由 s i g m o i d sigmoid sigmoid层得到输出门参数 o t o_t ot, 最后将 o t o_t ot与规范化后的细胞状态点乘, 得到最终过滤后的结果 h t h_t ht
      • 得到所处情况的短期判断, 比如近期跟老板提加薪会不会答应

3. 门的公式

  • 首先回顾输入和输出的维度

    • batch_first = true

      input(batch_size, seq_len, input_size)
      output(batch_size, seq_len, hidden_size * num_directions)
      
    • batch_first = false

      input(seq_len, batch_size, input_size)
      output(seq_len, batch_size, hidden_size * num_directions)
      
  • 遗忘门

    • 公式:

    • 输入: h t − 1 h_{t-1} ht1, x t x_{t} xt的联合,即 [ h t − 1 , x t ] [h_{t-1}, x_{t}] [ht1,xt]

    • 输出:由于使用了 s i g m o i d sigmoid sigmoid函数,输出值在 0 ∼ 1 0\sim 1 01之间。0表示完全丢弃,1表示完全保留

    • 维度:如下。 f t f_t ft的维度是hidden_size,也就是 s i g m o i d sigmoid sigmoid层有hidden_size个神经元

      变量维度
      h t − 1 h_{t-1} ht1hidden_size
      x t x_{t} xtfeature_size
      [ h t − 1 , x t ] [h_{t-1}, x_{t}] [ht1,xt]hidden_size + feature_size
      W f W_{f} Wf[hidden_size, hidden_size + feature_size]
      b f b_{f} bfhidden_size
      f t f_{t} fthidden_size
    • 公式合并

  • 输入门

    • 公式:

    • 输入: i t i_t it C ~ t \widetilde{C}_t C t都以 [ h t − 1 , x t ] [h_{t-1}, x_{t}] [ht1,xt]为输入; i t i_t it通过 s i g m o i d sigmoid sigmoid层来实现; C ~ t \widetilde{C}_t C t通过 t a n h tanh tanh层来实现

    • 输出:

      • 同样的 i t i_t it 0 ∼ 1 0\sim 1 01之间, C ~ t \widetilde{C} _{t} C t^在 − 1 ∼ 1 -1\sim 1 11之间; *不是矩阵乘法, 是对应元素点乘
      • 将要更新的信息 i t ∗ C ~ t i_t*\widetilde{C} _{t} itC t要忘记的信息 f t ∗ C t − 1 f_t*C_{t-1} ftCt1相结合得到更新后的状态 C t C_t Ct
    • 含义:

      • f ∗ C t − 1 f*C_{t-1} fCt1的点乘(按元素相乘)实际上是在决定哪些信息从上一时刻的cell state中保留下来,哪些被遗忘。保留和遗忘的比例就是 f f f的值
      • i t ∗ C ~ t i_t*\widetilde{C} _{t} itC t表示有多少cell state候选值的新信息要更新到cell state中,更新的比例就是输入门 i t i_t it的值
      • C t = f t ∗ C t − 1 + i t ∗ C ~ t C_t=f_t*C_{t-1}+i_t*\widetilde{C} _{t} Ct=ftCt1+itC t将旧的信息(可能已被遗忘部分)与新的信息结合,形成当前时刻的cell state
    • 维度:如下。 s i g m o i d sigmoid sigmoid层有hidden_size个神经元, t a n h tanh tanh层有hidden_size个神经元

      变量维度
      h t − 1 h_{t-1} ht1hidden_size
      x t x_{t} xtfeature_size
      [ h t − 1 , x t ] [h_{t-1}, x_{t}] [ht1,xt]hidden_size + feature_size
      i t i_{t} ithidden_size
      C ~ t \widetilde{C} _{t} C thidden_size
      C t − 1 C_{t-1} Ct1hidden_size
      C t C_{t} Cthidden_size
      W i W_{i} Wi[hidden_size, hidden_size + feature_size]
      W C W_{C} WC[hidden_size, hidden_size + feature_size]
    • 公式合并:

  • 输出门

    • 公式

    • 输入: o t o_t ot [ h t − 1 , x t ] [h_{t-1}, x_{t}] [ht1,xt]为输入。 C t C_t Ct需要经过 t a n h tanh tanh层进行值缩放

    • 输出:这里的输出不是LSTM网络的输出,LSTM网络输出包括网络的 o u t p u t output output h n , c n h_n, c_n hn,cn

    • 含义:

      • t a n h ( C t ) tanh(C_t) tanh(Ct)将cell state的值压缩到-1和1之间,使得信息的表示更加集中
      • o t ∗ t a n h ( C t ) o_t*tanh(C_t) ottanh(Ct)的点乘决定cell state的哪些信息将被传到隐藏状态中,压缩后的cell state的传入比例通过 o t o_t ot的值来控制
    • 维度:如下。 s i g m o i d sigmoid sigmoid层有hidden_size个神经元, t a n h tanh tanh层也有hidden_size哥神经元;*是点乘,按元素相乘

      变量维度
      o t o_{t} othidden_size
      h t h_{t} htfeature_size
      W o W_o Wo[hidden_size, hidden_size + feature_size]
    • 公式合并:

4. 门的参数

  • 参数矩阵

  • 参数维度

    变量维度
    x t , h t − 1 , f t , i t , C ~ t , C t − 1 , C t , o t x_t, h_{t-1},f_t, i_t, \widetilde{C} _{t}, C_{t-1},C_t,o_t xt,ht1,ft,it,C t,Ct1,Ct,othidden_size
    x t x_{t} xtfeature_size
    [ h t − 1 , x t ] [h_{t-1}, x_{t}] [ht1,xt]hidden_size + feature_size
    W f , W i , W C , W o W_{f},W_{i},W_{C},W_{o} Wf,Wi,WC,Wo[hidden_size, hidden_size + feature_size]
    b f , b i , b C , b o b_f, b_i, b_C, b_o bf,bi,bC,bohidden_size
    s i g m o i d sigmoid sigmoid网络, t a n h tanh tanh网络hidden_size 个神经元
    ∗ * 对应元素点乘,维度不变

5. 重点关系厘清

图1
  • (1) 图中黄色框都是前馈神经网络, 神经元个数都是hidden_size个, 激活函数就是sigmoid和tanh
  • (2) 主要涉及到的参数就是 W f , W i , W C , W o W_{f},W_{i},W_{C},W_{o} Wf,Wi,WC,Wo权重参数和 b f , b i , b C , b o b_f, b_i, b_C, b_o bf,bi,bC,bo偏置参数
  • (3) 这些参数不是存在于神经元的数据结构中,而是存在于神经元之间的连接。由此理解,网络的要点就是"连接",神经元只是对应的数学运算
图2
  • (4) LSTM cell的整个隐藏层实现了这三个门,这三个门是LSTM cell的一部分
  • (5) LSTM cell的hidden_size是一个超参,是遗忘门/输入门/输出门的神经元个数
  • (6) 遗忘门/输入门/输出门各自维护自己的神经网络,不是共用神经网络。如图1中每个黄色框都是一个神经网络
  • (7) 每个门都有一组自己的权重和参数,也就是章节4中剃刀的W和b参数,这些参数在所有时刻是权值共享的,权值随着时间步在不断地更新
  • (8) b的参数个数 4 ∗ h i d d e n _ s i z e 4*hidden\_size 4hidden_size个,W的参数个数 4 ∗ ( h i d d e n _ s i z e ∗ ( h i d d e n _ s i z e + f e a t u r e _ s i z e ) ) 4*(hidden\_size * (hidden\_size + feature\_size)) 4(hidden_size(hidden_size+feature_size)),即 4 ∗ n u m _ u n i t s ∗ ( h t − 1 + x t ) 4*num\_units*(h_{t-1}+x_t) 4num_units(ht1+xt)
  • (9) 每个门的神经元个数也决定了其输出的维度
图3
  • (10) 如上图,输出门和神经网络的输出不是同一个东西。输出门得到的 h t h_t ht只是短期状态信息,输入到下一时刻或下一层使用;而LSTM网络的最终输出是输出层接 s i g m o i d / s o f t m a x sigmoid/softmax sigmoid/softmax等全连接层后的结果
图4
  • (11) 如上图,多层LSTM的情况, h t h_t ht横向传递给下一时刻作为 h t − 1 h_{t-1} ht1,纵向传递给下一层作为 x t x_t xt

 


 
创作不易,如有帮助,请 点赞 收藏 支持
 


 

[参考文章]
[1].通俗理解门的原理, 推荐
[2].门的公式的衔接和多层LSTM输出的关系
[3].同样,门的公式
[4].cell的内部参数图和公式推导
[5].参考逻辑结构:门和神经元之间的关系, 推荐
[6].对hidden_size的理解,门的计算过程
[7].反向传播的推导
[8].反向传播算法推导过程

created by shuaixio, 2024.05.21

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

工作中的相关问题

最近属于各方面繁杂事务较多,所以相关问题也较为分散,没有细致联系,仅为一个自我小总结,序号并无相关学习顺序,未全的点后续补充 参考链接:5分钟带你深入浅出搞懂 Nginx | 二哥的Java进阶之路 (javabetter…

【NumPy】NumPy实战入门:线性代数(dot、linalg)与随机数(numpy.random)详解

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

MySQL库/表/数据的操作

文章目录 1.数据库操作1.1 创建、删除、查看和修改1.2 编码格式1.3 备份和恢复 2.表的操作2.1 创建表2.2 存储引擎2.3 查看表、修改表、删除表 3.数据类型3.1整数类型3.2字节类型(bit)3.3浮点类型(bit)3.4 decimal3.5 字符串类型3.6 日期和时间类型3.7 enum和set关于如何查找想…

多线程事务

一、业务场景 我们在工作中经常会到往数据库里插入大量数据的工作,但是既需要保证数据的一致性,又要保证程序执行的效率。因此需要在多线程中使用事务,这样既可以保证数据的一致性,又能保证程序的执行效率。但是spring自带的Trans…

【一个糟糕的词:省流】

今日思考,博主分享📝,原文如下, 我最近听到了一个特别糟糕的词叫省流。我甚至认为这个词可以用来衡量一个人的智商啊,我们可以把一个知识简单的分成三部分问题,答案思维方式就是这个答案是怎么推导出来的啊…

【FPGA】VGA显示文字、彩条、图片——基于DE2-115

文章目录 前言一、VGA概述1.1 简述1.2 管脚定义1.3 VGA显示原理1.4 VGA时序标准1.5 VGA 显示模式及相关参数 二、VGA显示自定义的汉字字符2.1 点阵汉字生成2.2 生成BMP文件2.3 生成txt文件2.4 实现效果 三、VGA显示条纹3.1 实现流程3.2 实现效果 四、VGA输出一幅彩色图像4.1 bm…

代码随想录——找树左下角的值(Leetcode513)

题目链接 层序遍历 思路:使用层序遍历,记录每一行 i 0 的元素,就可以找到树左下角的值 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}*…

基于SSH的母婴用品销售管理系统带万字文档

文章目录 母婴商城系统一、项目演示二、项目介绍三、系统部分功能截图四、万字论文参考五、部分代码展示六、底部获取项目源码和万字论文参考(9.9¥带走) 母婴商城系统 一、项目演示 母婴商城系统 二、项目介绍 基于SSH的母婴商城系统 系统…

了解K8s集群kubectl命令进行陈述式资源管理

前言 在 Kubernetes 集群中,通过陈述式和声明式资源管理是确保应用程序高效运行的关键。认识这两种管理方法,能够更好地掌握 Kubernetes 集群的运维和管理。 目录 一、K8s 资源管理操作分类 1. 陈述式 2. 声明式 3. K8s 集群管理常用命令概览 二…

lenovo联想小新Pro 16 APH8 2023款(83AR)笔记本电脑原装出厂Windows11系统镜像安装包下载

恢复出厂开箱状态OEM预装win11系统,自带恢复重置初始化还原功能 下载链接:https://pan.baidu.com/s/1n_mPM4ZrLPrmXpCTukuyCQ?pwdmnwj 提取码:mnwj 联想原装系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、Office办公软件、联想…

C++成员函数 - 析构函数

析构函数 析构函数 是特殊的成员函数,其 特征 如下: 1. 析构函数名是在类名前加上字符 ~ 。 2. 无参数无返回值类型。 3. 一个类只能有一个析构函数。若未显式定义,系统会自动生成默认的析构函数。注意:析构函数不能重 载 …

OpenHarmony 实战开发——一文总结ACE代码框架

一、前言 ACE_Engine框架是OpenAtom OpenHarmony(简称“OpenHarmony”)的UI开发框架,为开发者提供在进行应用UI开发时所必需的各种组件,以及定义这些组件的属性、样式、事件及方法,通过这些组件可以方便进行OpenHarmo…

AI大模型探索之路-基础篇5:GLM-4解锁国产大模型的全能智慧与创新应用

目录 前言一、GLM4大模型总体概述二、GLM4和GPT4功能对比三、GLM4和GPT4性能对比1、基础能力(英文)2、指令跟随能力3、对齐能力4、长文本能力5、多模态-文生图 四、GLM-4 ALL Tools1、文生图2、代码解释器3、网页浏览4、Function Call5、多工具自动调用 …

FTP协议——BFTPD安装(Linux)

1、简介 BFTPD,全称为 Brutal File Transfer Protocol Daemon,是一个用于Unix和类Unix系统的轻量级FTP服务器软件。它的设计理念是提供一个简单、快速、安全的FTP服务器解决方案,特别适用于需要低资源占用的环境。 2、步骤 环境&#xff1…

【介绍下Pwn,什么是Pwn?】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

第十课,while循环

一,认识循环是什么 循环普遍存在于日常生活中,同样,在程序中,循环功能也是至关重要的基础功能。 当程序需要重复执行某一段代码,利用循环可以轻松完成工作 例如我要你打印100次上课,直接写100次print&…

javas-core VS java-object-diff

对照工具选择 javas-core 和 java-object-diff ,对比demo https://github.com/kofgame/objectdiff-vs-javers,都为同源对比,都支持嵌套对象。 使用JMH测试方法进行性能测试,使用题库的QuestionResponseVO对象来进行对照对比,进行…

可重构柔性装配产线,为智能制造领域带来了新的革命性变革

随着科技的飞速发展,个性化需求逐渐成为市场的主导。在这个充满变革的时代,制造业正面临着前所未有的挑战和机遇。如何快速响应市场需求、提高生产效率、保证产品质量,成为每一家制造企业必须思考的问题。 在这样的背景下,富唯智…

竞赛 基于深度学习的动物识别 - 卷积神经网络 机器视觉 图像识别

文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…

大模型应用商业化落地关键:给企业带来真实的业务价值

2024 年被很多人称为大模型应用的元年,毫无疑问,大模型已经成为共识,下一步更急迫的问题也摆在了大家的面前——大模型到底能够用在哪?有哪些场景能落地?怎么做才能创造真正的价值? 在刚刚过去的 AICon 全…