Mémo de thèse : Mécanisme d'attention linéaire : une attention efficace pour la segmentation sémantique

Le Dot product Attention classique a une grande complexité spatiale et temporelle et est efficace, mais la quantité de données d'entrée pour les images et les vidéos est souvent supérieure à celle des textes, ce qui limite l'application de ces attentions classiques aux images haute résolution.Dans ce document, nous proposons un nouveau module d'attention linéaire pour résoudre ces problèmes sans compromettre les performances. Les principales contributions de ce document sont les suivantes : 1) Proposer une nouvelle méthode d'attention linéaire, réduisant la complexité de calcul de 𝑂(𝑁^2) à 𝑂(𝑁) 2) Ce mécanisme d'attention permet une combinaison plus générale et flexible de l'attention et du réseau ; 3) L'introduction de ce mécanisme d'attention dans les tâches de segmentation sémantique a amélioré les performances sur plusieurs bases de référence.

1 Méthodologie

A. Définition de l'attention par produit scalaire

Étant donné un vecteur caractéristique d'entrée X=left[boldsymbol{x}_{1}, cdots, boldsymbol{x}_{N}right] in mathbb{R}^{N times D_{x}}, où N représente la longueur de caractéristique et D_x la dimension de caractéristique.Ainsi, l'attention par produit scalaire génère respectivement les matrices Query, Key et Value à partir des matrices de transformation du produit scalaire boldsymbol{W}_{q} in mathbb{R}^{D_{x} times D_{k}}, boldsymbol{W}_{k} in mathbb{R}^{D_{x} times D_{k}} et boldsymbol{W}_{v}= mathbb{R}^{D_{x} times D_{v}}, selon les formules suivantes : begin{aligned} &boldsymbol{Q}=boldsymbol{X} boldsymbol{W}_{q} in mathbb{R}^{N times D_{k}} &boldsymbol{K}=boldsymbol{X} boldsymbol{W}_{k} in mathbb{R}^{N times D_{k}} &boldsymbol{V}=boldsymbol{X} boldsymbol{W}_{boldsymbol{v}} in mathbb{R}^{boldsymbol{N} times boldsymbol{D}_{v}} end{aligned}tag{1} ここで、Les dimensions de Q et K doivent être les mêmes.Basé sur cela, introduire une fonction de normalisation rho pour mesurer boldsymbol{q}_{i}^{T} in mathbb{R}^{D_{k}} 和 boldsymbol{k}_{j} in mathbb{R}^{D_{k}} la similarité de rholeft(boldsymbol{q}_{i}^{T} boldsymbol{k}_{j}right) in mathbb{R}^{1}。et Scaled Dot-Product Attention correspond à rholeft(boldsymbol{q}_{i}^{T} boldsymbol{k}_{j}right) in mathbb{R}^{1} comme poids pour v_j faire une moyenne pondérée.La définition de la Dot-Product Attention pour toute la matrice est la suivante : D(boldsymbol{Q}, boldsymbol{K}, boldsymbol{V})=rholeft(boldsymbol{Q} boldsymbol{K}^{T}right) boldsymbol{V}tag{2} La fonction de normalisation la plus couramment utilisée est softmax : rholeft(boldsymbol{Q}^{T} boldsymbol{K}right)=operatorname{softmax}_{text{row }}left(boldsymbol{Q} boldsymbol{K}^{T}right)tag{3} par rapport à boldsymbol{Q} in mathbb{R}^{N times D_{k}} と boldsymbol{K}^{T} in mathbb{R}^{D_{k} times N} ,boldsymbol{Q}boldsymbol{K}^{T} in mathbb{R}^{N times N} par conséquent rho la complexité temporelle et spatiale est la suivante 𝑂(𝑁^2)

B.Généralisation de Dot-Product Attention Basée sur Kernel

Nous définissons la généralisation de Dot-Product Attention basée sur le Kernel.Pour la fonction de normalisation au format softmax, elle peut s'écrire comme suit : D(boldsymbol{Q}, boldsymbol{K}, boldsymbol{V})_{i}=frac{sum_{j=1}^{N} e^{boldsymbol{q}_{i}{ }^{T} boldsymbol{k}_{j}} boldsymbol{v}_{j}}{sum_{j=1}^{N} e^{boldsymbol{q}_{i}{ }^{T} boldsymbol{k}_{j}}}tag{4} e^{boldsymbol{q}_i^{top}boldsymbol{k}_j} Ceci est v_j le poids pour la moyenne pondérée de. Cette formule peut être définie de manière plus générale comme suit : begin{gathered} D(boldsymbol{Q}, boldsymbol{K}, boldsymbol{V})_{i}=frac{sum_{j=1}^{N}operatorname{sim}left(boldsymbol{q}_{i}, boldsymbol{k}_{j}right) boldsymbol{v}_{j}}{sum_{j=1}^{N} operatorname{sim}left(boldsymbol{q}_{i}, boldsymbol{k}_{j}right)} operatorname{sim}left(boldsymbol{q}_{i}, boldsymbol{k}_{j}right) geq 0 end{gathered}tag{5} Il est clair que lorsque nous définissons operatorname{sim}left(boldsymbol{q}_{i}, boldsymbol{k}_{j}right)=e^{boldsymbol{q}_{i}{ }^{T} boldsymbol{k}_{j}} alors cette formule est équivalente à la formule d'Attention standard de softmax.Ce type d'attention est généralement appelé réseau Non-Local en CV. Il est clair que si nous retirons directement la définition de l'exposant text{sim}(boldsymbol{q}_i, boldsymbol{k}_j) = boldsymbol{q}_i^{top}boldsymbol{k}_j cela ne satisfera pas la propriété de non-négativité. Pour y remédier, nous pouvons envisager d'ajouter une fonction noyau et de redéfinir ainsi : text{sim}(boldsymbol{q}_i, boldsymbol{k}_j) = phi(boldsymbol{q}_i)^{top} varphi(boldsymbol{k}_j)tag{6} Ainsi, nous pouvons redéfinir la formule de l'Attention : D(boldsymbol{Q}, boldsymbol{K}, boldsymbol{V})_{i}=frac{sum_{j=1}^{N} phileft(boldsymbol{q}_{i}right)^{T} varphileft(boldsymbol{k}_{j}right) boldsymbol{v}_{j}}{sum_{j=1}^{N} phileft(boldsymbol{q}_{i}right)^{T}varphileft(boldsymbol{k}_{j}right)}=frac{phileft(boldsymbol{q}_{i}right)^{T} sum_{j=1}^{N} varphileft(boldsymbol{k}_{j}right) boldsymbol{v}_{j}^{T}}{phileft(boldsymbol{q}_{i}right)^{T} sum_{j=1}^{N} varphileft(boldsymbol{k}_{j}right)}tag{7}

C.Mécanisme d'Attention Linéaire

Contrairement à de nombreuses méthodes de linéarisation précédentes, cet article utilise le premier ordre de développement de Taylor pour la linéarisation : e^{boldsymbol{q}_{i}^{T} boldsymbol{k}_{j}} approx 1+boldsymbol{q}_{i}{ }^{T} boldsymbol{k}_{j}tag{8} Pour garantir boldsymbol{q}_{i}{ }^{T} boldsymbol{k}_{j} geq-1 nous allons boldsymbol{q}_{i} et boldsymbol{k}_{j} normer à la norme l2 : operatorname{sim}left(boldsymbol{q}_{i},boldsymbol{k}_{j}right)=1+left(frac{boldsymbol{q}_{i}}{left|boldsymbol{q}_{i}right|_{2}}right)^{T}left(frac{boldsymbol{k}_{j}}{left|boldsymbol{k}_{j}right|_{2}}right) .tag{9} La formule de l'attention peut être réécrite comme suit : D(boldsymbol{Q}, boldsymbol{K}, boldsymbol{V})_{i}=frac{sum_{j=1}^{N}left(1+left(frac{boldsymbol{q}_{i}}{left|boldsymbol{q}_{i}right|_{2}}right)^{T}left(frac{boldsymbol{k}_{j}}{left|boldsymbol{k}_{j}right|_{2}}right)right) boldsymbol{v}_{j}}{sum_{j=1}^{N}left(1+left(frac{boldsymbol{q}_{i}}{left|boldsymbol{q}_{i}right|_{2}}right)^{T}left(frac{boldsymbol{k}_{j}}{left|boldsymbol{k}_{j}right|_{2}}right)right)}=frac{sum_{j=1}^{N} boldsymbol{v}_{j}+left(frac{boldsymbol{q}_{i}}{left|boldsymbol{q}_{i}right|_{2}}right)^{T} sum_{j=1}^{N}left(frac{boldsymbol{k}_{j}}{left|boldsymbol{k}_{j}right|_{2}}right) boldsymbol{v}_{j}^{T}}{N+left(frac{boldsymbol{q}_{i}}{left|boldsymbol{q}_{i}right|_{2}}right)^{T} sum_{j=1}^{N}left(frac{boldsymbol{k}_{j}}{left|boldsymbol{k}_{j}right|_{2}}right)}tag{10} Description utilisant la forme vectorielle : D(boldsymbol{Q}, boldsymbol{K}, boldsymbol{V})=frac{sum_{j} boldsymbol{V}_{i, j}+left(frac{boldsymbol{Q}}{|boldsymbol{Q}|_{2}}right)left(left(frac{boldsymbol{K}}{|boldsymbol{K}|_{2}}right)^{T} boldsymbol{V}right)}{N+left(frac{boldsymbol{Q}}{|boldsymbol{Q}|_{2}}right)sum_{j}left(frac{boldsymbol{K}}{|boldsymbol{K}|_{2}}right)_{i, j}^{T}}tag{11} Ceux-ci sum_{j=1}^{N}left(frac{boldsymbol{k}_{j}}{left|boldsymbol{k}_{j}right|_{2}}right) boldsymbol{v}_{j}^{T}sum_{j=1}^{N}left(frac{boldsymbol{k}_{j}}{left|boldsymbol{k}_{j}right|_{2}}right) peuvent être calculés à l'avance et réutilisés pour chaque requête.

2 Résultats expérimentaux

Les auteurs ont proposé une attention linéaire pour plusieurs cadres de segmentation d'image courantsNous avons introduit et obtenu des résultats de pointes par rapport à la ligne de base.Cela montre que la structure proposée a une validité universelle.

Articles & Code Source

Article 1636966378-Linear Attention Mechanism- An Efficient Attention for Semantic Segmentation ソースコード https://github.com/lironui/Linear-Attention-Mechanism https://github.com/lironui/MAResU-Net https://github.com/lironui/MACU-Net

Références

[1] https://kexue.fm/archives/7546

Add a Comment

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *