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

news2024/11/24 22:43:13

目录

一、说明

二、什么是顺序数据?

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

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.coloradmin.cn/o/1847050.html

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

相关文章

王老吉“杀疯啦”?传统品牌如何创新营销“破圈”而出

好像现在年轻人都不热衷喝凉茶更偏爱咖啡了&#xff0c;没关系&#xff0c;王老吉带着“冰中式”向你走来了。 四月底&#xff0c;王老吉和肯德基K咖啡联名&#xff0c;推出了王老吉风味的气泡美式。可能乍一听觉得奇奇怪怪&#xff0c;而后细想&#xff0c;凉茶味儿的咖啡&am…

QListWidget、QMenu、Action、customContextMenuRequested

QListWidget的初始化、清空、Append添加、Insert添加、删除item QListWidget的事件的使用 QToolBox的使用&#xff0c;每个Page可以添加其他控件 QToolBar使用代码添加QMenu,QMenu添加3个Action QToolButton绑定Action 布局 其中 QSplitter比较特殊&#xff0c; 允许在水平或垂…

S32K3 工具篇1:新手如何安装S32DS RTD4_0_0

S32K3 工具篇1&#xff1a;新手如何安装S32DS RTD4_0_0 一&#xff0c; 软件下载1.1 RTD 下载1.2 S32DS IDE 和 更新包 下载1.3 S32K3XX development 包下载 二&#xff0c; 软件安装2.1 安装S32DS IDE2.2 安装 IDE update&#xff0c;development&#xff0c;RTD 三&#xff0…

Python 修炼|人人编程手册|001 计算思维

在微信中阅读,关注公众号:CodeFit。 > 创作不易,如果你觉得这篇文章对您有帮助,请不要忘了 点赞、分享 和 关注,为我的 持续创作 提供 动力! 1. 计算思维 在我们正式开启 Python 修炼之旅前,先来了解一个关键的概念 —— 计算思维。 计算思维,其核心本质在于 抽象 …

python eval 函数和 json 对象的使用

注意&#xff1a; 1、python 不支持 switch 语句&#xff0c;所以多个条件判断分支的写法只能用 if 2、elif 对应 Java 中的 else if 3、python 编写的程序代码都是自上而下执行&#xff0c;除非代码控制&#xff0c;不然不会改变 4、需要注意代码层级&#xff0c;如果层级不对…

Mentor Xpedition怎么切换中英文界面

1、Mentor Xpedition的Layout界面&#xff0c;切换中英文的方法如下图&#xff1b; 切换英文设置&#xff0c;设置系统环境变量&#xff1a;MGC_PCB_LANGUAGEEnglish&#xff0c;重新打开软件即可切换成中文界面&#xff1b; 如果想要在切换成中文&#xff0c;把标量值改为Chi…

七连发吴谨言专访揭秘

七连发&#xff01;吴谨言专访揭秘&#xff0c;薛芳菲魅力再升级在娱乐圈的繁星中&#xff0c;总有那么一些独特的光芒&#xff0c;她们用才华和魅力照亮前行的道路。近日&#xff0c;备受瞩目的“六公主”平台连续发布了七条关于吴谨言的专访&#xff0c;引发了广大网友的热烈…

Java——访问修饰符

一、访问修饰符是什么 Java中的访问修饰符用于控制类、接口、构造函数、方法和数据成员&#xff08;字段&#xff09;的可见性和访问级别。 Java提供了四种访问修饰符&#xff1a; 访问修饰符同一类内同一包内不同包的子类不同包的非子类适用对象public可见可见可见可见类、…

猫头虎分享:IPython的使用技巧整理

&#x1f42f; 猫头虎分享&#xff1a;IPython的使用技巧整理 关于猫头虎 大家好&#xff0c;我是猫头虎&#xff0c;别名猫头虎博主&#xff0c;擅长的技术领域包括云原生、前端、后端、运维和AI。我的博客主要分享技术教程、bug解决思路、开发工具教程、前沿科技资讯、产品…

Pytorch Geometric(PyG)入门

PyG (PyTorch Geometric) 是建立在 PyTorch 基础上的一个库&#xff0c;用于轻松编写和训练图形神经网络 (GNN)&#xff0c;适用于与结构化数据相关的各种应用。官方文档 Install PyG PyG适用于python3.8-3.12 一般使用场景&#xff1a;pip install torch_geometric 或conda …

ERP系统品牌大比拼:哪款产品更适合您的企业?

ERP集成了企业的销售、采购、生产、财务等各个环节&#xff0c;实现了资源的优化配置和信息的实时共享。然而&#xff0c;面对市场上琳琅满目的ERP系统产品&#xff0c;许多企业却陷入了选择的困境。 “哪款ERP系统更适合我的企业呢&#xff1f;”这或许是每一位企业决策者心中…

对象reids

对象 redis并没有直接使用之前学的数据结构来实现键值对数据库&#xff0c;而是基于这些数据结构创建了一个对象系统 这个对象系统包含了字符串对象、列表对象、哈希对象、集合对象、有序集合对象这五种&#xff0c;每个对象都用到了至少一种之前的数据结构 redis可以在执行命…

变电站智能巡检机器人解决方案

我国拥有庞大的电网体系&#xff0c;变电站数量众多&#xff0c;且近年来快速增长。然而目前我国变电站巡检方式仍以人工为主&#xff0c;存在效率低下、监控不全面等问题。变电站通常是一个封闭的系统空间&#xff0c;设备种类繁多、占地面积广阔&#xff0c;这对巡检人员实时…

【变量与常量】

1.基本程序 容器用来存放物品 声明变量 num 是个用来装整数的变量 &#xff01; 一 个整数变量需要 4 个 byte 存储&#xff0c; 计算机 在内存里为你分配了 4 个 byte 。int num;在代码中&#xff0c;声明一个变量。 常用变量类型 存储不同类型的数据需要声明不同类型的变…

PyTorch+CNN进行猫狗识别项目

任务介绍 数据结构为&#xff1a; big_data ├── train │ └── cat │ └── XXX.jpg&#xff08;每个文件夹含若干张图像&#xff09; │ └── dog │ └── XXX.jpg&#xff08;每个文件夹含若干张图像&#xff09; ├─…

守护清远采矿安全:可燃气体报警器检定工作的必要性与实施

清远市地处广东省北部&#xff0c;矿产资源丰富&#xff0c;包括金属矿产、非金属矿产等多种类型。采矿行业作为清远的重要产业之一&#xff0c;对当地经济发展起到了积极的推动作用。 然而&#xff0c;随着采矿业的快速发展&#xff0c;安全问题也逐渐凸显出来&#xff0c;尤…

基于PaddleDetection的电路板瑕疵检测

文章目录 1. 数据集与框架介绍2. 任务详情3. Cascade R-CNN简介4. 数据分析各类别样本的数量真实框的宽高比真实框在原图的大小比例 5. 相关配置数据增强数据集路径和评估指标学习率和优化器配置预训练CascadeRCNN 的配置日志记录 6. 训练预测7. 参考链接 1. 数据集与框架介绍 …

【Sa-Token|3】Sa-Token集成到现有微服务详细介绍

一、系统架构调整 用户中心&#xff1a;保持现有的用户登录、注册接口不变。多个项目&#xff1a;前后端分离&#xff0c;保持现有逻辑不变。网关服务&#xff1a;新增或配置网关服务&#xff0c;处理所有请求并进行 Token 校验和转发。统一 Token 管理&#xff1a;通过 Sa-Tok…

VC++学习(5)——文本编程,插入符的初始化,图形插入符;文字始终在窗口;字符输入功能,回车换行,删除,左键定位;字体修改,字体平滑变色

目录 引出第五讲 文本编程新建项目输入线的初始化根据字体大小定义插入符大小创建图形插入符文字始终保存在窗口中CString类通过字符串资源 路径层字符输入的功能键盘输入消息鼠标左键消息保存点击位置的坐标 输入回车键的处理删除文字的实现 字符输入功能代码字体的修改模拟卡…

js如何使得四舍五入的百分比之和为100%

在JavaScript中&#xff0c;如果你想要确保一组四舍五入后的百分比之和严格等于100%&#xff0c;那么你不能直接对每个百分比进行四舍五入&#xff0c;因为四舍五入会引入误差。但是&#xff0c;你可以采用一种策略&#xff0c;即先对所有的百分比进行常规的四舍五入&#xff0…