8-4 循环神经网络

请添加图片描述
对于 (8.4.2)中的函数 f f f,隐变量模型不是近似值。 毕竟 h t h_{t} ht是可以仅仅存储到目前为止观察到的所有数据, 然而这样的操作可能会使计算和存储的代价都变得昂贵。

回想一下,我们在前面讨论过的具有隐藏单元的隐藏层。 值得注意的是,隐藏层和隐状态指的是两个截然不同的概念。 如上所述,隐藏层在从输入到输出的路径上(以观测角度来理解)的隐藏的层, 而隐状态则是在给定步骤所做的任何事情(以技术角度来定义)的输入, 并且这些状态只能通过先前时间步的数据来计算

循环神经网络(recurrent neural networks,RNNs) 是具有隐状态的神经网络。 在介绍循环神经网络模型之前, 我们首先回顾 4-1节中介绍的多层感知机模型。

无隐状态的神经网络

请添加图片描述

有隐状态的循环神经网络

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

import torch
from d2l import torch as d2lX, 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)

请添加图片描述
现在,我们沿列(轴1)拼接矩阵X和H, 沿行(轴0)拼接矩阵W_xh和W_hh。 这两个拼接分别产生形状 ( 3 , 5 ) (3,5) (3,5)和形状 ( 5 , 4 ) (5,4) (5,4)的矩阵。 再将这两个拼接的矩阵相乘, 我们得到与上面相同形状 ( 3 , 4 ) (3,4) (3,4)的输出矩阵。

torch.matmul(torch.cat((X, H), 1), torch.cat((W_xh, W_hh), 0))

请添加图片描述

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

回想一下8-3节中的语言模型, 我们的目标是根据过去的和当前的词元预测下一个词元, 因此我们将原始序列移位一个词元作为标签。 Bengio等人首先提出使用神经网络进行语言建模 (Bengio et al., 2003)。 接下来,我们看一下如何使用循环神经网络来构建语言模型。 设小批量大小为1,批量中的文本序列为“machine”。 为了简化后续部分的训练,我们考虑使用 字符级语言模型(character-level language model)将文本词元化为字符而不是单词。 图8.4.2演示了 如何通过基于字符级语言建模的循环神经网络, 使用当前的和先前的字符预测下一个字符。
请添加图片描述
请添加图片描述

困惑度(Perplexity)

最后,让我们讨论如何度量语言模型的质量, 这将在后续部分中用于评估基于循环神经网络的模型。 一个好的语言模型能够用高度准确的词元来预测我们接下来会看到什么。 考虑一下由不同的语言模型给出的对“It is raining …”(“…下雨了”)的续写:

  1. “It is raining outside”(外面下雨了);

  2. “It is raining banana tree”(香蕉树下雨了);

  3. “It is raining piouw;kcj pwepoiut”(piouw;kcj pwepoiut下雨了)。

就质量而言,例 1 1 1显然是最合乎情理、在逻辑上最连贯的。 虽然这个模型可能没有很准确地反映出后续词的语义, 比如,“It is raining in San Francisco”(旧金山下雨了) 和“It is raining in winter”(冬天下雨了) 可能才是更完美的合理扩展, 但该模型已经能够捕捉到跟在后面的是哪类单词。 例 2 2 2则要糟糕得多,因为其产生了一个无意义的续写。 尽管如此,至少该模型已经学会了如何拼写单词, 以及单词之间的某种程度的相关性。 最后,例 3 3 3表明了训练不足的模型是无法正确地拟合数据的。

我们可以通过计算序列的似然概率来度量模型的质量。 然而这是一个难以理解、难以比较的数字。 毕竟,较短的序列比较长的序列更有可能出现, 因此评估模型产生托尔斯泰的巨著《战争与和平》的可能性 不可避免地会比产生圣埃克苏佩里的中篇小说《小王子》可能性要小得多。 而缺少的可能性值相当于平均数。

在这里,信息论可以派上用场了。 我们在引入softmax回归时定义了熵、惊异和交叉熵, 并在信息论的在线附录 中讨论了更多的信息论知识。 如果想要压缩文本,我们可以根据当前词元集预测的下一个词元。 一个更好的语言模型应该能让我们更准确地预测下一个词元。 因此,它应该允许我们在压缩序列时花费更少的比特。 所以我们可以通过一个序列中所有的 n n n个词元的交叉熵损失的平均值来衡量
请添加图片描述
其中 P P P由语言模型给出, x t x_{t} xt是在时间步 t t t从该序列中观察到的实际词元。 这使得不同长度的文档的性能具有了可比性。 由于历史原因,自然语言处理的科学家更喜欢使用一个叫做困惑度(perplexity)的量。 简而言之,它是 (8.4.7)的指数:
请添加图片描述
困惑度的最好的理解是“下一个词元的实际选择数的调和平均数”。 我们看看一些案例。

  • 在最好的情况下,模型总是完美地估计标签词元的概率为1。 在这种情况下,模型的困惑度为1。

  • 在最坏的情况下,模型总是预测标签词元的概率为0。 在这种情况下,困惑度是正无穷大。

  • 在基线上,该模型的预测是词表的所有可用词元上的均匀分布。 在这种情况下,困惑度等于词表中唯一词元的数量。 事实上,如果我们在没有任何压缩的情况下存储序列, 这将是我们能做的最好的编码方式。 因此,这种方式提供了一个重要的上限, 而任何实际模型都必须超越这个上限。

在接下来的小节中,我们将基于循环神经网络实现字符级语言模型, 并使用困惑度来评估这样的模型。

  1. 词元预测压缩的关系 在数据压缩中,我们希望用尽可能少的比特来表示信息。如果我们能准确预测一个序列中的下一个词元,我们就可以更高效地压缩数据。语言模型的任务之一就是基于已知的上下文来预测下一个词元。
  • 准确预测的意义:如果模型能够非常准确地预测下一个词元,那么它只需要很少的信息(即少量的比特)就可以表示这个词元。换句话说,准确的预测使得压缩更加高效。
  1. 比特数与信息量 信息论中,比特数衡量的是存储或传输信息所需的最小单位。预测得越准确,表示下一个词元所需的比特数就越少,因为模型已经“知道”接下来很可能会是什么。反之,如果预测不准确,那么为了表示所有可能的词元,模型需要使用更多的比特

  2. 语言模型的效果

  • 更好的语言模型:能够更加准确地预测下一个词元,从而减少表示该词元所需的比特数,最终使得整个序列的压缩变得更加高效。

  • 不好的语言模型:由于预测不准确,它需要更多的比特来表示下一个词元,导致压缩效率低下。

  1. 压缩示例 举个例子,如果模型预测“外面下雨了”的概率很高,那么在压缩时就可以用较少的比特来表示这个句子,因为大部分的信息已经被预测覆盖。如果模型的预测是“香蕉树下雨了”这种不合理的内容,那为了准确传达这个奇怪的句子,可能需要更多的比特来表示。

  2. 实际应用 在实际应用中,好的语言模型不仅用于自然语言处理,也在数据压缩、信息传输等领域有重要作用。通过提高预测的准确性,可以显著提升压缩效率,从而节省存储空间和带宽。

请添加图片描述

梯度剪裁

请添加图片描述

更多的RNN应用

请添加图片描述

小结

  • 对隐状态使用循环计算的神经网络称为循环神经网络(RNN)。

  • 循环神经网络的隐状态可以捕获直到当前时间步序列的历史信息

  • 循环神经网络模型的参数数量不会随着时间步的增加而增加。

  • 我们可以使用循环神经网络创建字符级语言模型。

  • 我们可以使用困惑度来评价语言模型的质量。

请添加图片描述

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

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

相关文章

Ubuntu24.04搭建maxkb开发环境

接上文:windows10搭建maxkb开发环境(劝退指南) 上文在windows10环境搭建maxkb开发环境遇到各种坑,后面就转战ubuntu平台,果然比较顺利的完成开发环境搭建。当然遇到相关的问题还是可以参考上文《windows10搭建maxkb开发…

Docker应用部署

部署MySQL 1)拉取镜像并运行MySQL容器 # 拉取镜像到本地docker pull dockerhub.icu/library/mysql:5.6# 查看镜像docker images# 本地创建MySQL目录并进入,用于挂载mkdir -p /docker/mysqlcd /docker/mysql/# 运行MySQL容器 docker run -id \ -p 3307:3…

具有 SAM2 分段的 NDVI 无人机

在我们之前的博客文章《OAK相机扩展NDVI功能检测植物健康情况》中,我们探讨了 NDVI 方法以及如何使用多光谱相机计算它。 今天,我们通过使用带有多光谱相机的无人机并使用 SAM2 模型进行场分割和健康比较,将 NDVI 感知提升到一个新的水平。 …

Denser Retriever: RAG中更强大的AI检索器,让您10 分钟内构建聊天机器人应用

一、Denser Retriever 介绍 Denser Retriever 是一个企业级的RAG检索器,将多种搜索技术整合到一个平台中。在MTEB数据集上的实验表明,Denser Retriever可以显著提升向量搜索(VS)的基线(snowflake-arctic-embed-m模型,…

C++笔记-sstream的使用(字符串转其他类型,读取文件时用得多)

在 C 中&#xff0c;std::stringstream 类可以用来进行字符串流的输入输出&#xff0c;将字符串和其他类型的数据进行转换。 #include <iostream> #include <sstream>int main() {// 将整数转换为字符串int num 123;std::stringstream ss;ss << num;std::s…

谁偷偷看了你的网站?这两款统计工具告诉你!小白易上手~

前两天&#xff0c;上线了一个知识库网站&#xff1a;花了一天时间&#xff0c;搭了个专属知识库&#xff0c;终于上线了&#xff0c;手把手教&#xff0c;不信你学不会。 想知道这个网站的流量如何&#xff0c;怎么搞&#xff1f; 网站流量统计分析工具&#xff0c;了解下&a…

【电子科技大学主办丨IEEE 出版】第三届电子信息技术国际学术会议(EIT 2024,9月20-22)

第三届电子信息技术国际学术会议&#xff08;EIT 2024&#xff09;将于2024年9月20-22日在中国成都召开。 电子信息工程在我国信息化产业的发展过程中举足轻重&#xff0c;且随着移动通信与网络技术的发展&#xff0c;电讯网络、工业智能制造等领域与电子信息工程技术密切相关。…

No fallbackFactory instance of type xxxx found for feign client xx

文章目录 前言问题描述解决方式1、定位问题2、feign接口放置其他模块 前言 最近在openfeign中碰见一个头疼的问题&#xff0c;已经解决&#xff0c;做一次问题记录。 问题描述 报错信息nested exception is java.lang.IllegalStateException: No fallbackFactory instance of…

vue+ckEditor5 复制粘贴wold文字+图片并保存格式

第一步在vue2项目下安装 npm install --save ckeditor/ckeditor5-build-decoupled-document 第二 项目下新建一个plugins的文件夹将这个包ckeditor5-build-classic放入 &#xff08;包在页面最上方 有个下载按钮 可以下载&#xff09; 刚开始时 ckeditor5-build-classic文件…

【GLM-4微调实战】GLM-4-9B-Chat模型之Lora微调实战

系列篇章&#x1f4a5; No.文章1【GLM-4部署实战】GLM-4-9B-Chat模型本地部署实践指南2【GLM-4部署实战】GLM-4-9B-Chat模型之对话机器人部署测试3【GLM-4部署实战】GLM-4-9B-Chat模型之vLLM部署推理实践4【GLM-4微调实战】GLM-4-9B-Chat模型之Lora微调实战 目录 系列篇章&…

国产光电耦合器:2024年的发展现状与未来前景

随着全球电子技术的快速发展&#xff0c;光电耦合器&#xff08;光耦&#xff09;在各种应用场景中发挥着越来越重要的作用。近年来&#xff0c;国产光电耦合器凭借其技术进步和性价比优势&#xff0c;在国内外市场上取得了显著的成就。本文将深入探讨2024年国产光电耦合器的发…

Spring中使用JdbcTemplate访问数据库

首先在原来的基础上添加jar包&#xff0c;建一个测试数据库pring5&#xff0c;里边新建两个表users&#xff0c;authorities&#xff0c;user_authority&#xff1a; <dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc<…

听专家的,不如听国家的,网络安全究竟值不值得报?

考学选专业&#xff0c;或者跳槽选行业的&#xff0c;看这篇&#xff01; 如果你什么都不懂&#xff0c;家里也没有矿&#xff0c;那就紧跟国家大事和地方政策。 关于网络安全专业究竟是否值得报考? 要知道“二十大”、“十四五”等大会一直在提一个词叫做“数字中国建设”…

66_1JSON【浏览器中处理JSON、Java中处理JSON(FastJSON、Jackson)】、Java中的bean

JSON 概念 JSON&#xff1a;JavaScript Object Notation是一种表示对象的方式 基于JavaScript语言的轻量级的数据交换格式;&#xff08;即:用来传输数据的一种格式&#xff09; 现在传输数据的方式更多是采用json的格式&#xff0c;渐渐代替了XML JSON的数据表示 JSON采用名值…

oracle创建账户

1、查看表空间 SELECT tablespace_name FROM user_tablespaces;2、创建用户 CREATE USER FLINKCDC2 IDENTIFIED BY "123456";也可以使用指定表空间的方式 CREATE USER FLINKCDC2 IDENTIFIED BY "123456" DEFAULT TABLESPACE LOGMINER_TBS QUOTA UNLIMIT…

基于resttemplate实现微服务调用

子工程搭建与管理 新建一个cloud模块来作为公共模块&#xff0c;cloud模块中将管理用于微服务使用各个组件 euerka中的配置 package com.lingyang.euerka.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configu…

网络安全在2024好入行吗?

前言 024年的今天&#xff0c;慎重进入网安行业吧&#xff0c;目前来说信息安全方向的就业对于学历的容忍度比软件开发要大得多&#xff0c;还有很多高中被挖过来的大佬。 理由很简单&#xff0c;目前来说&#xff0c;信息安全的圈子人少&#xff0c;985、211院校很多都才建立…

[NOIP2007 普及组] 守望者的逃离 题解

题意 给定 M ( 0 ≤ M ≤ 1 0 3 ) , S ( 1 ≤ S ≤ 1 0 8 ) , T ( 1 ≤ T ≤ 3 1 0 5 ) M(0 \leq M \leq 10^3),S(1 \leq S \leq 10^8),T(1 \leq T \leq 3\times 10^5) M(0≤M≤103),S(1≤S≤108),T(1≤T≤3105)&#xff0c;守望者开始在位置 0 0 0&#xff0c;对于每一秒&…

对接的广告平台越多,APP广告变现的收益越高?

无论是游戏、社交、工具应用类APP还是泛娱乐类APP&#xff0c;流量变现的方式主要有广告、内购、订阅三种方式。其中&#xff0c;广告变现是门槛最低、适用最广的变现方式。 只要APP有流量&#xff0c;就可以进行广告变现&#xff0c;让APP的流量快速转化为商业价值。作为最常…

Typora使用教程-修改配置文件-免费使用

Typora特点 简洁美观&#xff1a;Typora的界面非常简洁&#xff0c;没有繁琐的菜单和工具栏&#xff0c;只有一个干净的编辑窗口。它使用 Markdown语法&#xff0c;将文本转化为漂亮的排版&#xff0c;无需关注样式和格式的细节。所见即所得&#xff1a;Typora实时显示Markdow…