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

《动手学深度学习 Pytorch版》 9.4 双向循环神经网络

之前的序列学习中假设的目标是在给定观测的情况下对下一个输出进行建模,然而也存在需要后文预测前文的情况。

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

数学推导太复杂了,略。

9.4.2 双向模型

双向循环神经网络(bidirectional RNNs)添加了反向传递信息的隐藏层,以便更灵活地处理此类信息。

在这里插入图片描述

9.4.2.1 定义

前向和反向隐状态的更新如下:

H → t = ϕ l ( X t W x h ( f ) + H → t − 1 W h h ( f ) + b h ( f ) ) H ← t = ϕ l ( X t W x h ( b ) + H ← t − 1 W h h ( b ) + b h ( b ) ) \overrightarrow{\boldsymbol{H}}_t=\phi_l(\boldsymbol{X}_t\boldsymbol{W}^{(f)}_{xh}+\overrightarrow{\boldsymbol{H}}_{t-1}\boldsymbol{W}^{(f)}_{hh}+\boldsymbol{b}^{(f)}_h)\\ \overleftarrow{\boldsymbol{H}}_t=\phi_l(\boldsymbol{X}_t\boldsymbol{W}^{(b)}_{xh}+\overleftarrow{\boldsymbol{H}}_{t-1}\boldsymbol{W}^{(b)}_{hh}+\boldsymbol{b}^{(b)}_h) H t=ϕl(XtWxh(f)+H t1Whh(f)+bh(f))H t=ϕl(XtWxh(b)+H t1Whh(b)+bh(b))

参数字典:

  • H → t , H ← t ∈ R n × h \overrightarrow{\boldsymbol{H}}_t,\overleftarrow{\boldsymbol{H}}_t\in\R^{n\times h} H t,H tRn×h 表示前向和反向隐状态

    • h h h 表示隐藏单元数目
  • W x h ( f ) , W h h ( f ) , W x h ( b ) , W h h ( b ) ∈ R h × h \boldsymbol{W}^{(f)}_{xh},\boldsymbol{W}^{(f)}_{hh},\boldsymbol{W}^{(b)}_{xh},\boldsymbol{W}^{(b)}_{hh}\in\R^{h\times h} Wxh(f),Whh(f),Wxh(b),Whh(b)Rh×h 表示权重参数

  • b h ( f ) , b h ( b ) ∈ R 1 × h \boldsymbol{b}^{(f)}_h,\boldsymbol{b}^{(b)}_h\in\R^{1\times h} bh(f),bh(b)R1×h 表示偏重参数

接下来,将前向隐状态 H → t \overrightarrow{\boldsymbol{H}}_t H t 和反向隐状态 H ← t \overleftarrow{\boldsymbol{H}}_t H t 连接起来,获得需要送入输出层的隐状态 H t ∈ R n × 2 h \boldsymbol{H}_t\in\R^{n\times 2h} HtRn×2h

最后,输出层计算得到的输出为:

O t = H t W h q + b q \boldsymbol{O}_t=\boldsymbol{H}_t\boldsymbol{W}_{hq}+\boldsymbol{b}_q Ot=HtWhq+bq

参数字典:

  • O t ∈ R n × q \boldsymbol{O}_t\in\R^{n\times q} OtRn×q 表示输出层输出

    • q q q 表示输出单元数目
  • W h q ∈ R 2 h × q \boldsymbol{W}_{hq}\in\R^{2h\times q} WhqR2h×q 表示权重矩阵

  • b q ∈ R 1 × q \boldsymbol{b}_q\in\R^{1\times q} bqR1×q 表示偏置

9.4.2.2 模型的计算成本及其应用

在训练期间,能够利用过去和未来的数据来估计现在空缺的词;而在测试期间,只有过去的数据,因此精度将会很差。下面的实验将说明这一点。

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

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

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

import torch
from torch import nn
from d2l import torch as d2l
# 加载数据
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
num_inputs = vocab_size
lstm_layer = nn.LSTM(num_inputs, num_hiddens, num_layers, bidirectional=True)
model = d2l.RNNModel(lstm_layer, len(vocab))
model = model.to(device)
# 训练模型
num_epochs, lr = 500, 1
d2l.train_ch8(model, train_iter, vocab, lr, num_epochs, device)
perplexity 1.1, 62244.4 tokens/sec on cuda:0
time travellerererererererererererererererererererererererererer
travellerererererererererererererererererererererererererer

在这里插入图片描述

练习

(1)如果不同方向使用不同数量的隐藏单位, H t \boldsymbol{H}_t Ht 的形状会发生怎样的变化?

如果一个是 H → t ∈ R n × h 1 \overrightarrow{\boldsymbol{H}}_t\in\R^{n\times h_1} H tRn×h1,另一个是 H ← t ∈ R n × h 2 \overleftarrow{\boldsymbol{H}}_t\in\R^{n\times h_2} H tRn×h2 那么最后拼接出的 H t ∈ R n × ( h 1 + h 2 ) \boldsymbol{H}_t\in\R^{n\times (h_1+h_2)} HtRn×(h1+h2)


(2)设计一个具有多个隐藏层的双向循环神经网络。

不会,略。


(3)在自然语言中一词多义很常见。例如,“bank”一词在不同的上下文“i went to the bank to deposit cash”和“i went to the bank to sit down”中有不同的含义。如何设计一个神经网络模型,使其在给定上下文序列和单词的情况下,返回该单词在此上下文中的向量表示?哪种类型的神经网络架构更适合处理一词多义?

那必然是双向循环网络。

相关文章:

《动手学深度学习 Pytorch版》 9.4 双向循环神经网络

之前的序列学习中假设的目标是在给定观测的情况下对下一个输出进行建模,然而也存在需要后文预测前文的情况。 9.4.1 隐马尔可夫模型中的动态规划 数学推导太复杂了,略。 9.4.2 双向模型 双向循环神经网络(bidirectional RNNs)…...

【Axure高保真原型】可视化图表图标

今天和粉丝们免费分享可视化图表图标原型模板,包括柱状图、条形图、环形图、散点图、水波图等常用的可视化图表图标。 【原型效果】 【原型预览】 https://axhub.im/ax9/d402c647c82f9185/#c1 【原型下载】 这个模板可以在 Axure高保真原型哦 小程序里免费下载哦…...

安装mmcv及GPU版本的pytorch及torchvision

一、先装GPU版本的pytorch和torchvision pip install torch1.9.1cu111 torchvision0.10.1cu111 torchaudio0.9.1 -f https://download.pytorch.org/whl/torch_stable.html注意:以上适用cuda11.1版本 如果想离线安装,就看这篇文章 二、安装mmcv 看这篇…...

全国342个城市往返最短通勤时间(铁路)数据

全国342个城市往返最短通勤时间(铁路)数据 1、时间:采集时间是2022年 2、来源:12306 3、数据说明:数据采集12306数据,整理全国342个城市往返最短通勤时间,本数据是铁路包含动车、高铁所有路线…...

AWK语言第二版 第3章.探索性数据分析 3.1泰坦尼克号的沉没

这章也是第一版没有,第二版新增的。 3. 探索性数据分析 上一章给出了一些个人使用的小脚本,通常是特制或专用的。在本章中,我们还会展示Awk在现实中的典型使用场景:使用Awk和其他工具来非正式地探索一些真实的数据,目…...

微信小程序设计之主体文件app-json-window

一、新建一个项目 首先,下载微信小程序开发工具,具体下载方式可以参考文章《微信小程序开发者工具下载》。 然后,注册小程序账号,具体注册方法,可以参考文章《微信小程序个人账号申请和配置详细教程》。 在得到了测…...

WebDAV之π-Disk派盘 + 密码键盘

密码键盘是一款密码管理器,可以存储和管理需要受保护的数据。为方便日常使用,同时也是一款安全输入法,帮您安全便捷地填写账号密码、通用内容、卡包信息。 密码键盘使用军事级的 PBKDF2 有损加密算法保护您的根密码,使用军事级的 AES 加密算法保护您的存储数据。云端再额外…...

LeetCode讲解篇之77. 组合

文章目录 题目描述题解思路题解代码 题目描述 题解思路 遍历nums,让当前数字添加到结果前缀中,递归调用,直到前缀的长度为k,然后将前缀添加到结果集 题解代码 func combine(n int, k int) [][]int {var nums make([]int, n)fo…...

【openwrt学习笔记】Dying Gasp功能和pstore功能的配置(高通 ipq95xx)

目录 一、Dying Gasp信号1.1 概念1.2 实现原理 二、pstore 功能2.1 概念2.2 实现原理 三、openwrt中开启pstore功能3.1 软硬件参数3.2 各文件修改3.2.1 defconfig3.2.2 dts(ipq9574-default-memory.dtsi)3.2.3 fs/pstore/ram.c 四、测试4.1 挂载4.2 触发命令和效果 参考资料&am…...

使用RestSharp和C#编写程序

以下是一个使用RestSharp和C#编写的爬虫程序,用于爬取www.zhihu.com上的视频。此程序使用了https://www.duoip.cn/get_proxy来获取代理IP。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks…...

Leetcode 2911. Minimum Changes to Make K Semi-palindromes

Leetcode 2911. Minimum Changes to Make K Semi-palindromes 1. 解题思路2. 代码实现 题目链接:2911. Minimum Changes to Make K Semi-palindromes 1. 解题思路 这一题属实也是把我坑惨了…… 坦率地说,这道题本身并没有啥难度,但是坑爹…...

Node学习笔记之包管理工具

一、概念介绍 1.1 包是什么 『包』英文单词是package ,代表了一组特定功能的源码集合 1.2 包管理工具 管理『包』的应用软件,可以对「包」进行 下载安装 , 更新 , 删除 , 上传 等操作 借助包管理工具,可…...

分发糖果[困难]

优质博文:IT-BLOG-CN 一、题目 n个孩子站成一排。给你一个整数数组ratings表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果: 【1】每个孩子至少分配到1个糖果。 【2】相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩…...

Java验证邮箱格式是否正确的正则表达式

Java验证邮箱格式是否正确的正则表达式 import java.util.regex.Pattern;public class EmailUtil {final static Pattern partern Pattern.compile("[a-zA-Z0-9][\\.]{0,1}[a-zA-Z0-9][a-zA-Z0-9]\\.[a-zA-Z]");/*** 验证输入的邮箱格式是否符合* param email* ret…...

快速排序原理JAVA和Scala实现-函数式编程的简洁演示

快速排序原理JAVA和Scala实现-函数式编程的简洁演示 目录 快速排序原理JAVA和Scala实现-函数式编程的简洁演示 C语言快速排序实现 Java 快速排序实现 Scala 快速排序实现 本文章向大家介绍快速排序原理JAVA和Scala实现-函数式编程的简洁演示,主要内容包括C语言…...

如何在linux服务器上安装Anaconda与pytorch

如何在linux服务器上安装Anaconda与pytorch 1,安装anaconda1.1 下载anaconda安装包1.2 安装anaconda1.3 设计环境变量1.4 安装完成验证 2 Anaconda安装pytorch2.1 创建虚拟环境2.2 查看现存环境2.3 激活环境2.4 选择合适的pytorch版本下载2.5 检测是否安装成功&…...

FPGA设计FIR滤波器低通滤波器,代码及视频

名称:FIR滤波器低通滤波器 软件:Quartus 语言:Verilog/VHDL 本资源含有verilog及VHDL两种语言设计的工程,每个工程均可实现以下FIR滤波器的功能。 代码功能: 设计一个8阶FIR滤波器(低通滤波器&#xff…...

【数据结构】排序--快速排序

目录 一 概念 二 快速排序的实现 1. hoare版本 (1)代码实现 (2)单趟排序图解 (3) 递归实现图解 (4)细节控制 (5)时间复杂度 (6)三数取中优化 2 挖坑法 (1)代码实现 (2)单趟图解 3 前后指针法 (1) 代码实现 (2) 单趟图解 ​4 优化子区间 5 非递归快速排序 …...

【试题040】多个逻辑或例题2

1.题目:设int n0;,执行表达式n ||(n-1) ||(n0)||(n1)||(n2)后n的值是 ? 2.代码解析: 逻辑或 || 运算符是一个短路运算符,它从左到右依次计算表达式,如果遇到一个为真(非零)的值&am…...

自然语言处理---Self Attention自注意力机制

Self-attention介绍 Self-attention是一种特殊的attention,是应用在transformer中最重要的结构之一。attention机制,它能够帮助找到子序列和全局的attention的关系,也就是找到权重值wi。Self-attention相对于attention的变化,其实…...

告别同步慢与数据泄露!2026国内主流企业网盘深度横评

在数字化转型的 2026 年,高效的文档协作已成为企业组织的核心竞争力。面对市面上琳琅满目的选择,主流网盘厂商究竟哪个能够真正适应复杂的业务场景?很多选型者在追求海量空间的同时,往往忽视了同步速度、网络抗并发性、权限管控及…...

2026软著审核全面收紧!驳回率飙升背后,这份“通关指南”请收好

最近很多开发者和企业负责人都在吐槽:软著怎么突然变得这么难拿了?曾经“提交即过”的好日子一去不复返。如今,收到的不是补正通知,就是直接驳回。反复修改、来回折腾,几个月过去了,证书还是没着落。这不是…...

AI编程革命:用Codex告别重复造轮子

告别重复造轮子:Codex写脚本的技术文章大纲技术背景与现状重复造轮子的定义及其在开发中的常见场景 传统脚本编写方式的痛点:效率低、维护成本高 AI辅助编程工具(如Codex)的兴起及其技术原理Codex的核心能力与应用场景Codex的模型…...

工业视觉检测:OpenCV FPS 正确计算的方式

工业视觉检测:OpenCV FPS 计算正确姿势 别再被 cap.get(cv2.CAP_PROP_FPS) 骗了!“为什么我用 OpenCV 读相机,get(CAP_PROP_FPS) 返回 0?” “视频文件能拿到帧率,但工业相机就是不行!” “我的算法明明很快…...

AI编程助手谁才是真·生产力引擎?2026奇点大会4大旗舰工具横向测评(含代码生成准确率、调试通过率、IDE兼容性三重压力测试)

第一章:2026奇点智能技术大会:AI编程助手对比评测 2026奇点智能技术大会(https://ml-summit.org) 在2026奇点智能技术大会上,来自全球12家主流厂商的AI编程助手接受了统一基准测试——涵盖代码补全准确率、跨文件上下文理解、调试建议有效性…...

别再对着公式发愁了!手把手教你用CadFEKO搞定一个1.645GHz的矩形喇叭天线仿真

从零开始实战:1.645GHz矩形喇叭天线仿真全流程解析 第一次打开CadFEKO时,那个布满按钮的界面确实让人望而生畏。记得我研究生时期做第一个天线项目,光是找"模型单位设置"就花了半小时。本文将以1.645GHz矩形喇叭天线为例&#xff0…...

2分钟解决iPhone网络共享问题:Windows用户的免费终极方案

2分钟解决iPhone网络共享问题:Windows用户的免费终极方案 【免费下载链接】Apple-Mobile-Drivers-Installer Powershell script to easily install Apple USB and Mobile Device Ethernet (USB Tethering) drivers on Windows! 项目地址: https://gitcode.com/gh_…...

DeerFlow 系列教程 第十五篇 | Guardrails 安全防护与可观测性

DeerFlow 系列教程 第十五篇 本篇教程继续模块四:高级功能与扩展,全面剖析 DeerFlow 的安全防护机制和可观测性体系。我们将深入理解 Guardrails 防护栏的策略执行架构、SandboxAuditMiddleware 的 Bash 命令审计、路径遍历防护与沙箱隔离机制、技能安全扫描、循环检测中间件…...

2026届最火的六大AI论文工具推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 当下学术情形里,AI相关的论文平台主要被分作三种类型,其一为文献检索…...

FanControl风扇控制终极指南:5分钟告别电脑噪音烦恼

FanControl风扇控制终极指南:5分钟告别电脑噪音烦恼 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/F…...