神经网络与深度学习(四)--自然语言处理NLP

这里写目录标题

  • 1.序列模型
  • 2.数据预处理
    • 2.1特征编码
    • 2.2文本处理
  • 3.文本预处理与词嵌入
    • 3.1文本预处理
    • 3.2文本嵌入
  • 3.RNN模型
    • 3.1RNN概要
    • 3.2RNN误差反传
  • 4.门控循环单元(GRU)
    • 4.1GRU基本结构
  • 5.长短期记忆网络 (LSTM)

1.序列模型

分类问题与预测问题

  • 图像分类:当前输入->当前输出
  • 时间序列预测:当前+过去输入->当前输出

自回归模型

2.数据预处理

2.1特征编码

在这里插入图片描述

  • 第1列表示年龄,是一个数值特征
  • 第2列表示性别,是一个只有位( 0,1)的特征
    0 -> Male, 1 > Male, 1 > Male, 1 > Male, 1 -> Female > Female > Female
  • 第3列表示国籍,目前有 197 个国家1 -> US, 2 -> China,
    可以用一个整数来表示,或者独热 向量来表示 , 如US: [1,0, ….,0]
    在这里插入图片描述

2.2文本处理

按字母处理
例如:S=“… to be or not to be”
将文本切分为字母排列:
L=[…, ‘t’, ‘o’, ’ ', ‘b’, ‘e’]

按单词处理文本切分
给定文本片段,如:S=“… to be or not to be”
将文本切分为单词序列:
L=[…,to,be,or,not,to,be]

3.文本预处理与词嵌入

3.1文本预处理

一篇文章可以被简单地看作一串单词序列,甚至是一串字符序列。我们将解析文本的常见预处理步骤。 这些步骤通常包括:

  1. 将文本作为字符串加载到内存中。
  2. 将字符串切分为词元(如单词和字符)。
  3. 建立一个字典,将拆分的词元映射到数字索引。
  4. 将文本转换为数字索引序列,方便模型操作。

第一步:读取数据集
以H.G.Well的时光机器为例,从中加载文本。 这是一个相当小的语料库,只有30000多个单词,而现实中的文档集合可能会包含数十亿个单词。如Chatgpt包含65T数据
在这里插入图片描述
第二步:词汇切分
将原始文本以文本行为单位进行切分
在这里插入图片描述
第三步:构建词索引表
在这里插入图片描述

3.2文本嵌入

如何将词映射成向量?
直接想法:使用之前所述的独热向量

在这里插入图片描述
问题:维数过高→解决方案:

词嵌入(word embedding),将独热向量映射为低维向量
在这里插入图片描述
在这里插入图片描述
映射参数矩阵
在这里插入图片描述
词嵌入训练效果
在这里插入图片描述
准确率74%(测试集),不好不差

3.RNN模型

3.1RNN概要

用RNN建模序列数据
输入:The cat sat on the mat
在这里插入图片描述
问题
随着输入的增加,会产生“遗忘”问题

在这里插入图片描述

3.2RNN误差反传

每个时间步的隐状态和输出可以写为:

在这里插入图片描述
通过一个目标函数在所有𝑇个时间步内评估输出 ot​和对应的标签 yt​之间的差异:
在这里插入图片描述
按照链式法则:
在这里插入图片描述
ht​既依赖于ℎ𝑡−1,又依赖于 wh​ , 其中 ht−1​的计算也依赖于wh​。因此,用链式法则产生:
在这里插入图片描述
使用下面的公式移除上式的循环计算:
在这里插入图片描述
截断时间步:可以在𝜏步后截断上式中的求和计算

4.门控循环单元(GRU)

一个良好的记忆产生一个良好的预测。良好的记忆要素:
关注机制(更新门)
遗忘机制(重置门)

基本思想:不是每个观察都同样重要

  1. 门控机制: GRU引入了门控机制来控制信息的流动,这些门控机制有助于模型学习长期依赖关系。与长短期记忆网络(LSTM)类似,GRU也有遗忘门和更新门,但其结构更加简单。
  2. 更新门(Update Gate): GRU中的更新门决定了在当前时间步,模型将多少来自前一个时间步的信息保留下来。更新门的值在0到1之间,它们通过一个sigmoid激活函数生成。当更新门接近1时,大部分过去的状态信息被保留,而当它接近0时,则意味着大部分过去的状态信息被遗忘。
  3. 重置门(Reset Gate): 重置门决定了在当前时间步,模型将如何考虑先前的信息。重置门的作用是控制过去状态的遗忘程度,从而允许模型更灵活地适应不同的时间序列结构。
  4. 候选状态(Candidate State): 在每个时间步,GRU会计算一个候选状态,该状态是根据当前输入和前一个状态生成的。候选状态会结合更新门的信息和先前的状态信息。
  5. 更新状态: 最后,根据更新门和候选状态,GRU会计算出当前时间步的隐藏状态。更新门控制了过去的信息如何被整合到当前的状态中,从而使模型能够更好地适应长期依赖关系。

4.1GRU基本结构

在这里插入图片描述
训练结果(The time machine):和RNN对比
在这里插入图片描述

5.长短期记忆网络 (LSTM)

网络模型
在这里插入图片描述
遗忘门(Forget Gate): 遗忘门决定了在当前时间步,模型将保留多少来自前一个时间步的状态信息。遗忘门的值为0到1之间,当门接近0时,意味着大部分过去的状态信息被遗忘,而当门接近1时,则意味着大部分过去的状态信息被保留。
在这里插入图片描述
输入门(Input Gate): 输入门决定了在当前时间步,模型将保留多少来自当前输入的信息。输入门的值为0到1之间,它控制了新信息与先前状态的整合程度。
在这里插入图片描述
输出门(Output Gate): 输出门决定了在当前时间步,模型将输出多少信息到下一个时间步。输出门的值为0到1之间,它控制了当前状态的哪些部分将被输出。
在这里插入图片描述
总结
参数量是RNN的4倍
输入输出和RNN相同

在这里插入图片描述
训练结果和 GRU 对比
在这里插入图片描述

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

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

相关文章

设计模式第二次测试 | 数据库连接池设计(原型模式、创建者模式、适配器模式)

需求中文如下:原本是英文,用百度翻译转换而来 我们需要设计一个工具,它负责创建一个与数据库软件MySQL的连接池。 连接池中有数百个连接可供客户端使用。 所有连接对象都有相同的内容,但它们是不同的对象。 连接对象的创建是资源密…

rust将json字符串直接转为map对象或者hashmap对象

有些时候我们还真的不清楚返回的json数据里面到底有哪些数据,数据类型是什么等,这个时候就可以使用批处理的方式将json字符串转为一个对象,然后通过这个对象的get方法来获取json里面的数据。 pub async fn test_json(&self) {let json_st…

实验八智能手机互联网程序设计(微信程序方向)实验报告

请在上一次实验的基础之上完成“手机快速注册”页面、“企业用户注册”页面,并实现点击手机快速注册和企业用户注册后转跳至该页面在“手机快速注册”页面,输入框内输入内容并失去焦点后,下方的按钮会变化 在企业用户注册页面,用户…

文件批量高效管理,批量将PDF类型文件移动到指定文件夹里,实现文件高效管理

文件的管理与整理成为了我们生活中不可或缺的一部分。面对堆积如山的PDF文件,你是否也曾感到手足无措、焦头烂额?现在,有了我们的批量文件管理工具,PDF文件的管理将变得前所未有的高效与简单! 首先,我们要…

深入理解正则表达式:从入门到精通

title: 深入理解正则表达式:从入门到精通 date: 2024/4/30 18:37:21 updated: 2024/4/30 18:37:21 tags: 正则Python文本分析日志挖掘数据清洗模式匹配工具推荐 第一章:正则表达式入门 介绍正则表达式的基本概念和语法 正则表达式是一种用于描述字符串…

ChatGPT 网络安全秘籍(一)

原文:zh.annas-archive.org/md5/6b2705e0d6d24d8c113752f67b42d7d8 译者:飞龙 协议:CC BY-NC-SA 4.0 前言 在不断发展的网络安全领域中,由 OpenAI 推出的 ChatGPT 所代表的生成式人工智能和大型语言模型(LLMs&#xf…

C++数据结构——二叉搜索树

二叉搜索树的概念 二叉树又称二叉排序树(BST,Binary Search Tree),它是一颗空树,也可以是一颗具有下列性质的二叉树: 1.假如它的左子树不为空,那么左子树上的结点值都小于根结点的值。 2.假如它的右子树不为空&…

Delta lake with Java--将数据保存到Minio

今天看了之前发的文章,居然有1条评论,看到我写的东西还是有点用。 今天要解决的问题是如何将 Delta产生的数据保存到Minio里面。 1、安装Minio,去官网下载最新版本的Minio,进入下载目录,运行如下命令,曾经…

Linux基础——Linux开发工具(下)_make/makefile

前言:在经过前面两篇学习,大家对Linux开发工具都有一定的了解,而在此之前最重要的两个工具就是vim,gcc。 如果对这两个工具不太了解,可以先阅读这两篇文章: Linux开发工具 (vim) Linux开发工具 (gcc/g) 首先…

Java 基础重点知识-(Java 语言特性、数据类型、常见类、异常)

文章目录 Java 语言特性形参和实参的区别是什么?值传递和引用传递的区别?Java 是值传递还是引用传递?final 的作用是什么?final finally finalize 有什么不同?static 的作用是什么?static 和 final 的区别是什么? Java 数据类型Java基本数据类型有几种? 各占多少位?基…

公网ip申请ssl仅260

现在很多网站都已经绑定域名,因此使用的都是域名SSL证书保护网站传输信息安全,而没有绑定域名只有公网IP地址的网站想要保护传输信息安全就要申请IP SSL证书。IP SSL证书也是由正规CA认证机构颁发的数字证书,用来保护用户的隐私以及数据安全&…

【基础算法】位运算

0.常见位运算总结 1.基础位运算 << >> ~ &&#xff1a;有0就是0 |&#xff1a;有1就是1 ^&#xff1a;相同为0&#xff0c;相异为1/无进位相加 2.给一个数n&#xff0c;确定它的二进制表示中的第x位是0还是1 n & (1 << x) 结果为0就是0&…