TransFormer--解码器:带掩码的多头注意力层
TransFormer--解码器:带掩码的多头注意力层
以英法翻译任务为例,假设训练数据集样本如下表所示。
| 原句 | 目标翻译 |
|---|---|
| I am good | Je vais bien |
| Good morning | Bonjour |
| Thank you very much | Merci beaucoup |
上表所示的数据集由两部分组成:原句和目标句。在前面,我们学习了解码器在测试期间是如何在每个步骤中逐字预测目标句的。
在训练期间,由于有正确的目标句,解码器可以直接将整个目标句稍作修改作为输入。解码器将输入的作为第一个标记,并在每一步将下一个预测词与输入结合起来,以预测目标句,直到遇到标记为止。因此,我们只需将标记添加到目标句的开头,再将整体作为输入发送给解码器。
比如要把英语句子I am good转换成法语句子Je vais bien。我们只需在目标句的开头加上标记,并将Je vais bien作为输入发送给解码器。解码器将预测输出为Je vais bien,如下图所示。

为什么我们需要输入整个目标句,让解码器预测位移后的目标句呢?
首先,我们不是将输入直接送入解码器,而是将其转换为嵌入矩阵(输出嵌入矩阵)并添加位置编码,然后再送入解码器。假设添加输出嵌入矩阵和位置编码后得到下图所示的矩阵X。

然后,将矩阵X送入解码器。解码器中的第一层是带掩码的多头注意力层。这与编码器中的多头注意力层的工作原理相似,但有一点不同。
为了运行自注意力机制,我们需要创建三个新矩阵,即查询矩阵Q、键矩阵K和值矩阵V。由于使用多头注意力层,因此我们创建了h个查询矩阵、键矩阵和值矩阵。对于注意力头i的查询矩阵 Q i Q_i Qi、键矩阵 K i K_i Ki和值矩阵 V i V_i Vi,可以通过将X分别乘以权重矩阵 W i Q 、 W i K 、 W i V W_i^Q、W_i^K、W_i^V WiQ、WiK、WiV而得。
下面,让我们看看带掩码的多头注意力层是如何工作的。假设传给解码器的输入句是Je vais bien。我们知道,自注意力机制将一个单词与句子中的所有单词联系起来,从而提取每个词的更多信息。但这里有一个小问题。在测试期间,解码器只将上一步生成的词作为输
入。
比如,在测试期间,当t=2时,解码器的输入中只有[, Je],并没有任何其他词。因此,我们也需要以同样的方式来训练模型。模型的注意力机制应该只与该词之前的单词有关,而不是其后的单词。要做到这一点,我们可以掩盖后边所有还没有被模型预测的词。
比如,我们想预测与相邻的单词。在这种情况下,模型应该只看到,所以我们应该掩盖后边的所有词。再比如,我们想预测Je后边的词。在这种情况下,模型应该只看到Je之前的词,所以我们应该掩盖Je后边的所有词。其他行同理,如下图所示。

像这样的掩码有助于自注意力机制只注意模型在测试期间可以使用的词。但我们究竟如何才能实现掩码呢?我们学习过对于一个注意力头i的注意力矩阵 Z i Z_i Zi的计算方法,公式如下。
Z i = S o f t M a x ( Q i ∗ K i T d k ) ∗ v i Z_i = SoftMax(\frac{Q_i * K_i^T}{\sqrt{d_k}}) * v_i Zi=SoftMax(dkQi∗KiT)∗vi
计算注意力矩阵
第1步是计算查询矩阵与键矩阵的点积。下图显示了点积结果。需要注意的是,这里使用的数值是随机的,只是为了方便理解。

第2步是将矩阵除以键向量维度的平方根。假设下图是结果。

第3步,我们对上图所得的矩阵应用softmax函数,并将分值归一化。但在应用softmax函数之前,我们需要对数值进行掩码转换。以矩阵的第1行为例,为了预测后边的词,模型不应该知道右边的所有词(因为在测试时不会有这些词)。因此,我们可以用掩盖右边的所有词,如下图所示。

接下来,让我们看矩阵的第2行。为了预测Je后边的词,模型不应该知道Je右边的所有词(因为在测试时不会有这些词)。因此,我们可以用 − ∞ -\infty −∞掩盖Je右边的所有词,如下图所示。

同理,我们可以用 − ∞ -\infty −∞掩盖vais右边的所有词,如下图所示。

现在,我们可以将softmax函数应用于前面的矩阵,并将结果与值矩阵 V i V_i Vi相乘,得到最终的注意力矩阵 Z i Z_i Zi。同样,我们可以计算h个注意力矩阵,将它们串联起来,并将结果乘以新的权重矩阵 W 0 W_0 W0,即可得到最终的注意力矩阵M,如下所示。
M = C o n c a t e n a t e ( Z 1 , Z 2 , . . . , Z i , . . . , Z h ) W 0 M = Concatenate(Z_1,Z_2,...,Z_i,...,Z_h)W_0 M=Concatenate(Z1,Z2,...,Zi,...,Zh)W0
最后,我们把注意力矩阵M送到解码器的下一个子层,也就是另一个多头注意力层。
相关文章:
TransFormer--解码器:带掩码的多头注意力层
TransFormer--解码器:带掩码的多头注意力层 以英法翻译任务为例,假设训练数据集样本如下表所示。 原句目标翻译I am goodJe vais bienGood morningBonjourThank you very muchMerci beaucoup 上表所示的数据集由两部分组成:原句和目标句。在…...
【ArcGIS微课1000例】0130:图层组详解与使用
文章目录 一、图层组概述二、创建图层组三、在图层组中管理图层四、对话框中图层组的列表一、图层组概述 图层组包含其他图层。图层组有助于对地图中相关类型的图层进行组织,并且可用于定义高级绘制选项。例如,假设在地图上有两个图层分别用于表示铁路和高速公路。您可将这些…...
Linux中配置ntp服务
NTP:是Network Time Protocol的缩写又 称网络时间协议,是用来使计算机时间同步化的一种协议,用来同步网络中各主机的时 间,在linux系统中早期使用ntp来实现,后来使用chrony来实现。Chrony 应用本身已经有 几年了&#…...
微服务day10-Redis面试篇
Redis主从 搭建主从集群 建立集群时主节点会生成同一的replicationID,交给各个从节点。 集群中的缓冲区是一个环型数组,即若从节点宕机时间过长,可能导致命令被覆盖。 主从集群优化 哨兵原理 哨兵是一个集群来确保哨兵不出现问题。 服务状态监控 选举…...
STL序列式容器之list
相较于vector的连续性空间,list相对比较复杂;list内部使用了双向环形链表的方式对数据进行存储;list在增加元素时,采用了精准的方式分配一片空间对数据及附加指针等信息进行存储; list节点定义如下 template<clas…...
docker:基于Dockerfile镜像制作完整案例
目录 摘要目录结构介绍起始目录package目录target目录sh目录init.sh脚本start.sh脚本stop.sh脚本restart.sh脚本 config目录 步骤1、编写dockerfilescript.sh脚本 2、构件镜像查看镜像 3、保存镜像到本地服务器4、复制镜像文件到指定目录,并执行init.sh脚本5、查看挂…...
微信小程序自定义顶部导航栏(适配各种机型)
效果图 1.pages.js,需要自定义导航栏的页面设置"navigationStyle": "custom" 2.App.vue,获取设备高度及胶囊位置 onLaunch: function () {// 系统信息const systemInfo uni.getSystemInfoSync()// 胶囊按钮位置信息const menuButtonInfo uni.…...
sslSocketFactory not supported on JDK 9+
clientBuilder.sslSocketFactory(SSLSocketFactory) not supported on JDK 9 at okhttp3.internal.platform.Jdk9Platform.trustManager(Jdk9Platform.kt:61) at okhttp3.OkHttpClient$Builder.sslSocketFactory(OkHttpClient.kt:751) at 1.升版本4.9.3以上 2、加个函数获取X…...
[Codesys]常用功能块应用分享-BMOV功能块功能介绍及其使用实例说明
官方说明 功能说明 参数 类型 功能 pbyDataSrcPOINTER TO BYTE指向源数组指针uiSizeUINT要移动数据的BYTE数pbyDataDesPOINTER TO BYTE指向目标数组指针 实例应用-ST IF SYSTEM_CLOCK.AlwaysTrue THENCASE iAutoState OF0: //读写完成信号在下次读写信号的上升沿或复位信号…...
大语言模型通用能力排行榜(2024年11月8日更新)
数据来源SuperCLUE 榜单数据为通用能力排行榜 排名 模型名称 机构 总分 理科 文科 Hard 使用方式 发布日期 - o1-preview OpenAI 75.85 86.07 76.6 64.89 API 2024年11月8日 - Claude 3.5 Sonnet(20241022) Anthropic 70.88 82.4…...
信息技术引领未来:大数据治理的实践与挑战
信息技术引领未来:大数据治理的实践与挑战 在信息技术日新月异的今天,大数据已成为企业和社会发展的重要驱动力。大数据治理,作为确保数据质量、安全性和合规性的关键环节,正面临着前所未有的实践挑战与机遇。本文将探讨信息技术…...
Git 分⽀规范 Git Flow 模型
前言 GitFlow 是一种流行的 Git 分支管理策略,由 Vincent Driessen 在 2010 年提出。它提供了一种结构化的方法来管理项目的开发、发布和维护,特别适合大型和复杂的项目。GitFlow 定义了一套明确的分支模型和工作流程,使得团队成员可以更有效…...
基于YOLOv8深度学习的公共卫生防护口罩佩戴检测系统(PyQt5界面+数据集+训练代码)
在全球公共卫生事件频发的背景下,防护口罩佩戴检测成为保障公众健康和控制病毒传播的重要手段之一。特别是在人员密集的公共场所,例如医院、学校、公共交通工具等地,口罩的正确佩戴对降低病毒传播风险、保护易感人群、遏制疫情扩散有着至关重…...
Nature Communications 基于触觉手套的深度学习驱动视触觉动态重建方案
在人形机器人操作领域,有一个极具价值的问题:鉴于操作数据在人形操作技能学习中的重要性,如何有效地从现实世界中获取操作数据的完整状态?如果可以,那考虑到人类庞大规模的人口和进行复杂操作的简单直观性与可扩展性&a…...
构建SSH僵尸网络
import argparse import paramiko# 定义一个名为Client的类,用于表示SSH客户端相关操作 class Client:# 类的初始化方法,接收主机地址、用户名和密码作为参数def __init__(self, host, user, password):self.host hostself.user userself.password pa…...
WPF中MVVM工具包 CommunityToolkit.Mvvm
CommunityToolkit.Mvvm,也称为MVVM工具包,是Microsoft Community Toolkit的一部分。它是一个轻量级但功能强大的MVVM(Model-View-ViewModel)库,旨在帮助开发者更容易地实现MVVM设计模式。 特点 独立于平台和运行时&a…...
学习空闲任务函数
一、user_StopEnterTask 停止 进入任务 /* Private includes -----------------------------------------------------------*/ //includes #include "user_TasksInit.h" #include "user_MPUCheckTask.h"#include "ui.h" #include "ui_Hom…...
Hyper-v中ubuntu与windows文件共享
Hyper-v中ubuntu与windows文件共享 前言相关链接第一步--第一个链接第二步--第二个链接测试与验证 前言 关于Hyper-V的共享我搞了好久,网上的很多教程太过冗余,我直接采用最简单的办法吧 相关链接 Hyper-V中Ubuntu 同windows系统共享文件夹-百度经验 …...
【软件工程】一篇入门UML建模图(类图)
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀软件开发必练内功_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前…...
Windows 安装Docker For Desktop概要
Windows 安装docker 下载部分的工作需要使用科学技术。如果没有可以联系博主发送已下载好的文件。 本文档不涉及技术的讲解,仅有安装的步骤。 准备工作 包含下载与环境准备,下载的文件仅下载,在后续步骤进行安装。 微软关于wsl的文档&…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
ubuntu22.04 安装docker 和docker-compose
首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...
xmind转换为markdown
文章目录 解锁思维导图新姿势:将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件(ZIP处理)2.解析JSON数据结构3:递归转换树形结构4:Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...
