Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >详细介绍Seq2Seq、Attention、Transformer !!

详细介绍Seq2Seq、Attention、Transformer !!

作者头像
JOYCE_Leo16
发布于 2024-03-19 09:30:27
发布于 2024-03-19 09:30:27
3.6K0
举报
文章被收录于专栏:计算机视觉计算机视觉

前言

本文将从Seq2Seq工作原理、Attention工作原理、Transformer工作原理三个方面,详细介绍Encoder-Decoder工作原理

Encoder-Decoder工作原理


1、Seq2Seq工作原理

Seq2Seq(Sequence-to-Sequence):输入一个序列,输出另一个序列。

在2014年,Cho等人首次在循环神经网络(RNN)中提出了Seq2Seq(序列到序列)模型与传统的统计翻译模型相比,Seq2Seq模型极大地简化了序列转换任务的处理流程。

核心思想
  • 编码器(Encoder):使用一个循环神经网络(RNN)作为编码器(Encoder),读取输入句子,并将其压缩成一个固定维度的编码。
  • 解码器(Decoder):使用另一个循环神经网络(RNN)作为编码器(Decoder)读取这个编码,并逐步生成目标语言的一个句子。

Seq2Seq

Seq2Seq模型通过端到端的训练方式,将输入序列和目标序列直接关联起来,避免了传统方法中繁琐的特征工程和手工设计的对齐步骤。这使得模型能够自动学习从输入到输出的映射关系,提高了序列转换任务的性能和效率。

Seq2Seq

工作原理

Seq2Seq模型中的编码器使用循环神经网络将输入序列转换为固定长度的上下文向量,而解码器则利用这个向量和另一个循环神经网络逐步生成输出序列。

Seq2Seq的工作原理

Encoder(编码器)
  • 编码器是Seq2Seq模型中的一部分,负责将输入序列转换为固定长度的上下文向量。
  • 它使用循环神经网络(RNN)或其变体(如LSTM、GRU)来实现这一转换过程。
  • 在编码过程中,编码器逐个读取输入序列中的元素,并更新其内部隐藏状态。
  • 编码完成后,编码器将最终的隐藏状态或经过某种变换的隐藏状态作为上下文向量传递给解码器。
Dncoder(解码器)
  • 解码器是Seq2Seq模型中的另一部分,负责从上下文向量生成输出序列。
  • 它同样使用循环神经网络(RNN)或其变体(如LSTM、GRU)来实现生成过程。
  • 在每个时间步,解码器根据上一个时间步的输出、当前的隐藏状态和上下文向量来生成当前时间步的输出。
  • 解码器通过逐步生成输出序列中的每个元素,最终完成整个序列的生成任务。

Seq2Seq的工作原理

2、Attention工作原理

Attention Mechanism(注意力机制):Attention Mechanism是一种在深度学习模型中用于处理序列数据的技术,尤其在处理长序列时表现出色。最初引入注意力机制是为了解决机器翻译中遇到的长句子(超过50字)性能下降问题。

传统的机器翻译在长句子上的效果并不理想,因为固定长度的向量难以包含句子的所有语义细节。注意力机制的核心思想是在生成每个输出词时,模型都能够关注到输入序列中的相关部分。

核心逻辑:从关注全部到关注重点
  • Attention机制处理长文本时,能从中抓住重点,不丢失重要信息。
  • Attention机制像人类看图片的逻辑,当我们看一张图片的时候,我们并没有看清图片的全部内容,而是将注意力集中在了图片的焦点上。
  • 我们的视觉系统就是一种Attention机制,将有限的注意力集中在重点信息上,从而节省资源,快速获得最有效的信息。

Attention Mechanism

工作原理

通过计算Decoder的隐藏状态与Encoder输出的每个词的隐藏状态的相似度(Score),进而得到每个词的Attention Weight,再将这些Weight与Encoder的隐藏状态加权求和,生成一个Context Vector。

Attention的工作原理

Encoder(编码器)
  • 输入处理:原始输入是语料分词后的 token_id 被分批次传入 Embedding 层,将离散的 token_id 转换为连续的词向量。
  • 特征提取:将得到的词向量作为输入,传入Encoder中的特征提取器(Feature Extractor)。特征提取器使用RNN系列的模型(RNN、LSTM、GRU),这里代称为RNNs。为了更好地捕捉一个句子前后的语义特征,使用双向的RNNs。双向RNNs由前向RNN和后向RNN组成,分别处理输入序列的前半部分和后半部分。
  • 状态输出:两个方向的RNNs(前向和后向)各自产生一部分隐藏状态。将这两个方向的隐藏层状态拼接(concatenate)成一个完整的隐藏状态 hs。这个状态 hs 包含了输入序列中各个词的语义信息,是后续Attention机制所需的重要状态值。

Encoder(编码器)

Decoder(解码器)
  • 输入与隐藏状态传递:在Decoder的 t-1 时刻,RNNs(如LSTM或GRU)输出一个隐藏状态 h(t-1)。
  • 计算Score:在 t 时刻,Decoder的隐藏状态 h(t-1) 与编码部分产生的每个时间步的隐藏状态 h(s) (来自双向RNNs的拼接状态)进行计算,以得到一个Score。
  • 计算Attention Weight:将所有计算得到的Score进行softmax归一化,得到每个输入词对应的Attention Weight。

计算 Score、Attention Weight

  • 计算Context Vector:使用得到的Attention Weight与对应的 h(s) 进行加权求和(reduce_sum),得到Context Vector。这个Context Vector是输入序列中各个词根据当前Decoder隐藏状态重新加权得到的表示。这个Vector包含了输入序列中重要信息的加权表示,用于指导Decoder生成当前时刻的输出。

计算Context Vector

3、Transformer工作原理

Transformer:通常Attention会与传统的模型配合起来使用,但Google的一篇论文《Attention Is All You Need》中提出只需要注意力就可以完成传统模型所能完成的任务,从而摆脱传统模型对于长程依赖无能为力的问题并使得模型可以并行化,并基于此提出Transformer模型。

注意力机制的演化过程

Transformer架构

主要由输入部分(输入输出嵌入与位置编码)、多层编码器、多层解码器以及输出部分(输出线性层与Softmax)四大部分组成。

Transformer架构

输入部分:

  • 源文本嵌入层:将源文本中的词汇数字表示转换为向量表示,捕捉词汇间的关系。
  • 位置编码器:为输入序列的每个位置生成位置向量,以便模型能够理解序列中的位置信息。
  • 目标文本嵌入层(在解码器中使用):将目标文本中的词汇数字表示转换为向量表示。

编码器部分:

  • 由N个编码器堆叠而成。
  • 每个编码器层由两个子层连接结构组成:第一个子层是一个多头注意力子层,第二个子层是一个前馈全连接子层。每个子层后都接有一个规范化层和一个残差连接。

解码器部分:

  • 由N个解码器层堆叠而成。
  • 每个解码器层由三个子层连接结构组成:第一个子层是一个带掩码的多头自注意力子层,第二个子层是一个多头注意力子层(编码器到解码器),第三个子层是一个前馈全连接子层。每个子层后都接有一个规范化层和一个残差连接。

输出部分:

  • 线性层:将解码器输出的向量转换为最终的输出维度。
  • Softmax层:将线性层的输出转换为概率分布,以便进行最终的预测。
工作原理

左边是N个编码器,右边是N个解码器,图中Transformer的N为6。

Transformer工作原理

Encoder(编码器)
  • 图中的Transformer的编码器部分一共6个相同的编码器层组成。
  • 每个编码器层都有两个子层,即多头自注意力机层(Multi-Head Attention)层和逐位置的前馈神经网络(Position-wise Feed-Forward Network)。
  • 在每个子层后面都有残差连接(图中的虚线)和层归一化(LayerNorm)操作,二者合起来称为Add&Norm操作。

Encoder(编码器)架构

Decoder(解码器)
  • 图中Transformer的解码器部分同样一共6个相同的解码器层组成。
  • 每个解码器层都有三个子层,掩蔽自注意力层(Masked Self-Attention)、Encoder-Decoder注意力层、逐位置的前馈神经网络。
  • 同样,在每个子层后面都有残差连接(图中的虚线)和层归一化(LayerNorm)操作,二者合起来称为Add&Norm操作。

Decoder(解码器)架构

参考:架构师带你玩转AI

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【DL】Self-Attention与Transformer
答:编码器-解码器(Encoder-Decoder)模型最初是由Cho等提出应用在机器翻译中。由于在机器翻译中是文本到文本的转换,比如将法语翻译成英语,Sutskever等也称编码器-解码器模型为序列到序列学习(Seq2Seq)。
yuquanle
2020/02/25
1.2K0
【Pre-Training】Transformer:Attention Is All You Need
今天阅读的来自谷歌大脑的同学于 2017 年发表的论文《Attention Is All You Need》,目前论文被引次数高达 6100 次。
阿泽 Crz
2020/07/21
5820
Seq2Seq、SeqGAN、Transformer…你都掌握了吗?一文总结文本生成必备经典模型(一)
 机器之心专栏 本专栏由机器之心SOTA!模型资源站出品,每周日于机器之心公众号持续更新。 本专栏将逐一盘点自然语言处理、计算机视觉等领域下的常见任务,并对在这些任务上取得过 SOTA 的经典模型逐一详解。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。 本文将分 2 期进行连载,共介绍 10 个在文本生成任务上曾取得 SOTA 的经典模型。 第 1 期:Seq2Seq(RNN)、Seq2Seq(LSTM)、Seq2Seq+
机器之心
2023/03/29
1.2K0
Seq2Seq、SeqGAN、Transformer…你都掌握了吗?一文总结文本生成必备经典模型(一)
多图+公式全面解析RNN,LSTM,Seq2Seq,Attention注意力机制
我们知道人类并不是从零开始思考东西,就像你读这篇文章的时候,你对每个字的理解都是建立在前几个字上面。你读完每个字后并不是直接丢弃然后又从零开始读下一个字,因为你的思想是具有持续性的,很多东西你要通过上下文才能理解。
CristianoC
2020/06/02
3.5K0
Seq2Seq模型
前言: 此文翻译自TensorFlow tutorial: Sequence-to-Sequence Models 本文的尽量在做到意思正确的情况下,做到不尬翻。但第一次尝试翻译,另加上英语水平有
用户1148830
2018/01/04
1.2K0
Seq2Seq模型
【调研】详解Transformer结构——Attention Is All You Need
        Transformer是一个完全依赖自注意力的面向sequence to sequence任务的NLP模型,由谷歌大脑在17年的论文《Attention is all you need》中首次提出。它抛弃了传统的CNN和RNN神经网络,整个网络结构完全由Attention机制以及前馈神经网络组成,它解决了RNN长期依赖和无法并行化以及CNN缺失全局特征等问题。(尽管LSTM等门机制的结构一定程度上缓解了长期依赖的问题,但是对于特别长期的依赖现象,LSTM依旧无能为力。)
小锋学长生活大爆炸
2022/10/28
1.4K0
深度学习NLP从RNN LSTM GRU seq2seq到Attention分类及解析
上一篇博客讲了Transformers里面的self-attention,在NLP领域中其实attentionseq2seq的时候就有广泛应用了。这篇文章主要总结一下从从RNN LSTM GRU seq2seq 到attention的种类及应用,方便大家理解整体发展与attention机制。
大鹅
2021/08/31
1.9K0
Transformer (Attention is all you need) 详解
在之前的博客中有简单讲到Transformer,这篇博客将会专门详细的一起看看内部的计算与实现。
大鹅
2021/08/26
2.7K1
经典Seq2Seq与注意力Seq2Seq模型结构详解
在本文中,我们将分析一个经典的序列对序列(Seq2Seq)模型的结构,并演示使用注意解码器的优点。这两个概念将为理解本文提出的Transformer奠定基础,因为“注意就是您所需要的一切”。
deephub
2021/03/10
9430
经典Seq2Seq与注意力Seq2Seq模型结构详解
深度学习:Seq2seq模型
http://blog.csdn.net/pipisorry/article/details/78258198
用户7886150
2020/12/28
8930
NLP硬核入门-Seq2Seq和Attention机制
本文需要的前序知识储备是:循环神经网络RNN,词向量WordEmbedding,门控单元VanillaRNN/GRU/LSTM。
zenRRan
2019/11/12
7060
机器翻译不可不知的Seq2Seq模型
Seq2Seq,全称Sequence to Sequence。它是一种通用的编码器——解码器框架,可用于机器翻译、文本摘要、会话建模、图像字幕等场景中。Seq2Seq并不是GNMT(Google Neural Machine Translation)系统的官方开源实现。框架的目的是去完成更广泛的任务,而神经机器翻译只是其中之一。在循环神经网络中我们了解到如何将一个序列转化成定长输出。在本文中,我们将探究如何将一个序列转化成一个不定长的序列输出(如机器翻译中,源语言和目标语言的句子往往并没有相同的长度)。
机器学习算法工程师
2018/07/27
1.5K0
机器翻译不可不知的Seq2Seq模型
Transformer
Encoder-Decoder 通常称作 编码器-解码器,是深度学习中常见的模型框架,很多常见的应用都是利用编码-解码框架设计的,如:
为为为什么
2022/08/06
7620
Transformer
深度学习基础 | 超详细逐步图解 Transformer
读完先修知识中的文章之后,你会发现:RNN由于其顺序结构训练速度常常受到限制,既然Attention模型本身可以看到全局的信息, 那么一个自然的疑问是我们能不能去掉RNN结构,仅仅依赖于Attention模型,这样我们可以使训练并行化,同时拥有全局信息?
NewBeeNLP
2021/11/04
1.9K0
【译】可视化神经机器翻译模型(Seq2seq 模型的注意力机制)
注意: 下面的动画是视频。轻触或(使用鼠标)悬停在它们上,可获得播放控件,以便在需要时暂停。
AlphaHinex
2024/04/09
2530
【译】可视化神经机器翻译模型(Seq2seq 模型的注意力机制)
百分点认知智能实验室出品:机器翻译是如何炼成的(下)
在“机器翻译是如何炼成的(上)”的文章中,我们回顾了机器翻译的发展史。在本篇文章中,我们将分享机器翻译系统的理论算法和技术实践,讲解神经机器翻译具体是如何炼成的。读完本文,您将了解:
数据猿
2020/03/05
6570
Transformer介绍
随着人工智能技术的加速演进,AI大模型已成为全球科技竞争的新高地。Transformer作为大模型的核心技术之一,正在推动整个AI产业的发展。
@小森
2024/06/13
4250
Transformer介绍
NLP笔记——NLP概述
在字符上使用 CNN 或 LSTM 以获得基于字符的词表示的做法现在相当普遍,特别是对于形态信息重要或有许多未知单词的丰富的语言和任务,效果更加明显。据我所知,序列标签使用基于字符的表示(Lample 等人,2016;普兰克等人,2016),可以减轻在计算成本增加的情况下必须处理固定词汇表的需要,并支持完全基于字符的 NMT (Ling 等人, 2016;Lee 等人,2017)。
UM_CC
2022/09/22
7880
从 Seq2Seq 到 Attention:彻底改变序列建模
在这篇博文[1]中,将讨论注意力机制的起源,然后介绍第一篇将注意力用于神经机器翻译的论文。由于上下文压缩、短期记忆限制和偏差,具有 2 个 RNN 的 Seq2Seq 模型失败了。该模型的 BLEU 分数随着序列长度的增加而不断降低。
数据科学工厂
2023/11/01
3090
从 Seq2Seq 到 Attention:彻底改变序列建模
Seq2Seq与注意力机制
在基于词语的语言模型中,我们使用了循环神经网络。它的输入时一段不定长的序列,输入却是定长的,例如输入:They are,输出可能是watching或者sleeping。然而,很多问题的输出是不定长的序列。以机器翻译为例,输入是一段英文,输出是一段法语,输入和输出皆不定长,例如
mathor
2020/04/10
6490
相关推荐
【DL】Self-Attention与Transformer
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档