Transformer - 注意⼒机制 Attention 中的 Q, K, V 解释(2)
flyfish
Transformer - 注意⼒机制 Scaled Dot-Product Attention 计算过程
Transformer - 注意⼒机制 代码实现
Transformer - 注意⼒机制 Scaled Dot-Product Attention不同的代码比较
Transformer - 注意⼒机制 代码解释
Transformer - 注意⼒机制 Attention 中的 Q, K, V 解释(1)
Transformer - 注意⼒机制 Attention 中的 Q, K, V 解释(2)
加权求和
矩阵乘法
第一个矩阵 横着向量
第二个矩阵 列着向量
17的由来
两个矩阵相乘,在结果矩阵中的一个元素就是加权求和得到的
最后结果是
在注意力机制中就是用矩阵乘法 实现的加权求和
x T y = ( x 1 x 2 … x n ) ( y 1 y 2 ⋮ y n ) = x 1 y 1 + x 2 y 2 + ⋯ + x n y n = ∑ i = 1 n x i y i x^Ty =\begin{pmatrix} x_1 x_2 \dots x_n \end{pmatrix} \begin{pmatrix} y_1\\y_2 \\ \vdots \\ y_n \end{pmatrix} = x_1y_1+x_2y_2+\dots+x_ny_n=\sum_{i=1}^n x_i y_i xTy=(x1x2…xn) y1y2⋮yn =x1y1+x2y2+⋯+xnyn=i=1∑nxiyi
点积(Dot Product)、数量积、标量积、点乘
点积的名称源自表示点乘运算的点号 ( a ∙ b ) (a \bullet b) (a∙b),标量积的叫法则是在强调其运算结果为标量而非向量。
两个向量 a ⃗ = [ a 1 , a 2 , ⋯ , a n ] \vec{a}=\left[a_{1}, a_{2}, \cdots, a_{n}\right] a=[a1,a2,⋯,an]和 b ⃗ = [ b 1 , b 2 , ⋯ , b n ] \vec{b}=\left[b_{1}, b_{2}, \cdots, b_{n}\right] b=[b1,b2,⋯,bn]的点积定义为:
a ⃗ ⋅ b ⃗ = ∑ i = 1 n a i b i = a 1 b 1 + a 2 b 2 + ⋯ + a n b n \vec{a} \cdot \vec{b}=\sum_{i=1}^{n} a_{i} b_{i}=a_{1} b_{1}+a_{2} b_{2}+\cdots+a_{n} b_{n} a⋅b=i=1∑naibi=a1b1+a2b2+⋯+anbn
在欧几里得空间中,点积可以直观地定义为
a ⃗ ⋅ b ⃗ = ∣ a ⃗ ∣ ∣ b ⃗ ∣ cos θ \vec{a} \cdot \vec{b}=|\vec{a}||\vec{b}| \cos \theta a⋅b=∣a∣∣b∣cosθ
∣ x ⃗ ∣ |\vec{x}| ∣x∣ 表示 x ⃗ \vec{x} x的模(长度), θ \theta θ 表示两个向量之间的角度。
cos θ = a ⋅ b ∣ a ⃗ ∣ ∣ b ⃗ ∣ \cos \theta=\frac{\mathbf{a} \cdot \mathbf{b}}{|\vec{a}||\vec{b}|} cosθ=∣a∣∣b∣a⋅b
两个向量夹角余弦值就是两个向量的余弦相似度
两个向量之间的余弦相似性是用 θ \theta θ来衡量的。
如果 θ \theta θ=0°,则x和y向量重叠,从而证明它们相似。
如果 θ \theta θ=90°,则x和y向量不同。
加权求和 ,矩阵乘法 ,点积都可以实现计算两者相似性
简述是加权求和就是点积,矩阵乘法可以实现点积
一篇文章,文章的标题就是key,文章的内容就是V
使用搜索引擎时,输入到 搜索栏中的文本 就是 query
输入内容 query 与 文章标题 key之间的相似性计算就是 评分函数
在注意力机制中 例如计算Q和K的点积实际就是计算两者的相似性
这个点积结果经过scale就是 评分函数