【王树森】RNN模型与NLP应用(3/9):Simple RNN模型(个人向笔记)

news2024/9/24 15:24:07

前言

现在RNN已经没有以前那么流行了。在数据量大的情况下不如Transformer,但是在小数据的情况下仍然表现良好。


How to model sequential data?

1. one to one模型

像MLP和CNN,还有前面两节课讲到的二分类问题,都是基于one to one模型,也就是把数据一股脑输入进去,然后得到一个输出。one to one 模型的特点(局限)如下:

  • 整段地处理数据
  • 固定大小的输入(如图片)
  • 固定大小的输出(如每个类别的概率)

2. many to one or many to many

在处理不固定长度的输入和输出的问题(即sequential data)的时候,显然one to one模型并不适合。而RNN就是可以处理sequential data的模型。RNN很适合文本,语音和时间序列等数据。

在这里插入图片描述

3. RNN

RNN和人的阅读习惯很类似,人在阅读时会一边看一边在大脑里面积累信息,而RNN则每次用一个状态向量 h t h_t ht 来记录阅读过的信息。每向RNN输入一个word embedding信息,RNN就会更新自身的状态向量。
如下所示: h 0 h_0 h0 包含了the的信息,而 h 2 h_2 h2 包含了the, cat, sat的信息,最后一个状态 h t h_t ht 包含了整句话的信息,其中:

  • RNN从始至终只有一个参数矩阵A,每次通过这个矩阵A来更新状态向量
  • 对A进行随机初始化,然后用训练数据来训练A
    在这里插入图片描述

Simple RNN

1. Simple 如何把输入的向量 x t x_t xt 结合到状态向量 h t h_t ht 里面?

  • 我们把上一个状态记作 h t − 1 h_{t-1} ht1,把输入的 x t x_t xt h t − 1 h_{t-1} ht1 做一个concatenation
  • 把concatenation后的向量与参数矩阵A相乘
  • 对相乘后得到的向量的每一个元素输入到一个激活函数(双曲正切函数tanh,输出范围为-1到1),把激活函数的输出作为新的状态向量
    在这里插入图片描述
    在这里插入图片描述
    我们这样来理解下面的结构图:对于 t 状态的特征向量,其取决于:①当前输入 x t x_t xt ②上一个状态的特征向量 h t − 1 h_{t-1} ht1 ③模型的参数矩阵A
    在这里插入图片描述

2. Question : Why do we need tanh function?

我们假设输入的词向量为0:那么A矩阵蓝色部分都会和0相乘,结果得到的就是 A ⋅ h t − 1 A·h_{t-1} Aht1 ,若经过多次输入,则结果就会如下图所示: h 100 = A 100 h 0 h_{100}=A^{100}h_0 h100=A100h0,这样:

  • 如果参数矩阵A里面的最大值为0.9(小于1),那么经过多次方,会使特征向量最后接近0,
  • 而若是最大值为1.2(大于1),则经过多次方后会变为一个很大的数,若轮数再多则会接近无穷,也就是NaN(爆炸)
  • 所以考虑到输入的多样性,我们会在每一个更新状态向量后做一个normalization,使其范围回到 [ − 1 , 1 ] [-1,1] [1,1]
    在这里插入图片描述
    在这里插入图片描述

3. 矩阵A的维度(即需要训练的参数数量)

  • 行:特征向量h的维度+输入向量的维度
  • 列:特征向量h的维度
  • 固总参数量为:(特征向量h的维度+输入向量的维度)* 特征向量h的维度
    在这里插入图片描述

4. 用RNN对前两节课的数据集IMDS进行处理

  • 特征向量的维度和词嵌入的维度都需要自己确定,需要使用交叉验证
  • 最后只使用 h t h_t ht 即可,因为 h t h_t ht 包含了整句话的信息
  • h t h_t ht 输入一个分类器,这个分类器就会输出一个从0到1的数值,0代表负面评价,1代表正面评价
    在这里插入图片描述
    代码: 其中变量的含义和上节课类似
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述参数总览:
    在这里插入图片描述
    最终结果:
    在这里插入图片描述
    如果我们不只是想用最后一个向量,而希望把每个状态向量都用到: 只需要把return_sequences改为True,然后加一个Flatten层展平就好了。
    在这里插入图片描述
    在这里插入图片描述
    改动后的参数总览:
    在这里插入图片描述
    改动后的结果: 跟之前比并没有提升
    在这里插入图片描述

5. Simple RNN的缺点

  • Simple RNN在短时的效果比较好,在下面那句话中,RNN只需要关注 clouds are in the 即可,并不需要关注很长的上文,因此可以做出比较好的预测
    在这里插入图片描述
  • Simple RNN在长时的效果较差, h t h_t ht 和前面的 t t t 个输入都有函数依赖关系。按道理说改动某一个前面的输入,后面的所有 h t h_t ht 都会受到影响,但是Simple RNN并没有这种性质,所以很不合理。例如: h 100 h_{100} h100 x 1 x_1 x1 求导,其导数几乎等于0!这表明改动 x 1 x_1 x1 几乎不会对 h 100 h_{100} h100 产生影响。所以 h 100 h_{100} h100 会遗忘很多以前的信息。
    在这里插入图片描述
  • 如下图所示,Simple RNN几乎很难做到对Chinese这个单词的准确预测,因为它很“健忘”
    在这里插入图片描述

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

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

相关文章

安装jmeter的梯度压测线程组(Custom Thread Groups)的插件

1、打开:Install :: JMeter-Plugins.org 2、进入主页后点击下面图片的链接进行安装 3、将安装包放入apache-jmeter-5.4.1 > lib > ext 里面 4、打开Jmeter 点击下面的【Plugins Manager】 5、进入 【Plugins Manager】后选择【Avaliable Plug…

Apache Flink 零基础入门(二):开发环境搭建和应用的配置、部署及运行

关联比赛: Apache Flink极客挑战赛——Flink TPC-DS性能优化 作者:沙晟阳 本文是根据 Apache Flink 系列直播课程整理而成,由阿里巴巴高级开发工程师沙晟阳分享,主要面向于初次接触 Flink、或者对 Flink 有了解但是没有实际操作过的同学。…

【分布式定时任务】XXL-JOB_2.4.1部署与实战

部署 分布式任务调度平台XXL-JOBXXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。https://www.xuxueli.com/xxl-job/ 一 数据库配置 执行初始化数据库…

flutter和原生Android以及IOS开发相比有什么优缺点?

Flutter 是 Google 开发的一个开源移动应用开发框架,它使用 Dart 语言编写。Flutter 的主要目标是使开发者能够从单一的代码库构建高性能、高保真的应用程序,这些应用程序可以在 iOS 和 Android 平台上运行,同时保持原生应用的感觉。 Flutte…

tomcat架构设计分析,核心组件详解

提示:tomcat整体架构分析,tomcat核心组件详解、tomcat请求全流程、tomcat设计模式分析。责任链模式设计、tomcat设计详解、tomcat调优的前置文档 文章目录 前言一、相关概念1、tomcat的概念2、web应用部署的3种方式 二、tomcat的整体架构1、tomcat架构图…

三星与海力士发力决战HBM4

在8月中旬,三星宣布正在加速推进下一代HBM(High Bandwidth Memory)的研发,目标是在今年年底前完成HBM4的设计定稿(tape-out)。而SK海力士则继续保持其竞争力,计划在10月份完成HBM4的设计定稿&am…

华为云征文|部署私有云和文档管理系统 Kodcloud

华为云征文|部署私有云和文档管理系统 Kodcloud 一、Flexus云服务器X实例介绍1.1 云服务器介绍1.2 应用场景1.3 对比普通ECS 二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 Kodcloud3.1 Jellyfin 介绍3.2 Docker 环境搭建3.3 Jell…

Linux内核6.12新特性:panic之后扫码显示故障信息

Linux 内核 6.12 版本即将引入一项有趣的功能——在内核Panic时显示一个可选的二维码。这一功能将允许用户通过扫描二维码直接访问内核Panic信息的日志,从而更容易地诊断问题所在。 这不是 Linux 第一次尝试使用二维码。早在2014年,就有过关于在内核Pani…

docker-compose容器及Dockerfile的使用

软件资源: 链接: https://pan.baidu.com/s/1iYMP7p7v_HUMc9vakIQfbQ?pwd6fes 提取码: 6fes docker-compose容器 部署nmt---nginxcomposetomcat项目 使用基础的docker指令来创建镜像,实现项目的发布。 Dockerfile--->docker-compose 背景&#x…

[知识技巧] iPhone 15 卡在恢复模式修复方法

如果您发现您的iPhone 15 卡在恢复模式下,这可能是一次相当紧张的经历,尤其是当它阻止您使用手机时。请放心,这是许多 iPhone 用户面临的共同挑战。幸运的是,有一些行之有效的方法可以解决此问题并将您的 iPhone 恢复到正常功能。…

启动盘如何复原

条件: 本教程适合Windows系统 通过Diskpart CMD启动U盘还原U盘在Windows中还有CMD命令可以使用 先“WindowsR”呼出运行窗口,在命令行中搜索"Diskpart"。点击回车输入“list disk”并且回车输入“select disk X”(X为替换可启动u盘的磁盘号)…

Vite项目启动服务器时报错 Error: Cannot find module @rollup/rollup-win32-x64-msvc.

前言: 网上找了很多方法,尝试后都不行。在某篇文章评论区种找到了一种方法解决了,谨以此篇文章记录解决问题的方案,方便日后使用。 解决方法:github链接 Cannot find module rollup/rollup-win32-x64-msvc (rollup 4.…

idea配置连接数据库的操作方法(适配不同版本)

文章目录 一、IDEA找不到database图标的解决方法二、链接数据库 一、IDEA找不到database图标的解决方法 首先很多小伙伴说我左右侧边栏都找了找不到数据库图标 解决办法: 第一种:选择 View --> Tool Windows --> Database 如果你的idea版本在这里…

昂瑞微IPO:华为、小米看重的国产射频芯片,“腾飞”了吗?

从一些科技大厂的投资动向中,往往能够发现一些新的技术力量正在酝酿。 据悉,近日,小米、华为投资的射频芯片供应商——北京昂瑞微电子技术股份有限公司(以下简称“昂瑞微”)在北京证监局办理辅导备案登记,…

docker简单私有仓库的搭建

示例: 【搭建简单的Registry仓库】 1. 下载 Registry 镜像 [rootdocker ~]# docker pull registry #可以查看开放的端口,需要把端口暴露出来 [rootdocker ~]# docker history registry:latest [rootdocker ~]# docker run -d -p 5000:5000 --restartal…

若依微服务ruoyi-auth在knife4j中不显示问题解决

关于若依微服务ruoyi-auth在knife4j中不显示问题解决 解决办法 一、添加swagger依赖文件 在ruoyi-auth模块下的pom.xml文件中添加ruoyi-common-swagger依赖 <!-- RuoYi Common Swagger --><dependency><groupId>com.ruoy

DS1202ZE - 零碎使用记录

文章目录 DS1202ZE - 零碎使用记录概述笔记测量通道频率是使用频率测量还是内建的频率计测量&#xff1f;如何让Ultra Sigma检测到DS1202ZE?如何消除过多的测量结果?通过UltraScope对示波器屏幕进行截图END DS1202ZE - 零碎使用记录 概述 手头在使用DS1202ZE, 将零碎的操作…

javascript网页设计案例详细讲解

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言&#xff1a; 我们将以深入讲解一个基于JavaScript的网页设计案例。这个案例不仅涵盖了基础的DOM操作、事件处理和动画效果&#xff0c;还将涉及更高级的主题&#xff0c;如异步数据加载、表单验证、模块化设计和响应式布…

【动态规划】两个数组 / 字符串的dp问题(子序列、子数组问题、匹配问题、字符串问题)

文章目录 前言算法题1.最长公共子序列2.不相交的线3.不同的子序列4.通配符匹配5.正则表达式匹配6.交错字符串7.两个字符串的最小ASCII删除和8.最长重复子数组 前言 两个数组或字符串的动态规划问题通常涉及到比较和匹配元素。以下是两个常见的例子&#xff1a; 最长公共子序列…

「OC」CAlayer——巧用动画实现一个丝滑的折叠cell

「OC」CAlayer——巧用动画实现一个丝滑的折叠cell 前言 在这个暑假集训后的时间&#xff0c;都在家里做着学习笔记的整理&#xff0c;深入学习了CALayer的相关知识&#xff0c;掌握了第三方库Masonry自动布局的用法&#xff0c;以及学习了MVC的相关内容&#xff0c;正好组内…