Transformer模型-encoder编码器,padding填充,source mask填充掩码的简明介绍

news2024/10/7 1:26:57

 今天介绍transformer模型的encoder编码器,padding填充,source mask填充掩码

背景


encoder编码器层是对之前文章中提到的子层的封装。它接收位置嵌入的序列,并将其通过多头注意力机制和位置感知前馈网络。在每个子层之后,它执行残差连接和层归一化。

因为要循环n次,所以封装到一起就比较方便。

为了充分利用多头注意力子层的优势,输入标记会先通过一堆编码器层,然后再传递给解码器。这在文章开头的图片中用Nx表示,而上面的图片展示了这些堆叠的编码器如何将其输出传递给解码器层,这将在下一篇文章中讨论。

通过前向传播后,可以通过encoder.attn_probs访问注意力概率。

为什么要进行填充和掩码操作?

填充Padding

在实际应用中,一个批次中更可能出现的是长度各异的序列。为了保证一个批次中的所有序列长度相同,会对序列进行填充。当这种情况发生时,模型不需要关注填充标记。为每个序列创建一个掩码向量,以反映应该关注的值。

这个掩码的形状为(batch_size, 1, 1, seq_length)。它会在每个头对序列的表示中进行广播。

例如,下面的三个序列长度不同:

为了使不同长度的序列能在张量中使用,必须将它们填充到相同的长度。这可以通过使用torch.nn.functional中的pad函数来实现,它允许每个输入都被填充到相同的长度。pad函数需要以下参数:

seq: 一个序列
(0, pad_to_add): 一个元组,指示要填充的维度以及填充的数量
value=pad_idx: 用于填充的值,通常是一个整数

这个函数可以在一个for循环中使用,以便将一批序列填充到相同的长度,如下所示。这些填充后的序列可以用作编码器的输入。

填充标记被添加到每个序列中,次数根据需要达到最大长度。由于第一个序列的长度为4,因此需要添加四个填充标记。第二个序列需要三个填充标记,最后一个需要两个。

模型不应学习每个标记与填充标记之间的关系。它应该专注于原始序列中的标记以及它们彼此之间的关系,同时忽略填充标记。这些填充标记需要被屏蔽掉。这是通过创建一个源掩码来实现的,该掩码指示哪些标记需要被考虑。

源掩码The Source Mask

可以通过比较填充序列tensor_sequences中的标记和填充索引来创建源掩码。只有填充标记不应被考虑。当这个掩码传递给编码器时,每个填充标记的值需要被替换为一个非常大的负值,例如-∞或-1e10。由于当它被指数化时(e-∞ = 0),这是一个无关紧要的值,因此它不会对softmax输出产生显著影响。这意味着在概率分布中只会考虑适当的标记,而填充标记的值将为0。

假设填充标记是24,因此相应的值被设置为False,而所有其他标记保持为True。到目前为止,它的形状为(batch_size, seq_length)。为了将这个掩码广播到注意力概率上,这些注意力概率的形状为(batch_size, n_heads, Q_length, K_length),因此掩码的形状需要是(batch_size, 1, 1, seq_length)。请记住,在编码器中,seq_length、Q_length和K_length的长度是相同的,在这个上下文中是8。本质上,张量将包含3个序列的1个矩阵,该矩阵有1行,这是序列的源掩码。这个掩码被广播到键上,防止查询在句子中计算它们的上下文。

原文链接:https://medium.com/@hunter-j-phillips/the-encoder-f698b2c7afc0

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

探索 Java 网络爬虫:Jsoup、HtmlUnit 与 WebMagic 的比较分析

1、引言 在当今信息爆炸的时代,网络数据的获取和处理变得至关重要。对于 Java 开发者而言,掌握高效的网页抓取技术是提升数据处理能力的关键。本文将深入探讨三款广受欢迎的 Java 网页抓取工具:Jsoup、HtmlUnit 和 WebMagic,分析…

一文读懂CSS中的阴影:box-shadow,text-shadow,drop-shadow的区别与使用方式

一、区别 box-shadow 应用于元素,为元素本身添加阴影效果。 text-shadow 应用于文本,为文本内容添加阴影效果。 drop-shadow 是filter属性的一部分,通常用于图像,为其添加阴影效果。 二、box-shadow box-shadow属性用于为元素&…

stable-diffusion-webui怎么样增加自己训练的LoRA模型?

不怕笑话,我曾经为了找这个功能,居然搞了半天时间,结果还没有搞定。 后来再不断地研究各种教程,就是没有发现这个功能,无意间发现有一个人贴了一张图片, 他只是介绍放到这个目录,他没有告诉我这个目录怎么样来的,因为我在同样的位置上没有这个目录。 这样我训练出来…

【数据结构】考研真题攻克与重点知识点剖析 - 第 5 篇:树与二叉树

前言 本文基础知识部分来自于b站:分享笔记的好人儿的思维导图与王道考研课程,感谢大佬的开源精神,习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析,本人技术…

网站想使用https安全协议,必须要安装ssl证书吗?

ssl证书作为保护网站数据传输安全的重要工具,被广泛应用于网站的安全加密通信中。很多人在初次接触ssl证书时,有一个常见的疑问:网站使用https协议必须要ssl证书吗? 答案是肯定的。   HTTPS是一种通过计算机网络进行安全通信的…

MongoDB基本操作之备份与恢复【验证有效】

资源获取 MongoDB Database Tools 解压zip包,将其中的工具复制到bin目录下 mongodump与mongorestore – 备份 mongodump -h localhost:27017 -u admin -p pass --authenticationDatabase admin -d runoob -o /usr/local/mongo/bak/ --forceTableScan –切换数据库…

怎么防止文件被拷贝,复制别人拷贝电脑文件

怎么防止文件被拷贝,复制别人拷贝电,脑文件 防止文件被拷贝通常是为了保护敏感数据、知识产权或商业秘密不被未经授权的人员获取或传播。以下列出了一系列技术手段和策略,可以帮助您有效地防止文件被拷贝。 1. 终端管理软件: 如安企神、域智…

内网穿透的应用-如何使用Docker本地部署Dify LLM结合内网穿透实现公网访问本地开发平台

文章目录 1. Docker部署Dify2. 本地访问Dify3. Ubuntu安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 本文主要介绍如何在Linux Ubuntu系统以Docker的方式快速部署Dify,并结合cpolar内网穿透工具实现公网远程访问本地Dify! Dify 是一款…

(表征学习论文阅读)A Simple Framework for Contrastive Learning of Visual Representations

Chen T, Kornblith S, Norouzi M, et al. A simple framework for contrastive learning of visual representations[C]//International conference on machine learning. PMLR, 2020: 1597-1607. 1. 前言 本文作者为了了解对比学习是如何学习到有效的表征,对本文所…

Vscode 中调试Django程序

调试介绍: ​​​​​​​Explore the debugger Debug/调试 可以让我们在特定的代码行上暂停程序的运行。当程序暂停时,我们可以查看变量的数值,在“Debug控制台”中运行代码,或利用“Debug”工具提供的其他功能。启动Debugger/调试器会自动…

MAC苹果电脑如何使用Homebrew安装iperf3

一、打开mac终端 找到这个终端打开 二、终端输入安装Homebrew命令 Homebrew官网地址:https://brew.sh/ 复制这个命令粘贴到mac的终端窗口,然后按回车键 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/in…

rsync实时同步(上行同步)

目录 一、实现实时同步 1. 定期同步的不足 2. 实时同步的优点 3. Linux内核的inotify机制 4. 发起端配置rsyncinotify 4.1 修改rsync源服务器配置文件 4.2 调整inotify内核参数 4.3 安装inotify-tools 4.4 在另一个终端编写触发式同步脚本 4.5 验证 二、使用rsync实现…

电脑与多台罗克韦尔AB PLC无线通讯的搭建方法分为几步?

在实际系统中,同一个车间里分布多台PLC,通过上位机集中控制。通常所有设备距离在几十米到上百米不等。在有通讯需求的时候,如果布线的话,工程量较大耽误工期,这种情况下比较适合采用无线通信方式。本方案以组态王和2台…

WinForm用微软打包工具打包

WinForm用微软打包工具打包 1. 安装扩展 下载扩展Microsoft Visual Studio Installer Projects 点击扩展 —> 管理扩展 安装完之后重启VS就好了。 2. 新建Set up项目 点击解决方案 —> 添加 —> 新建项目 选择这个Setup Project 创建打包项目 安装项目&…

nandgame中的asm编程PUSH_VALUE、ADD、SUB、NEG、AND、OR

参考:https://zhuanlan.zhihu.com/p/613188641 PUSH_VALUE题目说明及答案 将值推送到堆栈上。 提示:该值将作为宏的替换值提供,但在测试时,您可以在“测试工具”框中设置该值。现在,我们引入了一个使用占位符的宏。宏…

nginx This request has been blocked; the content must be served over HTTPS问题处理

This request has been blocked; the content must be served over HTTPS问题处理 1.问题现象2.解决问题3.解决后的现象4.proxy_set_header x-forwarded-proto 作用 1.问题现象 Mixed Content: The page at https://www.ssjxx.cn/ssjy/viy-edu/index.html?systemCodeTW0010#/…

iOS-获取Xcode工程中文件的路径

1、使用Create folder references的Add folders的方式把文件或者文件夹拖到Xcode工程中 拖入时的设置参考下图 注意拖入到工程之后文件夹是蓝色的(Xcode10.1环境) 2、代码具体实现: 使用NSBundle的API,然后拼接具体路径即可 NS…

区块链与数字身份:探索Facebook的新尝试

在数字化时代,随着区块链技术的崛起,数字身份成为了一个备受关注的话题。作为全球最大的社交媒体平台之一,Facebook一直在探索如何利用区块链技术来改善数字身份管理和用户数据安全。本文将深入探讨Facebook在这一领域的新尝试,探…

【ArcGIS微课1000例】0109:ArcGIS计算归一化水体指数(NDWI)

文章目录 一、加载数据二、归一化水体指数介绍三、归一化水体指数计算四、注意事项一、加载数据 加载配套数据0108.rar(本实验的数据与0108的一致)中的Landsat8的8个单波段数据,如下所示: Landsat8波段信息对照表如下表所示: 接下来学习在ArcGIS平台上,基于Landsat8数据…

GPT-4对多模态大模型在多模态预训练、 理解生成上的启发

传统人工智能 模型往往依赖大量有标签数据的监督训练,而且一个模型一般只能解决一个任务,仅适用于单一场景, 这使得人工智能的研发和应用成本高,场景适应能力弱,难以规模化应用。 常见的多模态任务大致可以分为两类: 多模态理解任务,如视频 分类、视觉问答、跨模态检索、指代…