Seq2seq、编码器解码器神经网络

目录

  • 一、Seq2seq 简介
  • 二、编码器
  • 三、解码器
  • 四、编码器-解码器的训练

遇到看不明白的地方,欢迎在评论中留言呐,一起讨论,一起进步!
在这里插入图片描述
需掌握的前提知识: LSTM词嵌入
本文参考:【官方双语】编码、解码神经网络,一个视频讲清楚,seq2seq模型

一、Seq2seq 简介

Seq2seq(Sequence to Sequence)的作用是将一种序列转换为另一种序列,比如将英文句子翻译为中文句子,或者将一篇文章进行概括。
在这里插入图片描述
一种解决 Seq2seq 问题的方法是编码器-解码器模型。下面我们以英语句子翻译为西班牙句子为例来进行介绍。

二、编码器

首先先摆出编码器的作用:将输入的句子编码为上下文向量

我们知道不同的英语句子长度可能不同,我们需要让不同长度的句子作为输入;另外不同的中文句子长度也可能不同,因此我们还需要生成不同长度的句子作为输出。说到这里,我们会想到 LSTM,这个模型便可以处理具有可变长度的输入和输出。
在这里插入图片描述
现在,我们还需要把单词通过嵌入层转换为数字再塞入 LSTM 中。因为词汇中包含了单词和符号,我们将词汇表中的各个元素称作 tokens。各个 token 通过已经训练好的嵌入层便可以转换为数字词汇表。
在这里插入图片描述
我们将这个嵌入层放在 LSTM 的输入前面
在这里插入图片描述
从理论上来讲,这就是对输入的句子进行编码所需要的全部工作。然后在实践中,为了有更多的权重和偏差来让模型更加对数据适用,人们经常在输入中添加额外的 LSTM 单元

简单起见,我们在这里只添加了一个额外的 LSTM 单元。这意味着单词的嵌入值会用作两个不同 LSTM 单元的输入值,而这两个不同的 LSTM 单元有单独的权重和偏差集。
在这里插入图片描述
为了再添加更多的权重和偏差使模型更好,人们会添加额外的 LSTM 层

我们在这里再添加一层 LSTM 层。这意味着第一层 LSTM 单元的输出会用作第二层 LSTM 单元的输入。
在这里插入图片描述
最后我们初始化长期记忆和短期记忆之后,我们就完成了创建编码器的部分。本质上,编码器对输入的句子进行编码,形成长期记忆细胞状态)和短期记忆隐藏状态)的集合,即上下文向量(Context Vector)。
在这里插入图片描述

三、解码器

现在我们介绍解码器,它的作用是:解码上下文向量为输出句子

首先我们需要将长期记忆和短期记忆连接起来形成上下文向量,再切换到解码器中一组新的 LSTM,这个上下文向量用来初始化这个解码器的长期记忆和短期记忆。

像编码器一样,这组新的 LSTM 也有两层,每层有两个 LSTM 单元,但是这组 LSTM 有着自己独立的权重和偏差。
在这里插入图片描述
解码器需要将上下文向量进行解码,从而输出句子。像编码器一样,解码器第一层 LSTM 单元的输入来自嵌入层。现在,嵌入层创建了西班牙单词的嵌入值。

在这里插入图片描述

对比编码器和解码器的嵌入层,它们具有不同 tokens 作为输入,还具有不同的权重使的每个 token 的嵌入向量也有所不同。

在这里插入图片描述

解码器顶层的 LSTM 单元的长期记忆和短期记忆之后会作为全连接层(Full Connected Later)的输入,这个全连接层就是一个是基本的普通神经网络。全连接层的输出对应着西班牙词汇表中的每个 token,输入和输出之间通过权重和偏差进行联系。之后我们将输出通过 Softmax 函数,从而选出最后我们要输出的词。
在这里插入图片描述
解码器可以从最后一个 token 的嵌入值开始,也可以从第一个 token 的嵌入值开始。我们这里选择从 <EOS> 开始。

我们看到 Softmax 函数的输出是 Vamos,即 let's go 的西班牙翻译。目前为止翻译是正确的,但是解码器直到输出结尾 token 即 <EOS> 才会停止。

所以我们将 Vamos 插入到解码器的嵌入层进行下一轮操作,最后我们得到的输出是 <EOS>,到此为止我们就将英文句子 let's go 翻译为了正确的西班牙句子。
在这里插入图片描述
总结一下解码器:

  • 由编码两层 LSTM 单元创建的上下文向量用于初始化解码器中的 LSTM 单元
  • 解码器 LSTM 的输入来自以 <EOS> 开始的词嵌入层输出
  • 解码器的输入又将作为下一轮的输入,直到输出为 <EOS> 或者达到输出的最大长度
  • 通过将编码器和解码器解耦,输入和输出句子的长度可以不同(例如,上面我们将长度为 2 的英文句子翻译为了长度为 1 的西班牙句子)

四、编码器-解码器的训练

就像所有的神经网络一样,编码器-解码器中所有的权重和偏差都是通过反向传播进行训练的。但是在训练的时候有两个特别的地方:

  1. 在上面的解码器例子中,我们使用第一轮输出 Vamos 作为第二轮输入,但是在训练权重和偏差的时候,第二轮的输入不使用第一轮的预测值,而是使用已知的正确的 token。也就是说如果在训练的时候第一轮的输出是 y,这是一个错误的翻译,在第二轮我们仍然以正确的 Vamos 作为输入,而不是以第一轮预测输出 y 作为输入。
  2. 在上面的解码器例子中,我们需要等到输出为 EOS 才停止。但是在训练过程中,我们以正确翻译的长度为标准,比如训练时第二轮的输出是 y,但是正确的翻译已经到了 EOS ,因此我们会在这时停止下一轮的展开,尽管预测输出还没有到了 EOS 。这个现象被称为教师强迫(Teacher Forcing)
    在这里插入图片描述

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

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

相关文章

在Cisco Packet Tracer上配置NAT

目录 前言一、搭建网络拓扑1.1 配置PC机1.2 配置客户路由器1.3 配置ISP路由器 二、配置NAT2.1 在客户路由器中配置NAT2.2 测试是否配置成功 总结 前言 本篇文章是在了解NAT的原理基础上&#xff0c;通过使用Cisco Packet Tracer 网络模拟器实现模拟对NAT的配置&#xff0c;以加…

C语言学习系列:GCC编译器Windows版本MinGW-w64的安装教程

本文图文分享如何安装C语言编译器——MinGW-w64。 只要看到这篇文章&#xff0c;就可以按照文中步骤正确安装MinGW-w64并使用。 一、什么是 MinGW-w64 &#xff1f; 我们知道C语言是高级语言&#xff0c;必须编译为二进制文件&#xff0c;才能为计算机运行&#xff0c;MinGW…

二开版微交易系统

下载地址&#xff1a;二开版微交易系统

1035 插入与归并(测试点6)

solution 类型判断&#xff1a;插入排序中已排序的部分有序&#xff0c;未排序的和原数组元素相同&#xff1b;否则为归并排序测试点6&#xff1a;对于归并排序的子序列长度&#xff0c;不能简单视为前k个有序则子序列长度就是k 例如该测试用例的归并排序的子序列长度应该为2&…

2024海南省大数据教师培训-Hadoop集群部署

前言 本文将详细介绍Hadoop分布式计算框架的来源&#xff0c;架构和应用场景&#xff0c;并附上最详细的集群搭建教程&#xff0c;能更好的帮助各位老师和同学们迅速了解和部署Hadoop框架来进行生产力和学习方面的应用。 一、Hadoop介绍 Hadoop是一个开源的分布式计算框架&…

牛客java基础(一)

A 解析 : java源程序只允许一个public类存在 &#xff0c;且与文件名同名 ; D hashCode方法本质就是一个哈希函数&#xff0c;这是Object类的作者说明的。Object类的作者在注释的最后一段的括号中写道&#xff1a;将对象的地址值映射为integer类型的哈希值。但hashCode()并不…

SQL Chat:从SQL到SPEAKL的数据库操作新纪元

引言 SQL Chat是一款创新的、对话式的SQL客户端工具。 它采用自然语言处理技术&#xff0c;让你能够像与人交流一样&#xff0c;通过日常对话的形式对数据库执行查询、修改、创建及删除操作 极大地简化了数据库管理流程&#xff0c;提升了数据交互的直观性和效率。 在这个框…

【虚拟现实】一、AR与VR的基本原理

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 增强现实&#xff08;AR&#xff09;和虚拟现实&#xff08;VR&#xff09;技术已经从科幻小说走入现实&#xf…

UltraScale+系列模块化仪器,可以同时用作控制器、算法加速器和高速数字信号处理器

基于 XCZU7EG / XCZU4EG / XCZU2EG • 灵活的模块组合 • 易于嵌入的紧凑型外观结构 • 高性能的 ARM Cortex 处理器 • 成熟的 FPGA 可编程逻辑 &#xff0c;基于 IP 核的软件库 基于 Xilinx Zynq UltraScaleMPSoC 的 FPGA 技术&#xff0c;采用 Xilinx Zynq UltraScale&a…

Spring-Security(二)OAuth2认证详解(持续更新)

Spring Security & Oauth2系列&#xff1a; Spring Security&#xff08;一&#xff09; 源码分析及认证流程 Spring Security&#xff08;二&#xff09;OAuth2认证详解及自定义异常处理 文章目录 1、OAuth2.0 简介1.1 OAuth2.0 相关名词解释1.2 四种授权模式 1.3 、OAu…

接口(API)开发,测试工具-apifox

前言 为什么需要接口&#xff08;API&#xff09;? 因为不同的平台或系统可能使用不同的技术栈、编程语言或数据格式。API提供了一个标准化的方式&#xff0c;使得这些不同的系统可以相互交换数据和功能调用&#xff0c;实现互操作性 在开发日常的项目交互中&#xff0c;不…

内网穿透的方式有哪些——快解析的优势

外网穿透内网技术&#xff0c;即内网映射&#xff0c;是把目标本地内网地址和端口发布到互联网&#xff0c;是一种由内网开放到外网的权限操作。那么&#xff0c;内网穿透的方法有哪些呢&#xff1f;做映射外网的方法。需要结合自己本地网络环境和应用场景来实施。这里分享三种…

Python Excel 指定内容修改

需求描述 在处理Excel 自动化时,财务部门经常有一个繁琐的场景,需要读取分发的Excel文件内容复制到汇总Excel文件对应的单元格内,如下图所示: 这种需求可以延申为,财务同事制作一个模板,将模板发送给各员工,财务同事需收取邮件将员工填写的excel文件下载到本机,再类似…

[FreeRTOS 基础知识] 任务调度 与 链表

文章目录 任务并行的概念RTOS如何实现多任务调度&#xff1f; 任务并行的概念 在生活中&#xff0c;经常出现一心多用的情况。比如你需要一边吃饭一边手机回复信息&#xff0c;这里面就存在两个任务&#xff1a;任务一、吃饭。任务二、手机回复信息。 假如你无法一心多用&…

FreeRTOS实时系统 在任务中增加数组等相关操作 导致单片机起不来或者挂掉

在调试串口任务中增加如下代码&#xff0c;发现可以用keil进行仿真&#xff0c;但是烧录程序后&#xff0c;调试串口没有打印&#xff0c;状态灯也不闪烁&#xff0c;单片机完全起不来 博主就纳了闷了&#xff0c;究竟是什么原因&#xff0c;这段代码可是公司永流传的老代码了&…

平面设计神器CorelDRAW2021精简版,你值得拥有!

亲爱的设计师小伙伴们&#xff0c;今天我要为大家种草一款神奇的软件——CorelDRAW平面设计软件2021精简版&#xff01;&#x1f929;✨作为一名专业的图形设计师&#xff0c;我深知一个好工具对于我们的工作有多么重要。而这款软件简直就是我们设计师的救星&#xff01;&#…

【MySQL数据库】:MySQL索引特性

目录 索引的概念 磁盘 磁盘的基本特征 MySQL与磁盘交互的基本单位 索引的理解 建立测试表 理解单个Page 理解多个Page 页目录 单页情况 多页情况 索引的数据结构 聚簇索引 VS 非聚簇索引 索引操作 创建主键索引 创建唯一索引 创建普通索引 创建全文索引 查询…

每日一题——Python实现PAT乙级1099 性感素数(举一反三+思想解读+逐步优化)

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 专业点评 时间复杂度分析 空间复杂度分析 综合点评 我要更强 优化点 …

力扣每日一题130:被围绕的区域

题目 中等 相关标签 相关企业 给你一个 m x n 的矩阵 board &#xff0c;由若干字符 X 和 O &#xff0c;找到所有被 X 围绕的区域&#xff0c;并将这些区域里所有的 O 用 X 填充。 示例 1&#xff1a; 输入&#xff1a;board [["X","X","X"…

U盘文件系统结构损坏的应对与预防

在数字化时代&#xff0c;U盘作为便携式存储设备&#xff0c;其重要性不言而喻。然而&#xff0c;当U盘文件系统结构损坏时&#xff0c;我们可能会面临数据丢失的风险。本文将深入探讨U盘文件系统结构损坏的问题&#xff0c;分析其产生的原因&#xff0c;并给出相应的数据恢复方…