双向循环神经网络(隐马尔可夫模型)

news2024/12/28 3:33:17
  • 在双向循环神经网络中,每个时间步的隐状态由当前时间步的前后数据同时决定。

  • 双向循环神经网络与概率图模型中的“前向-后向”算法具有相似性。

  • 双向循环神经网络主要用于序列编码和给定双向上下文的观测估计。

  • 由于梯度链更长,因此双向循环神经网络的训练代价非常高。

在序列学习中,我们以往假设的目标是: 在给定观测的情况下 (例如,在时间序列的上下文中或在语言模型的上下文中), 对下一个输出进行建模。 虽然这是一个典型情景,但不是唯一的。根据可获得的信息量,我们可以用不同的词填空,不同长度的上下文范围重要性是相同的。所以无法利用这一点的序列模型将在相关任务上表现不佳。

1.隐马尔可夫模型中的动态规划

这一小节是用来说明动态规划问题的, 具体的技术细节对于理解深度学习模型并不重要, 但它有助于我们思考为什么要使用深度学习, 以及为什么要选择特定的架构。

因此,对于有T个观测值的序列, 我们在观测状态和隐状态上具有以下联合概率分布:

 

 

 动态规划(英语:Dynamic programming,简称 DP),是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。

要了解动态规划的工作方式, 我们考虑对隐变量h1,…,hT的依次求和。 根据 (9.4.1),将得出:

通常,我们将前向递归(forward recursion)写为:

 与前向递归一样,我们也可以使用后向递归对同一组隐变量求和。这将得到:

因此,我们可以将后向递归(backward recursion)写为:

 

初始化ρT(hT)=1。 前向和后向递归都允许我们对T个隐变量在O(kT) (线性而不是指数)时间内对(h1,…,hT)的所有值求和。 这是使用图模型进行概率推理的巨大好处之一。 它也是通用消息传递算法 (Aji and McEliece, 2000)的一个非常特殊的例子。 结合前向和后向递归,我们能够计算

 因为符号简化的需要,后向递归也可以写为\rho _{t-1}=g(\rho _{t},x_{t}), 其中g是一个可以学习的函数。 同样,这看起来非常像一个更新方程, 只是不像我们在循环神经网络中看到的那样前向运算,而是后向计算。 事实上,知道未来数据何时可用对隐马尔可夫模型是有益的。 信号处理学家将是否知道未来观测这两种情况区分为内插和外推, 有关更多详细信息,请参阅 (Doucet et al., 2001)。 

 2.双向模型

如果我们希望在循环神经网络中拥有一种机制, 使之能够提供与隐马尔可夫模型类似的前瞻能力, 我们就需要修改循环神经网络的设计。 幸运的是,这在概念上很容易, 只需要增加一个“从最后一个词元开始从后向前运行”的循环神经网络, 而不是只有一个在前向模式下“从第一个词元开始运行”的循环神经网络。 双向循环神经网络(bidirectional RNNs) 添加了反向传递信息的隐藏层,以便更灵活地处理此类信息。 图9.4.2描述了具有单个隐藏层的双向循环神经网络的架构。

 事实上,这与隐马尔可夫模型中的动态规划的前向和后向递归没有太大区别。 其主要区别是,在隐马尔可夫模型中的方程具有特定的统计意义。 双向循环神经网络没有这样容易理解的解释, 我们只能把它们当作通用的、可学习的函数。 这种转变集中体现了现代深度网络的设计原则: 首先使用经典统计模型的函数依赖类型,然后将其参数化为通用形式。

2.1定义

双向循环神经网络是由 (Schuster and Paliwal, 1997)提出的, 关于各种架构的详细讨论请参阅 (Graves and Schmidhuber, 2005)。 让我们看看这样一个网络的细节。

2.2模型的计算代价及其应用 

双向循环神经网络的一个关键特性是:使用来自序列两端的信息来估计输出。 也就是说,我们使用来自过去和未来的观测信息来预测当前的观测。 但是在对下一个词元进行预测的情况中,这样的模型并不是我们所需的。 因为在预测下一个词元时,我们终究无法知道下一个词元的下文是什么, 所以将不会得到很好的精度。 具体地说,在训练期间,我们能够利用过去和未来的数据来估计现在空缺的词; 而在测试期间,我们只有过去的数据,因此精度将会很差。 下面的实验将说明这一点。

另一个严重问题是,双向循环神经网络的计算速度非常慢。 其主要原因是网络的前向传播需要在双向层中进行前向和后向递归, 并且网络的反向传播还依赖于前向传播的结果。 因此,梯度求解将有一个非常长的链。

双向层的使用在实践中非常少,并且仅仅应用于部分场合。 例如,填充缺失的单词、词元注释(例如,用于命名实体识别) 以及作为序列处理流水线中的一个步骤对序列进行编码(例如,用于机器翻译)。 

3.双向循环神经网络的错误应用

由于双向循环神经网络使用了过去的和未来的数据, 所以我们不能盲目地将这一语言模型应用于任何预测任务。 尽管模型产出的困惑度是合理的, 该模型预测未来词元的能力却可能存在严重缺陷。 我们用下面的示例代码引以为戒,以防在错误的环境中使用它们。

pip install mxnet==1.7.0.post1
pip install d2l==0.15.0
from mxnet import npx
from mxnet.gluon import rnn
from d2l import mxnet as d2l

npx.set_np()

# 加载数据
batch_size, num_steps, device = 32, 35, d2l.try_gpu()
train_iter, vocab = d2l.load_data_time_machine(batch_size, num_steps)
# 通过设置“bidirective=True”来定义双向LSTM模型
vocab_size, num_hiddens, num_layers = len(vocab), 256, 2
lstm_layer = rnn.LSTM(num_hiddens, num_layers, bidirectional=True)
model = d2l.RNNModel(lstm_layer, len(vocab))
# 训练模型
num_epochs, lr = 500, 1
d2l.train_ch8(model, train_iter, vocab, lr, num_epochs, device)

 

上述结果显然令人瞠目结舌。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/126031.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网站Nginx服务安装https免费证书配置一条龙流程

搜索小程序 成语典故查询 Let’s Encrypt 安装https免费证书配置 1.http 是一个传输网页内容的协议,比如你看到的 http 开头的网站 www.163.com,其网页上的文字、图片、 CSS 、 JS 等文件都是通过 http 协议传输到我们的浏览器,然后被我们看到。 而 …

生物药、创新药、仿制药新项目立项调研、评估的重要手段

当前,随着我国制药行业与国际的高速接轨,研发和产业环境也迎来了崭新的局面。制药企业的核心竞争力是研发,而研发中的立项是直接影响新药开发成功与否的关键因素,那么如何有效的规避开发的风险,立项论证显得极其重要,也是每个医药…

车道线标注案例分析

车道线标注属性细分规则确认点 常见车道线的标注分类属性包括5个维度:颜色、线型、线数、车道、职能 颜色标签:如白色、黄色、蓝色、橙色、黄白色等 线型标签:如实线、虚线、锯齿线等 线数标签:单线、双线,特殊情况…

【高阶数据结构】二叉树的非递归遍历

🌈欢迎来到数据结构专栏~~二叉树的非递归遍历 (꒪ꇴ꒪(꒪ꇴ꒪ )🐣,我是Scort目前状态:大三非科班啃C中🌍博客主页:张小姐的猫~江湖背景快上车🚘,握好方向盘跟我有一起打天下嘞!送给自…

大型家政服务平台带小程序端源码 家政服务小程序源码

1. 开发语言:PHP 2. 数据库:MySQL 3.小程序端:Uniapp 4. 带调试视频 5. 可付费调试运行服务 后台功能: 首页、服务管理、商品管理、订单管理、社区管理、城市代理/运营、 营销活动、会员管理、师傅管理、商家/门店、财务管理、合…

警惕!不要让自己的基本功丢失

写这篇文章的缘由是来自己最近我作为面试官的一场面试,我司是。Net stack,这场面试的岗位是后端高级开发。候选人是一个 12 年工作经验的候选人,简历看起来很 nice,国内某 TOP 高校 cs 专业本科毕业,有在大厂甲方外企的…

浙大MBA的录取由初试和复试两面组成

今年7月收到了来自浙大的录取通知书,在拿到录取通知书的那一刻,觉得这一年多备考的艰辛都是值得的。 关于本人情况:2021年备考,刚到而立之年,2012年毕业于一所普通的本科院校,在校期间成绩倒是还好&am…

Vue3 中选项式下的侦听器

目录前言:watch 侦听的分类:函数式的侦听器对象式侦听器创建侦听器停止侦听器总结:前言: 今天小编给大家讲解一下,Vue3 中选项式下的侦听器。 我正在参加 2022年「博客之星」年度总评选,请大家帮我支持一下…

【服务器数据恢复】XFS文件系统分区丢失怎么恢复数据?

服务器数据恢复环境: 磁盘柜RAID卡搭建riad5磁盘阵列; Linux操作系统; 总共一个LUN,划分两个分区;:sdc1分区通过LVM扩容的方式加入到了root_lv中,sdc2分区格式化为XFS文件系统。 服务器故障: 用户为服务器…

本科生学深度学习一轻松搭建强化学习环境,gym的安装

OpenAI Gym 是一个工具包,提供了广泛的模拟环境,也是强化学习的环境,因为想学强化学习,所以需要搭建一个环境,之前一直在代码层面,还是得能看到,比较直观 今天看下怎么安装这个环境 1、官方网站…

【mybatis-plus】Springboot+AOP+自定义注解实现多数据源操作(数据源信息存在数据库)

背景 本文主要讲述的是如何实现动态切换数据源,数据源信息是存储在数据库表里,与在配置文件中写好数据库信息然后用DS("XX")注解不同。 目录 前言 一、准备工作 1.依赖 2.数据库表(脚本) 3.配置文件 4.自定义注解C…

【MySQL基础教程】约束的介绍与使用

前言 本文为 【MySQL基础教程】约束 相关知识,下边将对约束概述,约束演示,外键约束(包括:外键约束介绍、外键约束语法)等内容进行详尽介绍~ 📌博主主页:小新要变强 的主页 &#x1…

只懂黑盒测试也能学会的代码覆盖率及精准化测试

测试覆盖率是对测试完成程度的度量。它通常依据某种覆盖准则来对测试用例执行情况进行衡量,以判断测试执行得是否充分 。 ——出自《 计算机科学技术名词 》第三版 今天文章中我们给大家介绍覆盖率统计及覆盖率分析。在10月13日20:00,资深测…

Vue_cli中config文件配置详细注解

我在scr同级目录下创建了config文件夹,里边包含三个文件 它们3个有引用关系 dev引用prod prod.env.js文件 /* * process.argv.splice(2)[0]返回的是node.js的绝对路径 * /usr/local/bin/node */ let HOST process.argv.splice(2)[0] || prod module.exports {NO…

项目实战之旅游网(十)前台用户注册

目录 一.网站首页 二.编写注册界面 三.生成验证码 四.注册流程 五.编写注册方法 六.发送邮件配置 一.网站首页 static/frontdesk下存放前台静态资源,而templates/frontdesk是前台页面 二.编写注册界面 在上个界面点击注册就可以跳转到注册界面 在这里遇到一…

2022 年上海市大学生程序设计竞赛 M. My University Is Better Than Yours

大家总喜欢搞些什么排行榜。有一说一,排行榜通常不重要,除非——比如你老板要你做一下年终总 结。 为了实现建设世界一流大学和建设世界一流学科的目标,不少大学都用各种方式提升排名:发表论文、 申请基金、提升多样性. . . 不过…

Linux操作系统实验4——内存映射

实验要求: 1.在源码中查看file_operations和vm_operations_struct结构定义及其操作对象的方法,重点查看mmap方法fault方法的参选类型。 2.设备模块代码的编写和调试,重新编写file_operations结构中的mmap方法,和vm_operations_str…

美团一面:能不能通俗的解释下为什么要有意向锁这个东西?

面试真题,用通俗的例子解释清楚 MySQL 为什么有了表锁和行锁之后,还要引入意向锁 众所周知,InnoDB 中既有读锁也有写锁,也称为共享锁和排他锁,这两种锁既可以加在整张表上,也可以加在行上。 MySQL 自身就提…

【Apifox】设置apiFox自动获取token

文章目录问题描述解决方案注意事项参考文章问题描述 接口测试时,每次都需要手动登录获取token,先登录系统,从浏览器中复制token,再到apifox的接口上把token帖上去,然后才能去测试具体的接口;更麻烦的是&am…

【实时数仓】热度关键词接口、项目整体部署流程

文章目录一 热度关键词接口1 Sugar配置(1)图表配置(2)接口地址(3)数据格式(4)执行SQL2 数据接口实现(1)创建关键词统计实体类(2)Mappe…