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

【自然语言处理】(3) --RNN循环神经网络

RNN循环神经网络
 

循环神经网络(RNN,Recurrent Neural Network)是一种用于处理序列数据的神经网络模型。其关键特性在于网络节点(神经元)之间形成了循环连接,这使得RNN能够捕捉数据中的时间依赖性和序列特性。

一、传统神经网络的问题
序列数据:如文本、语音、股票、时间序列等数据,当前数据内容与前面的数据有关。

问题:无法训练出具有顺序的数据。模型搭建时没有考虑数据上下之间的关系。

比如:将“我要去打篮球”,分词后“我”,“要”,“去”,“打”,“篮球”,放进神经网络中训练得到一个结果之后。此时更改为“我要打篮球去”,模型可能就识别不出来了,没有办法将词语的上下词关系联系到一起。因为传统神经网络的每个输入层之间是没有建立关系的。

于是,我们提出了一种新的神经网络模型RNN。

二、RNN的基本结构
RNN的基本单元是一个带有循环连接的神经元(也称为RNN单元或节点)。在处理序列输入时具有记忆性,可以保留之前输入的信息并继续作为后续输入的一部分进行计算。

输入:
每个RNN单元接收两个输入:当前时间步的输入词向量x和上一个时间步的隐藏状态h(之前保留的信息)。RNN单元的输出是当前时间步的隐藏状态h,这个输出可以被传递到下一个时间步的RNN单元,也可以用于生成当前时间步的输出y(如果有需要的话)。

输出:
RNN结构中输入是x1, x2, …xn,输出为y1, y2, …yn,也就是说,输入和输出序列必须要是等长的。

但是,对于每个层都会计算的y结果,我们一般情况只需要最后一层的输出结果,因为只有它是吸收所有信息后的结果,前面层的结果几乎不要。

当模型的输出层是softmax或sigmoid函数时,输出将是概率值。交叉熵损失函数特别适用于这种情况,因为它直接操作概率值,而不是原始分数或类别标签。

三、计算过程
RNN的展开形式(Unfolding)有助于理解其工作原理。

注意:展开后,RNN看起来像是一个多层的前馈神经网络,但每一层的权重是共享的,每层的U、W、b是一样的,这是RNN的重要特点。这种权重共享机制使得RNN能够处理任意长度的序列,而不需要为每个时间步训练不同的权重。

如此计算就可以保留序列数据的关系,比如,”今天我要去打球“,分词后”今天“,”我要“,”去“,”打球“,传入循环神经网络:

每一层训练都保留了上一层训练的特征信息,从而使得最后的输出结果保留了所有单词的特征信息,这样模型预测时,输入”我要打球去今天“,只要特征信息对应上就可以理解为相同意思。

4. RNN的局限
局限:
当出现“我的职业是程序员,…,我最擅长的是电脑”。当需要预测最后的词“电脑”。当前的信息建议下一个词可能是一种技能,但是如果我们需要弄清楚是什么技能,需要先前提到的离当前位置很远的“职业是程序员”的上下文。

这说明相关信息和当前预测位置之间的间隔就变得相当的大。在理论上,RNN绝对可以处理这样的长期依赖问题。人们可以仔细挑选参数来解决这类问题中的最初级形式,但在实践中,RNN则没法太好的学习到这些知识。

原因:
梯度会随着时间的推移不断下降减少,而当梯度值变得非常小时,就不会继续学习。

形象类似于,一个学生学知识,一次性学了五六个小时的知识,脑袋已经记不进去东西了,学不进去了。但是人类还可以记得大部分的知识,因为人类有一个特点,那就是可以抓获关键词,但是RNN神经网络不行,传进去一个词就记一个,到后来,学不进去了。

解决问题:
创建LSTM网络模型,一种RNN网络的特殊类型,可以长期依赖信息。我们下篇介绍。

总结
本篇介绍了:

传统神经网络的每个输入层之间是没有建立关系的,无法训练出具有顺序的数据。
RNN的基本结构,保留之前输入的信息并继续作为后续输入的一部分进行计算。
重要特点:RNN看起来像是一个多层的前馈神经网络,但每一层的权重是共享的,每层的U、W、b是一样的。
局限:梯度会随着时间的推移不断下降减少,而当梯度值变得非常小时,就不会继续学习。
 

http://www.dtcms.com/a/393599.html

相关文章:

  • C# 中的 ReferenceEquals 方法
  • BERT:用于语言理解的深度双向Transformer预训练【简单分析】
  • 力扣hot100:两数相加(模拟竖式加法详解)(2)
  • Zotero + Word 插件管理参考文献的引用
  • 用Python一键整理文件:自动分类DOCX与PDF,告别文件夹杂乱
  • Ubuntu部署Elasticsearch教程
  • 61.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--提取金额
  • 一款基于 .NET 开源、免费、命令行式的哔哩哔哩视频内容下载工具
  • Win Semi宣布推出线性优化的GaN工艺
  • 考研408计算机网络2025年第38题真题解析
  • C++编写的经典贪吃蛇游戏
  • 风险预测模型原理
  • PS练习5:利用翻转制作图像倒影
  • 平替Jenkins,推荐一款国产开源免费的CICD工具 - Arbess
  • aws 实战小bug
  • NumPy 系列(一):numpy 数组基础
  • VSCode 的 launch.json 配置
  • OpenLayers地图交互 -- 章节六:范围交互详解
  • 分布式专题——15 ZooKeeper特性与节点数据类型详解
  • 分布式专题——16 ZooKeeper经典应用场景实战(上)
  • Torch-Rechub学习笔记-task2
  • Hadoop分布式计算平台
  • hive调优系列-1.调优须知
  • 爆炸特效:Unity+Blender-01
  • 解决切换 Node 版本后 “pnpm 不是内部或外部命令”问题
  • flag使用错误出现bug
  • 【Kafka面试精讲 Day 20】集群监控与性能评估
  • SQL 注入攻防:绕过注释符过滤的N种方法
  • 微软常用运行库
  • 在Kubernetes(k8s)环境中无法删除持久卷(PV)和持久卷声明(PVC)的解决方案