Transfomer完整学习笔记一:Encoder-Decoder,Seq2Seq

2024-02-01 08:18

本文主要是介绍Transfomer完整学习笔记一:Encoder-Decoder,Seq2Seq,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近常看到transformer框架下的论文,且知道transformer势头大盛,但对transformer缺乏了解,所以就记录下关于transformer的完整学习过程,从最基本的部分开始学习这里做以记录。

Encoder-Decoder,Seq2Seq

  • 什么是seq2seq& encoder-decoder
  • Encoder
  • Decoder

本篇学习笔记主要参考 这篇blog

什么是seq2seq& encoder-decoder

常见的应用场景为nlp问题。以机器翻译为例:
英语输⼊:“They”、“are”、“watching”、“.”
法语输出:“Ils”、“regardent”、“.”

我们的目标就是完成这个翻译任务。而在翻译任务中,输入和输出是不定长的。用于分析处理不定长输入的RNN网络即encoder,用于生成不定长输出的RNN网络即decoder。这二者共同构成的结构即Seq2Seq,并同时进行训练
在这里插入图片描述
如图描述了这个机器翻译任务的实现过程。蓝色部分为编码器,eos意为end of seq代表输入的结束。每个时间段t对encoder的输入即要翻译的句子的一个单词或标点或eos。在这个图中,将encoder的最终状态(即输入完eos)作为整个输入的representation。而每个时间片都以前一个时间片的状态和当前输入为输入。
右侧白色部分为decoder,bos意为begin of seq代表输出的开始。每个decoder时间片t以encoder的最终状态和decoder中前一个时间片的输出及前一个时间片的状态为输入。

Encoder

encoder的目的是将一个不定长的输入序列转化为一个定长的背景变量c。让我们考虑批量⼤小为1的时序数据样本。假设输⼊序列是 x1, . . . , xT,例如 xi是输⼊句⼦中的第 i 个词。在时间步 t,循环神经⽹络将输⼊ 的特征向量 xt 和上个时间步的隐藏状态ht−1变换为当前时间步的隐藏状态ht。我们可以⽤函数 f 表达循环神经⽹络隐藏层的变换:

ht=f(xt,ht−1)
在这里插入图片描述
然后根据指定的函数,通过所有状态,计算得到背景变量c。
c=q(h1,h2,…,hT)
这里描述的encoder是单向rnn,也可使用双向rnn。

Decoder

通过encoder得到了输入向量的背景变量c。给定输出序列y1,y2,…yT’.我们需要得到yi和si两类变量。对于si,我们可以用如下函数表示:

st′=g(yt′−1,c,st′−1)
当得到了隐藏层状态,就可以计算当前的输出。可以用自定义的输出层和softmax来计算yi的条件概率:
P(yt′|y1,…,yt′−1,c)

在这里插入图片描述

这篇关于Transfomer完整学习笔记一:Encoder-Decoder,Seq2Seq的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/666647

相关文章

Python极速搭建局域网文件共享服务器完整指南

《Python极速搭建局域网文件共享服务器完整指南》在办公室或家庭局域网中快速共享文件时,许多人会选择第三方工具或云存储服务,但这些方案往往存在隐私泄露风险或需要复杂配置,下面我们就来看看如何使用Py... 目录一、android基础版:HTTP文件共享的魔法命令1. 一行代码启动HTTP服务器2. 关键参

OpenCV在Java中的完整集成指南分享

《OpenCV在Java中的完整集成指南分享》本文详解了在Java中集成OpenCV的方法,涵盖jar包导入、dll配置、JNI路径设置及跨平台兼容性处理,提供了图像处理、特征检测、实时视频分析等应用... 目录1. OpenCV简介与应用领域1.1 OpenCV的诞生与发展1.2 OpenCV的应用领域2

使用Go实现文件复制的完整流程

《使用Go实现文件复制的完整流程》本案例将实现一个实用的文件操作工具:将一个文件的内容完整复制到另一个文件中,这是文件处理中的常见任务,比如配置文件备份、日志迁移、用户上传文件转存等,文中通过代码示例... 目录案例说明涉及China编程知识点示例代码代码解析示例运行练习扩展小结案例说明我们将通过标准库 os

Java堆转储文件之1.6G大文件处理完整指南

《Java堆转储文件之1.6G大文件处理完整指南》堆转储文件是优化、分析内存消耗的重要工具,:本文主要介绍Java堆转储文件之1.6G大文件处理的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言文件为什么这么大?如何处理这个文件?分析文件内容(推荐)删除文件(如果不需要)查看错误来源如何避

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Spring Security中用户名和密码的验证完整流程

《SpringSecurity中用户名和密码的验证完整流程》本文给大家介绍SpringSecurity中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 首先创建了一个UsernamePasswordAuthenticationTChina编程oken对象,这是S

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

SpringBoot集成LiteFlow工作流引擎的完整指南

《SpringBoot集成LiteFlow工作流引擎的完整指南》LiteFlow作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择,本文将详细讲解Sp... 目录一、LiteFlow核心优势二、SpringBoot集成实战三、高级特性应用1. 异步并行执行2

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,