深入理解深度学习——注意力机制(Attention Mechanism):带掩码的多头注意力(Masked Multi-head Attention)

news2024/11/26 10:17:04

分类目录:《深入理解深度学习》总目录

相关文章:
·注意力机制(AttentionMechanism):基础知识
·注意力机制(AttentionMechanism):注意力汇聚与Nadaraya-Watson核回归
·注意力机制(AttentionMechanism):注意力评分函数(AttentionScoringFunction)
·注意力机制(AttentionMechanism):Bahdanau注意力
·注意力机制(AttentionMechanism):自注意力(Self-attention)
·注意力机制(AttentionMechanism):多头注意力(MultiheadAttention)
·注意力机制(AttentionMechanism):位置编码(PositionalEncoding)


在《深入理解深度学习——注意力机制(Attention Mechanism):自注意力(Self-attention)》中,我们为了运行自注意力机制,我们需要创建三个新矩阵,即查询矩阵 Q Q Q、键矩阵 K K K和值矩阵 V V V。由于使用了《深入理解深度学习——注意力机制(Attention Mechanism):多头注意力(Multi-head Attention)》中的多头注意力层,因此我们创建了 h h h个查询矩阵、键矩阵和值矩阵。对于注意力头 i i i的查询矩阵 Q i Q_i Qi、键矩阵 K i K_i Ki和值矩阵 V i V_i Vi,可以通过将 X X X分别乘以权重矩阵 W i q W^q_i Wiq W i k W^k_i Wik W i v W^v_i Wiv而得。

下面,让我们看看带掩码的多头注意力层是如何工作的。假设传给解码器的输入句是<sos>Je vais bien。我们知道,自注意力机制将一个单词与句子中的所有单词联系起来,从而提取每个词的更多信息。但这里有一个小问题。在测试期间,解码器只将上一步生成的词作为输入。比如,在测试期间,当 t = 2 t=2 t=2时,解码器的输入中只有[<sos>,Je],并没有任何其他词。因此,我们也需要以同样的方式来训练模型。模型的注意力机制应该只与该词之前的单词有关,而不是其后的单词。要做到这一点,我们可以掩盖后边所有还没有被模型预测的词。比如,我们想预测与<sos>相邻的单词。在这种情况下,模型应该只看到<sos>,所以我们应该掩盖<sos>后边的所有词。再比如,我们想预测Je后边的词。在这种情况下,模型应该只看到Je之前的词,所以我们应该掩盖Je后边的所有词。其他行同理,如下图所示。
掩码
像这样的掩码有助于自注意力机制只注意模型在测试期间可以使用的词。对于一个注意力头 i i i的注意力矩阵 Z i Z_i Zi的计算方法:
Z i = Softmax ( Q i K i T d k ) V i Z_i=\text{Softmax}(\frac{Q_iK^T_i}{\sqrt{d_k}})V_i Zi=Softmax(dk QiKiT)Vi

需要计算带掩码的多头注意力,主要有以下几步:

  1. 计算查询矩阵与键矩阵的点积。下图显示了点积结果。需要注意的是,这里使用的数值是随机的,只是为了方便理解。查询矩阵与键矩阵的点积
  2. Q i K i T Q_iK^T_i QiKiT矩阵除以键向量维度的平方根 d k \sqrt{d_k} dk ,假设下图是 Q i K i T d k \frac{Q_iK^T_i}{\sqrt{d_k}} dk QiKiT的结果:计算注意力矩阵的第2步
  3. 我们对上图所得的矩阵应用Softmax函数,并将分值归一化。但在应用Softmax函数之前,我们需要对数值进行掩码转换。以矩阵的第1行为例,为了预测<sos>后边的词,模型不应该知道<sos>右边的所有词(因为在测试时不会有这些词)。因此,如下图所示,对于第1行我们可以用 − ∞ -\infty 掩盖<sos>右边的所有词,第2行用 − ∞ -\infty 掩盖Je右边的所有词,以此类推。[插图]掩盖右边的所有词

现在,我们可以将Softmax函数应用于前面的矩阵,并将结果与值矩阵 V i V_i Vi相乘,得到最终的注意力矩阵 Z i Z_i Zi。同样,我们可以计算 h h h个注意力矩阵,将它们串联起来,并将结果乘以新的权重矩阵 W 0 W_0 W0,即可得到最终的注意力矩阵 M M M
M = Concatenate ( Z 1 . Z 2 , ⋯   . Z h ) W 0 M=\text{Concatenate}(Z_1. Z_2, \cdots. Z_h)W_0 M=Concatenate(Z1.Z2,.Zh)W0

参考文献:
[1] Lecun Y, Bengio Y, Hinton G. Deep learning[J]. Nature, 2015
[2] Aston Zhang, Zack C. Lipton, Mu Li, Alex J. Smola. Dive Into Deep Learning[J]. arXiv preprint arXiv:2106.11342, 2021.
[3] 车万翔, 崔一鸣, 郭江. 自然语言处理:基于预训练模型的方法[M]. 电子工业出版社, 2021.
[4] 邵浩, 刘一烽. 预训练语言模型[M]. 电子工业出版社, 2021.
[5] 何晗. 自然语言处理入门[M]. 人民邮电出版社, 2019
[6] Sudharsan Ravichandiran. BERT基础教程:Transformer大模型实战[M]. 人民邮电出版社, 2023
[7] 吴茂贵, 王红星. 深入浅出Embedding:原理解析与应用实战[M]. 机械工业出版社, 2021.

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

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

相关文章

想了解会计软件吗?来看看Zoho Books的功能和特点

Zoho Books 是一款功能强大的在线会计软件&#xff0c;为企业提供多合一解决方案&#xff0c;该解决方案可定制、可扩展&#xff0c;并使始终保持合规。 轻松生成电子发票 在Zoho Books中&#xff0c;您可以通过包含电子发票架构中提到的所有必填字段来创建电子发票格式的发票。…

css 包含块

你不知道的 CSS 之包含块 一说到 CSS 盒模型&#xff0c;这是很多小伙伴耳熟能详的知识&#xff0c;甚至有的小伙伴还能说出 border-box 和 content-box 这两种盒模型的区别。 但是一说到 CSS 包含块&#xff0c;有的小伙伴就懵圈了&#xff0c;什么是包含块&#xff1f;好像…

【啃】《Java核心卷 一》 | 第一,二章

文章目录 《Java核心技术卷 一》第一章 概述第二章 Java编程环境 图书推荐 《Java核心技术卷 一》 第一章 概述 前言&#xff1a;本书与一些”0基础入门“的书定位感觉是不太一样的&#xff0c;可能就像书名所说&#xff0c;是”核心技术“叭。书中经常将Java语言与 c 进行对比…

无损网络理论和实践

一、为什么需要无损网络&#xff1f; 随着高性能计算、大数据分析、人工智能以及物联网等技术的飞速发展&#xff0c;集中式存储、分布式存储以及云数据库的普及等原因&#xff0c;业务应用有越来越多的数据需要从网络中获取&#xff0c;这对数据中心网络的交换速度和性能要求…

Linux :: 权限篇:【1】:Linux 下文件访问者身份说明:三人一组!【补充:Linux下用户类型的分类!】

系列文章说明 前言&#xff1a;本篇是 Linux 基本操作篇章的内容&#xff01; 笔者使用的环境是基于腾讯云服务器&#xff1a;CentOS 7.6 64bit。 学习集推荐&#xff1a; C 入门到入土&#xff01;&#xff01;&#xff01;学习合集Linux 从命令到网络再到内核&#xff01;学习…

【Flutter】Flutter 如何调用另一个 Page 里的函数

文章目录 一、前言二、状态管理和页面函数调用1. 状态管理简介2. 页面函数调用的需求 三、方法介绍和示例1. Provider 方法2. Global Key 方法3. 回调函数方法 四、总结 一、前言 本文的目标是为 Flutter 初学者解释如何在 Flutter 中调用另一个 Page 里的函数。通过阅读本文&…

碳排放预测模型 | Python实现基于机器学习回归分析的碳排放预测模型——数据清理和准备

文章目录 效果一览文章概述研究内容源码设计参考资料效果一览 文章概述 碳排放预测模型 | Python实现基于机器回归分析的碳排放预测模型——数据清理和准备 研究内容 分析国家在设计用于预测和预测二氧化碳排放的机器学习模型方面的特定记录,利用来自全球绝大多数国家的记录。…

探索iOS之Metal编程指南

iOS推出Metal渲染库为了取代OpenGL。Metal有自己的Shader语言&#xff0c;渲染效率比OpenGL高。在这里我们一起探索&#xff1a;Metal使用C限制、预处理定义、动态链接配置、GPU编译配置、设备坐标系、视口坐标系、纹理坐标系、矢量类型、矩阵类型、采样器状态、矩阵相乘。 1、…

如何下载远程maven仓库的jar 手动放到本地仓库?

文章目录 如何下载远程maven仓库的jar 手动放到本地仓库?简单步骤描述:详细步骤描述:案例1:案例2:结语如何下载远程maven仓库的jar 手动放到本地仓库? 在使用Maven构建Java项目时,通常会从中央仓库或其他远程仓库下载所需的依赖库。但是,有时候我们需要手动下载这些依赖库并…

Java并发之 Lock 锁

一、Lock接口 1 Lock简介&地位&作用 锁是一种工具&#xff0c;用于控制对共享资源的访问Lock和synchronized是最常见的两个锁&#xff0c;他们都能够达到线程安全的目录&#xff0c;但是使用和功能上又有较大的不同Lock接口最常见的实现类就是ReentrantLock通常情况下…

【LeetCode热题100】打卡第21天:最小路径和爬楼梯

文章目录 【LeetCode热题100】打卡第21天&#xff1a;最小路径和&爬楼梯⛅前言 最小路径和&#x1f512;题目 爬楼梯&#x1f512;题目&#x1f511;题解 【LeetCode热题100】打卡第21天&#xff1a;最小路径和&爬楼梯 ⛅前言 大家好&#xff0c;我是知识汲取者&#…

深入了解RTMP协议:实时传输的利器

&#x1f604;作者简介&#xff1a; 小曾同学.com,一个致力于测试开发的博主⛽️&#xff0c;主要职责&#xff1a;测试开发、CI/CD 如果文章知识点有错误的地方&#xff0c;还请大家指正&#xff0c;让我们一起学习&#xff0c;一起进步。&#x1f60a; 座右铭&#xff1a;不想…

【环境配置】MATLAB r2022b+opencv3.4.1+mexopencv3.4.1+Windows 11 配置

参考链接&#xff1a; mexopencv官方文档&#xff1a;介绍了全部流程 补充官方文档Configure OpenCV出现的问题&#xff1a;直到Configure后没有红色&#xff0c;再点击Generate 最新Opencv 与 VC 的版本对应关系&#xff08;2023-04-08&#xff09; MATLAB支持和兼容的编译器 …

大学物理(上)-期末知识点结合习题复习(5)——刚体力学-转动惯量、力矩、线密度 面密度 体密度、平行轴定理和垂直轴定理、角动量定理和角动量守恒定律

目录 刚体的定轴转动 题1 题目描述 题解 题2 题解 题3 题目描述 题解 题4 题目描述 题解 题5 题目描述 题解 角动量定理和角动量守恒定律 刚体的定轴转动 1.转动动能 由&#xff0c;得 表示质量 表示质量分布点 2.转动惯量 为刚体对给定轴的转动惯量&…

原生小程序 微信小程序 使用ucharts

一般是uni-app项目使用ucharts在原生微信小程序也是可以使用。 方法&#xff1a; ## 使用说明 请将项目根目录 微信小程序/uCharts-组件/qiun-wx-ucharts/src 下全部文件复制到指定位置&#xff0c;例如该项目的components/qiun-wx-uchart目录下&#xff0c;然后在页面的json配…

2023互联网寒冬之下Java程序员要怎么应对才能找到工作

在互联网寒冬下&#xff0c;Java程序员需要做好哪些方面的准备&#xff0c;才能够更好地找到工作呢&#xff1f; 1.关注用人单位的招聘需求&#xff1b;Java程序员应该关注用人单位的招聘信息&#xff0c;并针对不同的招聘岗位进行精准的自我定位和筛选。在面试前可以充分了解…

Gin框架原生方式切割日志,Go语言原生日志切割

目录 摘要 痛点 正文 1.分析 io.Writer 接口 2.实现 io.Writer 接口 3.将它作为原生输出 4.将它作为 Gin 框架的输出 摘要 自定义一个日志输出&#xff0c;将go语言和gin框架的日志自动按天拆分。本文通过实现io.Writer接口的方式&#xff0c;替换原生和gin框架的默认W…

DAY21——二叉树part7

1.二叉搜索树最小差值 二叉搜索树中序遍历得到有序的数字序列&#xff0c;记录前一个节点 class Solution {TreeNode pre;int result Integer.MAX_VALUE;public int getMinimumDifference(TreeNode root) {if(rootnull)return 0;traversal(root);return result;}private voi…

【Java算法题】剑指offer_数据结构之03队列栈

前言 刷题链接&#xff1a; https://www.nowcoder.com/exam/oj/ta?page2&tpId13&type265 原定于5.30写完队列&栈&#xff0c;超时了14天&#xff08;2周&#xff09;&#xff0c;于6.13完成。 刷算法题到现在得出一个心得&#xff0c;万事开头难。没刷之前总觉得…

django的项目结构介绍

目录 django的安装django项目创建django项目启动django项目关闭django项目个个文件分析核心文件 manage.py项目内部文件start01/start01setting文件的讲解 django的安装 pip install django检测安装后的版本 python -m django --versiondjango项目创建 django安装以后 会自动…