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

news2024/11/15 1:24:50

文章目录

      • 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

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

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

相关文章

ChannelHandler和ChannelPipeline之一

目录 ChannelHandler Channel的生命周期 ChannelHandler的生命周期 ChannelInboundHandler接口 ChannelOutboundHandler接口 ChannelHandler适配器 资源管理 ChannelPipeline接口 修改ChannelPipeline 触发事件 ChannelHandler Channel的生命周期 Channel定义了一组和…

webgl入门-矩阵变换

矩阵变换 前言 变换有三种状态:平移、旋转、缩放。 当我们变换一个图形时,实际上就是在移动这个图形的所有顶点。 课堂目标 掌握图形变换的三种方式。可以对图像进行复合变换。 知识点 平移旋转缩放 第一章 平移 对图形的平移就是对图形所有顶点…

Golang | Leetcode Golang题解之第107题二叉树的层序遍历II

题目&#xff1a; 题解&#xff1a; func levelOrderBottom(root *TreeNode) [][]int {levelOrder : [][]int{}if root nil {return levelOrder}queue : []*TreeNode{}queue append(queue, root)for len(queue) > 0 {level : []int{}size : len(queue)for i : 0; i < …

521源码-免费教程-Linux系统硬盘扩容教程

本教程来自521源码&#xff1a;更多网站源码下载学习教程&#xff0c;请点击&#x1f449;-521源码-&#x1f448;获取最新资源 首先&#xff1a;扩容分区表 SSH登陆服务器输入命令&#xff1a;df -TH&#xff0c;获得数据盘相关信息 可以看到演示服务器的数据盘分区是&…

【区块链】fisco节点运维 更新ing

基于已完成的区块链系统与管理平台搭建工作&#xff0c;开展区块链节点的加入与退出运维工作&#xff0c;具体内容如下 以下只是举例子讲 如果有其他修改没举例出来可以留言 私信 主要以比赛出题的形式讲 区块链节点输出等级为警告级&#xff0c;并设置日志存储阈值为100MB并…

【408真题】2009-12

“接”是针对题目进行必要的分析&#xff0c;比较简略&#xff1b; “化”是对题目中所涉及到的知识点进行详细解释&#xff1b; “发”是对此题型的解题套路总结&#xff0c;并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材&#xff08;2025版&…

Science Robotics 封面论文:一种使用半球形纳米线阵列实现机器人视觉的超宽视场针孔复眼

研究背景 从生物复眼中汲取灵感&#xff0c;拥有一系列生动多样视觉功能特征的人工视觉系统最近脱颖而出。然而&#xff0c;这些人工系统中的大多数都依赖于可转换的电子设备&#xff0c;这些电子设备受到全局变形的复杂性和受限几何形状的影响&#xff0c;以及光学和探测器单元…

前端绘制流程节点数据

根据数据结构和节点的层级、子节点id&#xff0c;前端自己绘制节点位置和关联关系、指向、已完成节点等 <template><div><div>通过后端节点和层级&#xff0c;绘制出节点以及关联关系等</div><div class"container" ref"container&…

6.2 else if语句

本节必须掌握的知识点&#xff1a; 示例代码二十 代码分析 汇编解析 ■if语句表达形式3 if(表达式1) statement1 else if(表达式2) statement2 else if(表达式3) statement3 …… else statementN 解析&#xff1a; 如果表达式1非0&#xff0c;则执行statement1&#…

C++ const_cast学习

语法&#xff0c; const_cast<type_name>(expression) type_name是转换的类型&#xff0c;expression是被转换的对象或者表达式&#xff1b; const_case有两个功能&#xff0c;分别是去掉const和加上const&#xff0c;更多用于去掉const&#xff0c;修改被const修…

如何使用Android NDK将头像变成“遗像”

看完本文的标题&#xff0c;可能有人要打我。你说黑白的老照片不好吗&#xff1f;非要说什么遗像&#xff0c;我现在就把你变成遗像&#xff01;好了&#xff0c;言归正传。我想大部分人都用过美颜相机或者剪映等软件吧&#xff0c;它们的滤镜功能是如何实现的&#xff0c;有人…

乡村振兴的乡村旅游新模式:挖掘乡村旅游资源,创新旅游开发方式,打造乡村旅游新品牌,助力美丽乡村建设

目录 一、引言 二、乡村旅游资源挖掘 1、自然景观资源 2、人文历史资源 3、农业产业资源 三、旅游开发方式创新 1、多元化旅游产品 2、体验式旅游模式 3、智慧旅游建设 四、乡村旅游新品牌打造 1、品牌定位与策划 2、品牌传播与推广 3、品牌维护与提升 五、助力美…

如何使用Suno:免费的AI歌曲生成器

文章目录 Suno AI 是什么&#xff1f;Suno AI 如何工作&#xff1f;选择Suno AI的理由&#xff1a;核心优势易于操作多样化创作灵活的定价策略版权保障技术突破 如何使用Suno AI创作歌曲&#xff1f;第1步&#xff1a;注册Suno AI账户第2步&#xff1a;输入提示词创建第 3 步&a…

基于51单片机智能大棚浇花花盆浇水灌溉补光散热设计

一.硬件方案 本设计通过光敏电阻检测光照强度&#xff0c;然后A/D模块PCF8591处理后&#xff0c;将光照强度值实时显示在液晶上&#xff0c;并且可以按键控制光照的强度值&#xff0c;当光照低于设定的阈值&#xff0c;1颗白色高亮LED灯亮进行补光&#xff0c;光照高于设定的阈…

QT C++ QTableWidget 演示

本文演示了 QTableWidget的初始化以及单元格值改变时响应槽函数&#xff0c;打印单元格。 并且&#xff0c;最后列不一样,是combobox &#xff0c;此列的槽函数用lambda函数。 在QT6.2.4 MSVC2019 调试通过。 1.界面效果 2.头文件 #ifndef MAINWINDOW_H #define MAINWINDOW…

HIOKI日置测试仪SS7081-50

HIOKI日置测试仪SS7081-50 HIOKI日置测试仪SS7081-50 HIOKI日置测试仪SS7081-50 扭力测试仪补偿功能* 扭矩计的测量误差、会给马达的分析带来很大的影响。PW8001 可用户定义「非直线型补偿」和「摩擦补偿」&#xff0c;并可根据补偿数据进行演算。 传统的高效电机评估系统通…

[机缘参悟-185] - 《道家-水木然人间清醒1》读书笔记 - 真相本质 -8- 认知觉醒 - 逻辑谬误、认知偏差:幸存者偏差

目录 前言&#xff1a; 一、幸存者偏差 二、幸存者偏差在现实中的应用 第一个故事&#xff1a; 第二个故事&#xff1a; 三、生活中的幸存者偏差 四、迷恋成功者经验的原因&#xff1a;鸡汤、幻想、传奇、希望 备注&#xff1a; 前言&#xff1a; 幸存者偏差&#xff0…

关于学习Go语言的并发编程

开始之前&#xff0c;介绍一下​最近很火的开源技术&#xff0c;低代码。 作为一种软件开发技术逐渐进入了人们的视角里&#xff0c;它利用自身独特的优势占领市场一角——让使用者可以通过可视化的方式&#xff0c;以更少的编码&#xff0c;更快速地构建和交付应用软件&#…

Node.js下载安装教程及环境配置【超详细图文】

一、下载安装包 下载安装Node.js安装程序&#xff0c;网盘资源下载地址&#xff1a; 点击这里下载 二、开始安装 双击下载 .msi安装程序&#xff0c;接下里只需要点击默认下一步即可。 详细如图&#xff1a; 下一步 修改安装盘符&#xff0c;只要不在C盘即可。 此处选…

Simplicity Studui V5 新安装后无法Product Updates

之前&#xff08;2021年&#xff09;在SiliconLabs官网下载了SSV5&#xff0c;安装包我也保存在硬盘了&#xff0c;最近换了台电脑安装SSV5后安装 SDK之前必须Product Updates&#xff0c;但死活安装不上&#xff0c;老是提示发生了错误。来来回回卸载安装几十遍&#xff0c;后…