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)
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

人类记忆优化算法:针对全局优化问题的记忆启发优化器

Human memory optimization algorithm: A memory-inspired optimizer for global optimization problems 24年 Expert Systems With Applications sci一区 原文链接: https://doi.org/10.1016/j.eswa.2023.121597 Zhu D, Wang S, Zhou C, et al. Human memory optimization alg…

【机器学习】GPT-4中的机器学习如何塑造人类与AI的新对话

&#x1f680;时空传送门 &#x1f50d;引言&#x1f4d5;GPT-4概述&#x1f339;机器学习在GPT-4中的应用&#x1f686;文本生成与摘要&#x1f388;文献综述与知识图谱构建&#x1f6b2;情感分析与文本分类&#x1f680;搜索引擎优化&#x1f4b4;智能客服与虚拟助手&#x1…

Web--CSS基础

文章目录 定义方式选择器文本字体背景边框元素展示格式内边距与外边距盒子模型位置浮动flex布局响应式布局 定义方式 行内样式表 直接定义在style属性中&#xff0c;作用于当前标签 <img src "/imges/logo.jpg" alt "" style "width 400"…

时钟影响ADC性能不仅仅是抖动

时钟影响ADC性能除了抖动&#xff0c;还有占空比。 在高速AD采样中&#xff0c;时钟占空比是非常重要的一个参数。时钟信号的上升沿控制ADC的采样&#xff0c;而下降沿控制着信号的保持&#xff0c;在一个周期内才可以完成量化输出&#xff0c;所以必须保持时钟的占空比为50%&…

自动化决策和业务流程类控制的系统前端UI设计开发

自动化决策和业务流程类控制的系统前端UI设计开发

NLP——电影评论情感分析

python-tensorflow2.0 numpy 1.19.1 tensorflow 2.0.0 导入库 数据加载 数据处理 构建模型 训练 评估 预测 1.基于2层dropout神经网络 2.基于LSTM的网络 #导入需要用到的库 import os import tarfile import urllib. request import tensorflow as tf import numpy a…

使用Python批量处理Excel的内容

正文共&#xff1a;1500 字 10 图&#xff0c;预估阅读时间&#xff1a;1 分钟 在前面的文章中&#xff08;如何使用Python提取Excel中固定单元格的内容&#xff09;&#xff0c;我们介绍了如何安装Python环境和PyCharm工具&#xff0c;还利用搭好的环境简单测试了一下ChatGPT提…

小程序名片怎么生成?AI名片生成器源码系统 为企业店铺创建自己的数字名片

在数字化时代&#xff0c;小程序名片已经成为企业店铺展示自身形象、推广产品和服务的重要工具。分享一个AI名片生成器源码系统春哥AI雷达智能名片小程序系统企业商业运营版&#xff0c;含完整代码包和详细的图文安装部署搭建教程&#xff0c;新手也能轻松使用&#xff0c;源码…

MySQL: 索引与事务

文章目录 1. 索引 (Index)1.1 概念1.2 作用1.3 使用场景1.4 索引的使用1.5 索引的使用案例 (不要轻易尝试)1.6 索引背后的数据结构1.7 重点总结 2.事务2.1 为什么要使用事务2.2 事务的概念2.3 事务的使用2.4 对事务的理解2.5 事务的基本特性 1. 索引 (Index) 1.1 概念 索引是…

Python Requests库详解

大家好&#xff0c;在现代网络开发中&#xff0c;与Web服务器进行通信是一项至关重要的任务。Python作为一种多才多艺的编程语言&#xff0c;提供了各种工具和库来简化这一过程。其中&#xff0c;Requests库作为Python中最受欢迎的HTTP库之一&#xff0c;为开发人员提供了简单而…

12-Gateway网关-网关作用介绍

12-Gateway网关-网关作用介绍 1.为什么需要网关&#xff1a; 网关功能&#xff1a; ​ 1.身份认证和权限校验 ​ 2.服务路由、负载均衡 ​ 3.请求限流 2.网关的技术实现&#xff1a; 在SpringCloud中网关的实现包括两种“ ​ gateway ​ zuul Zuul是基于Servlet的实…

node-mysql的批量插入

此前我批量插入都是用类似这样的命令&#xff1a; sqlcmdinsert into table(field1,field2,...) values ? indata[["f1v1","f2v1"],["f1v2","f2v2"],...] mysqlconn.query(sqlcmd,[indata],(err,res)>{...})但是感觉不太舒服&…

VueRouter3学习笔记

文章目录 1&#xff0c;入门案例2&#xff0c;一些细节高亮效果非当前路由会被销毁 3&#xff0c;嵌套路由4&#xff0c; 传递查询参数5&#xff0c;命名路由6&#xff0c;传递路径参数7&#xff0c;路径参数转props8&#xff0c;查询参数转props9&#xff0c;replace模式10&am…

Vue--》从零开始打造交互体验一流的电商平台(二)

今天开始使用 vue3 + ts 搭建一个电商项目平台,因为文章会将项目的每处代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的github上,大家可以自行去进行下载运行,希望本文章对有帮助的朋友们能多多关注本专栏,学习更多…

SAP Build 1-工作流表单开发

1. BTP SAP Build环境配置 1.1 启用试用账号 访问BTP trial&#xff0c;启用试用账号&#xff0c;没有的话注册一个即可 https://account.hanatrial.ondemand.com/trial/#/home/trial 注册完之后就会让选择区域&#xff0c;要选US的区域才有自动化相关的功能 然后就开始生成…

什么是Java?

什么是Java&#xff1f;java是什么&#xff1f;下面我们来总结一下。 java是什么&#xff1f; java是一个静态编程语言&#xff0c;具有强大的多线程特征&#xff0c;目前java不仅采用c语言的优点&#xff0c;还去掉了一些多继承指针&#xff0c;等复杂的概念&#xff0c;我们…

跟着大佬学RE(六)

findKey 嗯&#xff0c;就是一个窗口程序&#xff0c;没有输入&#xff0c;flag 应该就藏在程序里面 第一遍自己直接莽做&#xff0c;在string窗口&#xff0c;找到 flag{} 看到标红直接 nop 然后&#xff0c;然后就不知道怎么搞了 这串字符提示不能随便 nop &#xff0c;重新…

优设AI导航

1、优设AI导航 优设AI导航

13. UDP协议与RTP协议

UDP协议 UDP协议比较简单&#xff1a; UDP的长度是固定的&#xff0c;用总长度-UDP长度就是数据长度。 UDP是不保证他的有序性和可靠性的。对于音频和视频是这样是比较好的&#xff0c;因为这段丢了&#xff0c;我们可以从下一段在开始解码。 RTP RTP 协议概述 RTP&#x…

【前端】详解JavaScript事件代理(事件委托)

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