当前位置: 首页 > article >正文

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

前言

本文教程均来自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.kler.cn/a/287805.html

相关文章:

  • 结构化需求分析与设计
  • 【第三课】Rust变量与数据类型(二)
  • 数据结构(初阶4)---循环队列详解
  • python面向对象基础入门
  • 108. UE5 GAS RPG 实现地图名称更新和加载关卡
  • Unity读取Json
  • 【系统架构设计师-2013年】综合知识-答案及详解
  • 使用Vuetify构建优雅的Vue.js应用
  • 3134. 找出唯一性数组的中位数(24.8.27)
  • 基于 OpenCV 的数字图像处理实验平台设计
  • MyBatis 源码解析:Configuration 对象的生成与初始化
  • 三台机器,第一台机器可以ssh到第二台机器,第二台机器可以ssh到第三台机器,请问第一台机器上怎么通过ssh 直接从第三台机器scp文件到第一台机器?
  • 树数据结构(Tree Data Structures)的全面指南:深度解析、算法实战与应用案例
  • 【WPF】WPF学习之【一】基础知识
  • 62.一个机器人位于一个 m x n 网格的左上角 。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角。实现一个算法计算路径的数量
  • 计算机毕业设计python停车场车位推荐管理系统y4uzk
  • “JavaScript里的多线程“WebWorker
  • scikit-learn:一个强大的机器学习Python库
  • APO选择ClickHouse存储Trace的考量
  • 代理IP的API接口:轻松实现自动化代理切换
  • 《软件工程导论》(第6版)第3章 需求分析 复习笔记
  • 同样128个内核,AMD霄龙9755性能翻倍:Zen 5架构下的性能飞跃
  • 【嵌入式学习笔记】STM32中断配置及相关知识
  • Go语言学习(一)
  • SpringBoot链路追踪②:如何集成?
  • Fabric.js中fabric.Text的深入解析