多模态学习历程(1.1 Vision Transformer解读_Self-attention)

本文详细介绍了Transformer模型中的自注意力机制,包括其如何通过self-attention层取代RNN,以及该机制如何通过向量匹配、内积归一化和softmax操作来处理序列数据。特别强调了其并行计算的优势以及在考虑全局和局部信息时的选择。
摘要由CSDN通过智能技术生成

@[TOC] (Vision Transformer , 通用 Vision Backbone 超详细解读)

Self-attention

Transformer是一个Sequence to Sequence model,特别之处在于它大量用到了self-attention。
目的:是使用self-attention layer取代RNN所做的事情。
在这里插入图片描述所以重点是:我们有一种新的layer,叫self-attention,它的输入和输出和RNN是一模一样的,输入一个sequence,输出一个sequence,它的每一个输出都看过了整个的输入sequence,这一点与bi-directional RNN相同。但是神奇的地方是:它的每一个输出 b 1 b_{_1} b1 - b 4 b_{_4} b4可以并行化计算。

那么self-attention具体是怎么做的呢?

在这里插入图片描述

首先假设我们的input是上图的 x 1 x_{_1} x1 - x 4 x_{_4} x4,是一个sequence,每一个input (vector)先乘上一个矩阵 W得到embedding,即向量 a 1 a_{_1} a1 - a 4 a_{_4} a4 。接着这个embedding进入self-attention层,每一个向量 分别乘上3个不同的transformation matrix W q W_{_q} Wq , W k W_{_k} Wk, W v W_{_v} Wv,以向量 q 1 q_{_1} q1 , k 1 k_{_1} k1, v 1 v_{_1} v1为例,分别得到3个不同的向量 。

在这里插入图片描述
接下来使用每个query q去对每个key k 做attention,attention就是匹配这2个向量有多接近,比如我现在要对 q 1 q^1 q1 k 1 k^1 k1做attention,我就可以把这2个向量做scaled inner product,得到 a 1 , 1 a_{_1,_1} a1,1 。接下来你再拿
q 1 q^1 q1 k 2 k^2 k2做attention,得到 a 1 , 2 a_{_1,_2} a1,2,以此类推,得到 a 1 , 4 a_{_1,_4} a1,4 a 1 , 4 a_{_1,_4} a1,4 。那这个scaled inner product具体是怎么计算的呢?
a 1 , i = q 1 ∗ k i / d a_{_1,_i}=q^1*k^i/\sqrt{d} a1,i=q1ki/d
式中,d 是 q跟 k的维度。因为 q*k的数值会随着dimension的增大而增大,所以要除以 d i m e n s i o n \sqrt{dimension} dimension 的值,相当于归一化的效果。

接下来要做的事下如图所示,把计算得到的所有 a_{_1,_i}值取 softmax操作。
在这里插入图片描述取完 softmax操作以后,我们得到了 a 1 , i a_{_1,_i} a1,i,我们用它和所有的
v i v^i vi值进行相乘.把结果通通加起来得到 b 1 b^1 b1,如果要考虑local的information,则只需要学习出相应的 a 1 , i = 0 a_{_1,_i}=0 a1,i=0

b 1 b^1 b1, 就不再带有那个对应分支的信息了;如果要考虑global的information,则只需要学习出相应的 a 1 , i ≠ 0 a_{_1,_i}\neq0 a1,i=0

就带有全部的对应分支的信息了。
在这里插入图片描述同样的方法,也可以计算出 b 1 b^1 b1, b 2 b^2 b2, b 3 b^3 b3

经过了以上一连串计算,self-attention layer做的事情跟RNN是一样的,只是它可以并行的得到layer输出的结果,如下图所示。现在我们要用矩阵表示上述的计算过程。
在这里插入图片描述在这里插入图片描述 q i q^i qi, k i k^i ki, v i v^i vi生成过程如上

公式:
A ‾ = s o f t m a x ( A ) = K T . Q \overline{A} = softmax(A) = K^T.Q A=softmax(A)=KT.Q
O = V . A ‾ O = V .\overline{A} O=V.A
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值