循环神经网络(四)

news2024/10/6 8:32:47

一、循环神经网络和自然语言处理介绍

目标

  • 知token和tokenization
  • 知道N-gram的概念和作用
  • 知道文本向量化表示的方法

1.1 文本的tokenization

1.1.1 概念和工具的介绍

tokenization 就是通常所说的分词,分出的每一个词话我们把它称为token。
常见的分词工具很多,比如:

  • jieba分词: https://github.com/fxsjy/jieba 。
  • 清华大学的分词工具THULAC:
    https://github.com/thun1p/THULAC-Python

1.1.2 中英文分词的方法

在这里插入图片描述

1.2 N-garm表示方法

前面我们说,句子可以用但个字,词来表示,但是有的时候,我们可以用2个、3个或者多个词来表
N-gram一组一组的词语,其中的N表示能够被一起使用的词的数量
例如:
在这里插入图片描述
在这里插入图片描述

1.3 向量化

在这里插入图片描述

1.3.1 one-hot编码

在这里插入图片描述

1.3.2 word embedding

word embedding是深度学习中表示文本常用的一种方法。和one-hot偏码不同,word embedding使用了浮点型的稠密矩阵来表示token。根据词典的大小,我们的向量通常使用不同的维度,例如100,256,300等。其中向呈中的每一个值是一个超参数,其初始值是随机生成的,之后会在训练的过程中进行学习而获得。
如果我们文本中有20000个词语,如果使用one-hot编码,那么我们会有2000020000的矩阵,其中大多数的位置都为0,但是如果我们使用word embedding来表示的话,只需要20000 维度,比如20000*300
形象的表示就是:
在这里插入图片描述
在这里插入图片描述

1.3.3 word embedding API

在这里插入图片描述

在这里插入图片描述

1.3.4 数据的形状变化

思考:每个batch中的每个句子有10个词语,经过形状为[20,4]的Word emebedding之后,原来的句子会变成什么形状?
每个词语用长度为4的向量表示,所以,最终句子会变为 [batch_size,10,4]的形状。增加了一个维度,这个维度是embedding的dim

二、文本情感分类

目标

  1. 知道文本处理的基本方法
  2. 能够使用数据实现情感分类的

2.1 案例介绍

在这里插入图片描述

2.2 思路分析

首先可以把上述问题定义为分类问题,情感评分分为1-10,10个类别(也可以理解为回归问题,这里当做分类问题考虑)。那么根据之前的经验,我们的大致流程如下:

  1. 准备数据集
  2. 构建模型
  3. 横型训练
  4. 模型评估
    知道思路之后,那么我们一步步来完成上述步骤

2.3 准备数据集

在这里插入图片描述

2.3.1 基础Dataset的准备

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3.2 文本序列化

再介绍word embedding的时候,我们说过,不会直接把文本转化为向量,而是先转化为数字,再把数字转化为向量,那么这个过程该如何实现呢?
这里我们可以考虑把文本中的每个词语和其对应的数字,使用字典保存,同时实现方法把句子通过字典映射为包含数字的列表
实现文本序列化之前,考虑以下几点:

  1. 如何使用字典把词语和数字进行对应
  2. 不同的语出现的次数不尽相同,是否需要对高频或者低频词语进行过滤,以及总的词语数量是否需要进行限制
  3. 得到词典之后,如何把句子转化为数字序列,如何把数字序列转化为句子
  4. 不同子长度不相同,每个batch的句子如何构造成相同的长度(可以对短句子进行填充,填充特殊字符)
  5. 对于新出现的词语在词典中没有出现怎么办(可以使用特殊字符代理)
    思路分析:
  6. 对所有句了进行分词
  7. 词语存入字典,根据次数对词语进行过滤,并统计次数
  8. 实现文本转数字序列的方法
  9. 实现数字序列转文本方法
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.4 构建模型

在这里插入图片描述

2.5 模型的训练和评估

在这里插入图片描述在这里插入图片描述

三、循环神经网络

目标

  1. 能够说出结环神经网络的概念和作用
  2. 能够说出循环神经网络的类型和应用场景
  3. 能够说出LSTM的作用和原理
  4. 能够说出GRU的作用和原理

3.1 循环神经网络的介绍

为什么有了神经网络还需要有循环神经网络?
在普通的神经网络中,信息的传递是单向的,这种限制虽然使得网络变得更容易学习,但在一定程度上也减弱了神经网络模型的能力。特别是在很多现实任务中,网络的输出不仅和当前时刻的输入相关,也和具过去一段时间的输出相关。此外,普通网络难以处理时序数据,比如视频、语音、文本等,时序数据的长度一般显不固定的,而前馈神经网络要求输入和输出的维数都是固定的,不能任意改变,因此,当处理这一类和时序相关的问题时,就需要一种能力更强的悦型。
循环神经网络(Recurrent Neural Network,RNN)是一类具有短期记忆能力的神经网络。在循环神经网络中,神经元不但可以接受其它神经元的信息,也可以接受自身的信息,形成具有环路的网络结构。换句话说:神经元的输出可以在下一个时间步直接作用到自身(作为输入)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 LSTM和GRU

3.2.1 LSTM的基础介绍

假如现在有这样一个需求,根掘现有文本预测下一个词语,比如天上的云朵漂浮在_,通过问隔不远的位置就可以预测出来词语是天上,但是对于其他一些句子,可能需要被预测的词语在前100个词语之前,那么此时由于间隔非常大,随着间隔的增加可能会导致真实的预测值对结果的影响变的非常小,而无法非常好的进行预测(RNN中的长期依赖问题 (long-TermDependencies))
那么为了解决这个问题需要LSTM (Long Short-Term Memory网络)
LSTM是一种RNN特殊的类型,可以学习长期依赖信息。在很多问题上,LSTM都取得相当巨大的成功,并得到了广泛的应用。
在这里插入图片描述

3.2.2 LSTM的核心

在这里插入图片描述
在这里插入图片描述

3.2.3 逐步理解LSTM

3.2.3.1 遗忘门

在这里插入图片描述

3.2.3.2 输入门

在这里插入图片描述
在这里插入图片描述

3.2.3.3 输出门

在这里插入图片描述

3.2.4 GRU,LSTM的变形

在这里插入图片描述
LSTM内容参考地址: https://colah.github.ioposts/2015-08-Understanding:LSTMs/

3.3 双向LSTM

单向的 RNN,是根据前面的信息推出后面的,但有时候只看前面的词是不够的,可能需要预测的词语和后面的内容也相关,那么此时需要一种机制,能够让模型不仅能够从前往后的具有记忆,还需要从后往前需要记忆。此时双向LSTM就可以帮助我们解决这个问题
在这里插入图片描述

四、循环神经网络实现情感分类

目标

  1. 知道LSTM和GRU的使用方法及输入输出的格式
  2. 能够应用LSTM和GRU实现文本情感分类

4.1 Pytorch中LSTM和GRU模块使用

4.1.1 LSTM介绍

在这里插入图片描述
在这里插入图片描述

4.1.2 LSTM使用示例

假设数掘输入为 input,形状是[10,20],假设embedding的形状是[100,30]
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.1.2 LSTM和GRU的使用注意点

在这里插入图片描述

4.2 使用LSTM完成文本情感分类

在前面,我们使用了word embedding去实现了toy级别的文本情感分类,那么现在我们在这个模型中添加上LSTM层,观察分类效果。
为了达到更好的效果,对之前的模型做如下修改

  1. MAX_LEN = 200
  2. 构建dataset的过程,把数据转化为2分类的问题,pos为1,neg为0,否则25000个样本完成10个类别的划分数据量是不够的
  3. 在实例化LSTM的时候,使用dropout=0.5,在model.eval0的过程中,dropout自动会为0

五、Pythorch中的序列化容器

目标

  1. 知道梯度消失和梯度爆炸的原理和解决方法
  2. 能够使用nn.sequentia1完成模型的搭建
  3. 知道nn.BatchNormld的使用方法
  4. 知道nn.Dropout 的使用方法

5.1 梯度消失和梯度爆炸

在使用pytorch中的序列化 容器之前,我们先来了解一下常见的梯度消失和梯度海炸的问题

5.1.1 梯度消失

假设我们有四层极简神经网络:每层只有一个神经元
在这里插入图片描述
在这里插入图片描述

5.1.2 梯度爆炸

在这里插入图片描述

5.1.3 解决梯度消失或者梯度爆炸的经验

在这里插入图片描述

5.2 nn.Sequential

在这里插入图片描述
在这里插入图片描述

5.3 nn.BatchNormld

batch normalization 翻泽成中文就是批规范化,即在每个batch训练的过程中,对参数进行归一化的处理,从而达到加快训练速度的效果。
以sigmoid激活函数为例,他在反向传摇的过程中,在值为0,1的时候,梯度接近0,导致参数被更新的幅度很小,训练速度慢。但是如果对数掘进行归一化之后,就会尽可能的把数据拉倒[0-1]的范围,从而让参数更新的幅度变大,提高训练的速度。
batchNorm一般会放到激活函数之后,即对输入进行激活处理之后再进入batchNorm
在这里插入图片描述

5.4 nn.Dropout

在这里插入图片描述

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

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

相关文章

【Android App】物联网中查看手机支持的传感器及实现摇一摇功能-加速度传感器(附源码和演示 超详细)

需要源码请点赞关注收藏后评论区留言~~~ 一、传感器的种类 传感器Sensor是一系列感应器的总称,是Android设备用来感知周围环境和运动信息的工具。 因为具体的感应信息依赖于相关硬件,所以虽然Android定义了众多感应器,但是并非每部手机都能支…

JZ-7Y-15 AC220V【静态中间继电器】

系列型号: JZ-7Y-15静态中间继电器; JZ-7J-15静态中间继电器; JZ-7L-15静态中间继电器; JZ-7D-15静态中间继电器; JZ-7Y-16静态中间继电器; JZ-7J-16静态中间继电器; JZ-7L-16静态中间继电器&am…

【Redis-07】Redis哨兵机制Sentinel的实现原理

Sentinel是Redis高可用性的解决方案:由一个或者多个Sentinel实例组成的哨兵系统监视多个主从服务器,并实现主从服务器的故障转义。  Sentinel本质上只是一个运行在特殊模式下的Redis服务器,使用以下命令可以启动并初始化一个Sentinel实例&am…

Express 4 快速入门 - 基本路由

Express Express 中文网 本文仅用于学习记录,不存在任何商业用途,如侵删 文章目录Express4 快速入门 - 基本路由4.1 什么是路由4.2 定义简单路由4.2.1 在主页回复字符串4.2.2 响应/应用程序主页根路由 ( ) 上的 POST 请求:4.2.3 响应对/user路…

订单超时自动取消3种方案——我们用这种!

大家好,大家对电商购物应该都比较熟悉了,我们应该注意到,在下单之后,通常会有一个倒计时,如果超过支付时间,订单就会被自动取消。 下单 今天,我们来聊聊订单超时未支付自动取消的几种方案。 1…

【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【02】Nacos、Feign、Gateway

持续学习&持续更新中… 学习态度:守破离 【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【02】微服务的几大组件SpringCloud Alibaba 简介简介为什么使用版本选择Nacos作为注册中心Feign声明式远程调用Nacos作为配置中心基本使用核心概念命名空间&#xff1…

【Linux】进程通信 | 信号

本篇博客让我们一起来康康信号部分的内容 系统为CentOS7.6,完整代码见 Gitee 文章目录1.什么是信号1.1 何为异步?1.2 信号的种类1.3 信号产生1.4 信号动作2.系统接口2.1 signal2.1.1 前台进程和后台进程2.1.2 循环捕捉所有信号2.1.3 信号9/192.2 kill2.2.1 killall…

人工智能数学基础--概率与统计13:连续随机变量的标准正态分布

一、引言 在《人工智能数学基础–概率与统计12:连续随机变量的概率密度函数以及正态分布》介绍了连续随机变量概率分布及概率密度函数的概念,并介绍了连续随机变量一个重要的概率密度函数:正态分布的概率密度函数的定义以及推导、使用场景&a…

培养出最多亿万富翁的美国大学TOP10榜单

若论世界大学排名,除了U.S. News、QS、软科、泰晤士这四大权威排名外,另有一些依据不同指标的排名。下面知识人网小编就推荐这份福布斯榜单给出的美国大学排名,供感兴趣的读者围观。 福布斯去年发布了一份全球亿万富豪榜(World’s…

怎么看网站域名有没有收录 收录情况怎么样 网站收录查询

对于网站收录的概念,互联网中或者搜索引擎中已经有大量的相关定义。网站收录,指的是爬虫爬取了网页,并将页面内容数据放入搜索引擎数据库中这一结果。 怎么看网站域名有没有收录?录情况怎么样? 用站长工具查询网站收录的操作步骤&#xff1…

[TIST 2022]No Free Lunch Theorem for Security and Utility in Federated Learning

联邦学习中的安全性和实用性没有免费午餐定理 No Free Lunch Theorem for Security and Utility in Federated Learning 目录摘要简介2 相关文献2.1 隐私测量2.2 联邦学习2.2.1 FL 中的威胁模型。2.2.2 FL 中的保护机制。2.3 隐私-实用权衡3 一般设置和框架3.1 符号3.2 一般设置…

前端如何实现网页变灰功能的?

备注:本文大量摘取前端充电宝公众号相关文章,大家感兴趣可以关注该公众号进行阅读学习 目录 1.引入 2.页面灰色实现方法 3.filter其他属性 A.blur():模糊 B.brightness():亮度 C.contrast():对比度 C.opacity()…

unity---Mesh网格编程(六)

目录 1.模型切割 2.代码 1.模型切割 如图,对3D模型的Mesh网格进行切割,会经过若干个三角面。而切割后,将会产生新的面来组成左右两边的物体。 要记录每个顶点与顶点下标,新的面要顺时针绘制, 2.代码 using System.…

docker+nginx 安装部署修改资源目录配置文件和容器端口信息

查看docker镜像 可以先查看docker下是否存在nginx镜像,使用如下这些命令查看: docker images: 列出所有镜像。docker images nginx: 列出所有nginx镜像,不同版本等等。docker search nginx: 搜索查看所有nginx镜像信息。 拉取安装nginx镜像…

Java8 函数式编程【基础篇】

Java 8是Java在保持向后兼容的前提下首次迈出重要一步,相比之前,不再是只对类库的改良,在编写复杂的集合处理、并行化执行、代码简洁度等方面都有颠覆性的提升。本文将探索和理解函数式编程的含义,以及它在Java 8中的实现。 一、…

RESTful API是什么?看完你整个人都通透了

要弄清楚什么是RESTful API,首先要弄清楚什么是REST? 01 REST REpresentational State Transfer,英语的直译就是“表现层状态转移”。如果看这个概念,估计没几个人能明白是什么意思。那下面就让我来用一句话解释一下什么是RESTf…

低代码搭建质量管理解决方案,为企业管理提速降本

市场竞争的越来越卷,越来越多的制造企业认识到质量管理的重要性。尤其随着全球经济化与信息化的到来,质量管理已经成为企业管理的关键环节。然而与国际上具有先进技术和管理水平的企业相比,我国企业的质量管理较为薄弱,存在着质量…

【MATLAB】羽状图

目录 羽状图 羽状图 h0figure(toolbar,none,...position,[200 150 450 350],...name,实例28);subplot(2,1,1)alpha90:-10:0;rones(size(alpha));malpha*pi/180;nr*10;[u,v]pol2cart(m,n);feather(u,v)title(羽状图)axis([0 20 0 10])subplot(2,1,2)t0:0.5:10;x0.05i;yexp(-x*t…

R语言解释生存分析中危险率和风险率的变化

危险率函数 让我们模拟R中的一些数据&#xff1a; n < - 10000 h < - 0.5 t < - -log&#xff08;runif&#xff08;n&#xff09;&#xff09;/ h 该代码模拟了危险函数的存活时间&#xff0c;即常数。 视频&#xff1a;R语言生存分析原理与晚期肺癌患者分析案…

Ajax学习:jQuery发送ajax请求 通用方法$.ajax

app.all(/jQuery,(requset,response)>{response.setHeader(Access-Control-Allow-Origin,*);const data{name:张三};let strJSON.stringify(data);//需要转换称为json 否则传递的任然是对象response.send(str);//3s之后返回给客户端 }) $(button).eq(2).click(function() {/…