详细介绍Seq2Seq、Attention、Transformer !!

文章目录

前言

1、Seq2Seq工作原理

核心思想

工作原理

Encoder(编码器)

Dncoder(解码器)

2、Attention工作原理

核心逻辑:从关注全部到关注重点

工作原理

Encoder(编码器)

Decoder(解码器)

3、Transformer工作原理

Transformer架构

工作原理

Encoder(编码器)

Decoder(解码器)


前言

本文将从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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是分段锁?

1、典型回答 分段锁是一种将锁细化到每个段(Segment) 级别的锁设计。在 ConcurrentHashMap 中,它将整个数据结构分成多个段,每个段只锁定自己的一部分数据。每个段可以看作是一个独立的分组,只锁定该段(Segment)内部的数据操作,不…

Kyligence 亮相 Gartner 数据与分析峰会,生成式 AI 落地赋能业务

3月11日-13日,Gartner 2024 数据与分析峰会 (Gartner Data & Analytics Summit) 在美国奥兰多盛大召开。作为全球领先的大数据分析和指标平台供应商,Kyligence 出席本次峰会并发表了 Kyligence: AI Enables Intelligent PDCA(AI 赋能从计…

蓝桥·算法双周赛|第七场分级赛——小白入门赛

&#x1f525;博客介绍&#xff1a; 27dCnc &#x1f3a5;系列专栏&#xff1a; <<数据结构与算法>> << 算法入门>> << C项目>> &#x1f3a5; 当前专栏: << 算法入门>> 专题 : 数据结构帮助小白快速入门算法 &#x1f4…

QMI8658芯片I2C驱动开发指南

这个芯片纯国产挺好用的&#xff0c;电路很好设计&#xff0c;我这垃圾焊功&#xff0c;纯手焊&#xff0c;&#xff0c;居然能用。 第一部分 硬件连接 画的很简陋&#xff0c;看看就可以了&#xff0c;这里I2C总线需要接10K上拉没有画出来&#xff0c;这个需要注意一下。 …

【C++初阶】C++入门(上)

C的认识 ①什么是C&#xff1f; ​ C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。对于复杂的问题&#xff0c;规模较大的程序&#xff0c;需要高度的抽象和建模时&#xff0c;C语言则不合适。 ​ 于是1982年&#xff0c;Bjarne Stroustrup&#xff08;本…

scrcpy远程投屏控制Android

下载 下载后解压压缩包scrcpy-win64-v2.4.zip scrcpy连接手机 1. 有线连接 - 手机开启开发者选项&#xff0c;并开启USB调试&#xff0c;连接电脑&#xff0c;华为手机示例解压scrcpy&#xff0c;在scrcpy目录下打开终端&#xff0c;&#xff08;或添加scrcpy路径为环境变…

Android和IOS应用开发-Flutter 应用中实现记录和使用全局状态的几种方法

文章目录 在Flutter中记录和使用全局状态使用 Provider步骤1步骤2步骤3 使用 BLoC步骤1步骤2步骤3 使用 GetX&#xff1a;步骤1步骤2步骤3 在Flutter中记录和使用全局状态 在 Flutter 应用中&#xff0c;您可以使用以下几种方法来实现记录和使用全局状态&#xff0c;并在整个应…

【Twinmotion】Twinmotion导入UE5

步骤 1. 在虚幻商城中安装“Datasmith Twinmotion导入器插件” 安装“面向虚幻引擎的Twinmotion内容” 2. 打开虚幻引擎&#xff0c;在插件中搜索“twinmotion”&#xff0c;勾选如下两个插件&#xff0c;然后重启虚幻引擎 3. 打开Twinmotion&#xff0c;随便添加一个物体 导出…

【创作者纪念日1095天3年】我的创作纪念日

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;CSDN博客专家   &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01…

【Git】error: bad signature 0xb86f1e1 和 bfatal: index file corrupt

一、问题 之前都好好的&#xff0c;今天执行 git add .的时候突然报错 报错原因翻译成中文&#xff1a;索引文件损坏 二、解决方法 方法1&#xff1a; 删除.git隐藏文件夹中的index文件 然后执行 git reset 重新生成index文件 git reset 方法2&#xff1a; 重新从远程克隆…

excel同类项合并求和怎么操作?

想必很多办公人士都熟悉excel这款软件&#xff0c;那么使用过程里&#xff0c;若想合并同类项数据并求和&#xff0c;具体是如何操作的呢&#xff1f;下面就是小编带来的excel合并同类项数据并求和的操作步骤&#xff0c;很简单哦&#xff0c;看完之后你也来试试吧! 先看一下原…

Jenkins插件Parameterized Scheduler用法

Jenkins定时触发构建的同时设定参数。可以根据不同的定时构建器设置不同参数或环境变量的值。可以设置多个参数。并结合when控制stage流程的执行。结合when和triggeredBy区分定时构建的stage和手动执行的stage。 目录 什么是Parameterized Scheduler&#xff1f;如何配置实现呢…

使用 ReclaiMe Pro 恢复任意文件系统(Win/Linux/MacOS)

天津鸿萌科贸发展有限公司是 ReclaiMe Pro 数据恢复软件授权代理商。 ReclaiMe Pro 是一个通用工具包&#xff0c;几乎可以用于从所有文件系统&#xff08;从 Windows 系列文件系统、Linux 和 MacOS&#xff09;中恢复数据。此外&#xff0c;考虑到数据恢复工作的具体情况&…

python练习

1. 五个PPT上的界面打印【print、input函数】 #界面1 -登录 print(英雄商城登录界面) print(英雄联盟商城登录界面) print(~*~*~*~*~*~*~*~*~*~*~*~*~*) print(1.用户登录) print(2.新用户注册) print(3.退出系统) print(~*~*~*~*~*~*~*~*~*~*~*~*~*) input("(温馨提示)请…

Gitee配置SSH登录

一、背景 新入手的电脑&#xff0c;需要对Gitee上存放的项目进行更改上传&#xff0c;发现上传不了需要登录&#xff0c;便采用SSH密钥进行登录&#xff0c;防止远程管理工程中的信息泄露 二、前提 电脑已下载Git Bash工具&#xff0c;在项目下点击鼠标右键&#xff0c;进入…

为什么不直接用百度,要用AI呢

使用百度和其他搜索引擎与使用AI技术&#xff08;如我这样的人工智能助手&#xff09;各有优势&#xff0c;选择使用哪一种往往取决于具体的需求和情境。 1.使用AI技术的几个原因 1. 定制化体验&#xff1a;AI技术可以提供更加个性化的服务。例如&#xff0c;AI助手可以根据您…

如何使用CloudRecon扫描Web应用程序并从SSL证书中发现有效资产

关于CloudRecon CloudRecon是一款功能强大的Web应用程序资产扫描与识别工具&#xff0c;该工具可以帮助广大研究人员对目标Web应用程序执行扫描&#xff0c;并从证书中识别出有价值的资产数据。 CloudRecon本质上是一个工具集&#xff0c;由三个组件组成&#xff0c;可以帮助红…

深入了解 Spring boot的事务管理机制:掌握 Spring 事务的几种传播行为、隔离级别和回滚机制,理解 AOP 在事务管理中的应用

&#x1f389;&#x1f389;欢迎光临&#xff0c;终于等到你啦&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;持续更新的专栏《Spring 狂野之旅&#xff1a;从入门到入魔》 &a…

ElementUI两个小坑

1.form表单绑定的是一个对象&#xff0c;表单里的一个输入项是对象的一个属性之一&#xff0c;修改输入项&#xff0c;表单没刷新的问题&#xff0c; <el-form :model"formData" :rules"rules" ref"editForm" class"demo-ruleForm"…

拆解Spring boot:Springboot为什么如此丝滑而简单?源码剖析解读自动装配

&#x1f389;&#x1f389;欢迎光临&#xff0c;终于等到你啦&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;持续更新的专栏《Spring 狂野之旅&#xff1a;从入门到入魔》 &a…