首页 > 其他分享 >Encoder-Decoder模型框架

Encoder-Decoder模型框架

时间:2023-02-24 22:12:58浏览次数:42  
标签:编码器 框架 Encoder 解码器 Decoder 序列 向量

Seq2Seq(Sequence-to-Sequence,序列到序列)问题是一类特殊的序列建模问题,其中的Encoder和Decoder都是一个序列。

Encoder-Decoder模型框架(编码器-解码器模型框架)最早在2014年提出,当时是为了解决机器翻译的问题(机器翻译就是一个典型的Seq2Seq问题)而构建的,随后变成了深度学习中常见的模型框架。

Encoder-Decoder模型的结构包括一个编码器和一个解码器,编码器会先对输入的序列进行处理,然后将处理后的向量发送给解码器,转化成我们想要的输出。

举例来说,如果使用Encoder-Decoder模型将中文翻译成英文,其过程就是输入一个中文句子(欢迎来北京),编码成包含一系列数值的向量发送给解码器,再用解码器将向量转化成对应的英文句子(welcome to BeiJing),翻译也就完成了,如下图。

Encoder-Decoder模型输出的长度跟输入的不一致,如上图所示,输入的中文长度为5,输出的英文长度为3。

整个过程如下:

  • 在Encoder中,“欢迎/来/北京”这些词转换成词向量,Encoder负责将输入序列压缩成指定长度的向量,这个向量就可以看成是这个序列的语义,这个过程称为编码。

  • 如果是预测第一个词的话,此时输入的词向量为“_GO”的词向量,标志着解码的开始,直到解码解出“_EOS”,标志着解码的结束。这个Decoder过程是根据语义向量生成指定的序列,这个过程也称为解码。

多层编码解码结构

Transformer 的论文中使用了6层编码器(这里的层数6并不是固定的,你也可以根据实验效果来修改层数)。同理,解码部分也是由多层的解码器组成(论文里也使用了6层的解码器)。

如何理解这里的多层呢?这就要求我们理解下什么是编码器,什么是解码器,他们有啥用?

  • 编码器是用来做数据特征抽取的,编码器把输入数据的特征抽取出来(一般是压缩的,但应该也可以是扩张的)。
  • 解码器,只是在编码器训练过程中的一个反向的组件,用来协助编码器做训练的。同时它也可以做新东西的生成,因为,编码器把重要特征抽出来了,那么,我们可以把这些特征自由的组合,就生成一个新的原始样本中没有的样本。

多层的类比就是看视觉是如何工作的? 我们看到一只猫,是如何认定它是一只猫的呢? 会经过下图这么多层,每层都是对上层的特征提取。

视觉信息传递过程:Retina(视网膜) - LGN(外膝体) - V1(初级视皮层) - V2(纹外皮层,视觉第二区域) - V3(纹外皮层,视觉第三区域) - LOC(枕叶复合体)

参看:http://www.shb.cas.cn/kjjz2016/201607/t20160712_4639424.html

其中的视网膜这一层,视网膜平行通道信息处理模型如下,可以理解成这一层的不同的特征提取。

Seq2Seq模型应用场景

常见的Seq2Seq模型应用场景:

文字 - 文字

  • 机器翻译,中文翻译英文,法文翻译德文,Google 发表的用Seq2Seq做机器翻译的论文《Sequence to Sequence Learning with Neural Networks》https://arxiv.org/pdf/1409.3215.pdf
  • 聊天问答,输入一个问题序列,输出一个回答序列。
  • 内容续写,输入一个段落序列,输出后续内容的段落序列。
  • 摘要/标题生成,输入一个文章序列,输出一个摘要/标题序列。

音频 - 文字

  • 文本转语音,输入一个文本序列,输出一个语音序列。
  • 语音识别,比如会议语音记录转文字。Google 发表的使用Seq2Seq做语音识别的论文《A Comparison of Sequence-to-Sequence Models for Speech Recognition》

图片 - 文字

Encoder-Decoder 的缺陷

Encoder(编码器)和 Decoder(解码器)之间只有一个「向量 c」来传递信息,且 c 的长度固定。当输入信息太长时,会丢失掉一些信息。就类似于大图片压缩后的变模糊。

对应的解决思路就是抓重点,也就是我们后面几篇文章要说的注意力模型。

总结

Encoder-Decoder模型的结构包括一个编码器和一个解码器,编码器会先对输入的序列进行处理,完成特征提取,然后将处理后的结果向量发送给解码器,转化成我们想要的输出。

标签:编码器,框架,Encoder,解码器,Decoder,序列,向量
From: https://www.cnblogs.com/ghj1976/p/encoderdecoder-mo-xing-kuang-jia.html

相关文章

  • Mybatis框架了解
    一、Mybatis思路:搭建框架--导入Mybatis--编写代码--测试1、搭建环境搭建数据库创建一个父项目导包,导maven依赖<!-- mysql驱动依赖-->  <dependencie......
  • Vue框架快速上手
    前端环境准备编码工具VScode依赖管理NPM项目构建VueCliVue框架介绍是一套用于构建用户界面的渐进式框架Vue.js提供了MVVM数据绑定和一个可组合的组件系统,具有简单、......
  • Django-rest-framework框架
    Django-rest-framework框架01-drf-drf入门规范02-drf-序列化组件03-drf-请求与响应04-drf-视图组件05-drf-路由组件06-drf-认证权限频率07-drf-过滤排序分页异常处......
  • pytest测试框架安装使用及注意事项说明
    内容目录:1.安装2.运行3.执行结果4.常用参数说明5.测试文件、用例命名规则 1.安装1>pycharm中安装点击File->Settings在setting页面中点击project:xxx下......
  • SkeyeLive开源流媒体同屏直播软件源码功能框架解析
    SkeyeLive是OpenSKEYE开源流媒体团队开发的一款功能丰富的开源PC端流媒体推流拉流直播软件项目,目前支持Windows、Android版本,后续将支持ios版本,其中Windows版本的SkeyeLive......
  • 最佳的18个JAVASCRIPT前端开发框架和库
    JavaScript可以说是最流行的编程语言之一,也是Web开发人员必须学习的3种语言之一,JavaScript几乎可以做任何事情,更可以在包括物联网在内的多个平台和设备上运行。在Web......
  • DMotion - 基于DOTS的动画框架和状态机
    【博物纳新】专栏是UWA旨在为开发者推荐新颖、易用、有趣的开源项目,帮助大家在项目研发之余发现世界上的热门项目、前沿技术或者令人惊叹的视觉效果,并探索将其应用到自己项......
  • spring框架下做参数校验
    这篇博客是对此博客的补充,主要是当作个人笔记。1.对List参数的校验1.1不需要使用分组功能如果不需要使用分组校验的功能,那么只需要按以下的格式便可以实现对List的校......
  • websocket接口自动化集成pytest测试框架
    每天进步一点点,关注我们哦,每天分享测试技术文章本文章出自【码同学软件测试】码同学公众号:自动化软件测试,领取资料可加:magetest码同学抖音号:小码哥聊软件测试 01web......
  • 揭秘华为数字化转型框架
    2016年,华为公司数字化转型变革规划汇报通过,一系列的变革项目由变革指导委员会(ExecutiveSteeringCommittee,ESC)完成立项。5年多来,华为数字化转型工作初步取得了一些成果,比......