注意力机制和Transformer模型各部分功能解释

文章目录

  • Transformer
    • 1、各部分功能解释
    • 2、通过例子解释
      • a.输入预处理
      • 位置编码
      • b.Encoder 的处理
      • c.Decoder的输入
      • Decoder的工作流程
      • d.输出预测
      • 总结

Attention代码和原理理解

Transformer

运行机理:

(1)假设我们需要进行文本生成任务。我们将已经有的文本首先通过词嵌入并进行位置编码作为输入,输入到encoder中,encoder的目的是使得词不仅仅有了自己的信息,还有了自己上下文的信息,即全局信息,即词有了语义信息。
(2)在训练时,我们使用当前已经预测出来的词作为decoder的输入(当然这些词使用的是正确的词即使可能预测过程中有错误,也使用掩码掩盖未来的词),我们将其与encoder输出的向量进行结合使用注意力层最后使用全连接得到新的预测结果,得到一个预测接下来我们继续将这个预测的词增加作为decoder的输入,直到预测结束。
注意:

  • Decoder的输入:从一个特定的起始符号开始,并逐步使用之前步骤生成的词来生成新的词,直到序列完成。
  • Encoder的输入:在整个序列生成过程中保持不变,为Decoder提供必要的上下文信息。

1、各部分功能解释

Transformer快速入门
标准的 Transformer 模型主要由两个模块构成:

  • Encoder(左边):负责理解输入文本,为每个输入构造对应的语义表示(语义特征)

  • Decoder(右边):负责生成输出,使用 Encoder 输出的语义表示结合其他输入来生成目标序列Decoder的输入是当前预测出来的文本,在训练时是正确文本,而预测时是预测出来的文本。 当然都包含位置编码,训练时也需要使用掩码。
    在这里插入图片描述
    两个模块可以根据任务的需求而单独使用:

  • 纯 Encoder 模型:适用于只需要理解输入语义的任务,例如句子分类、命名实体识别;

  • 纯 Decoder 模型:适用于生成式任务,例如文本生成;

  • Encoder-Decoder 模型或 Seq2Seq 模型:适用于需要基于输入的生成式任务,例如翻译、摘要。

2、通过例子解释

Transformer模型在处理 “Harry Potter is a wizard and hates __ the most.” 这一句子时的工作流程和各个组件的作用。

a.输入预处理

假设我们的句子 “Harry Potter is a wizard and hates” 已经通过分词处理,并且每个词都被映射到了一个整数ID。例如:

  • Harry -> 2021
  • Potter -> 1057
  • is -> 56
  • a -> 15
  • wizard -> 498
  • and -> 7
  • hates -> 372

这些整数ID接着被转换为词嵌入向量。词嵌入层会从一个预训练的嵌入矩阵中提取每个ID对应的向量。

位置编码

对于 “Harry Potter is a wizard and hates” 这七个词,Transformer还需要知道每个词的位置。因此,每个词嵌入向量会加上一个位置向量,位置向量通过一定的函数(如正弦和余弦函数)生成,以反映词在句子中的顺序。

b.Encoder 的处理

经过词嵌入和位置编码后,这组向量输入到Encoder。Encoder中的每一层都包括两部分:多头自注意力机制和前馈神经网络。

  • 多头自注意力机制允许模型评估每个词与句子中其他词的关系强度。这有助于捕获比如"Harry Potter"和"wizard"之间的联系。
  • 前馈神经网络对自注意力层的输出进行进一步转换。

每一层的输出都会被送入下一层,直到最后一层。Encoder的最终输出是一个加工过的、包含整个句子信息的向量序列。

好的,让我来更详细地解释Transformer模型中Decoder的工作机制,特别是它的输入是如何处理的。

c.Decoder的输入

在理解Decoder的输入之前,我们首先要明确,Transformer模型通常用于处理序列到序列的任务,比如机器翻译、文本摘要等。在这些任务中,Decoder的角色是基于Encoder的输出,生成一个输出序列。

假设我们的任务是文本填空,比如在句子 “Harry Potter is a wizard and hates __ the most.” 中填入缺失的部分。在实际应用(如训练或预测)过程中,Decoder的输入通常有两部分:

  1. 已知的输出序列的前缀:这是模型在生成每个新词时,已经生成的输出序列的部分。在训练阶段,这通常是目标序列(ground truth)中的前缀;在推理阶段,这是模型逐步生成的输出。例如,如果我们预测的第一个词是 “Voldemort”,那么在预测下一个词时,“Voldemort” 就成了已知的输出序列的前缀。

  2. 位置编码:和Encoder相同,每个词的词嵌入会加上位置编码。位置编码帮助模型理解词在序列中的位置关系,这对于生成有顺序关系的文本尤其重要。

Decoder的工作流程

在得到输入后,Decoder的每一层会执行以下几个操作:

  1. 掩蔽多头自注意力(Masked Multi-Head Self-Attention)

    • 这一步骤和Encoder中的自注意力类似,但有一个关键区别:它会使用掩蔽(masking)来防止未来位置的信息泄漏。这意味着在生成第 ( n ) 个词的预测时,模型只能访问第 ( n-1 ) 个词及之前的词的信息。
    • 例如,当模型正在生成 “Voldemort” 后面的词时,它不能“看到”这个词之后的任何词。
  2. 编码器-解码器自注意力(Encoder-Decoder Attention)

    • 这一步是Decoder的核心部分,其中Decoder利用自己的输出作为查询(Query),而将Encoder的输出作为键(Key)和值(Value)。
    • 这允许Decoder根据自己已经生成的文本部分(通过查询),和输入句子的语义表示(通过键和值),生成下一个词的预测。这是一个信息整合的过程,通过Encoder的上下文信息来指导输出序列的生成。
  3. 前向馈网络(Feed-Forward Network)

    • 与Encoder中相同,每个自注意力层后面都会跟一个前向馈网络,这个网络对每个位置的输出独立处理,进一步转换特征表示。

d.输出预测

Decoder的输出通过一个线性层和softmax层,生成每个可能词的概率分布。选择概率最高的词作为预测结果。

总结

因此,在Decoder中,输入主要是基于到目前为止已经生成的输出序列(加上位置信息),而这些输入通过Decoder的多层结构进行处理,每层都包括掩蔽自注意力、编码器-解码器自注意力和前向馈网络,以生成最终的输出序列。这种结构设计使得Transformer能够在考虑到整个输入序列的上下文的同时,逐步构建输出序列。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java17 --- redis7缓存双写一致性

一、缓存双写一致性 如果redis中有数据:需要和数据库中的值相同。如果redis中没有数据:数据库中的值要是最新值,且准备回写redis。只读缓存。读写缓存:①、同步直写策略:写数据库后也同步写redis缓存,缓存…

计算机网络(谢希仁第六版)| 课后习题与答案 | 物理层 | 题目知识点详细分析

计算机网络(谢希仁第六版)课后习题与答案 物理层 博客只对老师给的重点进行整理,完整的课后习题答案见Gitee下载:《计算机网络教程(第6版)(微课版)》习题答案 2-5 请画出数据流1 0 1…

Java基础学习-流程控制语句-顺序结构-分支结构-循环结构

目录 顺序结构: 分支结构: if语句: 第一种格式: if第二种格式: 案例练习 if第三种格式: switch语句: 格式: switch其他知识点: 循环结构: for循环…

软件测试面试题:性能测试关注哪些指标?

问题 在工作中,使用JMeter做压力测试时,需要关注其中的哪些指标? 性能测试关注哪些指标? 考察点 面试官想了解: 是否用过 JMeter 指标进行分析 技术点 涉及的技术点: JMeter 结果分析 回答 性能指…

基于 Vitis HLS 的单个乘法 DSP 映射研究

文章目录 1 自媒体账号2 引言3 整数乘法4 定点乘法5 浮点乘法6 总结 1 自媒体账号 目前运营的自媒体账号如下: 哔哩哔哩 【雪天鱼】: 雪天鱼个人主页-bilibili.com 如果觉得有所收获的话,可以点击我的主页 -> 充电 -> 自定义充电 支持一下&#…

2024加密软件排行榜|最新企业常用加密软件推荐

安秉网盾加密软件: 专注于企业级的透明加密解决方案,确保公司内部文件在公司环境外无法被访问。 审批机制灵活,支持多种审批方式,方便管理。 广泛应用于多个行业,拥有丰富的企业环境适配经验。 适合对内部数据安全有严…

设置角色运动的动画

(1) 打开Assets-UnityTechnologies-Animation-Animators,Create-Animation-Controller,命名为JohnLemon (2) 打开JohnLemon,出现下图 (3) 依次将Assets-UnityTechnologies-Animation-Animation中的JohnIdle和JohnWalk拖放到Base Layer窗口中 (4) 右击Idl…

分享由AI制定一个商城网站的开发计划及推荐的开发语言

商城网站开发计划 一、项目概述 本商城网站开发计划旨在创建一个功能齐全、用户友好的在线购物平台,为顾客提供商品浏览、搜索、购物车管理、订单跟踪、在线支付等服务。商城将支持多种商品分类,包括但不限于电子产品、家居用品、服饰鞋帽等。 二、开…

Nginx缓存之代理缓存配置

Nginx 的缓存功能是集成在代理模块中的,当启用缓存功能时,Nginx 将请求返回的响应数据持久化在服务器磁盘中,响应数据缓存的相关元数据、有效期及缓存内容等信息将被存储在定义的共享内存中。当收到客户端请求时,Nginx 会在共享内…

联邦学习周记|第四周

论文:Active Federated Learning 链接 将主动学习引入FL,每次随机抽几个Client拿来train,把置信值低的Client概率调大,就能少跑几次。 论文:Active learning based federated learning for waste and natural disast…

全新AI图像擦处理工具上线,手机电脑版资源合集下载

下载地址: 安卓手机版: 点击下载 苹果手机版: 点击下载 电脑版(支持Mac和Windows): 点击下载 图像处理技术在当今迅速发展,为了满足广大用户的需求,我们推出了一款强大的图像优化…

京东健康·全球医疗AI创新大赛开启!32万奖金池等你来拿!

京东健康全球医疗AI创新大赛是由京东健康发起,以探索医疗行业前沿技术与创新应用为导向、携手产学研各界力量,通过AI创新促进医疗服务行业高质量发展的一场大赛。 本次大赛聚焦“睡眠监测智能算法”与“医疗大模型创新应用”两个课题方向,面…

【ARM-Linux篇】POSIX消息队列

System V消息队列POSIX 消息队列主 要 函 数#include <sys/msg.h> int msgget(key_t key, int oflag) int msgsnd(int msqid, const void * ptr, size_t length, int flag) ssize_t msgrcv (int msqid, void *ptr, size_t length, long type, int flag) int msgctl(int m…

HTML入门教程:深度解析HTML,开启你的前端技术之旅

一、引言 HTML&#xff08;HyperText Markup Language&#xff0c;超文本标记语言&#xff09;是前端开发的基础&#xff0c;它负责构建网页的结构和内容。作为前端技术栈的基石&#xff0c;HTML的掌握程度直接影响到网页的开发效率和用户体验。本教程将带你从零开始&#xff…

计算机网络——传输层重要协议(TCP、UDP)

一、常见名词解释 IP地址&#xff1a;IP地址主要用于标识网络主机、其他网络设备&#xff08;如路由器&#xff09;的网络地址&#xff0c;即IP地址用于定位主机的网络地址&#xff1b; IP地址是一个32位的二进制数&#xff0c;通常被分割为4个 8位⼆进制数&#xff08;也就是…

vite项目配置高德api定位功能

项目场景&#xff1a; 用vite项目集成了一个H5页面的小程序&#xff0c;需要调用高德的定位API&#xff0c;在浏览器中测试的时候&#xff0c;出现了一系列定位失败的情况。 问题1 Get ipLocation failed、Geolocation permission denied 本地http访问下&#xff0c;定位失败…

切割游戏介绍

简介 上大学时&#xff0c;在学校实验室里玩过一个貌似使用VC写的小游戏&#xff0c;一个小球在界面上四处游荡&#xff0c;玩家使用鼠标切割背景&#xff0c;将背景切割剩余到一定的百分比后&#xff0c;就胜利了&#xff0c;后边的背景图会全部展示出来。 使用qt的qml技术&a…

C++类与对象、类的6个默认成员函数、构造函数、析构函数等的介绍

文章目录 前言一、类的6个默认成员函数二、构造函数1. 概念2. 特性1. 无参构造函数2. 带参构造函数3. 编译器默认生成的无参构造函数 3. 构造函数的初始化4. 默认构造函数 三、析构函数1. 概念2. 特性3. 编译器默认生成的析构函数的作用4. 构造函数的使用 总结 前言 C类与对象…

Scikit-Learn支持向量机回归

Scikit-Learn支持向量机回归 1、支持向量机回归1.1、最大间隔与SVM的分类1.2、软间隔最大化1.3、支持向量机回归1.4、支持向量机回归的优缺点2、Scikit-Learn支持向量机回归2.1、Scikit-Learn支持向量机回归API2.2、支持向量机回归初体验2.3、支持向量机回归实践(加州房价预测…

PLC通过Profibus协议转Modbus协议网关接LED大屏通讯

一、背景 Modbus协议和Profibus协议是两种常用于工业控制系统的通信协议&#xff0c;它们在自动化领域中起着重要的作用。Modbus是一种串行通信协议&#xff0c;被广泛应用于各种设备之间的通信&#xff0c;如传感器、执行器、PLC等。而Profibus则是一种现场总线通信协议&…