Transformer解读之:Transformer 中的 Attention 机制

news/2024/4/30 10:21:36/文章来源:https://blog.csdn.net/qq_42902997/article/details/127286929

在这里插入图片描述

encoder 的 attention

  • 场景:现在要训练的内容是 I love my dog -> 我喜欢我的狗
  • 那么在 encoder 端的输入是: I love my dog;
  • 假设经过 embedding 和位置编码后,I love my dog 这句话肯定已经变成了一个向量,但是在这里方便起见,我们依然用 I love my dog 来表示经过了处理之后的向量表示,后面有机会我会将向量的维度拆解开再给大家讲一遍
  • 接下来要进入 encoder 端的 attention 层了

attention 的动机

  • 动机很简单:生成一个张量,张量表示了输入的每一个词向量和其他词向量之间的关系。
  • 这个关系的表示,需要在一个给定维度的空间中完成(在另外一个空间中求相似度,后面会解释)。而在多少维度的空间中进行,就取决于我们在 attention 中指定的线性层的维度

如何衡量关系——相似度

  • 我们初中就学过,衡量两个向量的相似度的方法就是向量点乘,数值越大越相似
  • 而编码过的单词天生就是向量

如何构造两个相乘的向量

  • 难道要用 III 向量和所有的 Love,my,dogLove, my, dogLove,my,dog 都相乘一遍得到相似度么?
  • 这个思考方向是对的,但是存在一个问题,就是这样乘出的相似度没有意义,因为在当前的表示空间中,所有的词的向量表示都是固定的;
  • 而我们想让那些彼此相乘的向量具有以下特点:
    • 这些向量能够代表文本向量的信息,因为我们还是想要得到 III 到底和 LoveLoveLove 关系更近还是和 MyMyMy 关系更近
    • 这些向量能够带有可学习的参数,通过神经网络的迭代自己学出来;这样可以保证在不同的场景下,权重可以自行改变,有时候 III 可以和 lovelovelove 的关系更近,而有些时候则和其他的单词的关系更近
  • 所以这很自然有一个想法:

在这里插入图片描述

  • 我直接以原文本的向量为基础,通过线性层对他的特征进行一次处理,这样得到的向量不就具有上述特点了么;
  • 线性层的输入是原文本的向量,这样可以保证线性层的输出是原文本的一种表示,这相当于将原本的所有词向量映射到另外一个高维空间中的向量,而这个过程引入了可学习的参数,相当于那些被映射过去的向量之间的关系并未确定,而是需要根据 loss 和反向传播不断更新才能最终收敛,直到那时,词向量之间的关系才被最终确定。
  • 这就是 Transformer 中总是提到的 q,k,vq, k, vq,k,v 向量和 Q,K,VQ,K,VQ,K,V 矩阵的作用了;我们先说 q,k,vq, k, vq,k,v 向量;后面很自然地会过渡到 Q,K,VQ, K, VQ,K,V 矩阵。

  • 我们以 III 这个文本为例,对他采用线性层生成一个 qqq 向量,这个 qqq 向量包含了 III 向量原本的信息,然后对其他的所有文本也都通过线性层生成他们各自的 kkk 向量;这些 kkk 向量其实和 qqq 是完全一样的东西,都只是线性层的输出而已,但是为了进行后面的操作,我们人为地对这些向量进行区分

  • 当然,除了III 之外的单词也会产生 qqq 向量,只是这里我们先看 III 这个单词,所以先将 III 当做主角,其他单词的 qqq 向量也是同样的作用,如法炮制

  • 得到 IIIqqq 向量之后,让这个 qqq 向量和其他所有单词产生的 kkk 向量 klove,kmy,kdogk_{love}, k_{my}, k_{dog}klove,kmy,kdog 进行点乘,是不是就可以获得 I 对其他所有单词的值(有几个单词就产生几个值)但是这些值还不能叫做权重,因为相似度计算出的值范围根本不确定;因此我们对这些值共同算一个 softmax 就可以得到权重值了。

  • 举个🌰,假设 IIIqqq 向量和每个 kkk 计算得到的值分别为 [a,b,c,d][a, b, c, d][a,b,c,d];这些值要进行放缩之后再 softmaxsoftmaxsoftmax 才能得到最终的权重值。

  • 再强调一遍,这个权重值会根据训练的不同阶段而不断更新,但是我们知道,通过这个步骤,III 建立了它对所有单词的关系,这些关系其实就只是在另外一个高维空间中的相似度数值而已。

在这里插入图片描述

  • 最终还要再用 v 向量再去和每一个生成的相似度权重 sim_qk_nsim\_{qk}\_nsim_qk_n (每一个都是标量)相乘之后相加,得到一个最终的向量。这个最终的向量编码了 I 和其他词向量的关系

  • 同样的,对于 Love,my,dogLove, my, dogLove,my,dog 这些词向量,也通过相同的方式获得了他们各自的最终和其他词向量在高维空间中的关系表示

  • 我们用向量的维度来具体的,更加深入理解一下这个过程:

    • 假设 I,love,my,dogI,love,my,dogIlovemydog 都已经被 embeddingembeddingembedding 成维度为 6 的向量,即,(1,6)(1,6)(1,6)
    • 线性层选的神经元个数都是 5,即,(1,5)(1, 5)(1,5) 代表我们想在一个 5 维的空间中构建这些词之间的关系
    • 那么 q,k,vq, k, vq,k,v 也都是 (1,5)(1, 5)(1,5) 的向量
    • IIIqiq_iqi(1,5) 与这四个 kkk 点乘之后,可以得到 4 个标量,
    • 将这 4 个标量分别与 vi:(1,5)v_i: (1,5)vi:(1,5) 相乘(标量乘)并相加,得到的最终还是一个向量 vi′:(1,5)v_i^{'}: (1, 5)vi:(1,5),这个 vi′v_i^{'}vi 编码了 qiq_iqi 和其他词向量在 5 维空间中的相关关系。
    • 这个过程中的 qiq_iqi 和多个 kkk 进行运算的步骤可以转成向量和矩阵的乘法, qiq_iqi,和 4 个 k 组成的张量 K:(4,5)K: (4, 5)K:(45) 进行相乘,(注意,这里要将 KKK 进行转置),得到 qKTq K^TqKT 维度是 (1,5)∗(5,4)=(1,4)(1, 5)* (5, 4)= (1, 4)1554=14就是那四个标量值组成的向量
    • 这只是一个对 qiq_iqi 求算 attentionattentionattention 的整体步骤,而我们刚好要对所有单词生成的 q 都进行这个过程,所以我们可以也把 qqq 做成 QQQ,也就是将所有的 4 个单词的 qqq 直接拼起来组成的 Q:(4,5)Q: (4, 5)Q:(4,5), 与刚才的 KT:(5,4)K^T: (5,4)KT:(5,4) 得到 权重矩阵 QKT:(4,4)QK^{T}: (4, 4)QKT:(4,4)
    • 然后将所有单词的 v 向量也拼起来,组成 V:(4,5)V: (4, 5)V:(4,5) 与权重矩阵 (4,4)(4, 4)(4,4) 最终得到 attentionattentionattention 的矩阵 QKTV(4,5)QK^{T} V (4,5)QKTV(4,5这其中的 4 代表的是这 4 个单词与其他单词的 attentionattentionattention 关系的编码, 5 则代表这些 attentionattentionattention 关系被编码的空间是一个维度为 5 的空间。5 个数值来共同表示这些关系。

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

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

相关文章

一文彻底搞清Linux中块设备驱动的深层次原理和编写方法

【摘要】本文主要讲述了在Linux环境下的块设备驱动的常见数据结构和内核接口,并以一个实际例子讲述了块设备驱动的编写方法。 1.前提知识 一个块驱动提供对块存储设备(比如 SD 卡、EMMC、NAND Flash、Nor Flash、SPI Flash、机械硬盘、固态硬盘等&…

Bed Bath Beyond EDI 856提前发货通知

自从1971年创业以来,Bed Bath&Beyond(以下简称为BBB)一直在为用户提供货真价实的卫浴用品,床上用品等家用商品。Bed Bath&Beyond 致力于成为一个勇于承担责任的公司团体,在市场建立起良好的信誉,提…

JavaSE 案例练习——精算师 double精度丢失解决思路

案例介绍 具体的内容是这样的: 编写一个程序,提示输入一个代表总钱数的双精度值,然后确定每种纸币和硬币需要的最少数量以达到输入的总钱数。 假设人民币种类如下:佰圆纸钞,伍拾圆纸钞,贰拾圆纸钞&#…

Asible最佳实践-进阶版-RHCA447 定义分组与变量

Asible最佳实践-进阶版-RHCA447 -------定义角组变量/主机变量/变量文件6.1 所有受管节点设置sudo免密[root@libin libin]# vim /etc/sudoers.d/devops libin ALL=(ALL) NOPASSWD:ALL [root@libin sudoers.d]# scp devops 192.168.124.134:`pwd` 6.2 自定义ansible目录[root@l…

学习使用jquery控制select下拉选项的字体样式

学习使用jquery控制select下拉选项的字体样式实现代码实现代码 <script src"../jquery-2.1.4.min.js"></script><style>div#container {padding: 30px;font-family: verdana, lucida;}a {color: #777;display: block;background-color: #ccc;widt…

向开发者开放免费注册!“远眺捷码”提供一站式软件快速开发平台

近日&#xff0c;远眺科技旗下具有自主知识产权的国产一站式软件快速开发平台——“远眺捷码”宣布正式开放免费注册&#xff0c;有各类软件应用开发等需求开发者、软件开发企业&#xff0c;可访问捷码官网https://www.gemcoder.com/ 操作步骤&#xff1a; Step1、打开捷码PC端…

客户成功 | 数据解码技能提升,Smartbi助力长沙烟草找到“新路子”

让数据会“说话”能“干活”&#xff0c;为客户挖掘出更深层的数据价值&#xff0c;是Smartbi一直以来助力企业数字化转型的目标和方向。大数据时代&#xff0c;每个科学的决策离不开数据的支撑&#xff0c;数字化精益管理是各行业提升自身运营管理的必然选择。数字化转型的成色…

实验1c语言开发环境使用和数据类型,运算符和表达式

1.试验任务1 (1)在垂直方向上打印两个字符小人的源代码,以及运行结果截图\\在垂直方向上打印两个字符小人#include<stdio.h> int main() {printf(" o\n");printf("<H>\n");printf("I I\n");printf("\n\n");printf(&quo…

【PMP学习笔记】第10章 项目沟通管理

【PMP学习笔记】第10章 项目沟通管理 什么是项目沟通管理? 让正确的信息在正确的时间通过正确的方式传递给正确的人,达到正确的效果。一、规划沟通管理规划沟通管理是基于每个相关方或相关方群体的信息需求、可用的组织资产,以及具体项目的需求,为项目沟通活动制定恰当的方…

基于SSM的网上餐厅管理系统

目 录 摘 要 I Abstract II 第一章 绪论 1 1.1研究背景及意义 1 1.2研究现状 1 1.3章节安排 2 第二章 相关技术说明 3 2.1 JSP(Java Server Page)简介 3 2.2 Spring框架简介 3 2.3 Spring MVC框架简介 5 2.4 MyBatis 框架简介 5 2.4 MySql数据库简介 6 2.5 Eclipse简介 6 2.6 T…

顺序表的实现

函数接口定义:顺序表描述的结构体为 typedef struct {ElemType *elem; //存储空间的基地址int length; //当前长度 } SqList;需要实现函数的接口分别为:int GetElem(SqList L, int i, ElemType &e) 顺序表的取值 判断i值是否合理,若不合理,返回0;[i-1]单元存储第i个数…

服务器开发26:Linux中线程和进程的联系与区别(游戏后端请和游戏思考10一起食用)

文章目录一、线程创建方法&#xff08;以redis举例&#xff09;1&#xff09;创建线程函数讲解2&#xff09;线程创建的标记二、内核中对线程的数据结构表示1&#xff09;task_struct具体定义2&#xff09;线程与进程的区别三、进程、线程创建过程及异同1&#xff09;进程创建(…

Oracle Form Builder 安装时遇到的问题记录

Oracle Form Builder 安装时遇到的问题记录 问题1&#xff1a;Checking operating system version: must be 5.0, 5.1 or 5.2. Actual 6.1 Checking operating system version: must be 5.0, 5.1 or 5.2. Actual 6.1 Failed <<<< 解决方法&#xff1a; 修改x:\ds…

JAVAEE多线程synchronized 优化过程

文章目录synchronized 优化过程一、锁升级/锁膨胀1. 偏向锁2. 轻量级锁3. 重量级锁二、锁消除三、锁粗化总结synchronized 优化过程 对于synchronized 1.既是乐观锁,也是悲观锁 2.既是轻量级锁,也是重量级锁 3.乐观锁的部分是基于自旋锁实现的,悲观锁的部分是基于挂起等待锁实…

springboot+jsp云课堂在线教育系统javaweb

“云课堂”在线教育系统是由高校学生依据兴趣爱好自愿组成&#xff0c;按照章程自主开展在线教育课程。“云课堂”在线教育系统是实施素质教育的重要途径和有效方式&#xff0c;在加强校园文化建设、提高学生综合素质、引导学生适应社会、促进学生成才就业等方面发挥着重要作用…

【23种设计模式】组合模式(Composite Pattern) .Net Core实现

文章目录需求变更我们应该怎么做?组合和单个对象是指什么呢?使用组合模式来设计菜单组合迭代器来源组合模式&#xff08;Composite Pattern&#xff09;&#xff0c;又叫部分整体模式&#xff0c;是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象&…

【服务器数据恢复】AIX环境下误删除逻辑卷的数据恢复方案

一、AIX存储层面相关的知识&AIX环境下LV误删除后的恢复方案。 对于AIX而言&#xff0c;PV相当于物理磁盘&#xff0c;一个VG由若干个PV组成&#xff0c;这让我们可以将容量不同的存储空间组合起来进行统一分配。AIX把同一个VG的所有PV按相同大小的存储颗粒&#xff08;PP&…

自制操作系统系列(二):软盘读取

代码仓库地址&#xff1a;https://github.com/freedom-xiao007/operating-system 简介 在上一篇中&#xff0c;我们使用汇编编写了一个直接显示hello的程序&#xff0c;接下来我们继续探索如果使用汇编读取软盘数据 软盘数据读取准备 在上一篇中&#xff0c;我们使用nasm将…

让运维化繁为简,云原生可观测平台 Alibaba Cloud Lens 正式发布

9 月 28 日&#xff0c;阿里云正式推出云产品可观测平台 Alibaba Cloud Lens&#xff08;Lens 透镜&#xff0c;意为洞察细微变化&#xff09;&#xff0c;从成本、性能、安全、数据保护、稳定性、访问分析六个维度&#xff0c;为用户提供对存储类、网络类、数据库类等云产品的…

还在埋头敲代码?不妨学学设计模式,必能让你工作事半功倍

设计模式在开发中占很重要的地位&#xff1b;在大型项目中使用好设计模式往往会取得事半功倍的效果&#xff1b;下面就介绍下几种在开发中常用到的设计模式 装饰者模式(Decorator Pattern) 装饰者模式是在不必改变原类文件和使用继承的情况下&#xff0c;动态地扩展一个对象的…