• 【注意力机制】Self-attention注意力机制理论知识


    输入输出类别(N指向量个数):

    • 第一种:输入 N N N,输出 N N N(例如:Sequence Labeling、POS tagging)
    • 第二种:输入 N N N,输出 1 1 1(例如:Sentiment analysis)
    • 第三种:输入 N N N,输出 N ′ N' N(seq2seq任务:由机器自己决定输出的个数)例如:翻译任务、语音辨识

    第一种为例Sequence Labeling任务:

    例子: I saw a saw

    序列输入到FC层得到各个单词的词性不能解决saw是不同词性的问题,采用考虑上下文的context,将前后几个向量串起来输入到FC,考虑Window包括多个前后多个frame
    在这里插入图片描述
    考虑整个input的sequence资讯,可将Window变大甚至盖住整个sequence,但是可能过拟合,FC参数过多。

    Self-attention引入

    考虑整个input的sequence资讯信息更好的办法:
    self-attention考虑一整个资讯信息并返回与输入相同数目的vetor输出,再输入FC决定应该是什么。
    在这里插入图片描述
    self-attention可以叠加:
    输入+self-attention+FC+self-attention+FC(交替使用,FC专注某一位置的咨询,self-attention关注整个资讯)
    在这里插入图片描述

    :self-attention最相关文章:Attention is all you need.(提出了transformertransformer最重要的module就是self-attentionBert也有应用)

    self-attention架构

    self-attention输入是一串Vector(可能整个网络的input,也可能是隐层的output)

    例:
    输入 a 1 a 2 a 3 a 4 a^{1} \quad a^{2} \quad a^{3} \quad a^{4} a1a2a3a4
    输出 b 1 b 2 b 3 b 4 b^{1} \quad b^{2} \quad b^{3} \quad b^{4} b1b2b3b4
    在这里插入图片描述

    self-attention怎么产生 b b b
    例子:产生 b 1 b^{1} b1

    找出与 a 1 a^{1} a1 相关的其他向量(哪些向量是重要的,哪些部分跟判断 a 1 a^{1} a1 是哪一个level有关系,哪些是决定 a 1 a^{1} a1 得class或regression数值所需用到的资讯)
    其中每一个向量与 a 1 a^{1} a1 关联的程度,用数值 α 表示(计算 α 方法有:Dot-producttransformer中使用)、Additive
    在这里插入图片描述
    q 1 = W q a 1 q^{1}=W^qa^1 q1=Wqa1 q q q称为query)
    k 2 = W k a 2 k^{2}=W^ka^2 k2=Wka2 k k k称为key), k 3 = W k a 3 k^{3}=W^ka^3 k3=Wka3 k 4 = W k a 4 k^{4}=W^ka^4 k4=Wka4 k 1 = W k a 1 k^{1}=W^ka^1 k1=Wka1

    α ( 1 , 2 ) = q 1 ⋅ k 2 α(1,2)=q^1·k^2 α(1,2)=q1k2 α ( 1 , 2 ) α(1,2) α(1,2)代表query是1提供,key是2提供的,1与2的关联性,也称为attention score), α ( 1 , 3 ) = q 1 ⋅ k 3 α(1,3)=q^1·k^3 α(1,3)=q1k3 α ( 1 , 4 ) = q 1 ⋅ k 4 α(1,4)=q^1·k^4 α(1,4)=q1k4
    在这里插入图片描述
    本身也会计算:
    α ( 1 , 1 ) = q 1 ⋅ k 1 α(1,1)=q^1·k^1 α(1,1)=q1k1
    计算出 a 1 a^{1} a1与每一个向量关联性后,做一个softmax,输出一排 α ′ ( 1 , i ) α'(1,i) α(1,i)
    在这里插入图片描述
    根据 α ′ α' α 抽取这个sequence里重要的咨询:
    v 1 = W v a 1 v^{1}=W^va^1 v1=Wva1 v 2 = W v a 2 v^{2}=W^va^2 v2=Wva2 v 3 = W v a 3 v^{3}=W^va^3 v3=Wva3 v 4 = W v a 4 v^{4}=W^va^4 v4=Wva4
    再用 v i v^i vi 乘以 α ′ ( 1 , i ) α'(1,i) α(1,i) ,然后再累加得到 b 1 b^1 b1
    α ′ ( 1 , 1 ) ⋅ v 1 + α ′ ( 1 , 2 ) ⋅ v 2 + α ′ ( 1 , 3 ) ⋅ v 3 + α ′ ( 1 , 4 ) ⋅ v 4 = b 1 α'(1,1)·v^1+α'(1,2)·v^2+α'(1,3)·v^3+α'(1,4)·v^4=b^1 α(1,1)v1+α(1,2)v2+α(1,3)v3+α(1,4)v4=b1

    在这里插入图片描述

    例子:产生 b 2 b^{2} b2

    主角: a 2 a^{2} a2
    每一个向量与 a 2 a^{2} a2关联的程度,用数值 α α α 表示(计算 α α α 方法:Dot-product
    q 2 = W q a 2 q^{2}=W^qa^2 q2=Wqa2
    k 1 = W k a 1 k^{1}=W^ka^1 k1=Wka1 k 2 = W k a 2 k^{2}=W^ka^2 k2=Wka2 k 3 = W k a 3 k^{3}=W^ka^3 k3=Wka3 k 4 = W k a 4 k^{4}=W^ka^4 k4=Wka4
    根据 q 2 q^{2} q2 去对 a 1 a1 a1 a 4 a4 a4 attention score
    α ( 2 , 1 ) = q 2 ⋅ k 1 α(2,1)=q^2·k^1 α(2,1)=q2k1 α ( 2 , 2 ) = q 2 ⋅ k 2 α(2,2)=q^2·k^2 α(2,2)=q2k2 α ( 2 , 3 ) = q 2 ⋅ k 3 α(2,3)=q^2·k^3 α(2,3)=q2k3 α ( 2 , 4 ) = q 2 ⋅ k 4 α(2,4)=q^2·k^4 α(2,4)=q2k4
    计算出 a 2 a^{2} a2 与每一个向量关联性后,做一个softmax,输出一排 α ′ ( 2 , i ) α'(2,i) α(2,i)
    根据 α ′ α' α 抽取这个sequence里重要的咨询
    v 1 = W v a 1 v^{1}=W^va^1 v1=Wva1 v 2 = W v a 2 v^{2}=W^va^2 v2=Wva2 v 3 = W v a 3 v^{3}=W^va^3 v3=Wva3 v 4 = W v a 4 v^{4}=W^va^4 v4=Wva4
    再用 v i v^i vi 乘以 α ′ ( 2 , i ) α'(2,i) α(2,i),然后再累加得到 b 2 b^2 b2
    α ′ ( 2 , 1 ) ⋅ v 1 + α ′ ( 2 , 2 ) ⋅ v 2 + α ′ ( 2 , 3 ) ⋅ v 3 + α ′ ( 2 , 4 ) ⋅ v 4 = b 2 α'(2,1)·v^1+α'(2,2)·v^2+α'(2,3)·v^3+α'(2,4)·v^4=b^2 α(2,1)v1+α(2,2)v2+α(2,3)v3+α(2,4)v4=b2

    在这里插入图片描述

    self-attention 总结:

    第一步:每一个a都要分别产生q k vIInput

    q i = W q a i q^{i}=W^qa^i qi=Wqai ——> ( q 1 q 2 q 3 q 4 ) = W q ( a 1 a 2 a 3 a 4 )

    (q1q2q3q4)" role="presentation" style="position: relative;">(q1q2q3q4)
    =W^q
    (a1a2a3a4)" role="presentation" style="position: relative;">(a1a2a3a4)
    (q1q2q3q4)=Wq(a1a2a3a4)——> Q = W q ⋅ I Q=W^q·I Q=WqI

    k i = W k a i k^{i}=W^ka^i ki=Wkai——> ( k 1 k 2 k 3 k 4 ) = W k ( a 1 a 2 a 3 a 4 )

    (k1k2k3k4)" role="presentation" style="position: relative;">(k1k2k3k4)
    =W^k
    (a1a2a3a4)" role="presentation" style="position: relative;">(a1a2a3a4)
    (k1k2k3k4)=Wk(a1a2a3a4)——> K = W k ⋅ I K=W^k·I K=WkI

    v i = W v a i v^{i}=W^va^i vi=Wvai——> ( v 1 v 2 v 3 v 4 ) = W v ( a 1 a 2 a 3 a 4 )

    (v1v2v3v4)" role="presentation" style="position: relative;">(v1v2v3v4)
    =W^v
    (a1a2a3a4)" role="presentation" style="position: relative;">(a1a2a3a4)
    (v1v2v3v4)=Wv(a1a2a3a4)——> V = W v ⋅ I V=W^v·I V=WvI

    第二步:每一个 q i q^{i} qi 都和每一个 k k k 计算 Dot-product 得到 attention score

    α ( 1 , 1 ) = k 1 ⋅ q 1 α(1,1) = k^1·q^1 α(1,1)=k1q1 α ( 1 , 2 ) = k 2 ⋅ q 1 α(1,2) = k^2·q^1 α(1,2)=k2q1 α ( 1 , 3 ) = k 3 ⋅ q 1 α(1,3) = k^3·q^1 α(1,3)=k3q1 α ( 1 , 4 ) = k 4 ⋅ q 1 α(1,4) = k^4·q^1 α(1,4)=k4q1

    α ( 1 , i ) = k i ⋅ q 1 α(1,i) = k^i·q^1 α(1,i)=kiq1 ——> ( k 1 k 2 k 3 k 4 ) ⋅ q 1 = ( α ( 1 , 1 ) α ( 1 , 2 ) α ( 1 , 3 ) α ( 1 , 4 ) )

    (k1k2k3k4)" role="presentation" style="position: relative;">(k1k2k3k4)
    ·q^1=
    (α(1,1)α(1,2)α(1,3)α(1,4))" role="presentation" style="position: relative;">(α(1,1)α(1,2)α(1,3)α(1,4))
    k1k2k3k4q1=α(1,1)α(1,2)α(1,3)α(1,4)

    ( k 1 k 2 k 3 k 4 ) ⋅ ( q 1 q 2 q 3 q 4 ) = ( α ( 1 , 1 ) α ( 2 , 1 ) α ( 3 , 1 ) α ( 4 , 1 ) α ( 1 , 2 ) α ( 2 , 2 ) α ( 3 , 2 ) α ( 4 , 2 ) α ( 1 , 3 ) α ( 2 , 3 ) α ( 3 , 3 ) α ( 4 , 3 ) α ( 1 , 4 ) α ( 2 , 4 ) α ( 3 , 4 ) α ( 4 , 4 ) )

    (k1k2k3k4)" role="presentation" style="position: relative;">(k1k2k3k4)
    ·
    (q1q2q3q4)" role="presentation" style="position: relative;">(q1q2q3q4)
    =
    (α(1,1)α(2,1)α(3,1)α(4,1)α(1,2)α(2,2)α(3,2)α(4,2)α(1,3)α(2,3)α(3,3)α(4,3)α(1,4)α(2,4)α(3,4)α(4,4))" role="presentation" style="position: relative;">(α(1,1)α(2,1)α(3,1)α(4,1)α(1,2)α(2,2)α(3,2)α(4,2)α(1,3)α(2,3)α(3,3)α(4,3)α(1,4)α(2,4)α(3,4)α(4,4))
    k1k2k3k4(q1q2q3q4)=α(1,1)α(2,1)α(3,1)α(4,1)α(1,2)α(2,2)α(3,2)α(4,2)α(1,3)α(2,3)α(3,3)α(4,3)α(1,4)α(2,4)α(3,4)α(4,4) ——> K T ⋅ Q = A K^T ·Q=A KTQ=A ——> A ′ = s o f t m a x ( A ) 或 R e l u ( A ) A'=softmax(A)或Relu(A) A=softmax(A)Relu(A)

    第三步:输出 b 1 = α ′ ( 1 , i ) ⋅ v i b^{1}=α'(1,i)·v^i b1=α(1,i)vi

    ( v 1 v 2 v 3 v 4 ) ⋅ ( α ( 1 , 1 ) α ( 2 , 1 ) α ( 3 , 1 ) α ( 4 , 1 ) α ( 1 , 2 ) α ( 2 , 2 ) α ( 3 , 2 ) α ( 4 , 2 ) α ( 1 , 3 ) α ( 2 , 3 ) α ( 3 , 3 ) α ( 4 , 3 ) α ( 1 , 4 ) α ( 2 , 4 ) α ( 3 , 4 ) α ( 4 , 4 ) ) = ( b 1 b 2 b 3 b 4 )

    (v1v2v3v4)" role="presentation" style="position: relative;">(v1v2v3v4)
    ·
    (α(1,1)α(2,1)α(3,1)α(4,1)α(1,2)α(2,2)α(3,2)α(4,2)α(1,3)α(2,3)α(3,3)α(4,3)α(1,4)α(2,4)α(3,4)α(4,4))" role="presentation" style="position: relative;">(α(1,1)α(2,1)α(3,1)α(4,1)α(1,2)α(2,2)α(3,2)α(4,2)α(1,3)α(2,3)α(3,3)α(4,3)α(1,4)α(2,4)α(3,4)α(4,4))
    =
    (b1b2b3b4)" role="presentation" style="position: relative;">(b1b2b3b4)
    (v1v2v3v4)α(1,1)α(2,1)α(3,1)α(4,1)α(1,2)α(2,2)α(3,2)α(4,2)α(1,3)α(2,3)α(3,3)α(4,3)α(1,4)α(2,4)α(3,4)α(4,4)=(b1b2b3b4)——> V ⋅ A ′ = O V·A'=O VA=O

    O O O 其中每一个column就是self-attention的输出。

    self-attention中唯一需要学的参数: W q W^q Wq W k W^k Wk W v W^v Wv

    Multi-head Self-attention

    self-attention是用 q q q 去找相关的 k k k ,相关有很多种不同的形式,也许不能只有一个 q q q,要多个 q q q负责不同种类的相关性。
    q i = W q a i q^i=W^qa^i qi=Wqai q q q称为query)然后 q i q^i qi 再乘以另外2个矩阵得到 q i , 1 q^{i,1} qi,1 q i , 2 q^{i,2} qi,2
    解释:2个head,里面有2种不同相关性, i i i代表位置,1和2代表这个位置的第几个 q q q q q q有2个,对应 k k k v v v 也有2个。
    在这里插入图片描述
    在这里插入图片描述
    得到的 b b b可以都接起来,再乘以一个矩阵得到 b i b^i bi,再送到下一层。
    在这里插入图片描述

    Positional encoding

    以上Self-attention的方法没有对位置信息考虑,需要考虑上位置的咨询。
    Positional encoding:为每一个位置设定一个vetor(称为positional vetor e i e^i ei i i i代表位置)
    e i + a i e^i + a^i ei+ai 再计算 q i q^i qi k i k^i ki v i v^i vi
    在这里插入图片描述
    Positional encoding有不同的方法产生:例如sinusiodal/cosRNNFloater network、或者通过学习得到。

    其他Self-attention应用

    :做语音识别、语音辨识整个sequence可能太长,使用Truncated Self-attention人为的设定一小个范围。
    在这里插入图片描述
    self-attention用于Graph上,结点和边对应到矩阵上,没有边对应的位置可以不计算attention score 直接设为0,这就是一种GNN
    在这里插入图片描述

  • 相关阅读:
    接口管理工具Apifox在前后端分离项目中的实践
    eclipse连接MySql数据库(菜鸟入门之详细步骤)
    jsp393学生宿舍管理系统mysql
    七夕节送男朋友什么礼物?2022七夕礼物推荐
    基于Dockerfile创建镜像
    数据结构-- 并查集
    .NET 表达式目录树
    删除node_modules文件夹
    Golang 字符串
    java编程培训学习的就业前景好不好
  • 原文地址:https://blog.csdn.net/qq_44033208/article/details/128154505