Transformer中Self-Attention的详细解读

Transformer最早是在论文《Attention is All You Need》中提出的,目前已广泛应用于NLP领域,如语言翻译、文本分类、问答系统等。由于在产品规划中需要使用这样的模型结构,因此花了一些时间对其进行了一些学习理解。

除了阅读论文及配套的代码之外,还参考了Jay Alammar的技术讲解博客The Illustrated Transformer。这篇博客非常推荐Transformer的初学者,像我这样的语言模型菜鸟读起来都没什么压力。

1. Transformer模型结构

在讲Self-Attention之前,我们先来看看Transformer的结构。论文中给出的Transformer结构如下:

图1 model architecture

不同数量的Encoder和Decoder的堆叠,就可以组成不同的Transformer结构,例如在翻译模型中,可以使用6个Encoder和6个Decoder来组成整个模型:

图2 NMT模型的完整结构

那么,接下来我们看看每个Encoder和Decoder内部的结构。简单来理解,每个Encoder内部包含两大部分:Self-Attention和Feed-Forward;而Decoder内部结构则略复杂一点,比起Decoder,还多了一层Encoder-Decoder Attention。

图3 encoder和decoder内部模块划分

2.  数据流

我们关注的第二个议题是,作为文字的输入数据是如何在模型中处理的?答案就是:需要将文字转换为数字,也就是Word Embedding。这是因为机器学习算法通常要求输入为数值向量,网络并不擅长处理字符串。将词汇或短语从文字映射成实数向量,除了易于神经网络处理,另外还有两个重要而有力的特性:(1) 降维, (2) 上下文相似性,这两方面都使得语言能够被更有效地表示。

Word Embedding只在最下面一层的Encoder进行,其他Encoder接收上一个Encoder输出的向量。向量大小为512。对一整个句子中的词语完成Embedding之后,这些vector将会经过每个encoder的Self-attention层和Feed-forward层。

图4 Encoder中的数据流

从上图中我们可以看到,每一个位置的词向量按照自己的路径经过Encoder,在Self-attention模块,这些词向量会有交互,在Feed-forward模块,每个词向量是独立传播的,这也有利于它们的并行执行。

3. Self-Attention的实现

论文中对Self-attention的描述为Scaled Dot-Product Attention,并给出了实现公式:

 输入为dk维的Queries和Keys,以及dv维的Values,图形化表示如下:

图5 Scaled Dot-Product Attention

有点抽象对吧?那我们就跟随文章开头提到的那篇博客的脚步,来解释这个结构。

Self-attention的目的是要寻找输入向量(可以理解为输入语句)内部的关联,例如要翻译下面这句话:

The animal didn't cross the street because it was too tired

那么,句子中的it指代什么呢?是指the animal,还是指the street?对于机器学习来说,这就是个问题。那么通过学习句子中不同单词的关联性,就可以知道it指代的是the animal。

图6 Self-attention应用解释示例

3.1 Self-attention的分步理解

对Self-attention的理解可以分为几个步骤:

(1) 首先,我们需要创建三个vector,分别是Query vector、Key vector和Value vector,这几个vectors的获取是通过输入的embedding和三个矩阵WQ、WK和WV相乘,这三个矩阵是网络在训练中学习到的。论文中设计的三个输出vector维度为64。

图7 Query, Key, Value三个vector的生成

(2) 接下来,我们要使用计算出来的三个vectors进行打分计算具体做法是:对每一个单词位置,计算该位置的Query vector和每一个位置的Key vector的点积,以下图为例,第一个单词在整个输入序列(本例中只有两个单词)中对应位置的分数计算分别为:q1·k1,q1·k2;同样的,如果计算第二个单词在整个输入序列对应位置的分数,则应该是:q2·k1,q2·k2。

图8 Self-attention中的score计算

(3) (4) 我们把第三步和第四步合并,首先,上面的score计算结果要除以8(见上面Attention公式,dk为64,其平方根为8),接下来进行softmax操作,将分数归一化到0~1之间,并使其和为1:

图9 对score除以8并归一化

进行以上操作之后,我们就可以看到,每个单词在每个位置上的关注度。在此例中,“Thinking”这个单词在自身位置的关注度最大。当然也会有些句子,当前位置的单词对其他位置的单词关注度比较大,比如我们前面例子中的“it”和“the animal”。

(5) 前面步骤我们已经算出了每个单词处理时,在不同位置上的关注度,相当于权重,那么接下来我们需要将该权重作用在Value vector上,可以理解为对关注位置的单词进行保持,而抑制非相关位置上单词的权重。

(6) 第六步是对第(5)步的加权向量进行求和。该步会产生Self-attention在当前单词位置的输出。

图10 求和并输出

3.2 Self-attention的矩阵实现

上面我们分步骤理解了Self-attention的原理和实现,但在实际应用中,为了快速执行,是通过矩阵的形式来进行的。那么矩阵如何实现呢?

首先,计算Query、Key和Value几个矩阵(在前面讲的分步理解中,是Query vector、Key vector和Value vector),矩阵的计算通过将输入embedding vectors打包成一个Matrix X(相当于把前面的X1、x2...堆叠在一起),再跟训练出来的权重矩阵(WQ、WK和WV)做矩阵乘法。

图11 计算Q, K, V矩阵

接下来,通过矩阵运算把3.1中的六个步骤压缩到一步中处理,如下图所示:

图12 Self-attention的完整矩阵运算

以上就是Transformer中Self-Attention的完整解读了。网络结构中还有Multi-Head Attention等结构,为了篇幅简洁,我们放在下一篇中来解读。

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

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

相关文章

2024.1.31 校招 实习 内推 面经

绿*泡*泡VX: neituijunsir 交流*裙 ,内推/实习/校招汇总表格 1、实习 | NVIDIA 英伟达 2024 实习生招聘正在火热招聘中(内推) 实习 | NVIDIA 英伟达 2024 实习生招聘正在火热招聘中(内推) 2、校招&…

less 使用记录

官网less 1.把less转为css 在线转换网页: LESSTESTER - Less Sandbox 2.定义列表,循环生成颜色变量 // 定义列表 colors: blue, red, green;// 使用 each 函数循环遍历 colors 列表 .eachColor(index) when (index > 0) {// 获取当前颜色color: e…

JS-05-字符串

一、字符串的表示 JavaScript的字符串就是用...或"..."括起来的字符表示。 如果本身也是一个字符,那就可以用"..."括起来,比如: var a "Im ok"; 如果字符串内部既包含又包含"怎么办?可以…

Java开发从入门到精通(一):Java的Spring框架

目录: Spring 是什么? Spring 的优点? Spring 懒加载机制 BeanFactory和ApplicationContext有什么区别? Spring Bean 的5种作用域 Spring Bean 的生命周期 Spring 如何处理线程并发问题? Spring 框架中都用到了哪些设计模式&…

每日一题-环形链表的约瑟夫问题

🌈个人主页: 会编辑的果子君 💫个人格言:“成为自己未来的主人~” /*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * param n int整型 * param m int整型 * return int整型*/ typedef struct…

【MATLAB 】 EMD信号分解+FFT傅里叶频谱变换组合算法

有意向获取代码,请转文末观看代码获取方式~ 展示出图效果 1 EMD信号分解算法 EMD 分解又叫经验模态分解,英文全称为 Empirical Mode Decomposition。 EMD 是一种信号分解方法,它将一个信号分解成有限个本质模态函数 (EMD) 的和&#xff0c…

地平线零之曙光图文攻略,地平线零之曙光在MAC电脑能玩吗

《地平线零之曙光》是一款由Guerrilla Games开发的动作角色扮演游戏,。 如果你非常想在MAC电脑体验这款游戏,可以考虑通过crossover来实现在MAC电脑上进行游玩。 本文讲描述如何在MAC电脑玩地平线:黎明时分 首先下载安装好crossover&#…

ES6数组方法比较

console.log("**************数组方法比较***************"); {var arr [1, 2, 3, 4, 5, 6];console.log(arr.some(item > {return item > 3;}));// 输出结果:true//some判断数组中的每一项是否满足条件,遇到第一个满足条件的项&#x…

Alias许可配置

在数字化时代,软件已成为企业竞争的核心要素。然而,随着软件市场的日益复杂,如何合理配置和使用软件许可,已成为企业亟待解决的问题。Alias许可配置服务,凭借其卓越的功能和性能,帮助企业优化软件使用&…

SQL 中避免使用 != 或 <>

1. 索引效率 ! 或 <> 操作符通常无法有效利用索引&#xff0c;因为它们选择除了某个特定值之外的所有值&#xff0c;这可能涉及到表中的大多数行。相比之下&#xff0c;使用 或其他范围查询&#xff08;如 <, <, >, >&#xff09;通常可以更好地利用索引&a…

想交易盈利?Anzo Capital昂首资本发现了一本畅销书

要想在复杂多变的外汇市场中迅速加深了解并想通过交易每天都可以盈利&#xff0c;是通过每天阅读大量的书籍吗&#xff1f;是每天成为行业培训网络资源和论坛的常客吗&#xff1f;是通过花钱请有经验的交易者进行个人培训吗&#xff1f;还是进行EA交易呢&#xff1f; 都不是&a…

【VTKExamples::Points】第二期 DensifyPoints

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例DensifyPoints,并解析接口vtkDensifyPointCloudFilter,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力…

Spring Cloud Gateway介绍及入门配置

Spring Cloud Gateway介绍及入门配置 概述&#xff1a; Gateway是在Spring生态系统之上构建的API网关服务&#xff0c;基于Spring6&#xff0c;Spring Boot 3和Project Reactor等技术。它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式&#xff0c;并为它们提供…

第十五课 PCB保姆级规则设置(四)

1.常用的规则设置 2.设置完规则后&#xff0c;重新设置规则检查 将不设置的规则&#xff0c;不勾选 3.布线规则 &#xff08;1&#xff09;先走短线&#xff08;模块之内的线&#xff09; 模块之内的线需要连接&#xff0c;长线的话提前打孔&#xff08;占位置&#xff09;…

盘点热门的5个AI视频工具(上):附保姆级教程,居然还有免费的?(建议收藏)

一条完全使用 AI 做出的短视频&#xff0c;点赞上万&#xff0c;转发上万&#xff01; 你敢信&#xff0c;这是我在前几天刷视频的时候&#xff0c;看到的一个 AI 视频案例。 这种 AI 视频为什么会火&#xff1f; AI 虽然不是什么新的领域&#xff0c;但 2023 年&#xff0c…

如何批量更改图片的创建时间和修改时间 ? 图片属性更改

在数字时代&#xff0c;图像已经成为我们日常生活中不可或缺的一部分。无论是在社交媒体上分享生活点滴&#xff0c;还是在工作报告中展示数据成果&#xff0c;图像都扮演着至关重要的角色。然而&#xff0c;有时我们可能需要对图像进行一些调整&#xff0c;以更好地满足我们的…

【MyBatis面试题】

目录 前言 1.MyBatis执行流程。 2.Mybatis是否支持延迟加载&#xff1f; 3.延迟加载的底层原理知道吗&#xff1f; 4.Mybatis的一级、二级缓存用过吗&#xff1f; 5.Mybatis的二级缓存什么时候会清理缓存中的数据&#xff1f; 总结 前言 本文主要介绍了MyBatis面试题相…

机器学习的魔法(一)从零开始理解吴恩达的精炼笔记

一、机器学习是什么&#xff1f; 1、机器学习的概念 机器学习是一种人工智能领域的技术和方法&#xff0c;旨在使计算机系统能够从经验数据中自动学习和改进&#xff0c;而无需显式地进行编程。它涉及开发算法和模型&#xff0c;使计算机能够自动分析和理解数据&#xff0c;并…

基于DoDAF的航空装备智能保障系统体系结构建模

源自&#xff1a;系统工程与电子技术 作者&#xff1a;苗学问, 董骁雄, 钱征文, 胡杨, 李牧东 “人工智能技术与咨询” 发布 摘 要 保障系统结构建模是发展和构建新一代航空装备智能保障系统的重要基础。航空装备保障系统涉及保障要素多、交联关系复杂, 需从系统工程的角度…

详细介绍什么是美国FDA认证介绍

美国FDA认证是指由美国食品药品监督管理局&#xff08;Food and Drug Administration&#xff0c;简称FDA&#xff09;颁发的一种认证&#xff0c;它主要用于确保在美国市场上销售的食品、药品、医疗器械、生物制品、化妆品等产品的安全性和有效性。FDA认证是美国政府为了保护公…