main
Gašper Spagnolo 2023-08-08 11:14:53 +02:00
parent 279bd95de1
commit 470147097e
No known key found for this signature in database
GPG Key ID: 2EA0738CC1EFEEB7
3 changed files with 260 additions and 38 deletions

Binary file not shown.

View File

@ -418,7 +418,7 @@ Samozadostna lokalizacija in navigacija dronov v okoljih, kjer so satelitski sig
Da bi rešili problem avtonomne navigacije brezpilotnih letalnikov v okolju, kjer je uporaba satelitskih signalov omejena, so bile prejšnje metode večinoma izvedene z uporabo prepoznavanja slik. Da bi rešili problem avtonomne navigacije brezpilotnih letalnikov v okolju, kjer je uporaba satelitskih signalov omejena, so bile prejšnje metode večinoma izvedene z uporabo prepoznavanja slik.
Lokalizacija naprave se doseže z ujemanjem slike letalnika z vsako sliko v satelitski slikovni bazi. Lokalizacija naprave se doseže z ujemanjem slike letalnika z vsako sliko v satelitski slikovni bazi.
Med procesom usposabljanja so neprestano skrajševali razdaljo med slikami letalnikov in satelitskimi slikami podobnih regij preko metrike učenja. Med procesom ucenja so neprestano skrajševali razdaljo med slikami letalnikov in satelitskimi slikami podobnih regij preko metrike učenja.
Metoda prepoznavanja slik je na nekaterih naborih podatkov dosegla odlične rezultate. Vendar ima več problemov: Metoda prepoznavanja slik je na nekaterih naborih podatkov dosegla odlične rezultate. Vendar ima več problemov:
\begin{itemize} \begin{itemize}
@ -520,10 +520,10 @@ Vizualizacija barvnih prehodov pomaga opazovalcu, da hitro zazna vzorce in trend
\subsection{Predhodni mehanizmi} \subsection{Predhodni mehanizmi}
Preden so bili transformerji, so bili najpogostejše metode za obvladovanje zaporedij v jezikovnih modelih rekurentne nevronske mreže (RNN) in njihove različice, kot so dolgokratni kratkotrajni spomini (LSTM) in obogatene RNN (GRU). Preden so obstajali transformerji, so bile najpogostejše metode za obvladovanje zaporedij v jezikovnih modelih rekurentne nevronske mreže (RNN) in njihove različice, kot so dolgokratni kratkotrajni spomini (LSTM) in obogatene RNN (GRU).
Najpogostejša uporaba teh modelov v kontekstu strojnega prevajanja ali drugih nalog zaporedja v zaporedje je bila uporaba strukture kodirnik-dekodirnik. Najpogostejša uporaba teh modelov v kontekstu strojnega prevajanja ali drugih nalog zaporedja v zaporedje je bila uporaba strukture kodirnik-dekodirnik.
V tej strukturi je bilo zaporedje vhodnih besed ali tokenov kodirano v skrito stanje z uporabo RNN (kodirnik), to skrito stanje pa je bilo nato uporabljeno za generiranje zaporedja izhodnih besed ali tokenov z uporabo drugega RNN (dekodirnik). V tej strukturi je bilo zaporedje vhodnih besed ali tokenov kodirano v latentni prostor z uporabo RNN (kodirnik), ta latentni vektor pa je bil nato uporabljen za generiranje zaporedja izhodnih besed ali tokenov z uporabo drugega RNN (dekodirnik).
Problem s to strukturo je bil, da je bilo skrito stanje omejeno na velikost fiksne dolžine in je moralo vsebovati vse informacije iz izvornega zaporedja, ki so potrebne za generiranje ciljnega zaporedja. Problem s to strukturo je bil, da je bil latentni prostor omejen na velikost fiksne dolžine in je moral vsebovati vse informacije iz izvornega zaporedja, ki so potrebne za generiranje ciljnega zaporedja.
To je omejevalo model pri obvladovanju dolgih zaporedij, saj je bilo težko ohraniti informacije iz zgodnjega dela zaporedja do konca. To je omejevalo model pri obvladovanju dolgih zaporedij, saj je bilo težko ohraniti informacije iz zgodnjega dela zaporedja do konca.
Da bi to težavo rešili, so raziskovalci vključili mehanizem pozornosti, ki je omogočil dekodirniku, da se osredotoči na različne dele izvornega zaporedja na različnih stopnjah generiranja ciljnega zaporedja. Da bi to težavo rešili, so raziskovalci vključili mehanizem pozornosti, ki je omogočil dekodirniku, da se osredotoči na različne dele izvornega zaporedja na različnih stopnjah generiranja ciljnega zaporedja.
To je bil velik napredek, ki je omogočil boljše obvladovanje dolgih zaporedij. To je bil velik napredek, ki je omogočil boljše obvladovanje dolgih zaporedij.
@ -535,7 +535,7 @@ To je bil velik napredek, ki je omogočil boljše obvladovanje dolgih zaporedij.
Definirajmo problem strojnega prevajanja kot iskanje najboljše ciljne sekvence $\vec{E} = (e_0, e_1, ..., e_m)$ glede na dane izvorne besede $\vec{F} = (f_0, f_1, ..., f_n)$. Definirajmo problem strojnega prevajanja kot iskanje najboljše ciljne sekvence $\vec{E} = (e_0, e_1, ..., e_m)$ glede na dane izvorne besede $\vec{F} = (f_0, f_1, ..., f_n)$.
Ta problem lahko izrazimo kot optimizacijo pogojne verjetnosti $P(\vec{E}|\vec{F})$. Ta problem lahko izrazimo kot optimizacijo pogojne verjetnosti $P(\vec{E}|\vec{F})$.
Začnimo z opisom RNN-kodirnik-dekodirnik arhitekture. Začnimo z opisom RNN-kodirnik-dekodirnik arhitekture.
Imamo dva RNN modela, kodirnik $\text{RNN}\text{enc}$ in dekodirnik $\text{RNN}\text{dec}$. Imamo dva RNN modela, kodirnik $\text{RNN}_{\text{enc}}$ in dekodirnik $\text{RNN}_{\text{dec}}$.
Kodirnik z zaporedjem vektorjev $\vec{F}$ proizvede skrito stanje $h_n$: Kodirnik z zaporedjem vektorjev $\vec{F}$ proizvede skrito stanje $h_n$:
\begin{equation} \begin{equation}
h_n = \text{RNN}_\text{enc}(f_n, h_{n-1}) h_n = \text{RNN}_\text{enc}(f_n, h_{n-1})
@ -548,7 +548,7 @@ Dekodirnik nato uporablja to skrito stanje, da generira ciljno zaporedje $\vec{E
\end{equation} \end{equation}
Opomba: pri treniranju se za $e_{t-1}$ pogosto uporablja dejanska vrednost iz ciljnega zaporedja (ne izhod modela), kar je znano kot "teacher forcing". Opomba: pri treniranju se za $e_{t-1}$ pogosto uporablja dejanska vrednost iz ciljnega zaporedja (ne izhod modela), kar je znano kot "teacher forcing".
Vse to se lahko zelo poenostavi z uporabo Transformerjev. Izvorna zaporedja besed $\vec{F}$ se vnašajo v kodirnik, ki generira skrita stanja za vsako besedo: Izvorna zaporedja besed $\vec{F}$ se tako vnašajo v kodirnik, ki generira skrita stanja za vsako besedo:
\begin{equation} \begin{equation}
\vec{H} = \text{Encoder}(\vec{F}) \vec{H} = \text{Encoder}(\vec{F})
\end{equation} \end{equation}
@ -563,8 +563,6 @@ Potem se ta vektor uporabi za napoved ciljne besede:
e_t = \text{Decoder}(\vec{a}_t, e_{t-1}) e_t = \text{Decoder}(\vec{a}_t, e_{t-1})
\end{equation} \end{equation}
Ta pristop omogoča, da dekodirnik upošteva vse besede v izvornem zaporedju, ne samo prejšnje besede v ciljnem zaporedju, kar izboljša kakovost prevoda. Ta pristop omogoča, da dekodirnik upošteva vse besede v izvornem zaporedju, ne samo prejšnje besede v ciljnem zaporedju, kar izboljša kakovost prevoda.
Vendar je to zgolj matematična formulacija koncepta. Dejanski detajli, kot so vrste in struktura kodirnika in dekodirnika, so odvisni od specifičnega modela, ki ga uporabljamo. Vendar je to zgolj matematična formulacija koncepta. Dejanski detajli, kot so vrste in struktura kodirnika in dekodirnika, so odvisni od specifičnega modela, ki ga uporabljamo.
@ -576,12 +574,11 @@ Vendar je to zgolj matematična formulacija koncepta. Dejanski detajli, kot so v
\end{figure} \end{figure}
\section{Zgradba transformerja} \section{Zgradba transformerja}
Sedaj, ko smo se seznanili s preteklimi metodami, se osredotočimo na izzive, ki so jih predstavljale strukture RNN, kot je težava s paralelizacijo.
V kontekstu strojnega prevajanja so avtorji v članku "Attention is all you need" \cite{vaswani2017attention} o pozornosti predstavili novo vrsto arhitekture, ki se loteva mnogih pasti modelov, ki temeljijo na RNN. V kontekstu strojnega prevajanja so avtorji v članku "Attention is all you need" \cite{vaswani2017attention} o pozornosti predstavili novo vrsto arhitekture, ki se loteva mnogih pasti modelov, ki temeljijo na RNN.
Kljub vsem napredkom pri kodirnikih-dekodirnikih RNN, ki smo jih obravnavali zgoraj, je ostalo dejstvo, da so RNN težko paralelizirati, ker zaporedno obdelujejo vhod. Kljub vsem napredkom pri kodirnikih-dekodirnikih RNN, ki smo jih obravnavali zgoraj, je ostalo dejstvo, da so RNN težko paralelizabilni(parallel), ker zaporedno obdelujejo vhod.
Ključna inovacija tega članka je, da so RNN in njihova skrita stanja v celoti nadomeščena z operacijami na osnovi pozornosti, ki so v mnogih problematičnih režimih bolj učinkovite. S tem je arhitektura Transformer odpravila največji zastoj v procesu usposabljanja za prejšnje modele SOTA in nenadoma omogočila izvedbo ogromnih modelov, usposobljenih na enako ogromnih naborih podatkov. Ključna inovacija tega članka je, da so RNN in njihova skrita stanja v celoti nadomeščena z operacijami na osnovi pozornosti, ki so v mnogih problematičnih režimih bolj učinkovite.
Kot je bilo že omenjeno, je transformerski model kodirnika-dekodirnika. Kodirnik sestavljajo bloki $N$ na levi, dekodirnik pa bloki $N$ na desni. Transformerski model je model kodirnika-dekodirnika. Kodirnik sestavljajo $N$ blokov na levi, dekodirnik pa $N$ blokov na desni.
\begin{figure}[h] \begin{figure}[h]
\centering \centering
@ -590,28 +587,31 @@ Kot je bilo že omenjeno, je transformerski model kodirnika-dekodirnika. Kodirni
\label{fig:transformer_network} \label{fig:transformer_network}
\end{figure} \end{figure}
Med usposabljanjem se vhodne besede $\vec{F} = (f_0, ..., f_n)$ hkrati prenesejo v prvi blok kodirnika, izhod tega bloka pa se nato prenese v njegovega naslednika.
Postopek se ponavlja, dokler vsi bloki $N$ kodiranja niso obdelali vhoda. Med ucenjem se vhodne besede $\vec{F} = (f_0, ..., f_n)$ hkrati prenesejo v prvi blok kodirnika, izhod tega bloka pa se nato prenese v njegovega naslednika.
Postopek se ponavlja, dokler vseh $N$ blokov kodirnika ni obdelalo vhoda.
Vsak blok ima dve komponenti: plast večglave samopozornosti, ki ji sledi popolnoma povezana plast z aktivacijami ReLU, ki obdeluje vsak element vhodne sekvence vzporedno. Vsak blok ima dve komponenti: plast večglave samopozornosti, ki ji sledi popolnoma povezana plast z aktivacijami ReLU, ki obdeluje vsak element vhodne sekvence vzporedno.
Tako večglavi sloj pozornosti kot popolnoma povezana plast sledita koraku \textit{Dodaj in Normiraj} - \textit{dodaj} se nanaša na residualno povezavo,
ki doda vhod vsake plasti na izhod, \textit{normiraj} pa se nanaša na normalizacijo plasti.
Ko je vhod prešel skozi vse bloke kodiranja, ostane kodirana predstavitev $\vec{F}$. Ko je vhod prešel skozi vse bloke kodiranja, ostane kodirana predstavitev $\vec{F}$.
Tako večglavi sloj pozornosti kot popolnoma povezana plast sledita koraku "Dodaj & Normiraj" - "dodaj" se nanaša na residualno povezavo,
ki doda vhod vsake plasti na izhod, "normiraj" pa se nanaša na normalizacijo plasti. Dekodirnik pa sestoji iz treh korakov: maske večglave samopozornosti,
Glede na dekodirnik, ta sestoji iz treh korakov: maske večglave samopozornosti,
večglave plasti pozornosti, ki povezuje kodirano izvorno predstavitev z dekodirnikom, in popolnoma povezane plasti z aktivacijami ReLU. večglave plasti pozornosti, ki povezuje kodirano izvorno predstavitev z dekodirnikom, in popolnoma povezane plasti z aktivacijami ReLU.
Tako kot v kodirniku, vsaki plasti sledi plast "Dodaj & Normiraj". Tako kot v kodirniku, vsaki plasti sledi plast \textit{Dodaj in Normiraj}.
Dekodirnik sprejme vse ciljne besede $\vec{E} = (e_0, ..., e_m)$ kot vhod. Dekodirnik sprejme vse ciljne besede $\vec{E} = (e_0, ..., e_m)$ kot vhod.
Obstaja nekaj ključnih razlik od kodirnika - ena je, da so vhodi v prvo operacijo pozornosti v blokih dekodirnika maskirani, zato ime plasti.
To podrobneje raziskujemo v razdelku o večglavi pozornosti, vendar na kratko, to pomeni, da se lahko katera koli beseda v ciljnem izhodu nanaša samo na besede, ki so prišle pred njo.
Razlog za to je preprost: med sklepanjem generiramo predvideni prevod $\vec{E}$ besedo za besedo z uporabo izvornega stavka $\vec{F}$.
V procesu napovedovanja besede $e_i$ ima dekodirnik dostop do prej generiranih besed. V procesu napovedovanja besede $e_i$ ima dekodirnik dostop do prej generiranih besed.
Ne more pa imeti dostopa do besed, ki sledijo $e_i$, saj te še niso bile generirane in so odvisne od izbire modela $e_i$. Ne more pa imeti dostopa do besed, ki sledijo $e_i$, saj te še niso bile generirane.
Maskiranje med usposabljanjem nam omogoča, da posnemamo pogoje, s katerimi se bo model soočil med sklepanjem. Maskiranje med ucenjem nam omogoča, da posnemamo pogoje, s katerimi se bo model soočil med sklepanjem.
Obstaja nekaj ključnih razlik od kodirnika - ena je, da so vhodi v prvo operacijo pozornosti v blokih dekodirnika maskirani, zato ime plasti.
To pomeni, da se lahko katera koli beseda v ciljnem izhodu nanaša samo na besede, ki so prišle pred njo.
Razlog za to je preprost: med sklepanjem generiramo predvideni prevod $\vec{E}$ besedo za besedo z uporabo izvornega stavka $\vec{F}$.
Druga razlika od kodirnika je druga večglava plast pozornosti, ki se imenuje tudi plast pozornosti kodirnika-dekodirnika. Druga razlika od kodirnika je druga večglava plast pozornosti, ki se imenuje tudi plast pozornosti kodirnika-dekodirnika.
Za razliko od plasti pozornosti na začetku blokov kodirnika in dekodirnika ta plast ni plast samopozornosti. Za razliko od plasti pozornosti na začetku blokov kodirnika in dekodirnika ta plast ni plast samopozornosti.
\section{Scaled Dot-Product Attention} \section{Scaled Dot-Product Attention}
Ta funkcija se uporablja v vseh plasteh pozornosti v transformatorju. Ta funkcija se uporablja v vseh plasteh pozornosti v transformerju.
Za zdaj bomo razčlenili matematiko za to operacijo, samo da dobimo občutek, katera števila gredo kam. Za zdaj bomo razčlenili matematiko za to operacijo, samo da dobimo občutek, katera števila gredo kam.
Kasneje se bomo osredotočili na njegove aplikacije v članku. Kasneje se bomo osredotočili na njegove aplikacije v članku.
@ -623,13 +623,12 @@ Kasneje se bomo osredotočili na njegove aplikacije v članku.
Scaled Dot-Product Attention je skoraj identičen Dot-Product Attention, omenjenem prej pri Luongu \cite{bahdanau2015neural}. Scaled Dot-Product Attention je skoraj identičen Dot-Product Attention, omenjenem prej pri Luongu \cite{bahdanau2015neural}.
Edina razlika je, da je vhod v softmax skaliran s faktorjem $\frac{1}{\sqrt{d_k}}$. Edina razlika je, da je vhod v softmax skaliran s faktorjem $\frac{1}{\sqrt{d_k}}$.
Ko bomo prešli skozi delovanje Scaled Dot-Product Attention, se bomo vrnili k tej točki in jo na koncu tega razdelka podrobneje raziskali.
V članku in predhodni literaturi se vrstice $Q$ imenujejo "poizvedbe", tiste od $K$ "ključi", in končno tiste od $V$ "vrednosti". V članku in predhodni literaturi se vrstice $Q \in \mathbb{R}^{m \times d_k}$ imenujejo "poizvedbe", vrstice $K \in \mathbb{R}^{n \times d_k}$ "ključi", in končno vrstice $V \in \mathbb{R}^{n \times d_v}$ "vrednosti".
Za zdaj jih obravnavajte kot oznake; njihove interpretacije lahko preučimo kasneje. Upoštevati je potrebno, da se za izvedbo mora število ključev in vrednosti $n$ ujemati, vendar se lahko število poizvedb $m$ razlikuje.
Tukaj je $Q \in \mathbb{R}^{m \times d_k}$, $K \in \mathbb{R}^{n \times d_k}$ in $V \in \mathbb{R}^{n \times d_v}$.
Upoštevajte, da se za izvedbo algebre mora število ključev in vrednosti $n$ ujemati, vendar se lahko število poizvedb $m$ razlikuje.
Prav tako se mora dimenzionalnost ključev in poizvedb ujemati, vendar se lahko dimenzionalnost vrednosti razlikuje. Prav tako se mora dimenzionalnost ključev in poizvedb ujemati, vendar se lahko dimenzionalnost vrednosti razlikuje.
Našo raziskavo bomo začeli z zapisom posameznih vrstic $Q$ in $K$, nato pa bomo izrazili produkt $QK^T$ v smislu teh vrstic:
Izpeljimo izracun pozornosti. Zaceli bomo z zapisom posameznih vrstic $Q$ in $K$, nato pa bomo izrazili produkt $QK^T$ v smislu teh vrstic:
\begin{equation} \begin{equation}
Q &= \begin{pmatrix} q_0 \\ q_1 \\ \vdots \\ q_m \end{pmatrix}, \\ Q &= \begin{pmatrix} q_0 \\ q_1 \\ \vdots \\ q_m \end{pmatrix}, \\
@ -657,10 +656,10 @@ Zadnji korak je množenje te matrike z $V$:
\end{align*} \end{align*}
\end{equation} \end{equation}
Glavno sporočilo tukaj je, da mehanizem pozornosti rezultira v seriji uteženih povprečij vrstic $V$, kjer uteži določajo vhodne poizvedbe in ključe. Tukaj lahko opazimo, da mehanizem pozornosti rezultira v seriji uteženih povprečij vrstic $V$, kjer uteži določajo vhodne poizvedbe in ključe.
Vsaka od $m$ poizvedb v $Q$ rezultira v specifični uteženi vsoti vektorskih vrednosti. Vsaka od $m$ poizvedb v $Q$ rezultira v specifični uteženi vsoti vektorskih vrednosti.
Pomembno je, da v tem posebnem postopku ni nobenih učljivih parametrov - sestavljen je izključno iz matričnih in vektorskih operacij. Pomembno je, da v tem posebnem postopku ni nobenih učljivih parametrov - sestavljen je izključno iz matričnih in vektorskih operacij.
Poglejmo posamezno vrstico $i$ uteži pozornosti: Poglejmo si se posamezno vrstico $i$ uteži pozornosti:
\begin{equation} \begin{equation}
\begin{align*} \begin{align*}
@ -676,26 +675,221 @@ kjer je $S$ normalizacijska konstanta:
\end{equation} \end{equation}
Če pogledamo, kako so uteži konstruirane, je izvor imen "poizvedbe", "ključi" in "vrednosti" jasnejši. Če pogledamo, kako so uteži konstruirane, je izvor imen "poizvedbe", "ključi" in "vrednosti" jasnejši.
Tako kot v hash tabeli ta operacija izbira želene vrednosti preko ustrezajočih, ena-na-ena ključev. Tako kot v zgosceni tabeli tabeli ta operacija izbira želene vrednosti preko ustrezajočih, ena-na-ena ključev.
Ključi, ki jih iščemo, so označeni z poizvedbami - izrazimo lahko skalarni produkt med danim ključem in poizvedbo v smislu kota $\theta$ med njima: Ključi, ki jih iščemo, so označeni z poizvedbami - skalarni produkt med danim ključem in poizvedbo lahko izrazimo kot kot $\theta$ med njima:
\begin{equation} \begin{equation}
\begin{align*} \begin{align*}
q_i \cdot k_j = |q_i||k_j|\cos(\theta) q_i \cdot k_j = |q_i||k_j|\cos(\theta)
\end{align*} \end{align*}
\end{equation} \end{equation}
Če za trenutek zanemarimo velikosti, lahko na spodnjem grafu vidimo, da eksponentacija povečuje pozitivne vrednosti kosinusa in zmanjšuje negativne. Uporaba eksponentne funkcije povečuje pozitivne vrednosti kosinusa in zmanjšuje negativne.
Zato je bližje kot sta si ključ $\vec{k}_j$ in poizvedba $\vec{q}_i$ po kotu, večja je njihova zastopanost v vektorju pozornosti. Zato je bližje kot sta si ključ $\vec{k}_j$ in poizvedba $\vec{q}_i$ po kotu, večja je njihova zastopanost v vektorju pozornosti.
Še ena pomanjkljivost, ki so jo raziskovalci opazili pri modelih, ki temeljijo na RNN (Recurrent Neural Networks), je, da imajo težave z uporabo informacij iz elementov, ki so bili opaženi daleč v preteklosti.
To je posledica tega, kar se imenuje "problem dolgih časovnih razdalj", kjer se informacije iz preteklih korakov postopoma izgubljajo skozi čas.
Bolj splošno, RNN imajo težave z povezovanjem zaporednih informacij, ki so med seboj daleč narazen. Tehnike, kot so pozornost na skritih stanjih (attention on hidden states) in dvosmerni modeli (bidirectional models), so bili poskusi za odpravo te težave in so služili kot naravni prehod v tehnike v tem članku.
Avtorji pozornosti omenijo, da delijo vhode v softmax funkcijo z $\sqrt(d_k)$, da bi ublažili učinke velikih vhodnih vrednosti, ki bi vodile do majhnih gradientov med ucenjem.
Za lazje razumevanje, zakaj veliki argumenti softmax vodijo do majhnih gradientov, lahko konstruiramo primer. Začnimo z definicijo softmax funkcije:
\begin{equation}
\begin{align*}
\text{softmax}(x_i) = \frac{\exp(x_i)}{\sum_j \exp(x_j)}
\end{align*}
\end{equation}
Gradient softmax funkcije je izračunan kot:
\begin{equation}
\frac{\partial \text{softmax}(x_i)}{\partial x_j} = \text{softmax}(x_i) * (\delta_{ij} - \text{softmax}(x_j))
\end{equation}
kjer $ \partial_{ij}$ je Kroneckerjev delta, ki je enak 1, če sta i in j enaka, in 0 sicer.
Če upoštevamo skaliranje, dobimo:
\begin{equation}
\frac{\partial \text{softmax}(x_i/C)}{\partial x_j} = \frac{1}{C} * \text{softmax}(x_i/C) * (\delta_{ij} - \text{softmax}(x_j/C))
\end{equation}
kjer C je faktor skaliranja. Iz tega lahko vidimo, da skaliranje zmanjšuje velikost gradientov, kar lahko pomaga pri stabilizaciji učenja.
\subsection{Multi-Head Attention}
Večglava pozornost (Multi-Head Attention) je razširitev mehanizma pozornosti Scaled Dot-Product Attention.
V večglavi pozornosti se vhodni podatki (poizvedbe, ključi in vrednosti) najprej transformirajo v več različnih prostorov z uporabo linearnih preslikav.
Nato se za vsak niz izračuna funkcija pozornosti Scaled Dot-Product Attention.
Rezultati teh funkcij pozornosti se nato združijo skupaj v eno matriko.
Končno, ta matrika se preslika nazaj v izvirni prostor z uporabo druge linearne preslikave, da se pridobi končni rezultat večglave pozornosti.
Avtorji to izrazijo v spodnji obliki:
\begin{equation}
\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, ..., \text{head}_h)W_O
\end{equation}
Vsak $\text{head}_i$ je rezultat izvajanja Scaled Dot-Product Attention na $i$-tem nizu transformiranih poizvedb, ključev in vrednosti:
\begin{equation}
\text{head}_i = \text{Attention}(QW_{Qi}, KW_{Ki}, VW_{Vi})
\end{equation}
kjer so $Q \in \mathbb{R}^{m \times d_{\text{model}}}$, $K \in \mathbb{R}^{n \times d_{\text{model}}}$, in $V \in \mathbb{R}^{n \times d_{\text{model}}}$.
Poleg tega, ob upoštevanju hiperparametra $h$, ki označuje število glav pozornosti, velja: $W_{Qi} \in \mathbb{R}^{d_{\text{model}} \times d_k}$, $W_{Ki} \in \mathbb{R}^{d_{\text{model}} \times d_k}$, $W_{Vi} \in \mathbb{R}^{d_{\text{model}} \times d_v}$, in $W_O \in \mathbb{R}^{hd_v \times d_{\text{model}}}$.
Dokazimo, da se matrično množenje izide.
Najprej vemo iz prejšnjega razdelka, da bo vsaka matrika $\text{head}i$ imela enako število vrstic kot $QW{Qi}$ in enako število stolpcev kot $VW_{Vi}$.
Ker velja $QW_{Qi} \in \mathbb{R}^{m \times d_k}$ in $VW_{Vi} \in \mathbb{R}^{n \times d_v}$, to pomeni, da je $\text{head}i \in \mathbb{R}^{m \times d_v}$.
Ko združimo $h$ takih matrik, dobimo matriko v $\mathbb{R}^{m \times hd_v}$. Množenje z $W_O$ daje matriko v $\mathbb{R}^{m \times d{\text{model}}}$.
Kar drzi - začeli smo z $m$ poizvedbami v $Q$ in končali z $m$ odgovori v izhodu operatorja.
Vsak izračun glave ima drugačno linearno preslikavo za matrike ključev, poizvedb in vrednosti.
Vsaka od teh preslikav se nauči med ucenjem.
\subsubsection{Maskiranje vhodov}
En način za maskiranje vhodov je preprosto dodajanje matrike M k argumentu ki vsebuje 0 v spodnjem trikotniku in $-\infty$ povsod drugje:
\begin{equation}
\frac{1}{\sqrt{d_k}} Q' K'^T + M =
\end{equation}
\begin{equation}
\begin{align*}
\begin{pmatrix}
\frac{1}{\sqrt{d_k}}
\vec{q}'_0 \cdot \vec{k}'_0 & \vec{q}'_0 \cdot \vec{k}'_1 & \cdots & \vec{q}'_0 \cdot \vec{k}'_n \\
\vec{q}'_1 \cdot \vec{k}'_0 & \vec{q}'_1 \cdot \vec{k}'_1 & \cdots & \vec{q}'_1 \cdot \vec{k}'_n \\
\vdots & \vdots & \ddots & \vdots \\
\vec{q}'_n \cdot \vec{k}'_0 & \vec{q}'_n \cdot \vec{k}'_1 & \cdots & \vec{q}'_n \cdot \vec{k}'_n \\
\end{pmatrix}
+
\begin{pmatrix}
0 & -\infty & -\infty & \cdots & -\infty \\
-\infty & 0 & 0 & \cdots & -\infty \\
-\infty & \vdots & \vdots & \vdots & \vdots \\
-\infty & 0 & 0 & \cdots & 0 \\
-\infty & 0 & 0 & \cdots & 0 \\
\end{pmatrix}
\end{align*}
\end{equation}
\begin{equation}
\begin{align*}
=
\frac{1}{\sqrt{d_k}}
\begin{pmatrix}
\vec{q}'_0 \cdot \vec{k}'_0 & -\infty & -\infty & \cdots & -\infty \\
\vec{q}'_1 \cdot \vec{k}'_0 & \vec{q}'_1 \cdot \vec{k}'_1 & -\infty & \cdots & -\infty \\
\vdots & \vdots & \ddots & \vdots \\
\vec{q}'_{n-1} \cdot \vec{k}'_0 & \vec{q}'_{n-1} \cdot \vec{k}'_1 & \vec{q}'_{n-1} \cdot \vec{k}'_2 & \cdots & -\infty \\
\vec{q}'_n \cdot \vec{k}'_0 & \vec{q}'_n \cdot \vec{k}'_1 & \vec{q}'_n \cdot \vec{k}'_2 & \cdots & \vec{q}'_n \cdot \vec{k}'_n \\
\end{pmatrix}
\end{align*}
\end{equation}
Nato ima izvajanje softmaxa na vsaki vrstici učinek pošiljanja vseh $-\infy$ celic na 0, pri čemer ostanejo samo veljavni izrazi za pozornost.
Tretja in zadnja uporaba večglave pozornosti v članku je pozornost kodirnik-dekodirnik, ki se uporablja v blokih dekodirnika neposredno po sloju maske večglave pozornosti, da se povežejo izvorne in ciljne sekvence.
Medtem ko so pri samopozornosti vsi trije vhodi enaka matrika, to tukaj ne velja.
\begin{equation}
\begin{align*}
\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, ..., \text{head}_h) W_O, \quad \text{head}_i = f(Q, K, V)
\end{align*}
\end{equation}
Ko govorimo o pozornosti med kodirnikom in dekodirnikom, je edina razlika od prej v tem, da $Q$ izhaja iz sloja maske večglave pozornosti, medtem ko sta $K$ in $V$ kodirani predstavitvi $\vec{F}$.
Lahko bi razmišljali o tem tako, da model zastavlja vprašanje o tem, kako se vsak položaj v ciljni sekvenci nanaša na izvor, in pridobiva predstavitve izvora za uporabo pri generiranju naslednje besede v cilju.
Pomembno je poudariti, da vsi bloki dekodirnika prejmejo enake podatke od kodirnika. Od prvega do $N$-tega bloka dekodirnika vsak uporablja kodirano izvorno sekvenco kot ključe in vrednosti.
\section{Vision Transformer (ViT)} \section{Vision Transformer (ViT)}
cc Transformerji so prvotno bili omejeni na obdelavo zaporedij, kar je idealno za jezik, vendar ne nujno za slike, ki so običajno 2D.
To se je spremenilo z razvojem Vision Transformerja (ViT) s strani Google-a \cite{vit}.
Namesto da bi slike obdelovali kot 2D mreže pikslov (kot to počnejo konvolucijske nevronske mreže), Vision Transformer slike obravnava kot zaporedje majhnih kvadratov ali "oblizev".
To omogoča uporabo enakih tehnik samo-pozornosti, ki so bile učinkovite v jezikovnih modelih, tudi za obdelavo slik.
Ta pristop je pokazal obetavne rezultate, saj je Vision Transformer dosegel ali presegel učinkovitost konvolucijskih nevronskih mrež na številnih nalogah računalniškega vida.
\subsubsection{ViT arhitektura}
\begin{itemize}
\item Razdelitev slike na oblize: Slika velikosti $H \times W \times C$ se razdeli na kvadrate (oblize) velikosti $P \times P$, kjer je $H$ višina, $W$ širina, $C$ število barvnih kanalov in $P$ velikost obliza.
To ustvari $(H \cdot W) / P^2$ oblizev. Vsak obliz se nato zravna v 1D vektor dolžine $P^2 \cdot C$.
Linearne projekcije: Vsak 1D vektor $x$ se prenese skozi enostaven linearni model (npr. polno povezano plast), da se pretvori v vektorski vložek. To se lahko zapiše kot:
\begin{equation}
\begin{align*}
z = Wx + b
\end{align*}
\end{equation}
kjer sta $W$ in $b$ uteži in pristranskost linearne plasti.
\item Dodajanje pozicijskih vložkov: Ker transformerji ne vsebujejo nobene inherentne informacije o relativni ali absolutni poziciji vložkov v zaporedju, se dodajo pozicijski vložki.
To so enaki vektorji, ki se dodajo vložkom oblizev, da bi modelu dali nekaj informacij o tem, kje se obliz nahaja v sliki.
Če je $z_i$ vložek $i$-tega obliza in $p_i$ pozicijski vložek, potem je končni vložek $e_i$ določen kot:
\begin{equation}
\begin{align*}
e_i = z_i + p_i
\end{align*}
\end{equation}
\item Transformerjevi bloki: Zaporedje vložkov (zdaj z dodanimi pozicijskimi vložki) se nato prenese skozi več blokov transformerjev.
Ti bloki vsebujejo večglavo samo-pozornost in mreže feed-forward, ki omogočajo modelu, da se nauči, kako povezati različne dele slike. Večglava samo-pozornost se lahko zapiše kot:
\begin{equation}
\begin{align*}
\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, ..., \text{head}_h) W_O
\end{align*}
\end{equation}
kjer je $\text{head}i = \text{Attention}(QW{Qi}, KW_{Ki}, VW_{Vi})$, $Q$, $K$ in $V$ so poizvedbe, ključi in vrednosti, $W_{Qi}$, $W_{Ki}$, $W_{Vi}$ in $W_O$ so uteži, ki se naučijo, in $\text{Attention}$ je funkcija samo-pozornosti.
\item Klasifikacijska glava: Na koncu se uporabi klasifikacijska glava (ponavadi ena polno povezana plast), da se izračuna končna napoved za dano nalogo (npr. klasifikacija slik). To se lahko zapiše kot:
\begin{equation}
\begin{align*}
y = \text{softmax}(W_2\text{ReLU}(W_1e))
\end{align*}
\end{equation}
kjer sta $W_1$ in $W_2$ uteži polno povezanih plasti, $e$ je vložek, ki izhaja iz transformerjevih blokov, in $\text{ReLU}$ in $\text{softmax}$ sta aktivacijski funkciji.
\end{itemize}
\section{Piramidni vision transformer (PVT)} \section{Piramidni vision transformer (PVT)}
ddd Piramidni Vision Transformer (PVT) \cite{wang2021pyramid} je bil razvit z namenom vključitve piramidne strukture v okvir Transformerja, kar omogoča generiranje večrazsežnih značilnostnih map za naloge goste napovedi, kot so zaznavanje objektov in semantična segmentacija.
Arhitektura PVT je razdeljena na štiri stopnje.
Vsaka od teh stopenj je sestavljena iz plasti za vdelavo obližev, imenovane "patch embedding", in iz več plasti Transformer kodirnika.
Značilnost te arhitekture je, da izstopna ločljivost štirih stopenj postopoma zmanjšuje, kar sledi piramidni strukturi.
Na najvišji stopnji je ločljivost značilnostne mape največja, medtem ko se na najnižji stopnji zmanjša.
Za boljše razumevanje, poglejmo podrobneje prvo stopnjo: Vhodna slika velikosti $ H \times W \times 3 $ je razdeljena na obliže velikosti $4 \times 4 \times 3$.
To pomeni, da je število obližev enako $ HW/4^2 $. Vsak obliž je nato sploščen in prenesen v linearno projekcijo, kar rezultira v vdelanih obližih velikosti
$ HW / 4^2 \times C1 $. Ti vdelani obliži, skupaj z dodano vdelavo položaja, prehajajo skozi Transformer kodirnik z $L1$ plastmi.
Izhod iz tega kodirnika je nato preoblikovan v značilnostno mapo $ F1 $ velikosti $ H/4 \times W/4 \times C1 $.
Matematično to lahko izrazimo kot:
\begin{equation}
F1 = \frac{H}{4} \times \frac{W}{4} \times C1
\end{equation}
Naslednje stopnje PVT sledijo podobnemu pristopu, vendar z različnimi ločljivostmi in dimenzijami. Na primer, značilnostne mape $F2, F3 \text{ in } F4$
so pridobljene z različnimi koraki, ki so 8, 16 in 32 slikovnih pik glede na vhodno sliko.
Ena izmed ključnih inovacij v PVT je uporaba pozornosti za zmanjšanje prostorskega obsega (SRA) namesto tradicionalne večglave pozornostne plasti (MHA). Ta pristop omogoča PVT, da učinkovito obdela značilnostne mape visoke ločljivosti.
V primerjavi z Vision Transformer (ViT), PVT prinaša večjo prilagodljivost, saj lahko generira značilnostne mape različnih meril/kanalov v različnih fazah. Poleg tega je bolj vsestranski, saj se lahko enostavno vključi in uporabi v večini modelov za spodnje naloge. Prav tako je bolj prijazen do računalništva in spomina, saj lahko obdela značilnostne mape višje ločljivosti ali daljše sekvence.
\section{Piramidni vision transformer z uporabo lokalnih značilnosti (PCPVT)} \section{Piramidni vision transformer z uporabo lokalnih značilnosti (PCPVT)}
eee Twins-PCPVT \cite{chu2021twins} je zasnovan na osnovi PVT in CPVT \cite{chu2021conditional}. Glavna razlika med Twins-PCPVT in PVT je v načinu, kako se uporabljajo pozicijski kodiranji.
V PVT so uporabljena absolutna pozicijska kodiranja, medtem ko Twins-PCPVT uporablja pogojna pozicijska kodiranja (CPE), ki so bila predlagana v CPVT.
PVT je uvedel piramidni večstopenjski dizajn, da bi bolje obravnaval naloge goste napovedi, kot so zaznavanje objektov in semantična segmentacija.
Vendar je bilo presenetljivo ugotovljeno, da je manjša učinkovitost PVT-ja predvsem posledica uporabe absolutnih pozicijskih kodiranj.
Absolutna pozicijska kodiranja se soočajo s težavami pri obdelavi vhodov različnih velikosti, kar je pogosto v nalogah goste napovedi.
V Twins-PCPVT so absolutna pozicijska kodiranja nadomeščena s pogojnimi pozicijskimi kodiranji (CPE), ki so pogojena na vhodih in se lahko naravno izognejo zgoraj omenjenim težavam.
Generator pozicijskega kodiranja (PEG), ki generira CPE, je postavljen za prvim kodirnim blokom vsake stopnje.
Uporablja najpreprostejšo obliko PEG, tj. 2D globinsko konvolucijo brez normalizacije serije.
\begin{equation}
CPE = f(PEG(E_1, E_2, ..., E_n))
\end{equation}
Kjer je CPE pogojno pozicijsko kodiranje, $ f $ je funkcija, ki generira kodiranje na podlagi vhodnih značilnosti, in $E_i$ so značilnosti iz različnih stopenj kodirnika.
Twins-PCPVT združuje prednosti tako PVT kot CPVT, kar ga naredi enostavnega za učinkovito implementacijo.
Eksperimentalni rezultati so pokazali, da ta preprosta zasnova lahko doseže zmogljivost nedavno predlaganega Swin transformerja \cite{liu2021swin}.
\chapter{Podatkovni set} \chapter{Podatkovni set}
\label{ch2} \label{ch2}

View File

@ -48,6 +48,34 @@
year={2021} year={2021}
} }
@article{chu2021conditional,
title={Conditional positional encodings for vision transformers},
author={Chu, Xiangxiang and Tian, Zhi and Zhang, Bo and Wang, Xinlong and Wei, Xiaolin and Xia, Huaxia and Shen, Chunhua},
journal={arXiv preprint arXiv:2102.10882},
year={2021}
}
@article{vit,
title={An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale},
author={Dosovitskiy, Alexey and Beyer, Lucas and Kolesnikov, Alexander and Weissenborn, Dirk and Zhai, Xiaohua and Unterthiner, Thomas and Dehghani, Mostafa and Minderer, Matthias and Heigold, Georg and Gelly, Sylvain and Uszkoreit, Jakob and Houlsby, Neil},
journal={arXiv preprint arXiv:2010.11929},
year={2020}
}
@article{wang2021pyramid,
title={Pyramid Vision Transformer: A Versatile Backbone for Dense Prediction without Convolutions},
author={Wang, Wenhai and Xie, Enze and Li, Xiang and Fan, Deng-Ping and Song, Kaitao and Liang, Ding and Lu, Tong and Luo, Ping and Shao, Ling},
journal={arXiv preprint arXiv:2102.12122},
year={2021}
}
@article{targ2016resnet,
title={Resnet in resnet: Generalizing residual architectures},
author={Targ, Sasha and Almeida, Diogo and Lyman, Kevin},
journal={arXiv preprint arXiv:1603.08029},
year={2016}
}
/tw
% slike % slike
@misc{analyticsvidhya2022rnn, @misc{analyticsvidhya2022rnn,
author = {Analytics Vidhya}, author = {Analytics Vidhya},