深入解析序列模型:全面阐释 RNN、LSTM 与 Seq2Seq 的秘密

2023-11-21 00:44

本文主要是介绍深入解析序列模型:全面阐释 RNN、LSTM 与 Seq2Seq 的秘密,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

探索序列建模的基础知识和应用。

简介

序列建模是许多领域的一个重要问题,包括自然语言处理 (NLP)、语音识别和语音合成、时间序列预测、音乐生成和「生物信息学」。所有这些任务的共同点是它们需要坚持。接下来的事情的预测是基于历史的。例如,在“哈桑以前踢足球,而且他踢得非常好”的序列中。只有将“哈桑”的信息推进到该特定点,才能对“他”进行预测。因此,您需要某种历史记录块来存储以前的信息并将其用于进一步的预测。传统的人工神经网络在这方面失败了,因为它们无法携带先前的信息。这就催生了一种名为“循环神经网络(RNN)”的新架构。

循环神经网络

循环神经网络是一种深度学习神经网络,它会记住输入序列,将其存储在记忆状态中,并预测未来的单词/句子。它们中有循环,允许信息持续存在。

alt

上面显示的单层 RNN 具有输入 x 和输出 y,以及隐藏单元 h。该图的右侧部分以展开的方式显示了 RNN。考虑隐藏单元h(t)的情况;它接收两个输入。一个是x(t),另一个是h(t-1)。这样,信息就得以传承。

该 RNN 架构的修改版本可用于解决不同类型的序列问题。序列问题大致可分为以下几类:

alt

多对多架构可用于视频字幕和机器翻译。一对多用于图像字幕,多对一用于情感分析任务。这些只是这些修改后的架构的一些应用。

RNN 的缺点

  1. 梯度消失/爆炸:总损失是所有时间戳损失的总和。因此,在反向传播过程中,我们对权重求偏导数。应用链式法则,最终给出了一种形式,我们可以在其中计算相邻时间戳处隐藏状态的偏导数的乘积。由于这种乘法,我们的梯度可以呈指数级减小,并且参数的更新相当小。这就是梯度消失问题。当梯度呈指数增长时,参数更新不稳定且不可预测。这就是梯度爆炸问题。这两个问题都阻碍了 RNN 的训练。
  2. 长期依赖性:RNN 可以轻松地在小间隙中传递信息,但是当最后一个单词依赖于长句子的第一个单词时,RNN 会因间隙过大而失败。

为了克服上述问题,我们可以使用梯度裁剪、跳跃连接、权重初始化技术、梯度正则化和门控架构(如 LSTM 和 GRU)。

长短期记忆

LSTM 是一种深度学习神经网络,具有隐藏状态和细胞状态两种不同的状态。它具有三种不同类型的门,即输入门、遗忘门和输出门。这些门调节进出记忆单元的信息流,使 LSTM 能够根据需要选择性地记住或忘记信息。

alt

现在我将解释 LSTM 的工作原理。一个 LSTM 单元采用输入 x(t)、隐藏状态 h(t-1)、单元状态 c(t-1)。基于 h(t-1) 和 x(t),它首先决定使用遗忘门丢弃哪些信息。然后我们决定哪些新信息应该存储在单元状态中。我们通过使用输入门和输入节点找到了这一点。然后我们通过首先忘记然后添加新信息来更新单元状态 c(t-1)。最后,我们使用更新的单元状态 c(t)、输入 x(t)、隐藏状态 h(t) 和输出门来计算输出。

LSTM 面临过度拟合、内存限制和计算复杂性。建议对 LSTM 架构进行许多小的修改。一种架构是门控循环单元 (GRU):

alt

序列到序列

Seq2Seq 是一种特殊类型的序列建模,用于机器翻译、文本生成、摘要等。其架构的设计方式使其可以接受可变数量的输入并产生可变数量的输出。它有一个编码器和解码器。编码器和解码器都有一个循环神经网络。

alt

在上图中,您可以看到编码器在每个时间戳处获取一个输入标记,然后更新其隐藏状态。编码器从给定句子中捕获的所有信息都通过编码器的最后一个隐藏状态传递到解码器。最后一个隐藏状态称为上下文向量。它充当整个输入序列的摘要。解码器 RNN 获取编码器生成的上下文向量,并逐个生成输出序列令牌。在每个时间步,解码器接收先前的输出令牌(或初始时间步期间的开始令牌)及其隐藏状态。解码器的隐藏状态根据先前的隐藏状态和先前生成的令牌进行更新。解码器逐个生成输出序列标记,直到满足特定条件,例如达到最大长度或生成序列结束标记。

Seq2Seq的缺点

  1. 上下文压缩:来自输入序列的所有信息必须压缩到上下文向量的大小。因此,损失细粒度的细节。
  2. 短期记忆限制:他们努力从遥远的时间步骤捕获和保留信息,从而难以处理长序列和捕获长期依赖性。
  3. 偏见:在培训期间,经常使用称为“teacher forcing”的技术对SEQ2SEQ模型进行训练,在该技术中,将解码器与地面真相输出tokens一起提供为每个时间步骤的输入。但是,在推理或测试期间,该模型根据其自身的预测生成输出tokens。训练和推理之间的这种差异可能导致暴露偏见,从而导致模型在推断期间表现出色。

总结

考虑到以上所有因素,循环神经网络确实在序列建模方面做出了很大的改变。为了克服它的缺点,我们提出了 LSTM 和 GRU。但最具革命性的变化是注意力机制的出现。

本文由 mdnice 多平台发布

这篇关于深入解析序列模型:全面阐释 RNN、LSTM 与 Seq2Seq 的秘密的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/398622

相关文章

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

深入解析 Java Future 类及代码示例

《深入解析JavaFuture类及代码示例》JavaFuture是java.util.concurrent包中用于表示异步计算结果的核心接口,下面给大家介绍JavaFuture类及实例代码,感兴... 目录一、Future 类概述二、核心工作机制代码示例执行流程2. 状态机模型3. 核心方法解析行为总结:三

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别

springboot项目中使用JOSN解析库的方法

《springboot项目中使用JOSN解析库的方法》JSON,全程是JavaScriptObjectNotation,是一种轻量级的数据交换格式,本文给大家介绍springboot项目中使用JOSN... 目录一、jsON解析简介二、Spring Boot项目中使用JSON解析1、pom.XML文件引入依

Python中文件读取操作漏洞深度解析与防护指南

《Python中文件读取操作漏洞深度解析与防护指南》在Web应用开发中,文件操作是最基础也最危险的功能之一,这篇文章将全面剖析Python环境中常见的文件读取漏洞类型,成因及防护方案,感兴趣的小伙伴可... 目录引言一、静态资源处理中的路径穿越漏洞1.1 典型漏洞场景1.2 os.path.join()的陷

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

Mybatis Plus JSqlParser解析sql语句及JSqlParser安装步骤

《MybatisPlusJSqlParser解析sql语句及JSqlParser安装步骤》JSqlParser是一个用于解析SQL语句的Java库,它可以将SQL语句解析为一个Java对象树,允许... 目录【一】jsqlParser 是什么【二】JSqlParser 的安装步骤【三】使用场景【1】sql语

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结