当前位置: 首页 > news >正文

LSTM(长短期记忆网络)完整计算过程手动推导+验证

1. LSTM核心结构说明

LSTM是循环神经网络的一种,专门解决时序任务的长依赖问题,核心包含4个控制门,每个时刻的计算依赖上一时刻的隐藏状态ht−1h_{t-1}ht−1​和细胞状态ct−1c_{t-1}ct−1​,以及当前时刻输入xtx_txt​:

门/状态作用计算公式
遗忘门$f_t$控制上一时刻细胞状态的保留比例$f_t = \sigma(W_f \cdot [h_{t-1},x_t] + b_f)$
输入门$i_t$控制当前时刻新信息的写入比例$i_t = \sigma(W_i \cdot [h_{t-1},x_t] + b_i)$
候选细胞状态$\tilde{c_t}$生成当前时刻的新信息$\tilde{c_t} = tanh(W_c \cdot [h_{t-1},x_t] + b_c)$
当前细胞状态$c_t$综合历史和当前信息的全局状态$c_t = f_t * c_{t-1} + i_t * \tilde{c_t}$
输出门$o_t$控制细胞状态输出到隐藏状态的比例$o_t = \sigma(W_o \cdot [h_{t-1},x_t] + b_o)$
当前隐藏状态$h_t$当前时刻的输出特征$h_t = o_t * tanh(c_t)$
*注:$\sigma$为sigmoid激活函数,$\sigma(x)=\frac{1}{1+e^{-x}}$;*为哈达玛积(对应元素相乘)
2. 初始参数设定

为了方便计算,我们使用单输入、单隐藏神经元的最简LSTM结构,参数和初始值如下:

  1. 权重&偏置:
    • 遗忘门:Wf=[0.5,0.3],bf=0.1W_f=[0.5, 0.3], b_f=0.1Wf​=[0.5,0.3],bf​=0.1
    • 输入门:Wi=[0.4,0.6],bi=0.2W_i=[0.4, 0.6], b_i=0.2Wi​=[0.4,0.6],bi​=0.2
    • 候选细胞:Wc=[0.2,0.1],bc=0.05W_c=[0.2, 0.1], b_c=0.05Wc​=[0.2,0.1],bc​=0.05
    • 输出门:Wo=[0.3,0.7],bo=0.15W_o=[0.3, 0.7], b_o=0.15Wo​=[0.3,0.7],bo​=0.15
  2. 初始状态(t=0时刻):h0=0,c0=0h_0=0, c_0=0h0​=0,c0​=0
  3. 输入时序数据:x1=2,x2=3x_1=2, x_2=3x1​=2,x2​=3(我们计算t=1和t=2两个时刻的完整流程)
3. 逐时刻计算过程
3.1 t=1时刻计算

当前输入x1=2x_1=2x1​=2,上一时刻状态h0=0,c0=0h_0=0, c_0=0h0​=0,c0​=0,拼接特征[h0,x1]=[0,2][h_0, x_1]=[0,2][h0​,x1​]=[0,2]

  1. 遗忘门:f1=σ(0.5∗0+0.3∗2+0.1)=σ(0.7)≈0.6682f_1=\sigma(0.5*0 + 0.3*2 + 0.1)=\sigma(0.7)≈0.6682f1​=σ(0.5∗0+0.3∗2+0.1)=σ(0.7)≈0.6682
  2. 输入门:i1=σ(0.4∗0+0.6∗2+0.2)=σ(1.4)≈0.8022i_1=\sigma(0.4*0 + 0.6*2 +0.2)=\sigma(1.4)≈0.8022i1​=σ(0.4∗0+0.6∗2+0.2)=σ(1.4)≈0.8022
  3. 候选细胞:c1~=tanh(0.2∗0+0.1∗2+0.05)=tanh(0.25)≈0.2449\tilde{c_1}=tanh(0.2*0 +0.1*2 +0.05)=tanh(0.25)≈0.2449c1​~​=tanh(0.2∗0+0.1∗2+0.05)=tanh(0.25)≈0.2449
  4. 细胞状态更新:c1=f1∗c0+i1∗c1~=0.6682∗0+0.8022∗0.2449≈0.1965c_1 = f_1*c_0 + i_1*\tilde{c_1} = 0.6682*0 + 0.8022*0.2449≈0.1965c1​=f1​∗c0​+i1​∗c1​~​=0.6682∗0+0.8022∗0.2449≈0.1965
  5. 输出门:o1=σ(0.3∗0+0.7∗2+0.15)=σ(1.55)≈0.8249o_1=\sigma(0.3*0 +0.7*2 +0.15)=\sigma(1.55)≈0.8249o1​=σ(0.3∗0+0.7∗2+0.15)=σ(1.55)≈0.8249
  6. 隐藏状态更新:h1=o1∗tanh(c1)=0.8249∗tanh(0.1965)≈0.8249∗0.194≈0.1600h_1 = o_1*tanh(c_1)=0.8249*tanh(0.1965)≈0.8249*0.194≈0.1600h1​=o1​∗tanh(c1​)=0.8249∗tanh(0.1965)≈0.8249∗0.194≈0.1600
3.2 t=2时刻计算

当前输入x2=3x_2=3x2​=3,上一时刻状态h1=0.16,c1=0.1965h_1=0.16, c_1=0.1965h1​=0.16,c1​=0.1965,拼接特征[h1,x2]=[0.16,3][h_1, x_2]=[0.16,3][h1​,x2​]=[0.16,3]

  1. 遗忘门:f2=σ(0.5∗0.16+0.3∗3+0.1)=σ(1.08)≈0.7465f_2=\sigma(0.5*0.16 + 0.3*3 + 0.1)=\sigma(1.08)≈0.7465f2​=σ(0.5∗0.16+0.3∗3+0.1)=σ(1.08)≈0.7465
  2. 输入门:i2=σ(0.4∗0.16+0.6∗3+0.2)=σ(2.064)≈0.8873i_2=\sigma(0.4*0.16 + 0.6*3 +0.2)=\sigma(2.064)≈0.8873i2​=σ(0.4∗0.16+0.6∗3+0.2)=σ(2.064)≈0.8873
  3. 候选细胞:c2~=tanh(0.2∗0.16+0.1∗3+0.05)=tanh(0.382)≈0.3646\tilde{c_2}=tanh(0.2*0.16 +0.1*3 +0.05)=tanh(0.382)≈0.3646c2​~​=tanh(0.2∗0.16+0.1∗3+0.05)=tanh(0.382)≈0.3646
  4. 细胞状态更新:c2=f2∗c1+i2∗c2~=0.7465∗0.1965+0.8873∗0.3646≈0.4709c_2 = f_2*c_1 + i_2*\tilde{c_2} = 0.7465*0.1965 + 0.8873*0.3646≈0.4709c2​=f2​∗c1​+i2​∗c2​~​=0.7465∗0.1965+0.8873∗0.3646≈0.4709
  5. 输出门:o2=σ(0.3∗0.16+0.7∗3+0.15)=σ(2.298)≈0.9088o_2=\sigma(0.3*0.16 +0.7*3 +0.15)=\sigma(2.298)≈0.9088o2​=σ(0.3∗0.16+0.7∗3+0.15)=σ(2.298)≈0.9088
  6. 隐藏状态更新:h2=o2∗tanh(c2)=0.9088∗tanh(0.4709)≈0.9088∗0.4388≈0.3989h_2 = o_2*tanh(c_2)=0.9088*tanh(0.4709)≈0.9088*0.4388≈0.3989h2​=o2​∗tanh(c2​)=0.9088∗tanh(0.4709)≈0.9088∗0.4388≈0.3989

4. 结果说明

可以看到t=2时刻的细胞状态和隐藏状态都融合了t=1时刻的信息,完美体现了LSTM的时序记忆特性。如果是多分类/回归任务,只需要在最后一个时刻的hth_tht​后接全连接层+对应激活函数即可得到最终预测结果,后续的损失计算和反向传播逻辑和普通MLP一致。

http://www.jsqmd.com/news/869544/

相关文章:

  • 熬夜党日常轻滋养,适口温润滴鸡精很合心意
  • 为什么GEO是企业未来获客的核心底牌?
  • 构建企业数据护城河:CCRC-DCO数据合规官认证,培养真正的实战型专家
  • 3分钟掌握BepInEx:Unity游戏模组开发终极指南
  • 如何在5分钟内免费提取视频字幕:本地OCR神器Video-subtitle-extractor终极指南
  • 告别Unity!用eDrawings ActiveX控件在WinForm里嵌入CAD模型(附完整C#代码)
  • 旗舰力作再升级!锦湖高端轮胎新品Majesty Solus Edge在韩国上市
  • wxappUnpacker深度解析:微信小程序逆向工程架构与安全分析机制
  • 避坑指南:Matplotlib极坐标绘图时,你的直方图、饼图为什么总出错?
  • 2026年,本地AI引擎优化实战指南
  • PLC设计西门子S7-1200电加热炉控制系统设计(水位联锁+温度控制+完整仿真)
  • 社区居委会规范化减少政务投诉解决对策
  • 开机自启,免开机登录及图形界面
  • 如何通过5个步骤在Windows上安装ViGEmBus虚拟手柄驱动
  • 终极NHSE存档编辑器完整解析:从架构设计到高级修改的完整指南
  • 遂宁市2026黄金回收本地口碑商家榜:黄金首饰+ 白银+ 铂金+ 彩金回收门店及联系方式推荐 - 盛世金银回收
  • jetson agx xaviar刷机过程
  • STM32 临界区是什么:为什么有时候要用 __disable_irq() 保护变量
  • VS2022 MFC读写Excel避坑大全:从库文件导入到内存泄漏排查(支持VS2010-VS2019)
  • 补齐开发短板!低代码承接数字化海量刚需缺口
  • [DL_Net从入门到入土] 变分自编码器 VAE
  • 如何用MusicFree插件构建你的跨平台音乐生态:从零开始的全流程指南
  • XUnity自动翻译器终极指南:轻松实现游戏多语言无障碍体验
  • 区块链+AI+边缘计算:构建可信、高效的糖尿病风险预测系统
  • RDP Wrapper技术架构深度解析:破解Windows远程桌面限制的完整方案
  • 从音乐囚徒到音乐主人:Unlock Music Electron 终极音乐解锁指南
  • Blender 3MF插件:打破3D打印数据孤岛的技术桥梁
  • 一文带你看懂多模态大模型的降维打击!
  • 用SigmaStudio Plus如何来开发ADAU1466(1)软硬件开发环境的搭建和正确性检测
  • 普通人能做的最新商机哪里找?集客大师告诉你!