怎么在建设部网站查注册造价师,有哪几个平台做网站,电子商务网站建设费用,网上购物商城的背景与意义240629_昇思学习打卡-Day11-Transformer中的self-Attention
根据昇思课程顺序来看呢#xff0c;今儿应该看Vision Transformer图像分类这里了#xff0c;但是大概看了一下官方api#xff0c;发现我还是太笨了#xff0c;看不太明白。正巧昨天学SSD的时候不是参考了太阳花的…240629_昇思学习打卡-Day11-Transformer中的self-Attention
根据昇思课程顺序来看呢今儿应该看Vision Transformer图像分类这里了但是大概看了一下官方api发现我还是太笨了看不太明白。正巧昨天学SSD的时候不是参考了太阳花的小绿豆-CSDN博客大佬嘛今儿看不懂就在想欸这个网络大佬讲没讲就去翻了下结果还真给我找到了还真讲过还有b站视频讲的贼好简直就是茅厕顿开这里附大佬的b站首页霹雳吧啦Wz的个人空间-霹雳吧啦Wz个人主页-哔哩哔哩视频 (bilibili.com)强烈建议去看附本期链接Transformer中Self-Attention以及Multi-Head Attention详解_哔哩哔哩_bilibili记得给大佬三连有能力的给大佬充充电本人已充。
本文就大佬所讲内容、查阅资料、昇思api及结合自己理解进行记录。
前言
在了解Vision Transformer之前我们需要先了解一下TransformerTransformer最开始是应用在NLP领域的拿过来用到Vision中就叫Vision Transformer。而这里要提到的就是Transformer中的self-Attention自注意力和Multiple-Head Attention多头注意力。
用在NLP领域中用到的注意力机制举例一般为Encoder-Decoder框架比如中英翻译输入的英文是Source我们要获取到的是Target中文翻译Attention机制就发生在Target的元素Query和Source中的所有元素之间其同时关注自身和目标值。
而这里说的自注意力机制只关注自身比如Source中会有一个注意力机制Target中会有一个注意力机制他两是没有关系的。
还是用中英翻译举例注意力机制的查询和键分别来自于英文和中文通过查询Query英文单词去匹配中文汉字的键Key自注意力机制只关注自己一个语言可以理解为”我喜欢“后面可以跟”你“也可以跟”吃饭“。 1如果查询和键是同一组内的特征并且相互做注意力机制则称为自注意力机制或内部注意力机制。 2多头注意力机制的多头表示对每个Query和所有的Key-Value做多次注意力机制。做两次就是两头做三次就是三头。这样做的意义在于获取每个Query和所有的Key-Value的不同的依赖关系。 3自注意力机制的优缺点简记为【优点感受野大。缺点需要大数据。】 以下是关于这两个自注意力机制的官方公式很复杂也很难理解但现在别盯着他不放先慢慢往下看这篇就是说明这个公式及其过程 Self-Attention 我们先说明白这里面这些符号都是干啥的或者求出来用来干啥的避免看半天还一头雾水 q代表query后续会去和每一个k进行匹配 k 代表key后续会被每个q匹配 v 代表从a中提取得到的信息后续会和q和k的乘积进行运算 d是k的维度 后续q 和k匹配的过程可以理解成计算两者的相关性相关性越大对应v的权重也就越大 简单来说最初的输入向量首先会经过Embedding层映射成QQueryKKeyVValue三个向量由于是并行操作所以代码中是映射成为dim x 3的向量然后进行分割换言之如果你的输入向量为一个向量序列123其中的123都是一维向量那么每一个一维向量都会经过Embedding层映射出QKV三个向量只是Embedding矩阵不同矩阵参数也是通过学习得到的。这里大家可以认为QKV三个矩阵是发现向量之间关联信息的一种手段需要经过学习得到至于为什么是QKV三个主要是因为需要两个向量点乘以获得权重又需要另一个向量来承载权重向加的结果所以最少需要3个矩阵。
后续我们要用q*k得到v的权重然后进行一定缩放除以根号d再乘上v就是第一个公式。
从数值上理解
wk我悟了用引用的话行内公式不会乱 假设 a 1 ( 1 , 1 ) a_1(1,1) a1(1,1) a 2 ( 1 , 0 ) a_2(1,0) a2(1,0) W q ( 1 1 0 1 ) W^q\binom{1 \ \ \ 1}{0 \ \ \ 1} Wq(0 11 1)那么根据以上的说法我们可以计算出 q 1 q^1 q1、 q 2 q^2 q2。 q 1 ( 1 , 2 ) ( 1 1 0 1 ) ( 1 , 2 ) q 2 ( 1 , 0 ) ( 1 1 0 1 ) ( 1 , 1 ) q^1(1,2)\binom{1 \ \ \ 1}{0 \ \ \ 1}(1,2)q^2(1,0)\binom{1 \ \ \ 1}{0 \ \ \ 1}(1,1) q1(1,2)(0 11 1)(1,2)q2(1,0)(0 11 1)(1,1) 此时可以并行化就是把 q 1 q^1 q1和 q 2 q^2 q2在拼接起来拼成 ( 1 1 1 0 ) \binom{1 \ \ \ 1}{1 \ \ \ 0} (1 01 1)在与 W q W^q Wq进行运算结果不会发生改变 ( q 1 q 2 ) ( 1 1 1 0 ) ( 1 1 0 1 ) ( 1 2 1 1 ) \binom{q^1}{q^2}\binom{1 \ \ \ 1}{1 \ \ \ 0}\binom{1 \ \ \ 1}{0 \ \ \ 1}\binom{1 \ \ \ 2}{1 \ \ \ 1} (q2q1)(1 01 1)(0 11 1)(1 11 2) 同理可以得到 ( k 1 k 2 ) \binom{k^1}{k^2} (k2k1)和 ( v 1 v 2 ) \binom{v^1}{v^2} (v2v1)求得的这些数值依次是qQuerykKeyvValue。接着先拿 q 1 q^1 q1和每个k进行match点乘操作接着除以 d \sqrt{d} d 得到对应的 α \alpha α,其中 d d d代表向量 k i k^i ki的长度此时等于2除以 d \sqrt{d} d 的原因在论文中的解释是“进行点乘后的数值很大导致通过softmax后梯度变的很小所以通过除以 d \sqrt{d} d 来进行缩放比如计算 α 1 , i \alpha_{1,i} α1,i α 1 , 1 q 1 ⋅ k 1 d 1 ∗ 1 2 ∗ 0 2 0.71 \alpha_{1,1}\frac{{q^1} \cdot {k^1}}{\sqrt{d}}\frac{1*12*0}{\sqrt2}0.71 α1,1d q1⋅k12 1∗12∗00.71 α 1 , 2 q 1 ⋅ k 2 d 1 ∗ 0 2 ∗ 1 2 1.41 \alpha_{1,2}\frac{{q^1} \cdot {k^2}}{\sqrt{d}}\frac{1*02*1}{\sqrt2}1.41 α1,2d q1⋅k22 1∗02∗11.41 同理用 q 2 q^2 q2去匹配所有的k能得到 α 2 , i \alpha_{2,i} α2,i统一写成矩阵乘法形式 ( α 1 , 1 α 1 , 2 α 2 , 1 α 2 , 2 ) ( q 1 q 2 ) ( k 1 k 2 ) T d \binom{\alpha_{1,1} \ \ \ \alpha_{1,2}}{\alpha_{2,1} \ \ \ \alpha_{2,2}}\frac{\binom{q^1}{q^2}{\binom{k^1}{k^2}}^T}{\sqrt{d}} (α2,1 α2,2α1,1 α1,2)d (q2q1)(k2k1)T 然后对每一行即 ( α 1 , 1 , α 1 , 2 ) (\alpha_{1,1},\alpha_{1,2}) (α1,1,α1,2)分别进行softmax处理得到KaTeX parse error: Expected EOF, got ̂ at position 9: (\alpha ̲̂ _{1,1},\alpha …这里的$\alpha ̂ 相当于计算得到针对每个 相当于计算得到针对每个 相当于计算得到针对每个v 的权重到这我们就完成了第一个公式 的权重到这我们就完成了第一个公式 的权重到这我们就完成了第一个公式Attention(Q,K,V) 中的 中的 中的softmax(\frac{QK^T}{\sqrt{d}})$部分 为啥这里又乱了。。 从维度上进行理解
我们假设载入的 x 1 x_1 x1经过Embedding后变为 a 1 a_1 a1维度为1X4 W q W^q Wq的维度为4X3两者进行叉乘运算后就得到了维度为1X3的Queryk和v同理 然后我们吧a1和a2并行起来 然后把公式中的式子也换成维度 整个过程放在一张图上可以这么看 这里暂时不附代码Multiple-Head Attention下篇记录。
打卡图片 参考博客
11.1 Vision Transformer(vit)网络详解_哔哩哔哩_bilibili
详解Transformer中Self-Attention以及Multi-Head Attention_transformer multi head-CSDN博客
Vision Transformer详解-CSDN博客
一文搞定自注意力机制Self-Attention-CSDN博客
以上图片均引用自以上大佬博客如有侵权请联系删除