一、答主1
机器翻译
transformer刚被提出的时候就是被用于处理机器翻译的。在transformer架构中的不同位置Q,K,V指代的变量是不一样的。
假设现在处理的是英文->德文的翻译任务。
- 在encoder的输入端,这里执行的是
self-attention
,Q、K、V
都是指代英文的embedding
。 - 在decoder的输入端,这里执行的是
masked self-attention
,Q、K、V
都是指代德文的embedding
。 - 在encoder的输出端和decoder的某个layer的输出进行交互的时候,也就是执行
cross-attention
的时候,Q
指代的是德文的embedding
,K、V
指代英文的embedding
。
车道线检测
在CLRNet中也用到了transformer的结构,这里的QKV就可以指代不同的东西了。Q
指代了车道线的特征
,K、V
指代的是图像的feature map
,来计算车道线特征对图像全局特征的注意力情况。
目标检测
用DETR做检测,Q
就指代了object query
,它是模型权重的一部分,也就是可学习的参数。K、V
同样指代了图像的feature map
。
从以上3个不同的任务可以更加直观的去理解Q、K、V根据不同任务,指代的物理量是不一样的,也可以更加深入的去理解它的计算过程,和其背后的注意力机制的思想。所以Q这个变量一般同具体的任务有关,而K、V两个变量是Q想要关注的物理量。transformer这种结构能够在不同领域都能使用,可见它的通用性。
二、答主2
问题搜答案
你有一个问题Q,然后去搜索引擎里面搜,搜索引擎里面有好多文章,每个文章V有一个能代表其正文内容的标题K,然后搜索引擎用你的问题Q和那些文章V的标题K进行一个匹配,看看相关度(QK —>attention值),然后你想用这些检索到的不同相关度的文章V来表示你的问题,就用这些相关度将检索的文章V做一个加权和,那么你就得到了一个新的Q’,这个Q’融合了相关性强的文章V更多信息,而融合了相关性弱的文章V较少的信息。这就是注意力机制,注意力度不同,重点关注(权值大)与你想要的东西相关性强的部分,稍微关注(权值小)相关性弱的部分。
三、答主3
查字典
假想你有一个map/dict或者其他名字,一个key对应一个value,在检索的时候,给定query,如果query in map,就是query等于其中一个key,就返回对应的value。这个方法太hard了,有就是有,没有就是没有。对于qkv都是向量的情况,这种方法不可行,只能让它变soft,那就是算一算query和key的关系,按照比例对value加和,这和max变成softmax有异曲同工之妙。文章来源:https://www.toymoban.com/news/detail-860573.html
可能更类似于插值,比如你去爬山,半山腰想知道自己的海拔,周围有远有近有高有低好几个海拔参考点,你通过它们来估计自己的海拔,当然是越近越有参考作用,也就是注意力系数越大。要是估算错了怎么办?幸好你爬到山顶有真实海拔,估算错误就修正,顺便把之前你参考的那些值也修正了。爬山的人越多,修正的次数越多,那些参考值越准确。文章来源地址https://www.toymoban.com/news/detail-860573.html
四、答主4
- 查询(Q):代表我们想要理解的词(例如,“machines”)的向量表示。
- 键(K):代表句子中所有词(包括“Thinking”和“machines”)的向量表示,用于与Q进行比较。
- 值(V):同样代表句子中所有词的向量表示,但是当计算出Q和K的相似度后,将用于加权求和,生成输出。
五、简易代码实现
- https://github.com/karpathy/makemore
参考文章
- 知乎讨论——transformer中的Q,K,V到底是什么?
- 一系列文章:ChatGPT背后强大而神秘的力量:用最简单的语言讲解Transformer架构之概览
- 外国人专业文章讲解
- 图解 transformer——注意力计算原理
- Transformer 01:自注意力机制Q,K,V详解
到了这里,关于深度学习——Transformer的理解整理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!