Transformer模型-decoder解码器,target mask目标掩码的简明介绍

 今天介绍transformer模型的decoder解码器,target mask目标掩码

背景


解码器层是对前面文章中提到的子层的包装器。它接受位置嵌入的目标序列,并将它们通过带掩码的多头注意力机制传递。使用掩码是为了防止解码器查看序列中的下一个标记。它迫使模型仅使用之前的标记作为上下文来预测下一个标记。然后,它再通过另一个多头注意力机制,该机制将编码器层的输出作为额外的输入。最后,它通过位置全连接前馈网络。在这些子层中的每一个之后,它都会执行残差相加和层归一化。

Transformer中的解码器层


如上所述,解码器层无非是对子层的包装器。它实现了两个多头注意力子层和一个位置全连接前馈网络,每个子层之后都跟着层归一化和残差相加。

参看 编码器encoder:

Transformer模型-encoder编码器,padding填充,source mask填充掩码的简明介绍-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/ank1983/article/details/137399110

为什么需要掩码?


目标掩码target mask

要理解为什么需要目标掩码,最好看一下解码器的输入和输出的示例。解码器的目标是在给定的编码源序列和目标序列的一部分的情况下,预测序列中的下一个标记。为了实现这一点,必须有一个“开始”标记来提示模型预测序列中的下一个标记。这就是上面图像中“<bos>”标记的用途。还需要注意的是,解码器的输入和输出的大小必须相同。

如果目标是将“Wie heißt du?”翻译为“What is your name?”,那么编码器将编码源序列的含义并将其传递给解码器。给定“<bos>”标记和编码的源序列,解码器应该预测出“What”。然后,将“What”附加到“<bos>”后面以创建新的输入,即“<bos> What”。这就是为什么解码器的输入被认为是“向右移动”的原因。这可以传递给解码器以预测What is。这个标记被附加到之前的输入上,以创建新的输入“<bos> What is”。这将被传递给解码器以预测“What is your”。这个过程会一直重复,直到模型预测出“<eos>”标记。

通过使用目标掩码,模型可以同时学习每个迭代的目标序列,例如“<bos> What is your name? <eos>”。

请记住,解码器的输入和输出长度必须相同。因此,在将目标序列传递给解码器之前,需要移除每个目标序列的最后一个标记。如果目标序列存储在trg中,那么解码器的输入将是trg[:, :-1],用于选择除最后一个标记之外的所有内容,这可以在上面的目标输入中看到。预期的输出将是trg[:, 1:],即除第一个标记之外的所有内容,这是上面看到的预期输出。

总结来说,与编码器层一样,解码器也需要对其输入进行掩码处理。虽然填充掩码对于输入是必要的,但目标序列也需要一个前视或后续掩码。在推理过程中,模型只会被提供一个开始标记,并必须基于它预测下一个标记。然后,给定两个标记,它必须预测第三个标记。这个过程会一直重复,直到预测出序列结束标记。这就是Transformer的自回归行为。换句话说,未来的标记只基于过去的标记和来自编码器的嵌入进行预测。

为了模拟这种行为,模型使用后续掩码同时学习所有这些迭代。

可以使用PyTorch的torch.tril函数来创建后续掩码。它将具有(trg_seq_length, trg_seq_length)的形状。

填充掩码&目标掩码

对于序列中的每个标记,概率分布只能考虑之前的标记。但是,由于目标序列也必须进行填充,因此填充掩码和后续掩码必须结合使用。

这可以通过使用 & 运算符轻松实现,该运算符仅在两个掩码都为1时才返回1。

这个最终的目标掩码必须为每个批次中的序列创建,这意味着它将具有(batch_size, 1, trg_seq_length, trg_seq_length)的形状。这个掩码将在每个头之间进行广播。

原文链接:https://medium.com/@hunter-j-phillips/the-decoder-8882c33de69a

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

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

相关文章

WPF 多语言切换及ResourceDictionary的Source路径填写

WPF 多语言切换 1. 添加资源字典 新增两个资源字典&#xff0c;里面分别存储不同语言的文本 <ResourceDictionary xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s…

使用API有效率地管理Dynadot域名,确认域名转移流程状态

关于Dynadot Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮…

虚拟网络设备与网络安全:深入分析与实践应用

在数字化时代&#x1f4f2;&#xff0c;网络安全&#x1f512;成为了企业和个人防御体系中不可或缺的一部分。随着网络攻击的日益复杂和频繁&#x1f525;&#xff0c;传统的物理网络安全措施已经无法满足快速发展的需求。虚拟网络设备&#x1f5a7;&#xff0c;作为网络架构中…

计算机网络——39密钥分发和证书

密钥分发和证书 可信赖中介 对称密钥问题 相互通信的实体如何分享对称密式的密钥&#xff1f; 解决办法 trusted key distribution center(KDC) 在实体之间扮演可信赖中介的角色 公共密钥问题 当Alice获得Bob的公钥(from web site,e-mail,diskette)&#xff0c;她如何知…

16、普通数组-除自身以外的数组乘积

思路 通过辅助数组的方式 第一个从左向右的辅助数组乘积第二次从右向左的辅助数组乘积对于0<i<N-1 他的数组乘积就是左边的数组乘积*右边数组乘积然后再分类讨论i0 就是右边1-N-1的数组乘积iN-1就是左边从N-2到0的数组乘积 代码如下&#xff1a; class Solution {pub…

C# 优雅的处理 TCP 数据

前言 Tcp是一个面向连接的流数据传输协议&#xff0c;用人话说就是传输是一个已经建立好连接的管道&#xff0c;数据都在管道里像流水一样流淌到对端。 那么数据必然存在几个问题&#xff0c;比如数据如何持续的读取&#xff0c;数据包的边界等。 Nagles算法 Nagle 算法的核…

电商技术揭秘十五:数据挖掘与用户行为分析

相关系列文章 电商技术揭秘一&#xff1a;电商架构设计与核心技术 电商技术揭秘二&#xff1a;电商平台推荐系统的实现与优化 电商技术揭秘三&#xff1a;电商平台的支付与结算系统 电商技术揭秘四&#xff1a;电商平台的物流管理系统 电商技术揭秘五&#xff1a;电商平台…

vue2 使用vue-org-tree demo

1.安装 npm i vue2-org-tree npm install -D less-loader less安装 less-loader出错解决办法&#xff0c;直接在package.json》devDependencies下面加入less和less-loader版本&#xff0c;然后执行npm i &#xff0c;我用的nodejs版本是 16.18.0&#xff0c;“webpack”: “^4…

Tomcat SSL/TLS Configuration

see https://tomcat.apache.org/tomcat-9.0-doc/ssl-howto.html//1:use jdk keytool A:Generate Keystore 01: C:\Users\User>keytool -genkey -alias tomcat -keyalg RSA -keystore d:/ks/tomcatKeyStore //也可参考:keytool -genkeypair -alias "tomcat" -k…

番茄 abogus rpc调用

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;wx a15018601872 本文章…

如何将h5网页打包成iOS苹果IPA文件

哈喽&#xff0c;大家好呀&#xff0c;淼淼又来和大家见面啦&#xff0c;最近有很多小伙伴都被难住了&#xff0c;是什么问题给他们都难住了呢&#xff0c;许多小伙伴都说想要把h5网页打包成iOS苹果IPA文件&#xff0c;但是却不知道具体怎么操作&#xff0c;是怎么样的一个流程…

探秘大模型:《提示工程:技巧、方法与行业应用》背后的故事

提示工程是一种新兴的利用人工智能的技术&#xff0c;它通过设计提示引导生成式 AI 模型产生预期的输出&#xff0c;来提升人与 AI 的互动质量&#xff0c;激发 AI 模型的潜力&#xff0c;提升AI的应用水平。 为了让每一个人都拥有驱动大模型的能力&#xff0c;以微软全球副总裁…

基于HASM模型的高精度建模matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1HASM模型概述 4.2 HASM模型的数学表述 5.完整程序 1.程序功能描述 本课题主要使用HASM进行高精度建模&#xff0c;主要对HASM模型进行介绍以及在实际中如何进行简化实现的。HASM原始的模…

SQL注入利用学习 - 延时盲注

延时盲注原理 无法利用页面显示结果判断SQL注入是否执行成功&#xff0c;此时可以利用 SQL语句执行的延时 判断SQL是 否执行成功。 只要可以执行延时&#xff0c;那么就可以利用该注入技术。 sql时间类型的盲注本质是利用插入的SQL语句执行造成时间延迟&#xff0c;插入的SQ…

gpt科普1 GPT与搜索引擎的对比

GPT&#xff08;Generative Pre-trained Transformer&#xff09;是一种基于Transformer架构的自然语言处理模型。它通过大规模的无监督学习来预训练模型&#xff0c;在完成这个阶段后&#xff0c;可以用于各种NLP任务&#xff0c;如文本生成、机器翻译、文本分类等。 以下是关…

【VUE】Vue3+Element Plus动态间距处理

目录 1. 动态间距调整1.1 效果演示1.2 代码演示 2. 固定间距2.1 效果演示2.2 代码演示 其他情况 1. 动态间距调整 1.1 效果演示 并行效果 并列效果 1.2 代码演示 <template><div style"margin-bottom: 15px">direction:<el-radio v-model"d…

【实用工具】使用飞书机器人监控工程日志

1.创建一个飞书群聊&#xff0c;设置-->群机器人-->添加机器人-->自定义机器人-->修改机器人名称-->添加 2.复制webhook地址 3.编写日志请求代码 import logging import requests import json import os from datetime import datetime import time import sub…

云平台和云原生

目录 1.0 云平台 1.1.0 私有云、公有云、混合云 1.1.1 私有云 1.1.2 公有云 1.1.3 混合云 1.2 常见云管理平台 1.3 云管理的好处 1.3.1 多云的统一管理 1.3.2 跨云资源调度和编排需要 1.3.3 实现多云治理 1.3.4 多云的统一监控和运维 1.3.5 统一成本分析和优化 1.…

【CSS】MDN

一、CSS构建 1.1 CSS选择器 1.1.1 元素选择器 标签不区分大小写 示例&#xff1a; span {background-color: yellow; }1.1.2 通用选择器 选择文档中所有内容&#xff0c;重置样式表中使用较多 鉴于div:first-child&#xff08;代表所有的div元素&#xff0c;并且是第一个…

【目标检测】-入门知识

1、回归与分类问题 回归问题是指给定输入变量(特征)和一个连续的输出变量(标签),建立一个函数来预测输出变量的值。换句话说,回归问题的目标是预测一个连续的输出值,例如预测房价、股票价格、销售额等。回归问题通常使用回归分析技术,例如线性回归、多项式回归、决策树…