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

AI大模型开发原理篇-5:循环神经网络RNN

神经概率语言模型NPLM也存在一些明显的不足之处:模型结构简单,窗口大小固定,缺乏长距离依赖捕捉,训练效率低,词汇表固定等。为了解决这些问题,研究人员提出了一些更先进的神经网络语言模型,如循环神经网络、长短期记忆网络、门控循环单元(GRU)和Transformer等。这些模型能够捕捉长距离依赖,处理变长序列,同时具有更强的表达能力和泛化能力。

RNN 的基本概念

RNN 的主要特点是信息的循环传递。与标准神经网络不同,RNN 在每一时刻的输出不仅依赖于当前的输入,还依赖于前一个时刻的隐藏状态(或称为记忆)。因此,RNN 适合处理序列数据,因为它能通过隐藏层的状态将历史信息带入到模型中。

RNN 的优缺点

优点:

  • 序列建模能力:RNN 能够处理和建模序列数据中的时间依赖关系,适用于自然语言处理、语音识别、时间序列预测等任务。
  • 参数共享:RNN 的所有时刻共享相同的参数,这使得它能够在处理不同长度的序列时保持参数的共享,减少了计算开销。

缺点:

  • 梯度消失和梯度爆炸:在训练过程中,当序列长度较长时,RNN 面临梯度消失或爆炸的问题。这会使得模型难以捕捉到远距离依赖。
  • 记忆有限:标准的 RNN 在处理长序列时会逐渐丧失对早期输入的记忆,这使得它对于长距离依赖的建模效果较差。

RNN 的应用

RNN 主要应用于以下任务:

  • 自然语言处理(NLP):文本生成、机器翻译、情感分析、命名实体识别(NER)等。
  • 时间序列预测:如股票价格预测、气象预测、交通流量预测等。
  • 语音识别:RNN 可用于语音信号的建模,进行语音到文本的转换。
  • 视频分析:RNN 还可以应用于视频数据的处理,如动作识别。

解决 RNN 问题的改进模型:LSTM 和 GRU

传统的 RNN 在处理长序列时容易遇到梯度消失或梯度爆炸的问题,因此在实际应用中,长短期记忆网络(LSTM)门控循环单元(GRU) 被提出,以解决这一问题。

LSTM(Long Short-Term Memory)

LSTM 是一种特殊的 RNN 变体,它通过引入门控机制来避免梯度消失问题。LSTM 使用了三个门:

  • 遗忘门(Forget Gate):决定丢弃多少过去的信息。
  • 输入门(Input Gate):决定当前输入有多少信息进入记忆单元。
  • 输出门(Output Gate):决定当前记忆有多少信息影响输出。

LSTM 通过这些门控机制来控制信息流动,能够长期保留重要的信息,解决了传统 RNN 在长序列建模中的问题。

GRU(Gated Recurrent Unit)

GRU 是 LSTM 的一个简化版本。它只有两个门:

  • 更新门(Update Gate):决定多少历史信息需要保留。
  • 重置门(Reset Gate):决定当前输入对隐藏状态的影响。

与 LSTM 相比,GRU 在结构上更简单,但在许多应用中能够达到与 LSTM 相似的效果。

RNN 的训练:反向传播通过时间(BPTT)

RNN 的训练方法是通过 反向传播通过时间(Backpropagation Through Time, BPTT),即通过计算梯度并进行参数更新来训练模型。BPTT 是标准反向传播算法的延伸,它将序列中的每个时间步展开,并将误差反向传播至前面的每个时刻。

训练步骤

  1. 前向传播:计算每个时间步的输出 yty_tyt​ 和隐藏状态 hth_tht​。
  2. 计算损失:通常使用交叉熵损失函数来衡量预测值与真实值之间的差距。
  3. 反向传播:将损失通过时间反向传播,计算梯度并更新模型参数。
http://www.lryc.cn/news/529426.html

相关文章:

  • 4-图像梯度计算
  • 数据结构与算法 —— 常用算法模版
  • DDD - 领域事件_解耦微服务的关键
  • 芯片AI深度实战:实战篇之vim chat
  • 【产品经理学习案例——AI翻译棒出海业务】
  • 解决运行npm时报错
  • 【07-编译工程与导入网表】
  • FireFox | Google Chrome | Microsoft Edge 禁用更新 final版
  • conda配置channel
  • 【MQ】探索 Kafka
  • Workbench 中的热源仿真
  • 计算机网络 笔记 网络层 3
  • 翼星求生服务器搭建【Icarus Dedicated Server For Linux】
  • ZZNUOJ(C/C++)基础练习1011——1020(详解版)
  • 论文阅读:Realistic Noise Synthesis with Diffusion Models
  • 复杂场景使用xpath定位元素
  • 算法基础——存储
  • 动态规划 (环形)
  • 信号模块--simulink操作
  • Streamlit入门
  • 列表(列表是什么)
  • 笔记本搭配显示器
  • 基于排队理论的物联网发布/订阅通信系统建模与优化
  • 指针(C语言)从0到1掌握指针,为后续学习c++打下基础
  • 实验八 JSP访问数据库
  • Day31-【AI思考】-关键支点识别与战略聚焦框架
  • DeepSeek与其他大模型相比
  • 在深度Linux (Deepin) 20中安装Nvidia驱动
  • “LoRA技术中参数初始化策略:为何A参数采用正态分布而B参数初始化为0”
  • C语言初阶力扣刷题——349. 两个数组的交集【难度:简单】