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

8.4.1 无隐状态的神经网络

对于无隐藏装态的神经网络来说,给定一个小批量样本 X ∈ R n × d \boldsymbol{X}\in\mathbb{R}^{n\times d} XRn×d,则隐藏层的输出 H ∈ R n × h \boldsymbol{H}\in\mathbb{R}^{n\times h} HRn×h 通过下式计算:

H = ϕ ( X W x h + b h ) \boldsymbol{H}=\phi(\boldsymbol{XW}_{xh}+\boldsymbol{b}_h) H=ϕ(XWxh+bh)

  • ϕ \phi ϕ 是隐藏层的激活函数
  • n n n 是批量大小
  • d d d 是输入维度
  • W x h ∈ R d × h \boldsymbol{W}_{xh}\in\mathbb{R}^{d\times h} WxhRd×h 是隐藏层权重
  • b h ∈ R 1 × h \boldsymbol{b}_h\in\mathbb{R}^{1\times h} bhR1×h 是偏置参数
  • h h h 是隐藏层数目。

接下来将隐藏变量 H \boldsymbol{H} H 作为输出层的输入:

O = H W h q + b q \boldsymbol{O}=\boldsymbol{HW}_{hq}+\boldsymbol{b}_q O=HWhq+bq

  • O ∈ R n × q \boldsymbol{O}\in\mathbb{R}^{n\times q} ORn×q 是输出变量
  • H W h q ∈ R h × q \boldsymbol{HW}_{hq}\in\mathbb{R}^{h\times q} HWhqRh×q 是权重参数
  • b q ∈ R 1 × q \boldsymbol{b}_q\in\mathbb{R}^{1\times q} bqR1×q 是输出层的偏置参数。

如果是分类问题,则可以用 s o f t m a x ( O ) softmax(\boldsymbol{O}) softmax(O) 计算输出的概率分布,此处无需多言。

8.4.2 有隐状态的循环神经网络

引入隐状态后,情况就完全不同了。具体地说,当前时间步隐藏变量由当前时间步的输入与前一个时间步的隐藏变量一起计算得出:

H t = ϕ ( X t W x h + H t − 1 W h h + b h ) \boldsymbol{H}_t=\phi(\boldsymbol{X}_t\boldsymbol{W}_{xh}+\boldsymbol{H}_{t-1}\boldsymbol{W}_{hh}+\boldsymbol{b}_h) Ht=ϕ(XtWxh+Ht1Whh+bh)

  • X t ∈ R n × d \boldsymbol{X}_t\in\mathbb{R}^{n\times d} XtRn×d 是时间步 t t t 的小批量输入
  • H t ∈ R n × h \boldsymbol{H}_t\in\mathbb{R}^{n\times h} HtRn×h 是时间步 t t t 的隐藏变量
  • H t − 1 \boldsymbol{H}_{t-1} Ht1 是前一个时间步的隐藏变量
  • W h h ∈ R h × h \boldsymbol{W}_{hh}\in\mathbb{R}^{h\times h} WhhRh×h 是权重参数

由于在当前时间步中,隐状态使用的定义与前一个时间步中使用的定义相同,因此此计算是循环的(recurrent)。于是基于循环计算的隐状态神经网络被命名为循环神经网络(recurrent neural network)。

对于时间步 t t t,输出层的输出类似于多层感知机中的计算:

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

在不同的时间步,循环神经网络也总是使用这些模型参数。因此,循环神经网络的参数开销不会随着时间步的增加而增加。

在这里插入图片描述

import torch
from d2l import torch as d2l
X, W_xh = torch.normal(0, 1, (3, 1)), torch.normal(0, 1, (1, 4))
H, W_hh = torch.normal(0, 1, (3, 4)), torch.normal(0, 1, (4, 4))
torch.matmul(X, W_xh) + torch.matmul(H, W_hh)
tensor([[-0.9743,  0.4619, -0.7949,  0.3287],[ 5.9413,  2.1961,  0.6053,  0.1704],[-1.0903, -0.2396, -1.0930, -0.8530]])
torch.matmul(torch.cat((X, H), 1), torch.cat((W_xh, W_hh), 0))
tensor([[-0.9743,  0.4619, -0.7949,  0.3287],[ 5.9413,  2.1961,  0.6053,  0.1704],[-1.0903, -0.2396, -1.0930, -0.8530]])

8.4.3 基于循环神经网络的字符级语言模型

以 “machine” 为例:

在这里插入图片描述

8.4.4 困惑度(Perplexity)

我们使用困惑度来评估模型。

一个更好的语言模型应该能让我们更准确地预测下一个词元,所以我们可以通过一个序列中所有的 n n n 个词元的 交叉熵损失的平均值 来衡量:

1 n ∑ t = 1 n − log ⁡ P ( x t ∣ x t − 1 , … , x 1 ) \frac{1}{n}\sum^n_{t=1}-\log{P(x_t|x_{t-1},\dots,x_1)} n1t=1nlogP(xtxt1,,x1)

由于历史原因,自然语言处理的科学家更喜欢使用困惑度(perplexity)的。简而言之,它是上式的指数:

exp ⁡ ( − 1 n ∑ t = 1 n log ⁡ P ( x t ∣ x t − 1 , … , x 1 ) ) \exp\left(-\frac{1}{n}\sum^n_{t=1}\log{P(x_t|x_{t-1},\dots,x_1)}\right) exp(n1t=1nlogP(xtxt1,,x1))

练习

(1)如果我们使用循环神经网络来预测文本序列中的下一个字符,那么任意输出所需的维度是多少?

啥叫“任意输出”?输出应该和输入是一个形状。


(2)为什么循环神经网络可以基于文本序列中所有先前的词元,在某个时间步表示当前词元的条件概率?

因为每个时间步的输入都有上一个时间步的输出。


(3)如果基于一个长序列进行反向传播,梯度会发生什么状况?

更容易出现梯度消失或者梯度爆炸。


(4)与本节中描述的语言模型相关的问题有哪些?

略。

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

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

相关文章

html和css基础练习

vscode快捷键 alt b 在浏览器中打开 alt shift b 在其他浏览器打开 ctrl / 注释 ctrl y 快捷键删除 参考文章 https://www.bilibili.com/video/BV1m84y1w7Tb 基础html标签 img:图像,title:头部文字,body:主…

格式工厂怎么把两个视频合并在一起

免费的工具谁不喜欢呢,今天为大家介绍的是格式工厂这款多功能视频转换软件,然而今天主要为大家介绍的是格式工厂的视频合并功能。 是的,你没有听错,格式工厂除了转换之外,还可以视频合适、视频剪辑、视频分割、去水印…

linux 安装python django pip 遇到的问题

Python解决SSL不可用问题 解决方案: 首先要明白python版本需要和openssl的版本需要相对匹配的,在Python3.7之后的版本,依赖的openssl,必须要是1.1或者1.0.2之后的版本,或者安装了2.6.4之后的libressl,linux…

实验室超声波清洗器的频率越高越好?

实验室超声波清洗器是一种新型的清洗设备,为实验室的高清洁度需求而开发。可实现各种试验玻璃容器和精密设备的自动清洗,处理传统人工清洗费时费力、效果难以控制的缺点,避免科研人员暴露在有害的清洗试剂中,改善实验室清洗环境。…

Meta开源数字水印Stable Signature,极大增强生成式AI安全

全球社交、科技巨头Meta(Facebook、Instagram等母公司)在官网宣布,开源数字水印产品Stable Signature,并公开论文。 据悉,Stable Signature是由Meta和INRIA(法国国家信息与自动化研究所)联合开…

“一馆一策”保亚运,精准气象服务背后的数据魔法

第十九届杭州亚运会已隆重闭幕,十五个比赛日留下了无数精彩的瞬间:开幕式数字火炬手点燃主火炬、男女100米接力赛的激情澎湃、“时间孤勇者”丘索维金娜的坚持、围棋选手柯洁的泪洒赛场…… 作为亚洲水平最高的综合型运动会,本届杭州亚运会竞…

选实验室超声波清洗机易忽视的内容?小型清洗机的优点有?

实验室超声波清洗机如今在行业内占据着重要的一席之地,摒弃了传统模式,坚持以超声波为主的清洗方式,在市场中获得的反响强烈。服务好,有诚信的实验室超声波清洗机能够消除客户的后顾之忧,工作人员会以真诚态度向客户提…

UGUI交互组件Slider

一.Slider对象的结构 对象介绍Slider附加Slider组件Background背景Fill Area填充范围Fill填充对象Handle Slider Area滑块移动范围Handle滑块 二.Slider组件属性 属性说明Fill Rect关联填充对象Handle Rect关联滑块对象Direction设置方向Min Value最大取值Max Value最小取值Wh…

1600*C. Game On Leaves(博弈游戏树)

Problem - 1363C - Codeforces 解析: 我们将目标结点 x 当作树的根,显然,到当 x 的度为 1 的时候,此时行动的人胜利。 我们假设现在的情况为,只剩余三个点,再选择任意一个点,则对方获胜。但是两…

Unity角色或摄像机移动和旋转的控制脚本

该脚本挂载到需要被移动、旋转控制的物体身上,也可以之间挂在到摄像机上! 挂载到摄像机上可以实现第一人称视角控制! 挂载到物体身上,配合摄像机跟踪脚本可以实现,第三人称视角控制! 第一人称视角 将角…

【Nuget】程序包源

程序包源地址(部分) Azure 中国区的官方 NuGet 程序包源地址 https://nuget.cdn.azure.cn/v3/index.json 官方 NuGet 程序包源地址 V2 https://www.nuget.org/api/v2 官方 NuGet 程序包源地址 V3 https://api.nuget.org/v3/index.json MyGet 上 Eto.Forms 框架的程序包源地址 h…

BUUCTF jarvisoj_level0 1

目录 一、分析二、EXP三、本地打不通?远程能打通? 一、分析 查看文件信息 关键信息 64位程序栈不可执行 IDA64反汇编 进入第一个函数 栈溢出 shift F12查找字符串 点进去 发现是一个后门函数 二、EXP from pwn import *context.arch amd64 #…

uni-app : 生成三位随机数、自定义全局变量、自定义全局函数、传参、多参数返回值

核心代码 function generateRandomNumber() {const min 100;const max 999;// 生成 min 到 max 之间的随机整数// Math.random() 函数返回一个大于等于 0 且小于 1 的随机浮点数。通过将其乘以 (max - min 1),我们得到一个大于等于 0 且小于等于 (max - min 1…

【肌电信号】OpenSignals使用方法 --- 肌电信号采集及导入matlab

一、 多通道采集教学 1. 数据线连接 将PLUX设备通过USB或蓝牙与电脑连接,注意确认在几号通道接线。 2.实时数据采集可视化 进行设置。需要在软件中选择你的PLUX设备,并配置相关的参数,如采样率、分辨率、信号类型等 3 支持数据回放和…

只需根据接口文档,就能轻松开发 get 和 post 请求的脚本,你会做吗?

一般的接口文档描述的内容: 开发get请求的脚本,接口文档的描述如下: 在loadrunner里面创建一个空脚本: 在action空白处,点击insert—>step 输入web_custom_request,双击选择该函数,填入如下几…

什么是C++?

1.什么是C C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的 程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机 界提出了OOP(object o…

智能AI创作系统ChatGPT详细搭建教程/AI绘画系统/支持GPT联网提问/支持Prompt应用/支持国内AI模型

一、智能AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统,支持OpenAI GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作…

Flex 词法分析实验实现(电子科技大学编译技术Icoding实验)

Flex 词法分析 此为电子科技大学编译技术 实验1:词法分析 将具体实现中的三个文件和自己的实验报告一起上传才能通过 根据词法分析实验中给定的文法,利用 flex 设计一词法分析器,该分析器从标准输入读入源代码后,输出单词的类别编…

C/C++陷阱——变量名和函数名的冲突问题

C语言/C陷阱——变量名和函数名的冲突问题 先来看这两串代码&#xff1a; 代码一&#xff1a; #include <stdio.h> #include <stdlib.h>int rand 1;int main() {printf("%d\n", rand);return 0; }代码二&#xff1a; #include <stdio.h> #inc…

基于php+thinkphp+vue的校园二手交易网站

运行环境 开发语言&#xff1a;PHP 数据库:MYSQL数据库 应用服务:apache服务器 使用框架:ThinkPHPvue 开发工具:VScode/Dreamweaver/PhpStorm等均可 项目简介 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发…