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

这篇具有很好参考价值的文章主要介绍了《动手学深度学习 Pytorch版》 9.4 双向循环神经网络。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

数学推导太复杂了,略。

9.4.2 双向模型

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

《动手学深度学习 Pytorch版》 9.4 双向循环神经网络,《动手学深度学习 Pytorch版》学习笔记,深度学习,pytorch,rnn

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

《动手学深度学习 Pytorch版》 9.4 双向循环神经网络,《动手学深度学习 Pytorch版》学习笔记,深度学习,pytorch,rnn

练习

(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”中有不同的含义。如何设计一个神经网络模型,使其在给定上下文序列和单词的情况下,返回该单词在此上下文中的向量表示?哪种类型的神经网络架构更适合处理一词多义?

那必然是双向循环网络。文章来源地址https://www.toymoban.com/news/detail-723141.html

到了这里,关于《动手学深度学习 Pytorch版》 9.4 双向循环神经网络的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 16 PyTorch 神经网络基础【李沐动手学深度学习v2】

    在构造自定义块之前,我们先回顾一下多层感知机的代码。 下面的代码生成一个网络,其中包含一个具有256个单元和ReLU激活函数的全连接隐藏层, 然后是一个具有10个隐藏单元且不带激活函数的全连接输出层。 层和块 构造单层神经网咯:线性层+RELU+线性层 生成2x20(2是批量

    2024年03月10日
    浏览(89)
  • 【AI】《动手学-深度学习-PyTorch版》笔记(十九):卷积神经网络模型(GoogLeNet、ResNet、DenseNet)

    发布时间:2014年 GoogLeNet的贡献是如何选择合适大小的卷积核,并将不同大小的卷积核组合使用。 之前介绍的网络结构都是串行的,GoogLeNet使用并行的网络块,称为“Inception块” “Inception块”前后进化了四次,论文链接: [1]https://arxiv.org/pdf/1409.4842.pdf [2]https://arxiv.org/pdf/150

    2024年02月12日
    浏览(68)
  • 【AI】《动手学-深度学习-PyTorch版》笔记(十八):卷积神经网络模型(LeNet、AlexNet、VGG、NiN)

    发布时间:1989年 模型目的:识别手写数字 1.3.1 相关函数原型 1)nn.Conv2d:卷积层

    2024年02月12日
    浏览(55)
  • 《PyTorch深度学习实践》第十一讲 循环神经网络(基础篇 + 高级篇)

    b站刘二大人《PyTorch深度学习实践》课程第十一讲循环神经网络(基础篇 + 高级篇)笔记与代码: https://www.bilibili.com/video/BV1Y7411d7Ys?p=12vd_source=b17f113d28933824d753a0915d5e3a90 https://www.bilibili.com/video/BV1Y7411d7Ys?p=13spm_id_from=pageDrivervd_source=b17f113d28933824d753a0915d5e3a90 markdown笔记:https://gi

    2024年02月13日
    浏览(42)
  • Python深度学习026:基于Pytorch的典型循环神经网络模型RNN、LSTM、GRU的公式及简洁案例实现(官方)

    循环神经网络(也有翻译为递归神经网络)最典型的三种网络结构是: RNN(Recurrent Neural Network,循环神经网络) LSTM(Long Short-Term Memory,长短期记忆网络) GRU(Gate Recurrent Unit,门控循环单元) 理解参数的含义非常重要,否则,你不知道准备什么维度的输入数据送入模型 先

    2023年04月22日
    浏览(40)
  • 《动手学深度学习》——线性神经网络

    参考资料: 《动手学深度学习》 样本: n n n 表示样本数, x ( i ) = [ x 1 ( i ) , x 2 ( i ) , ⋯   , x d ( i ) ] x^{(i)}=[x^{(i)}_1,x^{(i)}_2,cdots,x^{(i)}_d] x ( i ) = [ x 1 ( i ) ​ , x 2 ( i ) ​ , ⋯ , x d ( i ) ​ ] 表示第 i i i 个样本。 预测: y ^ = w T x + b hat{y}=w^Tx+b y ^ ​ = w T x + b 表示单个样本的预

    2024年02月12日
    浏览(57)
  • 动手学深度学习(二)线性神经网络

    推荐课程:跟李沐学AI的个人空间-跟李沐学AI个人主页-哔哩哔哩视频 目录 一、线性回归 1.1 线性模型 1.2 损失函数(衡量预估质量) 二、基础优化算法(梯度下降算法) 2.1 梯度下降公式 2.2 选择学习率 2.3 小批量随机梯度下降 三、线性回归的从零开始实现(代码实现) 3.1

    2024年02月14日
    浏览(49)
  • 【动手学深度学习】现代卷积神经网络汇总

    本文为作者阅读学习李沐老师《动手学深度学习》一书的阶段性读书总结,原书地址为:Dive into Deep Learning。 网络结构 实现代码 网络特征 最早发布的卷积神经网络之一。 每个卷积块中的基本单元是一个卷积层、一个sigmoid激活函数和平均汇聚层。 网络结构 实现代码 网络特

    2024年02月07日
    浏览(50)
  • 自己动手实现一个深度学习算法——三、神经网络的学习

    这里所说的“学习”是指从训练数据中自动获取最优权重参数的过程 。为了使神经网络能进行学习,将导入 损失函数 这一指标。而学习的目的就是以该损失函数为基准,找出能使它的值达到最小的权重参数。为了找出尽可能小的损失函数的值,利用了 函数斜率的梯度法 。

    2024年02月05日
    浏览(52)
  • 李沐《动手学深度学习》线性神经网络 线性回归

    李沐《动手学深度学习》预备知识 张量操作及数据处理 李沐《动手学深度学习》预备知识 线性代数及微积分 教材:李沐《动手学深度学习》 线性回归基于的 假设 : 假设自变量和因变量之间的关系是线性的,这里通常允许包含观测值的一些噪声; 假设任何噪声都比较正常

    2024年01月21日
    浏览(96)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包