NLP学习笔记(四) Seq2Seq基本介绍

news2025/1/23 21:17:31

大家好,我是半虹,这篇文章来讲序列到序列模型 (Sequence To Sequence, Seq2Seq)

本文写作思路如下:

从循环神经网络的应用场景引入,介绍循环神经网络作为编码器和解码器使用,最后是序列到序列模型


在之前的文章中,我们已经介绍过循环神经网络及其两个变体,长短期记忆网络和门控循环单元

这一系列模型是深度学习领域中处理时序数据的一种基础架构,在多种任务场景都有重要的应用


循环神经网络的第一个应用场景就是作为编码器使用,以编码时序数据

在深度学习时代,模型可以通过海量数据自动学习数据特征并得到数据在某个特征空间上的向量表示

这是深度学习中至关重要的一步,一个好的表示对后续的处理有非常大的帮助


举例来说,假设现在我们需要完成一个文本分类任务

首要的工作就是对文本编码得到其向量表示,然后在此基础上接一个分类模型做分类就好

如果在某个语义空间上,相同类别的文本向量能够聚集在一起,不同类别的文本向量能够分隔有距离

那么对于分类模型来说,很简单就可以区分不同类别的文本了


而循环神经网络正是对文本编码的一种常用方式,其按时间步展开的结构图如下所示

其中,对于时间步 t t t,输入为 X t X_{t} Xt,输出的隐状态为 H t H_{t} Ht

循环神经网络

每个时间步的隐状态可以看作是在该时间步的输入的向量表示,这个表示能够建模当前输入的上下文语义

在此基础上,如果我们再对每个隐状态做分类预测或回归预测,就可以完成多种下游任务,例如序列标注

编码每个输入

另外,最后一个时间步的隐状态可以看作是整个序列的表示,因为它包含了先前所有时间步的输入的信息

因此,我们对该隐状态做分类或回归预测后,就能完成一系列基于序列的任务,例如序列分类

编码整个序列

循环神经网络的第二个应用场景就是作为解码器使用,解码出时序数据

所谓解码,其实可以理解成一个自回归生成过程

简单来说,就是根据上一步数据生成下一步数据,从而逐步地生成一个完整的序列

当这个序列具体为文本时,就是我们熟知的语言模型,一个能续写文字的生成模型

语言模型

如上图所见,基于循环神经网络的语言模型除了会传递隐状态之外,还会将上一步输出作为下一步输入

这样,只要经过足够多的训练之后,语言模型就能根据用户的提示生成后续的文字

然而对于具体的任务来说,这样的续写仍然是不够的,因为生成的文字都是随机的,无法控制其生成的内容

我们更希望让模型生成的文字能满足某种给定的约束


下一个问题就是,这个约束要怎么接入到模型里面呢

首先要明确的是,我们通常会将约束表示成一个向量,并将该向量称为上下文向量 context vector \text{context vector} context vector

至于怎么将这个向量接入模型,那方法可以说得上是多种多样

最简单的方法就是用上下文向量初始化循环神经网络的隐状态

可控语言模型

给定约束之后,可以更好地保证模型生成的内容与给定的约束相关,可以更好地应用到下游任务

假如上下文向量是一段文本的向量表示,就可以完成一系列文本到文本的任务,例如文本摘要等

假如上下文向量是一张图像的向量表示,就可以完成一系列图像到文本的任务,例如图像描述等


至此,我们已经介绍了循环神经网络的两种应用场景,是时候请出今天的主角:序列到序列模型

序列到序列模型可以说是一种范式,所有输入是序列、输出是序列的模型都可以称为序列到序列模型

序列到序列模型最常用的一种架构是编码器到解码器 Encoder-Decoder \text{Encoder-Decoder} Encoder-Decoder

其工作过程分为两个步骤:

  1. 编码:用编码器将输入序列编码成上下文向量(注:循环神经网络可以作为编码器)
  2. 解码:用解码器将上下文向量解码成输出序列(注:循环神经网络可以作为解码器)

实际上就是我们之前所说的,循环神经网络作为编码器和循环神经网络作为解码器的联合应用啦

下面是一个基于循环神经网络的序列到序列模型示意图,其中 R 1 R_{1} R1  表示编码器, R 2 R_{2} R2  表示解码器

序列到序列

当然,训练一个好的编码器到解码器模型有很多技巧,例如 Teacher Forcing \text{Teacher Forcing} Teacher Forcing Beam Search \text{Beam Search} Beam Search 等等

由于篇幅原因,就不在这篇文章里细说,预计会在之后的实战文章中进行介绍,敬请期待


至此本文结束,要点总结如下:

循环神经网络可以作为编码器使用,以编码时序数据

循环神经网络可以作为解码器使用,解码出时序数据

将上述两种应用联合起来,就是序列到序列模型

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

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

相关文章

微信消息收发与微信内部emoji表情转义

微信消息收发与微信内部emoji表情转义 目录 微信内部emoji表情转义与消息收发 一、概述 二、常用标准emoji表情字符、微信内部转义符、unicode对照表 1、比如 2、微信聊天窗口emoji表情字符 2.1、PC端表情选择,01~03排: 2.2、PC端表情选择&#…

华为IMC培训——通信基础

目录 一、华为设备图标 二、数据的传递 三、专业术语 四、网络设备及相关知识 五、OSI七层模型 六、TCP和UDP数据报格式 七、TCP的三次握手 八、 TCP窗口滑动机制 一、华为设备图标 AP:相当于家用路由器一般配和AC使用。 AC和AP的区别_wangzhibo_csdn的博客…

创意被盗用,这3个加水印方法,让照片刻上我们专属印记

一般我们为了保护自己的图片不被别人盗用,都会选择在图片上刻上专属印记。那么便是加水印方法,它包含两种:文字水印和图片水印。想知道怎么给图片添加水印吗?其实有很多种法子可以做到,下面就由我来分享这3个简单好用的…

代码随想录刷题记录 day48 两个字符串的删除操作+编辑距离

代码随想录刷题记录 day48 两个字符串的删除操作编辑距离 583. 两个字符串的删除操作 思想 两个元素都能删除了,还是考虑第i-1个字符和第j-1个字符是不是相同的,不相同的话考虑三种情况,删除i-1;删除j-1,同时删除 1…

css实现鼠标禁用(鼠标滑过显示红色禁止符号)

css实现鼠标禁用(鼠标滑过显示红色禁止符号)创作背景css鼠标禁用创作背景 从本文开始,将会用三篇文章来一步一步实现vueantdts实战后台管理系统中table表格的不可控操作。中间会补充两篇css知识文章,方便后续功能的实现。实现表格…

非零基础自学Golang 第14章 反射 14.2 基本用法 14.2.2 获取类型的值 14.2.3 使用反射调用函数

非零基础自学Golang 文章目录非零基础自学Golang第14章 反射14.2 基本用法14.2.2 获取类型的值14.2.3 使用反射调用函数第14章 反射 14.2 基本用法 14.2.2 获取类型的值 Go语言使用reflect.TypeOf来获取类型信息,使用reflect.ValueOf来获取变量值的信息。 refle…

云原生|kubernetes|CKA真题解析-------(6-10题)

第六题: service配置 解析: 考察两个知识点: deployment控制器内的port命名 暴露一个pod内的端口到新建的服务内的 这里有一个需要注意的地方,没有告诉你deployment控制器在哪个namespace。假设这个front-end这个pod是在A这个…

前端CSS Flex布局8大重难点知识,收藏起来吧

2009年,W3C提出了一种新的方案—-Flex布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。 Flex布局将成为未来布局的首选方案。这也是学习前…

Spring之底层架构核心概念-BeanDefinition

目录1.什么是BeanDefinition?2.如何生成BeanDefinition?2.1. Component2.1. bean标签2.3. Bean注解2.4. AbstractBeanDefinition2.5. 利用BeanDefinition 读取器-解析类2.6. XmlBeanDefinitionReader - 解析 xml文件2.7. ClassPathBeanDefinitionScanner 扫描生成 …

2022年度回顾 | 技术篇:突破公链不可能三角的努力

2022年接近尾声,驻足回看行业这一年的跌宕起伏,无论是技术的突破,应用的创新,还是生态的兴衰,皆成为了行业发展的历史注脚。如往年一样,万向区块链于年末推出重磅年度回顾系列文章:《公链技术篇…

一款免费的开源的 Switch 模拟器,支持超过3200款游戏

一款免费的开源的 Switch 模拟器,支持超过3200款游戏。 Ryujinx是一个开源的任天堂Switch模拟器,由gdkchan创建,用C#编写。该模拟器旨在提供卓越的准确性和性能、用户友好的界面和一致的构建。它是从头开始编写的,于2017年9月开始…

深度学习——锚框(笔记)

1.锚框的解释 目标检测算法中,通常会在输入图像中采样大量区域,然后判断这些区域是否包含所感兴趣的目标,并调整区域边界从而更加准确的预测目标真实的边缘框。 ①一类目标检测算法是基于锚框的 ②提出多个框被称为锚框的区域(…

GIS开发入坑(三)--QGIS制作行政区划及背景图层

QGIS,功能强大的GIS工具,地理信息开发中的必备神器,今天以南京市为例制作行政区划并使用电子地图为数字底图进行呈现。 1.获取行政区划数据 阿里云的可视化平台提供了便捷的中国行政区划数据获取方式,数据层级最小到区县级。 htt…

游戏视频录制用什么软件?这2款软件,用过都说好

小编相信很多朋友在游戏中都有精彩的操作。有些朋友想和朋友分享他们在游戏中的精彩操作,但他们不知道有什么容易使用的免费游戏视频录制软件,可以记录他们在游戏中的亮眼表现。那么,哪个电脑游戏视频录制软件容易使用和免费呢?接…

【树莓派不吃灰】兄弟连篇⑤ 服务管理

目录1、服务分类2、rpm安装服务(旧版本系统)3、源码包安装(旧版本系统)❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2022-12-20 ❤️❤️ 本篇更新记录 2022-12-20 ❤️&#x1f3…

环境多介质逸度模型实践技术与典型案例【代码】应用

随着污染物在各种环境中的迁移和转化,多介质污染物模型日益受到关注。在各类多介质模型中,基于逸度概念的逸度模型由于运用范围广,建模数据要求较低而广受欢迎。 【原文链接】: 环境多介质逸度模型实践技术与典型案例【代码】应用…

《集体智慧编程》笔记(4 / 12):搜索与排名

由于书本未提供数据文件且提供的链接无法被链接且pysqlite安装失败,所以本章只是阅读学习。 文章目录搜索引擎的组成一个简单的爬虫程序使用urllib2爬虫程序的代码建立索引建立数据库Schema在网页中查找单词加入索引查询基于内容的排名归一化函数单词频度文档位置单…

JAVA面试(关于技术深耕方向和职业规划)

人的精力有限,制定清晰明确的技术发展方向,会使自己少走很多弯路。经过快10年的工作,我现在主要给自己在技术上定了这几个方向。 1、专注JAVA开发。 2、专注JAVA架构。 3、专注JAVA项目运维。 4、专注数字化业务项目。 5、专注JAVA项目的…

Springboot事件监听+@Async注解

文章目录一、不求甚解二、人云亦云三、刨根问底四、曲突徙薪一、不求甚解 在开发中经常可以利用Spring事件监听来实现观察者模式,进行一些非事务性的操作,如记录日志之类的。 Controller Controller中注入ApplicationEventPublisher,并利用…

内科大软件工程导论复习内容笔记

文章目录一、 概念(共60分,单选题、多选题)1. 软件是程序、数据、文档的集合。2. 软件的分类(按规模、性质分)3. 软件危机的表现、缓解软件危机的途径4. 软件工程方法学主要有两种:结构化的软件工程方法学_…