《深度学习进阶 自然语言处理》第七章:seq2seq介绍

news2025/1/12 12:03:53

文章目录

      • 7.1 seq2seq模型介绍
        • 7.1.1 seq2seq的原理
        • 7.1.2 时序数据转换简单举例
      • 7.2 seq2seq模型实现
      • 7.3 seq2seq模型改进
        • 7.3.1 反转输入数据(Reverse)
        • 7.3.2 偷窥(Peeky)
      • 7.4 seq2seq模型的应用
      • 7.5 总结


之前文章链接:

开篇介绍:《深度学习进阶 自然语言处理》书籍介绍
第一章:《深度学习进阶 自然语言处理》第一章:神经网络的复习
第二章:《深度学习进阶 自然语言处理》第二章:自然语言和单词的分布式表示
第三章:《深度学习进阶 自然语言处理》第三章:word2vec
第四章:《深度学习进阶 自然语言处理》第四章:Embedding层和负采样介绍
第五章:《深度学习进阶 自然语言处理》第五章:RNN通俗介绍
第六章:《深度学习进阶 自然语言处理》第六章:LSTM介绍
这个世界充满了时序数据。文本数据、音频数据和视频数据都是时序数据。另外,还存在许多需要将一种时序数据转换为另一种时序数据的任务, 比如机器翻译、语音识别等。其他的还有进行对话的聊天机器人应用、将源代码转为机器语言的编译器等。

像这样,世界上存在许多输入输出均为时序数据的任务。这一章我们会讨论将时序数据转换为其他时序数据的模型,即 seq2seq 。

seq2seq 是 “(from) sequence to sequence”(从时序到时序)的意思,即将一个时序数据转换为另一个时序数据。本章我们将看到,通过组合两个 RNN,可以轻松实现 seq2seq。seq2seq 可以应用于多个方向,比如机器翻译、聊天机器人和邮件自动回复等。

7.1 seq2seq模型介绍

7.1.1 seq2seq的原理

seq2seq 模型也称为 Encoder-Decoder 模型。顾名思义,这个模型有两个模块——Encoder(编码器)和 Decoder(解码器)。编码器对输入数据进行编码,解码器对被编码的数据进行解码。

现在,我们举一个具体的例子来说明 seq2seq 的机制。这里考虑将日语翻译为英语,如下图:

image-20220701145202859

以上就是 seq2seq 的全貌图。编码器和解码器协作,将一个时序数据转换为另一个时序数据。另外,在这些编码器和解码器内部可以使用 RNN。

下面我们来看一下细节。首先来看编码器,它的层结构如下图:

image-20220701145315827

由上图可以看出,编码器利用 RNN 将时序数据转换为隐藏状态 h。这里的RNN使用的是LSTM,不过也可以使用“简单RNN“或者 GRU等。另外,这里考虑的是将日语句子分割为单词进行输入的情况。

上图的编码器输出的向量h是 LSTM 层的最后一个隐藏状态,其中编码了翻译输入文本所需的信息。这里的重点是,LSTM 的隐藏状态 h是一个固定长度的向量。说到底,编码就是将任意长度的文本转换为一个固定长度的向量。

编码器将文本转换为固定长度的向量。那么,解码器是如何“处理〞这个编码好的向量,从而生成目标文本的呢?

解码器的结构如下图所示,LSTM层会接收向量h,然后预测输出内容。

image-20220701150053176

整体把编码器层和解码器层连接到一起,最终结果如下图所示:

image-20220701150236723

上图中,seq2seq 由两个 LSTM层构成,即编码器的 LSTM 和解码器的 LSTM。此时,LSTM层的隐藏状态是编码器和解码器的“桥梁”。在正向传播时,编码器的编码信息通过LSTM 层的隐藏状态传递给解码器;在反向传播时,解码器的梯度通过这个“桥梁”传递给编码器。

7.1.2 时序数据转换简单举例

接下来我们通过一个简单案例进一步理解seq2seq工作的过程。

首先说明一下案例中要处理的问题。我们将“加法”视为一个时序转换问题。具体来说,在 seq2seq 学习后,如果输人字符串 “57+ 5”,seq2seq 要能正确回答“62”。image-20220701150916325

7.2 seq2seq模型实现

seq2seq 是组合了两个 RNN 的神经网络。在模型实现中我们首先将这两个 RNN 实现为 Encoder 类和 Decoder 类,然后将这两个类组合起来,实现为 seq2seq 类。该部分代码将不在此处展示,感兴趣的读者可以去书中P291中查看。

Seq2seq 的学习(训俩)和基础神经网络的学习(训练)具有相同的流程。基础神经网络的学习流程如下:

1、从训练数据中选择一个 mini-batch
2、基于 min-batch 计算梯度
3、使用梯度更新权重

此处最终评价指标为:正确率(正确回答了多少问题)。具体来说,就是针对每个 epoch 对正确回答了测试数据中的多少问题进行统计。

对每个epoch进行统计,随着学习的积累,正确率稳步提高。本次的实验只进行了25次,最后的正确率约为 10%。从下图中的变化趋势可知,如果继续学习,正确率应该还会进一步上升。

image-20220701151958989不过,为了能更好地学习相同的问题(加法问题),这里我们暂停本次学习,在下一节中将会对 seq2seq 进行一些改进。

7.3 seq2seq模型改进

本节我们对上一节的 seq2seq 进行改进,以改进学习的进展。为了达成该目标,可以使用一些比较有前景的技术。本节我们展示其中的兩个方案, 并基于实验确认它们的效果。

7.3.1 反转输入数据(Reverse)

第一个改进方案是非常简单的技巧。反转输人数据的顺序,如下图所示:

image-20220701153014962

记录每个epoch训练结果,仅仅通过反转输入数据,学习的进展就得到了改善!在25个 epoch 时,正确率为 50% 左右。再次重复一遍,这里和上一次(图中的 baseline)的差异只是将数据反转了一下。仅仅这样,就产生了这么大的差异。当然,虽然反转数据的效果因任务而异,但是通常都会有好的结果。

image-20220701153054945

为什么反转数据后,学习进展变快,精度提高了呢?虽然理论上不是很清楚,但是直观上可以认为,反转数据后梯度的传播可以更平滑。

7.3.2 偷窥(Peeky)

接下来是 seq2seq 的第二个改进。在进入正题之前,我们再看一下编码器的作用。如前所述,编码器将输入语句转换为固定长度的向量h,这个h 集中了解码器所需的全部信息。也就是说,它是解码器唯一的值息源。但是,如下图所示,当前的 seq2seq 只有最开始时刻的 LSTM层利用了 h。我们能更加充分地利用这个h吗?

image-20220701153711559

为了达成该目标,seq2seq 的第二个改进方案就应运而生了。具体来说, 就是将这个集中了重要信息的编码器的输出h分配给解码器的其他层。我们的解码器可以考虑下图中的网络结构。

image-20220701153926696

加上了 Peeky 的 seq2seq 的结果大幅变好。刚过10个 epoch 时,正确率已经超过90%,最终的正确率接近 100%,实验结果如下图所示:

image-20220701154152253

7.4 seq2seq模型的应用

seq2seq 将某个时序数据转换为另一个时序数据,这个转换时序数据的框架可以应用在各种各样的任务中,比如以下几个例子:

  • 机器翻译:将“一种语言的文本”转换为“另一种语言的文本”

  • 自动摘要:“一个长文本”转换为“短摘要”

  • 问答系统:将“问题“转换为“答案”

  • 聊天机器人:将 “对方的发言” 转换为“本方的发言”的过程

  • 邮件自动回复:将“接收到的邮件文本〞转换为“回复文本”

  • 图像文本生成:把图像转换为文本的自动图像描述

像这样,seq2seq 可以用于处理成对的时序数据的问题。除了自然语言之外,也可以用于语音、视频等数据。有些乍一看不属于 seq2seq 的问题, 通过对输入输出数据进行预处理,也可以应用 seq2seq。

7.5 总结

本节中我们主要介绍了seq2seq模型,其是有编码器和解码器组成。同时还介绍了改进seq2seq的两个方案——Reverse和Peeky.

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

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

相关文章

MySQL Hash Join前世今生

GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。作者:nw MySQL Hash Join前世今生 因工作需要,对MySQL Hash Join的内部实现做了一些探索和实践&#x…

【Hack The Box】linux练习-- Mango

HTB 学习笔记 【Hack The Box】linux练习-- Mango 🔥系列专栏:Hack The Box 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年11月17日🌴 &#x1f36…

01 基于yum方式部署Kubernetes集群

文章目录1.实验环境准备2.部署单节点的etcd1.在192.168.221.133节点安装etcd服务2.修改etcd的配置文件3.启动etcd并设置开机自启动4.检查集群的健康状态5.操作etcd服务3. master 组件部署1.在192.168.221.133节点安装master服务2.配置apiserver组件3.配置master的组件4.启动服务…

m基于MIMO中继通信和非规则LDPC编译码的matlab仿真,其中波束形成为SVD,MMSE,中继包括AF,DF,CF

目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 即在非规则LDPC下,且源节点1个,中继一个,目标节点一个,天线也是1的情况对比三种中继协作协议的误码率。 做非规则LDPC码的以编码协作形…

computed计算方法不被调用的原因;只有在使用时才会被调用

目录 一、问题 二、解决方法 三、总结 一、问题 1.需求:根据组件外部一个变量的值来确定 组件内部的操作。组件外部可以更改filetime的值,filetime有值时这个界面可以操作,否则不可以操作。 我一想 用computed就可以了呀,动态…

Rockwell EDI 850 采购订单报文详解

罗克韦尔(Rockwell)自动化(中国)有限公司(NYSE: ROK)是全球最大的致力于工业自动化与信息化的公司,致力于帮助客户提高生产力,以及世界可持续发展。罗克韦尔自动化总部位于美国威斯康星州密尔沃基市,在全球80多个国家设…

超级明星们的人物化身 NFT 将来到 The Sandbox 元宇宙

超级明星队 NFT 将在 The Sandbox 的全球运动村体验中亮相! ​ The Sandbox 与 Web3 公司 Forj 达成合作,还获得了独特的 BAYC 无聊猿人物化身的授权。 NFTSTAR 在 The Sandbox 建造了新的体验,巴西足球明星内马尔(Neymar JR.&am…

高项 质量管理论文

三个过程 项目质量管理包括执行组织确定质量政策、目标与职责的各过程和活动,从而使项目满足其预定的需求。项目质量管理在项目环境内使用政策和程序,实施组织的质量管理体系;并以执行组织的名义,适当支持持续的过程改进活动。项目…

【408专项篇】C语言笔记-第五章(一维数组与字符数组)

第五章:一维数组与字符数组 第一节:一维数组 1. 数组的定义 C语言提供的数组,通过一个符号来访问多个元素。 特点: 具有相同的数据类型。使用过程中需要保留原始数据。 数组是构造数据类型。所谓数组,是指一组具…

深入理解Python生成器和yield

深入理解Python生成器和yield 我在《Python性能优化指南–让你的Python代码快x3倍的秘诀》中有提到,在处理大文件或大数据集时用生成器可以提高性能。很多朋友会问:“为什么用生成器就能提升性能呢?”。今天,我就带大家深入看一…

Web2 vs. Web3,社交工具的发展会有什么变化?

社交,是不同主体传递、反馈社会信息的主要方式之一。从古代的飞鸽传书、近代的书信往来,到现代大家手机里都必不可少的社交 APP,人们对于社交的需求和实现方式都在不断更新和变化。 当前,Web2 社交赛道已经非常成熟。为吸引更多流…

前端文件流相关

XMLHttpRequest // XMLHttpRequest对象用于与服务器交互 // XMLHttpRequest可以在不刷新页面的情况下请求特定URL, 获取数据 // XMLHttpRequest属性responseType是一个枚举字符串值, 用于指定响应中包含的数据类型 // 如果将 responseType的值设置为空字符串, 则使用 text 作为…

Linux网络编程基础

Linux网络编程基础一、基础概念的介绍1.1 网卡的介绍1.2 mac地址 六个字节 48位1.3 ip地址 32位 四个字节 ipv41.4 端口二、网络模型2.1 OSI七层模型2.2 TCP/IP模型2.3 协议2.4 网络通信过程2.4 arp协议2.5 网络设计模式一、基础概念的介绍 1.1 网卡的介绍 1.2 mac地址 六个字…

开源轻量堡垒机——Teleport的安装配置和使用

一、堡垒机简介 1.1、现状 目前随着信息化的发展,越来越多的企业开始有更多的服务器、业务资源,有更多样化的员工,拥有更多的账号;导致访问混乱化,越权访问难以规范;甚至恶意命令攻击事件(如删…

【数据结构】带头节点双向循环链表

目录 顺序表和链表的区别 带头双向循环链表分析 带头双向循环链表结构: 创建一个节点 哨兵位头节点 打印链表中的值 在pos前插入 删除pos位置的节点 尾插 尾删 头插: 头删 链表元素查找 总代码 List.h文件 List.c文件 test.c文件 顺序表和…

科技云报道:历经四年,RPA走向同质化?

科技云报道原创。 经过多年发展,全球RPA市场已经初具规模。 据Transparency Market Research研究预测,预计到2024年,全球RPA市场规模将达到50亿美元,实现61.3%的年复合增长率。 RPA在亚洲市场起步晚于欧美市场,但从2…

SpringCloud系列(二)Ribbon 负载均衡的原理及详细流程

关于负载均衡这个概念在上一篇文章中有所提到,在消费者远程调用之前有一个重要的环节就是负载均衡,那么为什么要进行负载均衡呢?其原理及实现流程如何?   其实 Ribbon 负载均衡可以认为是一种策略,也可以说是某种规则…

SpringBoot+Vue项目实现身体健康诊疗系统

文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript、Vue.js 、css3 开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库:MySQL 5.7/8.0 数据库管理工具:phpstudy/Navicat JD…

ajax尚硅谷笔记——跨域请求、axios发送ajax请求、jquery发送ajax请求

去恶补了ajax知识 一、ajax简介 1、ajax全称为Asynchronous JavaScript And XML,就是异步的JS 和XML 2、通过AJAX可以再浏览器中向服务器发送异步请求,最大的优势:无刷新获取数据 3、ajax不是新的编程语言,而是一种将现有的标准…

《Linux内核设计与实现》读书笔记

《Linux内核设计与实现》读书笔记第三章 进程管理第四章 进程调度第五章 系统调用第六章 内核数据结构第七章 中断和中断处理第八章 下半部和推后执行的工作第九章 内核同步介绍第十章 内核同步方法第十一章 定时器和时间管理第十二章 内存管理第十三章 虚拟文件系统第十四章 块…