探索序列到序列模型:了解编码器和解码器架构的强大功能

目录

一、说明

二、什么是顺序数据?

三、编码器解码器架构的高级概述:

3.1 编码器和解码器架构的简要概述:

3.2 训练机制:编码器和解码器架构中的前向和后向传播:

四、编码器解码器架构的改进:

4.1. 添加嵌入层:

4.2. 深度 LSTM 的使用:

4.3.反转输入:

五、后记


一、说明

        欢迎来到我们进入序列到序列模型世界的旅程!在本博客系列中,我们将深入探讨编码器和解码器架构的迷人领域,揭示它们在理解和生成顺序数据方面的巨大力量。从语言翻译到文本摘要,序列到序列模型通过无缝捕获序列数据中的依赖关系,彻底改变了各个领域。

二、什么是顺序数据?

        顺序数据是指以特定顺序或顺序出现的任何数据。这可能包括广泛的信息,例如时间序列数据、文本数据、音频信号,甚至基因序列。以下是一些示例:

  1. 文本数据:句子、段落或文档是顺序数据的示例。每个单词都以特定的顺序出现,并有助于文本的整体含义。
  2. 时间序列数据:股票价格、温度测量值或传感器读数随时间变化是顺序数据的示例。这些值按特定的时间顺序记录。
  3. 音频信号:录音或语音数据本质上是连续的。音频样本的序列表示声音的波形。

三、编码器解码器架构的高级概述:

        如果我们将编码器解码器架构视为机器翻译模型,那么编码器-解码器架构的功能如下:编码器逐个标记接收输入数据,处理每个元素以捕获其上下文信息。

        通过这个过程,它生成了一个全面的上下文向量。随后,解码器利用此上下文向量生成输出序列,例如翻译成另一种语言(例如印地语)。

3.1 编码器和解码器架构的简要概述:

        在编码器内部,我们通常使用 LSTM 或 GRU 单元而不是简单的 RNN,因为它们能够更好地捕获序列中的长程依赖关系,这要归功于它们能够缓解梯度消失问题并保持长期记忆。在下图中,我们在四个时间戳上展开 LSTM 单元。

编码器详细图

        例如,在 t=0 时,我们通过 LSTM 单元传递单词“Nice”,该单元生成隐藏状态和单元状态值。同样,在 t=1 时,传递“to”,在 t=2 时传递“meet”,在 t=3 时传递“you”。最后,LSTM 单元通过组合隐藏状态和单元状态来生成上下文向量。此过程封装了编码器的操作方式,从而有效地捕获输入序列的上下文信息。

        在解码器内部,我们还使用 LSTM 或 GRU 单元。最初,我们从编码器的最后一个时间戳中传递完全相同的隐藏状态 (ht) 和单元状态 (ct) 值。此外,我们还引入了一个特殊符号“<start>”,表示 LSTM 输出生成的开始。在下图中,当传递“<start>”时,LSTM 单元开始产生输出“आपसे”。

解码器详细示意图

        随后,在 t=1 时,该输出被反馈到 LSTM,生成“मिलकर”,并且此过程继续进行。例如,在 t=2 时,生成“अच्छा”,在 t=3 时生成“लगा”。最后,当 LSTM 遇到特殊符号“<end>”时,它结束了输出生成过程,从而产生机器翻译输出“आपसे मिलकर अच्छा लगा”。这封装了解码器的工作过程。

3.2 训练机制:编码器和解码器架构中的前向和后向传播:

        下图说明了编码器-解码器体系结构中的训练机制。首先,我们将数据集转换为启动训练所需的格式。

        现在,我们将第一句话“Think it”输入编码器。它遍历 LSTM 层,最终,编码器生成其上下文向量。然后,该向量伴随着一个特殊符号“<start>”,然后被转发到解码器。在解码器中,应用 softmax 函数来生成单词的概率。概率最高的单词成为解码器的输出。在下图中,在时间戳 t=0 时,解码器预测“लो”,而正确的输出应为“सोच”。随后,我们将正确的输出传递给下一个时间戳 t=1,而不管 softmax 函数生成的输出如何。这个过程一直持续到我们遇到特殊符号“<end>”,向解码器发出停止处理的信号。

        在完成第一句话的前向传播后,我们的下一步是计算损失函数。然后,我们调整梯度值,并相应地更新编码器和解码器的参数。此过程对数据集中的每个句子进行迭代,直到处理完所有句子。一旦完成,我们的训练就完成了,我们的模型也训练好了。

        训练完成后,我们进入预测阶段。在下图中,我将演示如何进行预测。与在训练过程中,正确的输出被传递到解码器部分的后续时间戳不同,在预测过程中,我们将一个时间戳的输出馈送到下一个时间戳,而不管其准确性如何。由于我们在预测过程中缺少标签,因此此迭代过程会一直持续到我们遇到特殊符号“<end>”,表示生成序列的完成。

        上图说明,即使模型犯了错误,它仍然可以实现高精度。尽管生成的输出中偶尔会出现错误,但模型的整体性能仍然令人满意。

四、编码器解码器架构的改进:

4.1. 添加嵌入层:

        嵌入层将输入标记转换为密集向量表示,使模型能够学习输入序列中单词或标记的有意义的表示。

        通过使用可训练的嵌入层并探索预训练词嵌入或上下文嵌入等技术,我们可以丰富输入表示,使模型能够更有效地捕获细微的语义和句法信息。此增强功能有助于更好地理解和生成顺序数据。

使用嵌入的编码器解码器架构的详细架构

4.2. 深度 LSTM 的使用:

        LSTM 是递归神经网络 (RNN) 变体,以其捕获序列数据中长程依赖关系的能力而闻名。深化 LSTM 层使模型能够学习输入和输出序列的分层表示,从而提高性能。

编码器解码器架构的详细架构,使用嵌入和深化 LSTM 来捕获复杂模式

        增加 LSTM 层的深度并结合残差连接或层归一化等技术有助于缓解梯度消失等问题,并促进更深层网络的训练。这些增强功能使模型能够学习数据中更复杂的模式和依赖关系,从而更好地生成和理解序列。

4.3.反转输入:

        在某些情况下,反转机器翻译中的输入序列(例如英语到印地语或英语到法语的转换)有助于捕获长期依赖关系和缓解梯度消失问题,从而提高模型性能。

        但是,其有效性可能因语言特征和数据集复杂性而异,并且可能无法在所有方案中始终如一地提高性能。必须进行仔细的评估和实验,以确定反转输入序列是否对特定任务和数据集有益。

        希望您现在已经了解了编码器解码器的概念。现在,如果你阅读了 Ilya Sutskever 的著名研究论文Sequence to Sequence Learning with Neural Networks,那么你肯定会很好地理解这篇论文的概念。下面我总结了论文的内容:

  1. 应用于翻译:该模型专注于将英语翻译成法语,展示了神经机器翻译中序列到序列学习的有效性。
  2. 特殊句尾符号: 数据集中的每个句子都以唯一的句子结尾符号 (“<EOS>”) 结尾,使模型能够识别序列的结尾。
  3. 数据: 该模型在1200万个句子的子集上进行了训练,其中包括3.48亿个法语单词和3.04亿个英语单词,这些单词来自一个公开可用的数据集。
  4. 词汇限制:为了管理计算复杂性,使用了两种语言的固定词汇表,英语有 160,000 个最常用的单词,法语有 80,000 个。不在这些词汇表中的单词被替换为特殊的“UNK”标记。
  5. 反转输入序列:在将输入的句子输入模型之前,将输入的句子颠倒过来,发现这显着提高了模型的学习效率,特别是对于较长的句子。
  6. 单词嵌入 :该模型使用 1000 维单词嵌入层来表示输入单词,为每个单词提供密集、有意义的表示。
  7. 架构细节 :输入(编码器)和输出(解码器)模型都有 4 层,每层包含 1000 个单元,展示了基于 LSTM 的深度架构。
  8. 输出层和训练:输出层采用 SoftMax 函数来生成最大词汇表的概率分布。该模型使用这些设置进行端到端训练。
  9. 性能 — BLEU 分数 :该模型的 BLEU 得分为 34.81,超过了基本文件统计机器翻译系统在同一数据集上的 33.30 分,标志着神经机器翻译的重大进步。

五、后记

        我相信这篇博客丰富了您对编码器解码器架构的理解。如果您发现此内容的价值,我邀请您保持联系以获取更有见地的帖子。非常感谢您的时间和兴趣。感谢您的阅读!

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

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

相关文章

一道session文件包含题

目录 环境说明 session文件包含getshell 审计源码 session包含 base64在session中的解码分析 题目&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1Q0BN08b8gWiVE4tOnirpTA?pwdcate 提取码&#xff1a;cate 环境说明 这里我用的是linux&#xff0c;也可以用p…

【论文阅读】-- DeepVisualInsight: 深度分类训练时空因果关系的时间旅行可视化

中文标题 摘要引言动机举例相关工作时间旅行可视化的属性符号定义邻居保护属性边界距离保持属性逆投影保持属性暂时保存属性 方法 δ \delta δ-边界估计(k)-BAVR综合体建设逆投影保持时间连续性 评估案例分析结论参考文献 摘要 了解深度学习模型的预测在训练过程中是如何形成…

[WTL/Win32]_[中级]_[MVP架构在实际项目中应用的地方]

场景 在开发Windows和macOS的界面软件时&#xff0c;Windows用的是WTL/Win32技术&#xff0c;而macOS用的是Cocoa技术。而两种技术的本地语言一个主打是C,另一个却是Object-c。界面软件的源码随着项目功能增多而增多&#xff0c;这就会给同步Windows和macOS的功能造成很大负担…

Linux-远程访问及控制

一、SSH远程管理 SSH&#xff08;Secure Shell&#xff09;是一种安全通道协议&#xff0c;主要用来实现字符界面的远程登录、远程复制等功能。SSH 协议对通信双方的数据传输进行了加密处理&#xff0c;其中包括用户登录时输入的用户口令。与早期的 Telent&#xff08;远程登录…

【Spine学习11】之 战士攻击动作 思路总结(手动调整贝塞尔曲线实现前快后慢)

拿到一份psd文件先观察检查一下图片顺序有没有问题&#xff0c; 重点看一下人物的腿部分层&#xff0c;&#xff08;如果是大小腿分开画的就网格可打可不打&#xff0c;如果是连在一起画的&#xff0c;那必须打网格&#xff09; 拿着剑的时候剑和手的层级有没有错位&#xff0c…

HCS-华为云Stack-容器网络

HCS-华为云Stack-容器网络 容器隧道overlay VPC网络

第〇篇:深入Docker的世界系列博客介绍

深入Docker的世界系列博客介绍 欢迎来到“深入Docker的世界”系列博客&#xff0c;这是一次旨在全面探索Docker容器化技术的冒险之旅。从基础原理到高级应用&#xff0c;再到实践案例分析&#xff0c;我们将深入挖掘Docker的每一个角落&#xff0c;帮助你不仅掌握这项技术的实…

FreeRtos-09事件组的使用

1. 事件组的理论讲解 事件组:就是通过一个整数的bit位来代表一个事件,几个事件的or和and的结果是输出 #define configUSE_16_BIT_TICKS 0 //configUSE_16_BIT_TICKS用1表示16位,用0表示32位 1.1 事件组适用于哪些场景 某个事件若干个事件中的某个事件若干个事件中的所有事…

第10章 文件和异常

第10章 文件和异常 10.1 从文件中读取数据10.1.1 读取整个文件10.1.2 文件路径10.1.3 逐行读取10.1.4 创建一个包含文件各行内容的列表10.1.5 使用文件的内容10.1.6 包含一百万位的大型文件10.1.7 圆周率值中包含你的生日吗 10.2 写入文件10.2.1 写入文件10.2.2 写入多行10.2.3…

MyBatisPlus基础学习

一、简介 二、集成MP 三、入门HelloWorld 四、条件构造器EntityWrapper 五、ActiveRecord(活动记录 ) 六、代码生成器 七、插件扩展 八、自定义全局操作 九、公共字段自动填充 十、Oracle主键Sequence 十一、Idea快速开发插件 十二、mybatis-plus实践及架构原理

C#聊天室客户端完整③

窗体 进入聊天室界面(panel里面,label,textbox,button): 聊天界面(flowLayoutPanel(聊天面板))&#xff1a; 文档大纲(panel设置顶层(登录界面),聊天界面在底层) 步骤&#xff1a;设置进入聊天室→输入聊天→右边自己发送的消息→左边别人发的消息 MyClient.cs(进入聊天室类) …

如何利用TikTok矩阵源码实现自动定时发布和高效多账号管理

在如今社交媒体的盛行下&#xff0c;TikTok已成为全球范围内最受欢迎的短视频平台之一。对于那些希望提高效率的内容创作者而言&#xff0c;手动发布和管理多个TikTok账号可能会是一项繁琐且耗时的任务。幸运的是&#xff0c;通过利用TikTok矩阵源码&#xff0c;我们可以实现自…

Linux C语言:字符串处理函数

一、字符串函数 1、C库中实现了很多字符串处理函数 #include <string.h> ① 求字符串长度的函数strlen② 字符串拷贝函数strcpy③ 字符串连接函数strcat④ 字符串比较函数strcmp 2、字符串长度函数strlen 格式&#xff1a;strlen(字符数组)功能&#xff1a;计算字符串…

【Python】已解决报错:AttributeError: module ‘json‘ has no attribute ‘loads‘解决办法

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 &#x1f913; 同时欢迎大家关注其他专栏&#xff0c;我将分享Web前后端开发、人工智能、机器学习、深…

1)Java项目笔记搭建系统梳理相关知识

目录 前言项目结构Java部分Spring整合部分SpringBoot整合部分 模块说明规划 小结javarabbitmqmybatisspring最后推荐几本工具书 前言 工作有年头了&#xff0c;学到了很多技术&#xff0c;收获了很多。但是对与工作相关的专业技能知识的掌握杂而乱&#xff0c;不够全面系统。因…

Web应用安全测试-综合利用(一)

Web应用安全测试-综合利用&#xff08;一&#xff09; 文章目录 Web应用安全测试-综合利用&#xff08;一&#xff09;1.跨站脚本攻击&#xff08;XSS&#xff09;漏洞描述测试方法GET方式跨站脚本Post方式跨站脚本 风险分析风险等级修复方案总体修复方式对于java进行的web业务…

21.FuturePromise

在异步处理时,经常用到两个接口Future 和 Promise。 说明:Netty中的Future与jdk中的Future同名,但是是两个接口,netty的Future继承了jdk的Future,而Promise又对Netty的Future进行了扩展。 JDK的Future只能同步等待任务结束(成功、失败)才能得到结果。FutureTask.get()方…

ROS中使用超声波传感器(附代码)

在ROS中使用超声波传感器通常涉及到订阅或发布sensor_msgs/Range类型的消息。下面是一个简单的示例&#xff0c;展示了如何使用C在ROS中编写一个超声波传感器的驱动程序。这个例子假设你有一个超声波传感器连接到了Arduino或者其他微控制器&#xff0c;并且该微控制器已经通过串…

SpringBoot三层架构

目录 一、传统方式 二、三层架构 三、代码拆分 1、dao层 2、service层 3、control层 四、运行结果 一、传统方式 上述代码存在一定的弊端&#xff0c;在进行软件设计和软件开发中提倡单一责任原则&#xff0c;使代码的可读性更强&#xff0c;复杂性更低&#xff0c;可扩展性…

QT day03

思维导图 QT设计 升级优化自己应用程序的登录界面。 要求&#xff1a; 1. qss实现 2. 需要有图层的叠加 &#xff08;QFrame&#xff09; 3. 设置纯净窗口后&#xff0c;有关闭等窗口功能。 4. 如果账号密码正确&#xff0c;则实现登录界面关闭&#xff0c;另一个应用界面…