transformer中QKV的通俗理解(剩女与备胎的故事)

news2024/12/24 0:05:22

 
用vit的时候读了一下transformer的思想,前几天面试结束之后发现对QKV又有点忘记了, 写一篇文章来记录一下
参考链接: 哔哩哔哩:在线激情讲解transformer&Attention注意力机制(上)在线激情讲解transformer&Attention注意力机制(上)_哔哩哔哩_bilibili

Attention is all you need介绍
更具体的介绍可以去阅读论文

在Attention is all you need这篇文章中提出了著名的Transformer模型

Transformer中抛弃了传统的CNN和RNN,整个网络结构完全是由Attention机制组成。

更准确地讲,Transformer由且仅由self-Attenion和Feed Forward Neural Network组成。

一个基于Transformer的可训练的神经网络可以通过堆叠Transformer的形式进行搭建,作者的实验是通过搭建编码器和解码器各6层,总共12层的Encoder-Decoder,并在机器翻译中取得了BLEU值得新高。

Attenion机制
在深度学习中,注意力机制的目标是从大量的信息中选择出更有用的信息。
而Attention is all you need这篇文章体现注意力机制的核心就是下面这个公式了

2

 


刚刚看到这个公式的时候我也是很蒙的,查了很多资料才搞懂,这里再次推荐一个B站的up主,讲的很形象, 本文的素材也是部分来自于此
在线激情讲解transformer&Attention注意力机制(上) 在线激情讲解transformer&Attention注意力机制(上)_哔哩哔哩_bilibili

Q,K,V是由输入的词向量x经过线性变换得到的,其中各个矩阵w可以经过学习得到, 这种变换可以提升模型的拟合能力, 得到的Q,K,V 可以理解为
Q: 要查询的信息
K: 被查询的向量
V: 查询得到的值

总结一下:
首先Q、K、V都源于输入特征本身,是根据输入特征产生的向量,但目前我们现在无需关注是如何产生这组向量的。
V可以看做表示单个输入特征的向量。当我们直接把一组V输入到网络中进行训练,那这个网络就是没有引入Attention机制的网络。
但如果引入Attention,就需要将这组V分别乘以一组权重α \alphaα,那么就可以做到有重点性地关注输入特征,如同人的注意力一般。

在这里插入图片描述

 

下面就用一个通俗的例子来解释如何学习到α \alphaα并且使用attention机制

通俗易懂的例子 海王与备胎
有一个海王,有N个备胎,他想要从自己的备胎中寻找出最符合自己期望的那个,便于他分配注意力并且来管理时间。

在这里插入图片描述

 

在这个案例中
Q 表示渣男对备胎的要求
K 表示渣男自身的条件 因为备胎们也会看渣男的条件是否让她们满意
V 表示匹配的结果
无论是渣男还是备胎, 都有着自己的一套Q K V 来记录他们选择的情况

在这里插入图片描述

 

现在我们的渣男要开始筛选备胎了, 对他来说,当然是备胎的条件越符合他的理想越好
放在Q,K,V上来讲就是渣男的Q与备胎的K之间的相似度越高越好

在这里插入图片描述


现在的问题就是如何计算他们的相似度了
点乘拓展:
在向量中,AB点乘的结果反应了他们之间的相似度, (A在B上的投影与B的模相乘得到的结果)
如果AB垂直,那么他们点乘为0, 也就是他们的相似度为0
因此AB点乘的结果越大, 我们就可以认为两个向量的相似度越高

在渣男选择备胎的过程中, 由于他们选择的条件Q,K是矩阵的形式, 因此计算矩阵之间的相似度我们采用  Q*K^{T}来实现
相当于计算了Q的每一行与K的每一行的点乘结果(结合下图中2行3列的例子来理解) 也就得到了Q的每一行与K的每一行之间的相似度结果
最后通过softmax来进行归一化, 得到一个直观的0~1之间的相似度结果

在这里插入图片描述

 

渣男与备胎之间的这些结果共同构成了权值, 也就是核心式中的左半部分。
\alpha = softmax\left ( \frac{QK^2 }{\sqrt{d_{k}}} \right )

对于{\sqrt{d_k}}也许很多人会有疑问,为什么要除以 {\sqrt{d_k}} ,能不能除以其他的东西呢,为什么是除不是乘呢? 主要原因如下

1. 首先要除以一个数,防止输入softmax的值过大,导致偏导数趋近于0;(另一个角度来看: 如果权重矩阵里面有0.9这种高注意力的权重,那么会导致注意力几乎都被它所分走,除以一个数可以让注意力的分布更加均匀)



 2.{d_k} 是词向量/隐藏层的维度, 选择 {\sqrt{d_k}} 可以使得q*k的符合N(0,1)的分布,类似于归一化。
利用上面计算后得到的权重矩阵来对每个备胎加权,也就是
A t t e n t i o n ( K , Q , V ) = α ∗ V  

这样渣男就知道自己该对谁付出更多的注意力了,也有可能渣男比较自恋, 备胎都不太满足他的要求, 他的理想型可能是自己这种类型的, 那么他最需要关注的就是他自己

在这里插入图片描述

原文链接:https://blog.csdn.net/Weary_PJ/article/details/123531732

 

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

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

相关文章

SpringCloud全系列知识(5)——微服务的部署(Docker)

微服务的部署(Docker) 一 初识Docker 1.项目部署问题 大型项目组件较多,运行环境较为复杂,部署和维护困难依赖关系复杂,容易出现兼容性问题开发,测试,生产环境有差异 2.解决依赖的兼容问题 …

[附源码]Python计算机毕业设计Django疫情期间小学生作业线上管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,我…

差分方程解的稳定性

Heine定理 存在的充要条件是: 取定义域内的任意数列,有 差分的定义 考虑离散型变量 一阶差分为: 二阶差分为: 线性差分方程的解 非齐次差分方程的解 满足初始条件的n阶非齐次线性差分方程 的解是存在且唯一的 非齐次线性差分方程的通解结构:齐次差分方程的解 线性相关与…

提升规则自治能力与原生分析能力、支持视频流接入处理

11 月, eKuiper 团队转入 1.8.0 版本的开发周期之中,目前已完成了一部分实用的新功能:添加了视频流 source,将边缘流式处理能力扩展到视频流领域,可以处理摄像头的视频流或者网络中的直播视频流;发布了通用…

[附源码]Python计算机毕业设计Django智能家电商城

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

苹果iOS 16.2/iPadOS 16.2 RC版发布:隔空投送10分钟限制全球上线

今日,苹果向用户推送了iOS 16.2/iPadOS 16.2 RC候选版更新,内部版本号为20C65。 本次更新主要包括以下改进和错误修复: 一、隔空投送10分钟限制在全球上线,原本的“所有人”选项改为“所有人,10分钟”,超过…

从事功能测试1年,裸辞1个月,找不到工作的“我”怎么办?

做功能测试一年多了裸辞职一个月了,大部分公司都要求有自动化测试经验,可是哪来的自动化测试呢? 我要是简历上写了吧又有欺诈性,不写他们给的招聘又要自动化优先,将项目带向自动化不是一个容易的事情,很多…

守护网络安全的第一道门—防火墙

防火墙作为网络安全领域的第一道门,可以有效的过滤和阻止未经允许的流量进出,选择性地阻止或允许数据包。防火墙通常用于帮助阻止恶意活动并防止专用网络内外的任何人进行未经授权的 Web 活动。在网络安全领域起到了至关重要的作用。 防火墙有什么作用…

引擎入门 | Unity UI简介–第2部分(6)

本期我们继续为大家进行Unity UI简介(第二部分)的后续教程 本篇内容 10.点击按钮时显示对话框 11.增加一个关闭按钮 文章末尾可免费获取教程源代码 本篇本篇Unity UI简介(第二部分)篇幅较长,分为八篇,…

eclipse+tomcat+spring mvc开发笔记

一:Tomcat安装 在.net web开发中,微软再一次向你展示了一站式马赛克配置,你只需要轻轻一点按钮,发射。。。一个带有bootstrap框架的页面就呈现在你的面前,在 java中就没有这么好的事情了,基本都是高清无码。 1. 下载地址 http://mirrors.hust.edu.cn/apache/tomcat/tomc…

v1.9.1 进行中:MQTT X CLI 支持自动重连及保存和读取本地文件

十一月初,MQTT X 团队发布了 1.9.0 版本:MQTT X CLI 命令行客户端实现支持 MQTT 的性能测试,桌面端应用新增了关于学习 MQTT 的帮助页面等,此外还进行了一些使用优化和问题修复。 目前,团队正专注于 1.9.1 版本的开发…

电脑上如何禁止一切弹窗广告?永久关闭桌面弹出广告

现在日常生活工作离不开电脑,在用电脑办公的时候,弹窗广告总会打扰我们的办公,即使关闭弹窗也无用,很是让人讨厌,电脑上如何禁止一切弹窗广告?本篇教程教您如何快速关闭弹窗广告。如果您在使用电脑过程中&a…

人机界面石油行业的应用:如何构建自动化石化罐区储运监控系统?

一、应用背景 在石油化工企业的生产过程中,运输和储存的大部分介质和产品都是流体,为了保证加工过程的正常运行,企业通常建有大量各种储藏罐的罐区。随着工业自动化技术的发展和计算机技术在罐区控制系统中的应用,罐区自动化系统…

antd-vue 累加表单编辑和删除

一、业务场景&#xff1a; 最近在使用Antd-Vue组件库的时候&#xff0c;发现在累加表单 时没有直接可以用的&#xff0c;必须自己在官网上手动合并几个才能实现&#xff0c;为了大家后面遇到和我一样的问题&#xff0c;给大家分享一下 二、具体实现步骤&#xff1a; <temp…

信息安全简介

文章目录Basics of Information SecurityUnsecure SystemsEvolution of SecurityBuild a Security ProgramComputer Security Model: CIA triadThe OSI security architectureFundamentals of Security DesignReferencesBasics of Information Security 我们掌握的信息越多&am…

数字逻辑·时序线路设计【状态化简与编码】

化简原理 等价状态: 1、必要条件&#xff1a;在同样的输入作用下&#xff0c;有相同的输出 2、同样的输入条件下&#xff0c;相应的次态彼此等价 等价次态&#xff1a; 1、对应的次态相同 2、次态为两个现态本身或交错 3、两个次态为状态对封闭链中的一对 4、两个次态的某一后…

图书馆座位预约小程序毕业设计,图书馆座位预约系统设计与实现,微信小程序毕业设计论文怎么写毕设源码开题报告需求分析怎么做

项目背景和意义 目的&#xff1a;本课题主要目标是设计并能够实现一个基于微信小程序预约订座小程序&#xff0c;前台用户使用小程序&#xff0c;后台管理使用JavaMysql开发&#xff0c;后台使用了springboot框架&#xff1b;通过后台添加座位类型、座位号&#xff0c;用户通过…

通过分割受损的叶子自动检测昆虫捕食(matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

程序员留的后门,怎么能管它叫热部署呢?

前言 这篇文章给大家分享一个热部署相关的知识点。 这可是一个好东西啊&#xff0c;当年在学习学 JSP 的时候&#xff0c;哐哐哐一顿操作&#xff0c;发现服务没重启&#xff0c;我在 JSP 里面写的东西就直接生效了。 当场我就是一个大大的震惊&#xff0c;而旁边教我的人只…

[附源码]Python计算机毕业设计Django在线教育系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…