《昇思25天学习打卡营第23天|RNN实现情感分类》

使用RNN进行情感分类:基于IMDB数据集的LSTM应用

引言

情感分析是自然语言处理(NLP)中的一个重要应用,广泛用于电影评论、社交媒体等文本数据的情感分类任务。本文将介绍如何使用递归神经网络(RNN)实现情感分类,重点讲解LSTM(长短期记忆网络)如何解决梯度消失问题,并以IMDB电影评论数据集为例。
实现如下的效果:

输入: This film is terrible
正确标签: Negative
预测标签: Negative

输入: This film is great
正确标签: Positive
预测标签: Positive

RNN简介

递归神经网络(RNN)是一种用于处理序列数据的神经网络,它通过隐藏状态(hidden state)将前一个时间步的信息传递到下一个时间步,从而捕捉序列中的依赖关系。尽管RNN在理论上可以处理任意长度的序列,但在实践中往往会遇到梯度消失和梯度爆炸问题,特别是在处理长序列时。

RNN(循环神经网络)
循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的神经网络。下图为RNN的一般结构:
请添加图片描述

图示左侧为一个RNN Cell循环,右侧为RNN的链式连接平铺。实际上不管是单个RNN Cell还是一个RNN网络,都只有一个Cell的参数,在不断进行循环计算中更新。

由于RNN的循环特性,和自然语言文本的序列特性(句子是由单词组成的序列)十分匹配,因此被大量应用于自然语言处理研究中。下图为RNN的结构拆解:

请添加图片描述

RNN单个Cell的结构简单,因此也造成了梯度消失(Gradient Vanishing)问题,具体表现为RNN网络在序列较长时,在序列尾部已经基本丢失了序列首部的信息。为了克服这一问题,LSTM(Long short-term memory)被提出,通过门控机制(Gating Mechanism)来控制信息流在每个循环步中的留存和丢弃。下图为LSTM的结构拆解:

请添加图片描述

本节我们选择LSTM变种而不是经典的RNN做特征提取,来规避梯度消失问题,并获得更好的模型效果。下面来看MindSpore中nn.LSTM对应的公式:

ℎ0:𝑡,(ℎ𝑡,𝑐𝑡)=LSTM(𝑥0:𝑡,(ℎ0,𝑐0))

这里nn.LSTM隐藏了整个循环神经网络在序列时间步(Time step)上的循环,送入输入序列、初始状态,即可获得每个时间步的隐状态(hidden state)拼接而成的矩阵,以及最后一个时间步对应的隐状态。我们使用最后的一个时间步的隐状态作为输入句子的编码特征,送入下一层。

LSTM如何解决梯度消失问题

LSTM是一种特殊的RNN结构,通过引入门控机制(gating mechanism),有效地缓解了梯度消失问题。LSTM的核心是其单元状态(cell state),以及三个门(输入门、遗忘门和输出门),分别用于控制信息的写入、保留和输出:

  1. 输入门:决定当前输入信息有多少被写入单元状态。
  2. 遗忘门:决定当前单元状态有多少被保留。
  3. 输出门:决定单元状态的哪一部分输出到隐藏状态。

这些门控机制使LSTM能够在较长时间跨度上保留和利用重要信息,避免梯度在反向传播过程中过早消失。

IMDB数据集

IMDB数据集是一个广泛用于情感分析任务的标准数据集,包含来自IMDB的25,000条电影评论,每条评论都被标记为正面或负面情感。

RNN与LSTM的应用原理

在情感分类任务中,我们将每条电影评论作为一个序列输入到LSTM模型中,模型会学习每个单词在序列中的位置和作用,从而根据整条评论的内容预测其情感标签。

具体步骤

  1. 数据预处理:将文本数据转化为数值表示,例如使用词嵌入(word embedding)将单词转化为向量。
  2. 模型构建:使用LSTM构建模型,将评论的向量序列输入到LSTM层,然后通过全连接层和BCEWithLogitsLoss函数输出情感分类结果。
  3. 训练模型:使用带标签的评论数据训练模型,调整模型参数以最小化分类误差。
  4. 预测与评估:使用训练好的模型对新评论进行情感预测,并评估模型的性能。

在这里插入图片描述

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

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

相关文章

使用IDEA编写lua脚本并运行

下载lua https://github.com/rjpcomputing/luaforwindows/releases 是否创建桌面快捷方式:我们的目标是使用IDEA编写lua脚本,所以不需要勾选。后面需要的话,可以到安装目录下手动创建快捷方式 环境变量自动配置 安装后会自动配置好环境变量…

基于Java的校园交友网站系统

你好,我是专注于计算机技术研究的学姐码农小野。如果你对校园交友网站系统的构建或者相关技术感兴趣,欢迎私信交流。 开发语言 Java 数据库 MySQL 技术 Java语言、SpringBoot框架、B/S结构 工具 MyEclipse、Navicat、Maven 系统展示 首页 个人…

Docker启动PostgreSql并设置时间与主机同步

在 Docker 中启动 PostgreSql 时,需要配置容器的时间与主机同步。可以通过在 Dockerfile 或者 Docker Compose 文件中设置容器的时区,或者使用宿主机的时间来同步容器的时间。这样可以确保容器中的 PostgreSql 与主机的时间保持一致,避免在使…

基于电鸿(电力鸿蒙)的边缘计算网关,支持定制

1 产品信息 边缘计算网关基于平头哥 TH1520 芯片,支持 OpenHarmony 小型系统,是 连接物联网设备和云平台的重要枢纽,可应用于城市基础设施,智能工厂,智能建筑,营业网点,运营 服务中心相关场…

网站及图片字体商用侵权怎么办

如果您的网站因为使用了商业字体而遭到举报,这可能意味着您未经授权就使用了受版权保护的字体,这构成了版权侵权。 boosstrap默认字体是否含商用字体? body {font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;font-size…

公司技术栈用到了RocketMQ,我对此块知识进行了回顾(初始RocketMQ)

前言 作为24届的校招生,不知道大伙儿们是否都已经到了工作岗位上。为了以后更方便的接触到公司的业务,我司为我们安排了将近一个月的实操。虽然不用敲代码,但是… 了解到我司使用到的技术栈,在空闲时间正好对RocketMQ这块技术做个…

金蝶云星空与金蝶云星空对接集成发货通知单查询打通库存状态转换单

金蝶云星空与金蝶云星空对接集成发货通知单查询打通库存状态转换单 数据源系统:金蝶云星空 金蝶K/3Cloud结合当今先进管理理论和数十万家国内客户最佳应用实践,面向事业部制、多地点、多工厂等运营协同与管控型企业及集团公司,提供一个通用的ERP服务平台…

在RK3568上如何烧录MAC?

这里我们用RKDevInfoWriteTool 1.1.4版本 下载地址:https://pan.baidu.com/s/1Y5uNhkyn7D_CjdT98GrlWA?pwdhm30 提 取 码:hm30 烧录过程: 1. 解压RKDevInfoWriteTool_Setup_V1.4_210527.7z 进入解压目录,双击运行RKDevInfo…

Nexus3 批量上传 jar 包、pom文件

Nexus3 Maven 私服搭建及各种使用 详见**Maven私服搭建及各种使用汇总2020** Maven 配置 Nexus 私服 在 Maven 项目中配置 Nexus 私服,需要在项目的 pom.xml 或 maven 的 settings.xml 文件中添加 Nexus 仓库的配置。 示例: 以下是一个项目的 pom.xml…

车载音视频App框架设计

简介 统一播放器提供媒体播放一致性的交互和视觉体验,减少各个媒体应用和场景独自开发的重复工作量,实现媒体播放链路的一致性,减少碎片化的Bug。本文面向应用开发者介绍如何快速接入媒体播放器。 主要功能: 新设计的统一播放U…

Facebook Dating:社交平台的约会新体验

随着社交媒体的普及和技术的发展,传统的社交方式正在经历革新,尤其是在约会这个领域。Facebook作为全球领先的社交平台,推出了Facebook Dating,旨在为用户提供一个全新的约会体验。本文将探讨Facebook Dating如何重新定义社交平台…

Gettler‘s Screep World 笔记 Ⅰ

夏促时候刚刚入坑,写个笔记叭~ 环境配置 参考 HoPGoldy 大佬的简书,先配置下开发环境 萌新去看大佬的详细教程,我这里比较简单,有前端基础的可以直接抄 VSCode 跳过 node 我配的是v18.18.2 换源 npm config set registry h…

层次分析法模型【清风数模学习笔记】

视频学习:【强烈推荐】清风:数学建模算法、编程和写作培训的视频课程以及Matlab等软件教学_哔哩哔哩_bilibili 适用于:评价类问题 评价目标 可选方案 评价的准则 如何确定评价标准 题目 文献搜索(知网) 网站搜索…

【C语言】动态内存管理(上)

文章目录 前言1.为什么要存在动态内存2. malloc和free2.1 malloc2.2 free2.3 使用实例(malloc和free) 3. calloc3.1 calloc例子 前言 本文开始将开始学习C语言中一个比较重要的知识点或者是操作——动态内存管理。由于本次的知识比较重要,为…

JDK8升级到JDK17,报错Error:java:错误:不支持的发行版本5

1 问题描述: 我原来用到是JDK8,后来重新安装了JDK17后,并更换了JAVA_HOME的配置,在CDM上面查看JAVA版本确认安装无误。 当我打开IDEA运行代码时,就报错java:错误:不支持的发行版本5,至始至终我都…

汽车免拆诊断案例 | 2017 款林肯大陆车发动机偶尔无法起动

故障现象 一辆2017款林肯大陆车,搭载2.0T发动机,累计行驶里程约为7.5万km。车主进厂反映,有时按下起动按钮,起动机不工作,发动机无法起动,组合仪表点亮正常;多次按下起动按钮,发动机…

笔记:Few-Shot Learning小样本分类问题 + 孪生网络 + 预训练与微调

内容摘自王老师的B站视频,大家还是尽量去看视频,老师讲的特别好,不到一小时的时间就缕清了小样本学习的基础知识点~Few-Shot Learning (1/3): 基本概念_哔哩哔哩_bilibili Few-Shot Learning(小样本分类) 假设现在每类…

【学习笔记】无人机系统(UAS)的连接、识别和跟踪(五)-无人机跟踪

目录 引言 5.3 无人机跟踪 5.3.1 无人机跟踪模型 5.3.2 无人机位置报告流程 5.3.3 无人机存在监测流程 引言 3GPP TS 23.256 技术规范,主要定义了3GPP系统对无人机(UAV)的连接性、身份识别、跟踪及A2X(Aircraft-to-Everyth…

<数据集>pcb板缺陷检测数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:693张 标注数量(xml文件个数):693 标注数量(txt文件个数):693 标注类别数:6 标注类别名称:[missing_hole, mouse_bite, open_circuit, short, spurious_copper, spur…

C++笔试强训7

文章目录 一、选择题1-5题6-10题 二、编程题题目一题目二 一、选择题 1-5题 基础知识,函数代码少,频繁调用的时候才适合定义内联函数。 故选C。 在C中,inline关键字是用来向编译器建议将函数体在每个调用点“内联展开”的。这意味着编译器会…