RNN与LSTM详解:AI是如何“记住”信息的?

RNN(循环神经网络)的基本原理

RNN是一种处理序列数据的神经网络,其核心在于通过隐藏状态(hidden state)传递历史信息。每个时间步的输入不仅包括当前数据,还包含上一时间步的隐藏状态,形成循环连接。数学表达为:

h_t = \\sigma(W_{xh}x_t + W_{hh}h_{t-1} + b_h)

其中,h_t是当前隐藏状态,x_t是输入,W为权重矩阵,b为偏置,\\sigma为激活函数(如tanh)。

RNN的局限性

传统RNN存在梯度消失或爆炸问题,难以捕获长距离依赖关系。例如,在文本生成任务中,早期的单词信息可能无法有效传递到后续时间步。


LSTM(长短期记忆网络)的改进

LSTM通过引入门控机制(输入门、遗忘门、输出门)和细胞状态(cell state)解决RNN的缺陷。其核心结构如下:

遗忘门 :决定哪些信息从细胞状态中丢弃

f_t = \\sigma(W_f \\cdot \[h_{t-1}, x_t\] + b_f)

输入门 :更新细胞状态

i_t = \\sigma(W_i \\cdot \[h_{t-1}, x_t\] + b_i) \\ \\tilde{C}*t = \\tanh(W_C \\cdot \[h*{t-1}, x_t\] + b_C)

细胞状态更新

C_t = f_t \\odot C_{t-1} + i_t \\odot \\tilde{C}_t

输出门 :控制当前隐藏状态输出

o_t = \\sigma(W_o \\cdot \[h_{t-1}, x_t\] + b_o) \\ h_t = o_t \\odot \\tanh(C_t)


实际应用差异

RNN适用场景 :短序列任务(如字符级文本生成),计算资源有限时。
LSTM适用场景:长序列任务(如机器翻译、语音识别),需捕获长期依赖关系。

代码示例(PyTorch实现LSTM单元)

python 复制代码
import torch.nn as nn
lstm = nn.LSTM(input_size=100, hidden_size=128, num_layers=2)
input_seq = torch.randn(10, 3, 100)  # (seq_len, batch, input_size)
output, (h_n, c_n) = lstm(input_seq)

关键结论

  • RNN通过循环连接传递信息,但受限于梯度问题。
  • LSTM的门控机制和细胞状态设计显式控制信息流,更适合长期记忆。
  • 现代变体(如GRU)在LSTM基础上进一步简化结构,平衡性能与效率。
相关推荐
晚霞的不甘20 小时前
CANN 在工业质检中的亚像素级视觉检测系统设计
人工智能·计算机视觉·架构·开源·视觉检测
island131420 小时前
CANN HIXL 高性能单边通信库深度解析:PGAS 模型在异构显存上的地址映射与异步传输机制
人工智能·神经网络·架构
前端摸鱼匠21 小时前
YOLOv8 环境配置全攻略:Python、PyTorch 与 CUDA 的和谐共生
人工智能·pytorch·python·yolo·目标检测
结局无敌21 小时前
构建百年工程:cann/ops-nn 的可持续演进之道
人工智能·cann
MSTcheng.21 小时前
CANN算子开发新范式:基于ops-nn探索aclnn两阶段调用架构
人工智能·cann
renhongxia121 小时前
如何基于知识图谱进行故障原因、事故原因推理,需要用到哪些算法
人工智能·深度学习·算法·机器学习·自然语言处理·transformer·知识图谱
做人不要太理性21 小时前
CANN Runtime 运行时与维测组件:异构任务调度、显存池管理与全链路异常诊断机制解析
人工智能·自动化
算法备案代理21 小时前
大模型备案与算法备案,企业该如何选择?
人工智能·算法·大模型·算法备案
酷酷的崽79821 小时前
CANN 生态可维护性与可观测性:构建生产级边缘 AI 系统的运维体系
运维·人工智能
哈__21 小时前
CANN加速Inpainting图像修复:掩码处理与边缘融合优化
人工智能