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

【pytorch】现代循环神经网络-2

1 双向循环神经网络(Bi-RNN)

具有单个隐藏层的双向循环神经网络的架构如图所示:

在这里插入图片描述

对于任意时间步t,给定一个小批量的输入数据 Xt ∈ Rn×d (样本数n,每个示例中的输入数d),并且令隐藏层激活函数为ϕ。在双向架构中,我们设该时间步的前向和反向隐状态分别为 →Ht ∈ Rn×h和←Ht ∈ Rn×h,其中h是隐藏单元的数目。前向和反向隐状态的更新如下:
在这里插入图片描述

将前向隐状态→Ht 和反向隐状态←Ht连接起来,获得需要送入输出层的隐状态Ht ∈ Rn×2h。在具有多个隐藏层的深度双向循环神经网络中,该信息作为输入传递到下一个双向层。最后,输出层计算得到的输出为 Ot ∈ Rn×q(q是输出单元的数目):
在这里插入图片描述

双向循环神经网络的一个关键特性是:使用来自序列两端的信息来估计输出。也就是说,我们使用来自过去和未来的观测信息来预测当前的观测。存在问题如下:
(1)在训练期间,我们能够利用过去和未来的数据来估计现在空缺的词;而在测试期间,我们只有过去的数据,因此精度将会很差。
(2)双向循环神经网络的计算速度非常慢。其主要原因是网络的前向传播需要在双向层中进行前向和后向递归,并且网络的反向传播还依赖于前向传播的结果。因此,梯度求解将有一个非常长的链。
**双向层的使用在实践中非常少,并且仅仅应用于部分场合。**例如,填充缺失的单词、词元注释(例如,用于命名实体识别)以及作为序列处理流水线中的一个步骤对序列进行编码(例如,用于机器翻译)。


http://www.kler.cn/a/465543.html

相关文章:

  • 【信息系统项目管理师】高分论文:论信息系统项目的风险管理(城市停车诱导系统)
  • Hyperbolic dynamics
  • MySQL 索引分类及区别与特点
  • UML之泛化、特化和继承
  • 什么情况会导致JVM退出?
  • 通往O1开源之路
  • flutter 专题二十七 Flutter自动路由插件auto_route详解
  • 如何在 VSCode 中配置 C++ 开发环境:详细教程
  • Flutter Android修改应用名称、应用图片、应用启动画面
  • Redis Cluster集群模式
  • Java Web开发基础——Java Web项目的结构与组织
  • MCU+可编程逻辑:从Microchip、TI C2000到AG32
  • 使用 Docker 安装 Redis
  • 【C++笔记】红黑树(RBTree)深度剖析和AVL树的对比分析
  • 大数据-267 实时数仓 - ODS Lambda架构 Kappa架构 核心思想
  • cesium小知识:Geocoder 详解示例
  • Predicting Human Scanpaths in Visual Question Answering
  • JMeter + Grafana +InfluxDB性能监控 (一)
  • Servlet解析
  • Spring Boot + Redis + Sa-Token
  • 学英语学压测:01开源压测工具jmeter能干什么
  • GO:复用对象和协程资源
  • GPT与MBR之间的差异是什么?
  • Node Exporter常用Prometheus指标
  • Tailwind CSS 实战:性能优化最佳实践
  • node.js卸载并重新安装(超详细图文步骤)