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

news2025/2/27 7:10:43

目录

  • 一、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.coloradmin.cn/o/1810140.html

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

相关文章

《软件定义安全》之五:软件定义的安全架构

第5章 软件定义的安全架构 1.软件定义安全架构 安全控制平台&#xff0c;主要负责安全设备的资源池化管理、各类安全信息源的收集和分析、与客户业务系统对接&#xff0c;以及相应安全应用的策略解析和执行。 安全应用是根据特定的安全需求所开发的程序&#xff0c;它利用安全…

Mysql的InnoDB介绍

目录 show engines查看搜索殷勤&#xff0c;默认InnoDB。 Mysql为什么使用InnoDB作为默认存储引擎 InnoDB主要包括内存结构和磁盘结构 内存结构包含: 磁盘结构中包括: 为什么设计成内存结构和磁盘结构两部分 使用InnoDB存储引擎创建的表&#xff0c;对应的数据文件在哪里…

堆排序经典问题【TopK】

前言 在上文我们讲了堆排序的实现&#xff08;点此调整&#xff09;&#xff0c;我们先简单回顾一下。 在进行堆排序之前&#xff0c;需要建一个堆&#xff0c;由于排序是将堆顶数据与堆底交换&#xff0c;所以排升序建大堆&#xff0c;降序建小堆。 堆排序的代码 //向下调整…

Nginx+Tomcat负载均衡、动静分离群集方案

一、Tomcat简介 在现代 Web 服务架构中&#xff0c;Tomcat 和 Nginx 是两个至关重要的组件&#xff0c;负责处理用户请求并实现高性能的服务。本篇博客将深入探讨这些技术的原理和部署配置方法。 最初是由Sun的软件构架师詹姆斯邓肯戴维森开发。安装Tomcat后&#xff0c;安装…

一文细谈SNN的基本数学原理,LIF模型,STDP与STBP学习方法

首先本文是读完 如何看待第三代神经网络SNN&#xff1f;详解脉冲神经网络的架构原理、数据集和训练方法 原创-CSDN博客 一文通俗入门脉冲神经网络(SNN)第三代神经网络-CSDN博客 两篇文章的总结&#xff0c;文章仅用于学习。 本文主要讨论STDP和STBP方法。 我们都知道&…

Zynq学习笔记--AXI4-Stream到视频输出IP是如何工作的?

目录 1. 简介 2. 原理详解 2.1 示例工程 2.2 AXI4-Stream to Video Out 3. Master/Slave Timing Mode 3.1 Slave Timing Mode 3.2 Master Timing Mode 4. 总结 1. 简介 本文主要介绍了 AXI4-Stream 到视频输出 的内容。其中&#xff0c;示例工程展示了一个具体的设计&…

CSS id选择器

目录 任务描述 相关知识 id选择器 id选择器语法 类选择器与id选择器的区别 编程要求 任务描述 在本关中&#xff0c;你将通过id选择器的方式完成页面菜单栏样式布局&#xff0c;栏目导航等任务。 完成任务之后&#xff0c;基本页面效果如下&#xff1a; 动态效果如下&am…

瑞昱半导体AMB82 MINI SD卡加载模型RTSP视频流AI识别图像和声音分类

AMB82 MINI Arduino的方法迭代更新十分及时&#xff0c;github维护也十分频繁。最新推出的4.0.7版本开始支持SD卡加载模型。有的网友装了4.0.6版本是看不到摄像头和模型加载选项的。 用这个实例来呈现RTSP视频流AI识别图像&#xff0c;同时展示对声音进行分类效果。 SDK升级到…

XUbuntu24.04之制作ISO镜像启动盘(二百四十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

【数据结构与算法 经典例题】括号匹配问题

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《数据结构与算法 经典例题》C语言 期待您的关注 ​​ 目录 一、问题描述 二、解题思路 &#x1f343;破解之道 &#x1f343;…

基于大模型的360度全景图像生成技术:L-MAGIC

在数字技术的浪潮中,我们迎来了一项革命性的创新——L-MAGIC,一个能够基于一张普通照片和简单文字描述,快速生成360度全方位全景画面的系统。L-MAGIC不仅提供了沉浸式的视觉体验,还融合了多种素材和技术手段,让全景图像的生成变得更加丰富和真实。 技术亮点 1. 多角度视…

小熊家务帮day19-day21 订单模块2(取消订单,退款功能等)

目录 1 订单退款功能1.1 需求分析1.2 接口分析1.3 退款流程分析1.4 表结构设计1.5 取消未支付订单实现1.5.1 接口开发Controller层开发Service层开发 1.5.2 接口测试 1.5 取消已支付订单实现 1 订单退款功能 1.1 需求分析 用户下单成功可以取消订单&#xff0c;在订单的不同状…

【网络编程开发】11.IO模型 12.IO多路复用

11.IO模型 什么是IO: IO 是 Input/Output 的缩写&#xff0c;指的是输入和输出。在计算机当中&#xff0c;IO 操作通常指将数据从一个设备或文件中读取到计算机内存中&#xff0c;或将内存中的数据写入设备或文件中。这些设备可以包括硬盘驱动器、网卡、键盘、屏幕等。 通常用…

kettle_Hbase

kettle_Hbase ☀Hbase学习笔记 读取hdfs文件并将sal大于1000的数据保存到hbase中 前置说明&#xff1a; 1.需要配置HadoopConnect 将集群中的/usr/local/soft/hbase-1.4.6/conf/hbase-site.xml复制至Kettle中的 Kettle\pdi-ce-8.2.0.0-342\data-integration\plugins\pentah…

手机投屏到电脑时,手机提示连接失败

前言 注意&#xff0c;本方法建立在你已经通过其他帖子等解决了前置条件的情况下&#xff0c;手机提示连接失败情况下&#xff0c;包括但不限于关闭防火墙、安装无线投屏工具、手机和电脑连接在同一个WiFi频段下、关闭杀毒软件等。 具体操作方法 1、请进入设置 > 系统和…

前端 JS 经典:动态执行 JS

前言&#xff1a;怎么将字符串当代码执行。有 4 中方式实现 eval、setTimeout、创建 script 标签、new Function 1. eval 特点&#xff1a;同步执行&#xff0c;当前作用域 var name "yq"; function exec(string) {var name "yqcoder";eval(string); …

【Git】Windows下使用可视化工具Sourcetree

参考&#xff1a;[最全面] SourceTree使用教程详解(连接远程仓库&#xff0c;克隆&#xff0c;拉取&#xff0c;提交&#xff0c;推送&#xff0c;新建/切换/合并分支&#xff0c;冲突解决&#xff0c;提交PR) 1.Git工具–sourcetree 之前文章介绍过Linux系统中的Git工具&…

如何系统学习vue框架

前言 在软件开发的浩渺星海中&#xff0c;编程规范如同航海的罗盘&#xff0c;为我们指引方向&#xff0c;确保我们的代码之旅能够顺利、高效地到达目的地。无论是个人开发者还是大型团队&#xff0c;编程规范都是提升代码质量、保障项目成功不可或缺的一环。 因此&#xff0c…

Mysql 的分布式策略

1. 前言 MySQL 作为最最常用的数据库&#xff0c;了解 Mysql 的分布式策略对于掌握 MySQL 的高性能使用方法和更安全的储存方式有非常重要的作用。 它同时也是面试中最最常问的考点&#xff0c;我们这里就简单总结下 Mysq 的常用分布式策略。 2. 复制 复制主要有主主复制和…

数据挖掘丨轻松应用RapidMiner机器学习内置数据分析案例模板详解(上篇)

RapidMiner 案例模板 RapidMiner 机器学习平台提供了一个可视化的操作界面&#xff0c;允许用户通过拖放的方式构建数据分析流程。 RapidMiner目前内置了 13 种案例模板&#xff0c;这些模板是预定义的数据分析流程&#xff0c;可以帮助用户快速启动和执行常见的数据分析任务。…