【初学人工智能原理】【13】LSTM网络:自然语言处理实践

news2024/11/16 12:43:53

前言

本文教程均来自b站【小白也能听懂的人工智能原理】,感兴趣的可自行到b站观看。

代码及工具箱

本专栏的代码和工具函数已经上传到GitHub:1571859588/xiaobai_AI: 零基础入门人工智能 (github.com),可以找到对应课程的代码

正文

上节课我们学习了如何使用词嵌入将句子转换为词向量序列。由于语言数据在时间上的关联性,我们需要一种能够处理这种关联性的神经网络。这节课,我们将探讨如何改造神经网络来实现这一点。
假设每个词都已经被转换为一个300维的词向量,我们现在要改造神经网络来更好地处理这些序列数据。上节课我们使用了全连接神经网络,将所有词向量平铺开,然后作为输入。但这种方法无法捕捉到语言在时间上的关联性。
为了处理这种时间上的关联性,我们通常使用循环神经网络(RNN)或者其变体,如长短期记忆网络(LSTM)和门控循环单元(GRU)。这些网络结构能够记住先前的输入,并在处理当前输入时考虑到这些信息,从而更好地理解和预测序列数据。
RNN通过引入隐藏状态来存储之前的信息,并在处理下一个词向量时将其考虑进去。LSTM和GRU是RNN的两种改进形式,它们能够更好地捕捉长序列数据中的长期依赖关系。
通过使用这些网络结构,我们可以更好地理解和处理语言数据,从而提高情感分类等任务的性能。接下来,我们将探讨如何在实际应用中使用这些网络结构。

RNN循环神经网络的结构

首先为了让改造过程的讲解简明一些,我们把网络结构图的画法做个简化,忽略具体的神经元之间的连线,用箭头表示数据的输入和输出,然后我们把这个句子中每个词向量分别命名为x1、x2、x3和x4。第一步先把这个句子的第一个词向量x1作为这个隐藏层的输入,直到输出a1,这时候还没完,还不到最后输出预测值的时候,我们把这个输出值a1保存起来。

第二步再拉出句子的第二个词,向量x2和这个第一个词向量输出的结果a1一起作为这一步的输入,得到本次的输出a2,继续保存这个a2。

第三步再拿出句子的第三个词向量x3,同样和上一次的输出a2一起作为本次的输入得到输出a3。

一直到最后一步:句子的最后一个词向量x4和a3一起输入得到输出a4,此时我们才让a4经过输出层得到最后的预测输出

这样一个句子,每个词对最后预测输出的影响就在每一次的保存并和下一步数据的共同作用中持续到了最后,这样序列中的数据就产生了循环的特点,所以我们把这样改造的神经网络称之为循环神经网络RNN。很简单吧,当然其中有一些细节可能比较繁琐一点,首先循环神经网络中的激活函数多采用<u>双曲正切函数tanh</u>,而不是relu。当然也可以使用relu,像keras这种编程框架中的循环神经网络默认使用的激活函数就是tanh。

然后循环神经网络中的第一步不像后面那样有上一个输出反送回来的数据一起作为输入,但为了保证每一步操作的统一性,我们一般也会手动添加一个共同的输入(a0),比如一个全0的向量。

最后是这个循环神经网络的结构图,我们这么画是为了让大家看到如何从一个普通的全连接层改造成为RNN结构,但是大家一般喜欢把输入x画在下面,最后的输出画在上面,中间的返送箭头画在侧边,这么做图的好处就是能够很方便的把网络在时间上逐步的行为在空间上展开,而展开后就能很清楚的展示出每个时间步骤上神经网络的工作流程

点击【初学人工智能原理】【13】LSTM网络:自然语言处理实践——古月居可查看全文

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

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

相关文章

虹科技术|全新Linux环境PCAN驱动程序发布!CAN/CAN FD通信体验全面升级!

全新8.17.0版本的PCAN-Linux驱动程序正式发布&#xff0c;专为CAN和CAN FD接口量身打造。无论是CAN 2.0 a/b还是CAN FD的PCAN硬件产品&#xff0c;都能在我们的新驱动下“驰骋自如”。想要体验字符模式设备驱动接口&#xff08;chardev&#xff09;的便捷&#xff0c;还是Socke…

Navicat Lite导入为SQL,然后到服务器的SQLServer Management 里执行时,报各种错误,是文件的Encoding不一致导致的解决

1、好多时候&#xff0c;本地的操作系统与服务器的操作系统不一致&#xff0c;有的时候也是历史原因&#xff0c;我们不得不用老旧的版本的数据库&#xff0c;比如 SQLServer 2008R2的数据库系统。 2、然后本地因为操作系统是win11的&#xff0c;导致这个SQLServer 2008R2根本…

【自动化测试】处理页面加载元素过慢以及页面中存在frame框架页问题

在自动化测试中&#xff0c;处理页面加载元素过慢以及页面中存在frame框架页等问题&#xff0c;需要采用一些特定的策略和技术来确保测试的顺利进行。下面我将分别针对这两个问题给出一些解决方案&#xff1a; 1. 处理页面加载元素过慢的问题 1.1 等待机制 显式等待&#xf…

如何在Mac上使用VMware配置Windows虚拟机

作者&#xff1a;CSDN-PleaSure乐事 欢迎大家阅读我的博客 希望大家喜欢 使用环境&#xff1a;VMware Fusion 目录​​​​​​​ 1.下载windows虚拟机arm文件 2.打开VMware并拖入刚刚下载完成的iso文件 3.导入完成 4.固件类型 5.选择加密 6.完成 7.默认安装 8.现在安装…

NC 反转字符串

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 写出一个程序…

《React Hooks:让你的组件更灵活》

前端开发中非常流行的React框架。React是一个用于构建用户界面的JavaScript库&#xff0c;尤其适用于构建复杂的单页应用。 React Hooks&#xff1a;让你的组件更灵活 React 是当今最受欢迎的前端 JavaScript 库之一&#xff0c;用于构建用户界面。自从 React 16.8 版本开始&a…

图表操作——图表保存为图片+多个图表批量保存为压缩包——js技能提升

使用场景&#xff1a; echarts图表&#xff1a;生成的柱状图/折线图/饼图等可以实现图表的导出&#xff0c;导出格式为一个图片。也可以支持多个图表同时导出为图片&#xff0c;以压缩包的形式下载下来。 下面介绍单个导出批量导出的具体用法&#xff1a; 1.单个导出功能——…

使用seamless-scroll-v3 实现无缝滚动,自动轮播平滑的滚动效果

安装&#xff1a;npm地址&#xff1a;https://www.npmjs.com/package/seamless-scroll-v3 yarn add seamless-scroll-v3# 或者使用 npm npm install seamless-scroll-v3# 或者使用 pnpm pnpm add seamless-scroll-v3 实现效果&#xff1a; template中的代码&#xff1a; <…

pmp证书为何会被骂?他真的就是个垃圾证书?

说是垃圾到不至于。 毕竟PMP证书今年被北京市列入急需紧缺专业人才人员名单&#xff01;同时可以在创新创业、社会保障、评价激励等方面得到优先支。 其次&#xff0c;证书&#xff0c;其内容可以夯实基础&#xff0c;理清一个项目从启动、执行到最后的收尾做ppt结案的整个流…

Leetcode Day13 双指针

392 判断一个str是不是另一个str的子序列(不用连续) class Solution:def isSubsequence(self, s: str, t: str) -> bool:if len(t) < len(s):return Falsel 0r 0while l < len(s):if s[l] t[r]:l 1r 1else:r 1if r > len(t):return l len(s)return True自己…

pdf.js如何支持base64的查看

1.pdf.js 作为一个查看在线阅读pdf的软件&#xff0c;常常被运用到前端开发中&#xff0c;但是如何让pdf支持base64的查看&#xff0c;这边就需要去进行修改一些代码了 这边我们就进行开发修改 首先去下载 https://mozilla.github.io/pdf.js/ 当然了&#xff0c;低版本的可以…

react-native框架下,集成字体并应用全局

一、存放字体文件 将自定义字体文件&#xff08;例如 .ttf 或 .otf 文件&#xff09;放入项目的 assets/fonts 目录中。如果没有这个目录&#xff0c;可以手动创建。 二、配置字体 在项目根目录下建一个文件&#xff1a;react-native.config.js&#xff0c;文件内容如下&…

数据类型6.2.1

c语言的变量要先定义&#xff0c;而且要用确定类型 c以后的语言 c jave更强调类型&#xff0c;对类型的检查更严格 JavaScript。Python。PHP不看重类型&#xff0c;甚至不需要事先定义 c语言的类型 整数 char &#xff0c; short&#xff0c; int…

【MATLAB源码-第257期】基于matlab的QPSK调制解调COSTAS环载波同步仿真,对比前后星座图,输出锁相环响应曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 QPSK&#xff08;Quadrature Phase Shift Keying&#xff0c;正交相移键控&#xff09;调制是一种常见的数字调制方式。它通过将比特数据映射到四个相位状态上来传输信息。每个符号代表两个比特的数据&#xff0c;因此与BPSK…

map和set(C++)

1.关联式容器 关联式容器&#xff1a;内部储存的是key或者k-v模型的数据 k-v模型&#xff1a;键值对 在STL中&#xff0c;键值对实际就是一个泛型的类&#xff0c;pair---->first(key) second(value) 分类&#xff1a;从底层数据结构上 红黑树结构 &#xff1a; …

单击视角复位按钮,即可看到整个地球【mars3d】

1.需要设置下初始默认视角&#xff0c;地图属性参数里面得 scene: { center: { 这个需要拿到一个参数&#xff0c;可以在示例里面随便抓一个想要的右键获取下 拿到之后再设置下&#xff0c;参考代码之后&#xff0c;就可以单击视角复位按钮&#xff0c;就回到可以看到整个地球…

19050 牛牛打气球

### 思路 1. **输入读取**&#xff1a; - 读取 n&#xff0c;a 和 b。 - 读取每个气球的坚韧度。 2. **计算最少释放次数**&#xff1a; - 使用二分查找来确定最少的释放次数。 - 每次释放武器时&#xff0c;选择一个气球多承受 a 点伤害&#xff0c;其他气球承受…

最简洁!四步完成C#——opencv环境配置

一.创建C#环境 二.右键点击管理NuGet 三.下载opencv环境 四.测试写入 using OpenCvSharp 不保存就完成了配置啦

Cycle inside Runner; building could produce unreliable results.

报错 Showing Recent Messages Cycle inside Runner; building could produce unreliable results. Cycle details: → Target Runner ○ That command depends on command in Target Runner: script phase “Thin Binary” ○ Target Runner has process command with outpu…

性能测试的基本概念

学习前的认知 我们在学习性能测试之前&#xff0c;需要有个新的认识&#xff1a;性能测试&#xff0c;不再是像功能测试一样单纯的找 Bug&#xff0c;而是去找性能指标 转变思维 在做功能测试、自动化测试的时候&#xff0c;我们基本都是依托界面进行测试&#xff0c;也称 GU…