Huomio? Huomio!

Attention on ollut viime vuosina syväoppimisyhteisössä melko suosittu käsite ja hyödyllinen työkalu. Tässä postauksessa perehdymme siihen, miten huomio on keksitty, sekä erilaisiin huomiomekanismeihin ja -malleihin, kuten transformeriin ja SNAILiin.

Huomion taustalla on jossain määrin se, miten kiinnitämme visuaalista huomiota kuvan eri alueisiin tai korreloimme sanoja yhdessä lauseessa. Otetaan esimerkiksi kuvassa 1 oleva kuva Shiba Inusta.

Kuva 1. Shiba Inu miesten asussa. Alkuperäisen kuvan kunnianosoitus kuuluu Instagram @mensweardog.

Ihmisen visuaalisen tarkkaavaisuuden avulla voimme keskittyä tiettyyn alueeseen ”korkealla resoluutiolla” (esim. katsokaa keltaisessa laatikossa olevaa teräväkärkistä korvaa) samalla, kun hahmotamme ympäröivän kuvan ”matalalla resoluutiolla” (eli entä nyt luminen tausta ja asu?), ja sitten säädämme tarkennuspistettä tai teemme johtopäätökset sen mukaisesti. Kun otetaan huomioon pieni osa kuvasta, muun osan pikselit antavat vihjeitä siitä, mitä siellä pitäisi näyttää. Odotamme näkevämme teräväkärkisen korvan keltaisessa laatikossa, koska olemme nähneet koiran nenän, toisen teräväkärkisen korvan oikealla ja Shiban mysteeriset silmät (punaisissa laatikoissa olevat asiat). Alhaalla oleva villapaita ja huopa eivät kuitenkaan olisi yhtä hyödyllisiä kuin nuo koiran piirteet.”

Vaikka voimme selittää sanojen välisen suhteen yhdessä lauseessa tai läheisessä yhteydessä. Kun näemme ”syöminen”, odotamme kohtaavamme ruokasanan hyvin pian. Väritermi kuvaa ruokaa, mutta ei luultavasti niinkään suoraan ”syömisen” kanssa.

Kuva 2. Yksi sana ”huomioi” muut sanat samassa lauseessa eri tavalla.

Lyhyesti sanottuna tarkkaavaisuus syväoppimisessa voidaan laajasti tulkita tärkeyspainojen vektoriksi: ennustaaksemme tai päätelläksemme yhden elementin, kuten pikselin kuvassa tai sanan lauseessa, arvioimme tarkkaavaisuusvektorin avulla, kuinka vahvasti se korreloi (tai ”huomioi”, kuten olet saattanut lukea monista artikkeleista) muiden elementtien kanssa, ja otamme tarkkaavaisuusvektorilla painotettujen niiden arvojen summan kohteen approksimaatioksi.

Mitä vikaa Seq2Seq-mallissa on?

Seq2Seq-malli syntyi kielen mallintamisen alalla (Sutskever, et al. 2014). Laajasti ottaen sen tavoitteena on muuntaa syötesekvenssi (lähde) uudeksi sekvenssiksi (kohde), ja molemmat sekvenssit voivat olla mielivaltaisen pituisia. Esimerkkejä muunnostehtävistä ovat konekääntäminen useiden kielten välillä joko tekstinä tai äänenä, kysymys-vastaus-dialogin generointi tai jopa lauseiden jäsentäminen kielioppeiksi.

Seq2seq-mallissa on tavallisesti enkooderi-dekooderi-arkkitehtuuri, joka muodostuu seuraavista osista:

  • Enkooderi käsittelee syötesekvenssin ja pakkaa informaation kiinteän pituiseksi kontekstivektoriksi (tunnetaan myös nimellä lauseen upotusvektori (sentence embedding) tai ajatusmuotoon perustuvaksi (thought)-vektori). Tämän esityksen odotetaan olevan hyvä yhteenveto koko lähdesekvenssin merkityksestä.
  • Dekooderi alustetaan kontekstivektorilla muuntuneen ulostulon lähettämistä varten. Varhaisissa töissä käytettiin dekooderiverkon alkutilana vain enkooderiverkon viimeistä tilaa.

Kumpikin enkooderi ja dekooderi ovat rekurrenssia neuroverkkoja eli käyttävät LSTM- tai GRU-yksiköitä.

Kuva 3. KUVA 3. Enkooderiverkko. Enkooderi-dekooderimalli, joka kääntää lauseen ”hän syö vihreää omenaa” kiinaksi. Sekä kooderin että dekooderin visualisointi puretaan ajassa.

Kriittinen ja ilmeinen haitta tässä kiinteän pituisen kontekstivektorin mallissa on kyvyttömyys muistaa pitkiä lauseita. Usein se on unohtanut ensimmäisen osan, kun se on käsitellyt koko syötteen. Huomiomekanismi syntyi (Bahdanau et al., 2015) ratkaisemaan tätä ongelmaa.

Syntynyt kääntämistä varten

Huomiomekanismi syntyi auttamaan pitkien lähdelauseiden muistamista neuraalisessa konekääntämisessä (NMT). Sen sijaan, että koodaajan viimeisestä piilotetusta tilasta rakennettaisiin yksittäinen kontekstivektori, huomion keksimä salainen kastike on luoda oikopolkuja kontekstivektorin ja koko lähdesyötteen välille. Näiden oikotieyhteyksien painot ovat muokattavissa kullekin lähtöelementille.

Kun kontekstivektorilla on pääsy koko tulosekvenssiin, meidän ei tarvitse huolehtia unohtamisesta. Lähteen ja kohteen välinen kohdistus opitaan ja sitä kontrolloidaan kontekstivektorin avulla. Pohjimmiltaan kontekstivektori kuluttaa kolmea tietoa:

  • kooderin piilotetut tilat;
  • dekooderin piilotetut tilat;
  • lähteen ja kohteen välinen kohdistaminen.

Kuvio 4. Lähteen ja kohteen välinen kohdistaminen. Kooderi-dekooderimalli additiivisella huomiomekanismilla Bahdanau et al., 2015.

Määritelmä

\\\\\mathbf{y} &= \end{aligned}\]

(Lihavoidut muuttujat osoittavat, että ne ovat vektoreita; sama koskee kaikkea muuta tässä viestissä.)

Enkooderi on kaksisuuntainen RNN (tai muu valitsemasi rekurrenssiverkkoasetus), jossa on eteenpäin kätketty tila \(\overrightarrow{\boldsymbol{h}}_i\) ja taaksepäin kätketty tilat \(\overleftarrow{\boldsymbol{h}}_i\). Näiden kahden yksinkertainen ketjutus edustaa koodaustilaa. Motivaationa on sisällyttää sekä edeltävä että seuraava sana yhden sanan annotaatioon.

\\^\top, i=1,\dots,n\]\\\)\]

jossa sekä \(\mathbf{v}_a\) että \(\mathbf{W}_a\) ovat kohdistamismallissa opittavia painomatriiseja.

Kohdistusarvojen matriisi on mukava sivutuote, jolla voidaan eksplisiittisesti osoittaa lähde- ja kohdesanojen välinen korrelaatio.

Kuva 5. Kohdistusarvojen matriisi. Kohdistusmatriisi sanoista ”L’accord sur l’Espace économique européen a été signé en août 1992” (ranska) ja sen englanninkielinen käännös ”The agreement on the European Economic Area was signed in August 1992”. (Kuvalähde: Fig 3 in Bahdanau et al., 2015)

Katsokaa tästä Tensorflow-tiimin mukavasta tutoriaalista lisää toteutusohjeita.

A Family of Attention Mechanisms

Huomion avulla lähde- ja kohdesekvenssien välisiä riippuvuuksia ei enää rajoita välimatka! Ottaen huomioon huomion suuren parannuksen konekääntämisessä, se laajeni pian myös tietokonenäön alalle (Xu et al. 2015) ja ihmiset alkoivat tutkia erilaisia muita huomiomekanismien muotoja (Luong, et al., 2015; Britz et al., 2017; Vaswani, et al., 2017).

Yhteenveto

Alhaalla on yhteenvetotaulukko useista suosituista tarkkaavaisuusmekanismeista ja niitä vastaavista alignment score -funktioista:

Tässä on yhteenveto laajemmista tarkkaavaisuusmekanismien luokista:

Nimi Määritelmä Sitaatti
Self-Attention(&) Samaisen syötesekvenssin eri paikkojen vertailu. Teoriassa selfattention voi ottaa käyttöön mitä tahansa edellä mainittuja pisteytysfunktioita, mutta korvaa vain kohdesekvenssi samalla syötesekvenssillä. Cheng2016
Globaali/pehmeä Ohjautuu koko syötetilaavaruuteen. Xu2015
Lokaali/Kova Attending to the part of input state space; i.e. a patch of the input image. Xu2015; Luong2015

(&) Viitattu myös nimellä Intra-attention (intra-attention) artikkelissa Cheng et al, 2016 ja muutamissa muissa artikkeleissa.

Self-Attention

Self-attention, joka tunnetaan myös nimellä intra-attention, on tarkkaavaisuusmekanismi, joka yhdistää yksittäisen sekvenssin eri sijainnit saman sekvenssin representaation laskemiseksi. Sen on osoitettu olevan erittäin käyttökelpoinen koneellisessa lukemisessa, abstrahoivassa tiivistämisessä tai kuvakuvausten luomisessa.

Pitkän lyhytkestoisen muistin verkkojulkaisussa käytettiin itsehuomiota koneelliseen lukemiseen. Alla olevassa esimerkissä itsetarkkailumekanismin avulla voidaan oppia korrelaatio nykyisten sanojen ja lauseen edellisen osan välillä.

Kuva 6. Nykyinen sana on merkitty punaisella, ja sinisen varjostimen koko ilmaisee aktivaatiotason. (Kuvalähde: Cheng et al., 2016)

Pehmeä vs. kova tarkkaavaisuus

Show, attend and tell -artikkelissa tarkkaavaisuusmekanismia sovelletaan kuviin kuvatekstien tuottamiseksi. Kuva koodataan ensin CNN:llä piirteiden poimimiseksi. Sitten LSTM-dekooderi kuluttaa konvoluutio-ominaisuudet tuottaakseen kuvailevia sanoja yksi kerrallaan, jolloin painot opitaan huomion avulla. Huomiopainojen visualisointi osoittaa selvästi, mihin kuvan alueisiin malli kiinnittää huomiota, jotta se tuottaa tietyn sanan.

Kuva 7. ”Nainen heittää frisbeetä puistossa”. (Kuvan lähde: Fig. 6(b) in Xu et al. 2015)

Tässä artikkelissa ehdotettiin ensin erottelua ”pehmeän” vs. ”kovan” huomion välillä sen perusteella, onko huomiolla pääsy koko kuvaan vai vain laikkuun:

  • Pehmeä huomio: Kohdistamispainot opitaan ja sijoitetaan ”pehmeästi” kaikille lähdekuvan laikuille; periaatteessa samantyyppinen huomio kuin artikkelissa Bahdanau et al., 2015.
    • Pro: malli on sileä ja differentioituva.
    • Miinus: kallis, kun lähdesyöttö on suuri.
  • Hard Attention: valitsee vain yhden laastarin kuvasta, johon kiinnittää huomiota kerrallaan.
    • Pro: vähemmän laskentaa päättelyhetkellä.
    • Miinus: malli ei ole eroteltavissa ja vaatii koulutukseen monimutkaisempia tekniikoita, kuten varianssin vähentämistä tai vahvistusoppimista. (Luong, et al., 2015)

Globaali vs. paikallinen tarkkaavaisuus

Luong, et al., 2015 ehdottivat ”globaalia” ja ”paikallista” tarkkaavaisuutta. Globaali huomio on samanlainen kuin pehmeä huomio, kun taas paikallinen huomio on mielenkiintoinen sekoitus kovan ja pehmeän huomion välillä, parannus kovaan huomioon, jotta se olisi eriytettävissä: malli ennustaa ensin yhden kohdistetun sijainnin nykyiselle kohdesanalle, ja sen jälkeen käytetään lähdeposition ympärille keskitettyä ikkunaa kontekstivektorin laskemiseen.

Kuva 8. Globaali vs. paikallinen huomio (Kuvalähde: Fig 2 & 3 in Luong, et al., 2015)

Neural Turing Machines

Alan Turing ehdotti vuonna 1936 minimalistista laskentamallia. Se koostuu äärettömän pitkästä nauhasta ja päästä, joka on vuorovaikutuksessa nauhan kanssa. Nauhalla on lukemattomia soluja, joista jokainen on täytetty symbolilla: 0, 1 tai tyhjä (” ”). Toimintapää voi lukea symboleja, muokata symboleja ja liikkua nauhalla vasemmalle/oikealle. Teoriassa Turingin kone voi simuloida mitä tahansa tietokoneen algoritmia riippumatta siitä, kuinka monimutkainen tai kallis menettely on. Ääretön muisti antaa Turingin koneelle etulyöntiaseman olla matemaattisesti rajaton. Ääretön muisti ei kuitenkaan ole toteutettavissa todellisissa nykyaikaisissa tietokoneissa, ja silloin Turingin konetta tarkastellaan vain laskennan matemaattisena mallina.

Kuva 9. Miltä Turingin kone näyttää: nauha + pää, joka käsittelee nauhaa. (Kuvalähde: http://aturingmachine.com/)

Neuraalinen Turingin kone (Neural Turing Machine, NTM, Graves, Wayne & Danihelka, 2014) on malliarkkitehtuuri hermoverkon kytkemiseksi ulkoiseen muistitilaan. Muisti jäljittelee Turingin koneen nauhaa ja neuroverkko ohjaa operaatiopäitä lukemaan nauhalta tai kirjoittamaan nauhalle. NTM:n muisti on kuitenkin äärellinen, joten se näyttää luultavasti enemmänkin ”Neuraaliselta von Neumann-koneelta”.

NTM sisältää kaksi pääkomponenttia, ohjaavan neuroverkon ja muistipankin. Ohjain: vastaa operaatioiden suorittamisesta muistissa. Se voi olla minkä tahansa tyyppinen neuroverkko, feed-forward tai rekursiivinen. muisti: tallentaa käsitellyn tiedon. Se on \(N \ kertaa M\) kokoinen matriisi, joka sisältää N vektoririviä, joista jokaisella on \(M\) ulottuvuutta.

Yksessä päivitysiteraatiossa ohjain käsittelee syötteen ja on vuorovaikutuksessa muistipankin kanssa tuotoksen tuottamiseksi. Vuorovaikutus hoidetaan joukolla rinnakkaisia luku- ja kirjoituspäitä. Sekä luku- että kirjoitusoperaatiot ”hämärtyvät” hoitamalla pehmeästi kaikki muistiosoitteet.

Kuva 10. Neuraalisen Turing-koneen arkkitehtuuri.

Lukeminen ja kirjoittaminen

\

jossa \(w_t(i)\) on \(i\)-luvun \(\mathbf{w}_t\) \(i)\) \(i\)-luvun \(i\)-luvun \(i\)-luvun \(t(i)\) rivivälivektori muistissa.

\ &\scriptstyle{\text{; erase}}\\\\\\mathbf{M}_t(i) &= \tilde{\mathbf{M}}_t(i) + w_t(i) &\scriptstyle{\text{; add}}\\end{aligned}\]

Huomiointimekanismit

Neuraalisessa Turing-koneessa se, miten huomiojakauma \(\mathbf{w}_t\) luodaan, riippuu osoitinmekanismeista: NTM käyttää sekoitusta sisältöpohjaisesta ja sijaintipohjaisesta adressoinnista.

Sisältöpohjainen adressointi

Sisältöpohjaisessa adressoinnissa luodaan huomiovektorit sen perusteella, kuinka samankaltainen on ohjaimen syötteestä ja muistiriveistä poimima avainvektori \(\mathbf{k}_t\). Sisältöön perustuvat huomioarvot lasketaan kosinin samankaltaisuutena ja normalisoidaan sitten softmaxilla. Lisäksi NTM lisää vahvuuskertoimen \(\beta_t\) vahvistamaan tai vaimentamaan jakauman painopistettä.

\)= \frac{\exp(\beta_t \frac{\mathbf{k}_t \cdot \mathbf{M}_t(i)}{\|\mathbf{k}_t\| \cdot \|\mathbf{M}_t(i)\||})}{\sum_{j=1}^N \exp(\beta_t \frac{\mathbf{k}_t \cdot \mathbf{M}_t(j)}{\|\\mathbf{k}_t\| \cdot \|\\mathbf{M}_t(j)\||})}\]

Interpolointi

Tällöin käytetään interpolointiportin skalaaria \(g_t\) sulauttamaan vastikään luotu sisältö-huomiovektori viimeisen aika-askeleen huomiopainoihin:

\

Sijaintiin perustuva adressointi

Sijaintiin perustuva adressointi summaa huomiovektorin eri paikoissa olevat arvot, jotka on painotettu painotusjakaumalla sallittujen kokonaislukusiirtymien yli. Se vastaa 1-d-konvoluutiota ytimen \(\mathbf{s}_t(.)\) kanssa, joka on sijainnin siirtymän funktio. On olemassa useita tapoja määritellä tämä jakauma. Katso inspiraatiota kuvasta 11.

Kuva 11.

. Kaksi tapaa esittää siirtymäpainojakauma \(\mathbf{s}_t\).

Viimeiseksi huomiojakaumaa tehostetaan terävöittävällä skalaarilla \(\gamma_t \geq 1\).

\

Kuvassa 12 on havainnollistettu huomiovektorin \(\mathbf{w}_t\) koko prosessia, joka tuottaa huomiovektorin \(\mathbf{w}_t\) aika-askelella t. Kaikki säätimen tuottamat parametrit ovat ainutlaatuisia jokaiselle päähän. Jos luku- ja kirjoituspäitä on useita rinnakkain, säädin tuottaa useita sarjoja.

Kuva 12. Neuraalisen Turing-koneen osoitinmekanismien vuokaavio. (Kuvalähde: Graves, Wayne & Danihelka, 2014)

Pointer Network

Ongelmissa, kuten lajittelussa tai travelling salesmanissa, sekä tulo että lähtö ovat peräkkäisiä tietoja. Valitettavasti niitä ei voida helposti ratkaista klassisilla seq-2-seq- tai NMT-malleilla, koska lähtöelementtien diskreettejä luokkia ei määritetä etukäteen, vaan ne riippuvat muuttuvasta syötteen koosta. Pointer Net (Ptr-Net; Vinyals, et al. 2015) on ehdotettu tämäntyyppisten ongelmien ratkaisemiseksi: Kun lähtöelementit vastaavat asemia syötesarjassa. Sen sijaan, että käytettäisiin tarkkaavaisuutta enkooderin piilotettujen yksiköiden yhdistämiseen kontekstivektoriksi (ks. kuva 8), Pointer Net soveltaa tarkkaavaisuutta tuloelementtien yli valitakseen niistä yhden ulostuloksi kullakin dekooderiaskeleella.

Kuva 13. Pointer Net. Pointer Network -mallin arkkitehtuuri. (Kuvalähde: Vinyals, et al. 2015)

\))\end{aligned}\]

Huomiointimekanismi on yksinkertaistettu, sillä Ptr-Net ei sekoita kooderin tiloja ulostuloon huomiopainoilla. Näin ulostulo reagoi vain asentoihin, mutta ei syötteen sisältöön.

Transformer

”Attention is All you Need” (Vaswani, et al., 2017) on epäilemättä yksi vuoden 2017 vaikuttavimmista ja mielenkiintoisimmista papereista. Siinä esiteltiin paljon parannuksia pehmeään huomiokykyyn ja mahdollistetaan seq2seq-mallinnus ilman rekursiivisia verkkoyksiköitä. Ehdotettu ”muuntaja”-malli rakentuu kokonaan itsehuomion mekanismeihin käyttämättä sekvenssikohtaista rekursiivista arkkitehtuuria.

Salainen resepti kulkee sen malliarkkitehtuurissa.

Avain, arvo ja kysely

Muuntaja ottaa käyttöön skaalatun piste-produktiohuomautuksen: ulostulo on arvojen painotettu summa, jossa kullekin arvolle annettu paino määräytyy kyselyn piste-produktiosta kaikkien avainten kanssa:

\

Multi-Head Self-Attention

Kuva 14. Monipäinen skaalattu pisteprodukti huomiomekanismi. (Kuvalähde: Fig 2 in Vaswani, et al., 2017)

Sen sijaan, että huomio laskettaisiin vain kerran, monipäinen mekanismi käy skaalatun piste-produktiohuomion läpi useita kertoja rinnakkain. Riippumattomat huomiotulokset yksinkertaisesti ketjutetaan ja muunnetaan lineaarisesti odotettuihin ulottuvuuksiin. Oletan motivaation johtuvan siitä, että ensemblaaminen auttaa aina 😉 Paperin mukaan ”monipäähuomio mahdollistaa mallin huomioida yhdessä tietoa eri representaation osa-alueilta eri paikoissa. Yhden tarkkaavaisuuspään kanssa keskiarvoistaminen estää tämän.”

\\\mathbf{W}^O \\\\text{jossa pää}_i &= \text{Attention}(\mathbf{Q}\mathbf{W}^Q_i, \mathbf{K}\mathbf{W}^K_i, \mathbf{V}\mathbf{W}^V_i)\end{aligned}\]

jossa \(\mathbf{W}^Q_i\), \(\mathbf{W}^K_i\), \(\mathbf{W}^V_i\) ja \(\mathbf{W}^O\) ovat opittavia parametrimatriiseja.

Enkooderi

Kuva 15. Muuntajan kooderi. (Kuvalähde: Vaswani, et al., 2017)

Enkooderi tuottaa tarkkaavaisuuteen perustuvan representaation, jolla on kyky paikantaa tietty tieto mahdollisesti äärettömän laajasta kontekstista.

  • Pino N=6 identtistä kerrosta.
  • Kullakin kerroksella on monipäinen itsetarkkailukerros ja yksinkertainen sijaintiviisaasti täysin kytketty feed-forward-verkko.
  • Kullakin alakerroksella otetaan käyttöön jäännöskytkentä ja kerrosten normalisointi.Kaikki alakerrokset tuottavat dataa, jolla on sama ulottuvuus \(d_\text{model} = 512\).

Dekooderi

Kuvio 16. Kertoja. Muuntajan dekooderi. (Kuvalähde: Vaswani, et al., 2017)

Dekooderi pystyy hakemaan koodatusta esityksestä.

  • Pino, jossa on N = 6 identtistä kerrosta
  • Jokaiseen kerrokseen kuuluu kaksi monipäähuomion mekanismien alikerrosta ja yksi täysin kytketyn feed-forward-verkon alikerros.
  • Kaikki alakerrokset omaksuvat koodaajan tapaan jäännösyhteyden ja kerrosten normalisoinnin.
  • Ensimmäistä monipäähuomiomekanismin alakerrosta muokataan siten, että estetään positioiden huomioiminen myöhempiin positioihin, koska emme halua katsoa kohdesekvenssin tulevaisuuteen ennustaessamme nykyistä positiota.

Täydellinen arkkitehtuuri

Viimeiseksi tässä on täydellinen näkymä muuntajan arkkitehtuurista:

  • Kumpikin lähde- ja kohdesekvenssi kulkevat ensin upotuskerrosten läpi tuottaakseen dataa, jolla on sama ulottuvuus \(d_\text{model} =512\).
  • Sijainti-informaation säilyttämiseksi sovelletaan siniaaltopohjaista sijaintikoodausta, joka summataan upotusulostulon kanssa.
  • Lopulliseen dekooderin ulostuloon lisätään softmax- ja lineaarikerros.

Kuvio 17. Sijoitusulostulo. Muuntajan täydellinen malliarkkitehtuuri. (Kuvalähde: Fig 1 & 2 in Vaswani, et al., 2017.)

Kokeile toteuttaa muuntajan malli on mielenkiintoinen kokemus, tässä omani: lilianweng/transformer-tensorflow. Lue koodin kommentit, jos kiinnostaa.

SNAIL

Muuntajalla ei ole rekursiivista tai konvoluutiorakennetta, vaikka upotusvektoriin on lisätty sijaintikoodaus, sekventiaalinen järjestys on vain heikosti sisällytetty. Asemariippuvuudelle herkissä ongelmissa, kuten vahvistusoppimisessa, tämä voi olla suuri ongelma.

Simppeli neuraalinen tarkkaavaisuusmetaoppija (Simple Neural Attention Meta-Learner, SNAIL) (Mishra et al., 2017) kehitettiin osittain ratkaisemaan sijaintikoodaukseen liittyvää ongelmaa muuntajamallissa yhdistämällä muuntajan itsetarkkailumekanismi ajallisiin konvoluutioihin. Sen on osoitettu olevan hyvä sekä valvotun oppimisen että vahvistusoppimistehtävissä.

Kuva 18. SNAIL-mallin arkkitehtuuri (Kuvalähde: Mishra et al., 2017)

SNAIL syntyi meta-oppimisen parissa, joka on toinen iso aihe, joka ansaitsee oman postauksensa. Mutta yksinkertaisesti sanottuna meta-oppimisen mallin odotetaan olevan yleistettävissä uusiin, näkymättömiin tehtäviin samanlaisessa jakaumassa. Lue tämä kiva johdanto, jos kiinnostaa.

Self-Attention GAN

Self-Attention GAN (SAGAN; Zhang et al., 2018) lisää GAN:iin itsetarkkailukerroksia, jotta sekä generaattori että diskriminaattori pystyvät paremmin mallintamaan spatiaalisten alueiden välisiä suhteita.

Klassinen DCGAN (Deep Convolutional GAN) edustaa sekä diskriminaattoria että generaattoria monikerroksisina konvoluutioverkkoina. Suodatinkoko rajoittaa kuitenkin verkon esityskapasiteettia, sillä yhden pikselin ominaisuus rajoittuu pieneen paikalliseen alueeseen. Jotta kaukana toisistaan olevia alueita voidaan yhdistää, piirteitä on laimennettava konvoluutio-operaatiokerrosten kautta, eikä riippuvuuksien säilymistä ole taattu.

Koska (pehmeä) itsehavainnointi näkökontekstissa on suunniteltu oppimaan eksplisiittisesti yhden pikselin ja kaikkien muiden paikkojen, myös kaukana toisistaan sijaitsevien alueiden, väliset suhteet, sillä voidaan helposti vangita globaalit riippuvuudet. Näin ollen itsetarkkailulla varustetun GANin odotetaan käsittelevän yksityiskohtia paremmin, hurraa!

Kuva 19. Konvoluutio-operaatiolla ja itsehuomautuksella on pääsy hyvin erikokoisille alueille.

SAGAN ottaa käyttöön ei-paikallisen neuroverkon huomiolaskennan soveltamiseksi. Konvoluutiokuvan piirrekartat \(\mathbf{x}\) haarautuvat kolmeen kopioon, jotka vastaavat muuntajan käsitteitä avain, arvo ja kysely:

  • Key: \(f(\mathbf{x}) = \mathbf{W}_f \mathbf{x}\)
  • Kysely: \(g(\mathbf{x}) = \mathbf{W}_g \mathbf{x}\)
  • Arv: \(h(\mathbf{x}) = \mathbf{W}_h \mathbf{x}\) = \mathbf{W}_h \mathbf{x}\)

Sitten sovellamme pisteproduktiotarkkaavaisuutta tulostaaksemme itsetarkkaavaisuusominaisuuskarttoja:

\\

Kuva 20. Itsehuomion mekanismi SAGANissa. (Kuvalähde: Kuva 2 teoksessa Zhang et al., 2018)

Lisäksi tarkkaavaisuuskerroksen ulostulo kerrotaan skaalausparametrilla ja lisätään takaisin alkuperäiseen tulo-ominaisuuskarttaan:

\\

Kun skaalausparametria \(\gamma\) kasvatetaan vähitellen 0:sta harjoittelun aikana, verkko konfiguroidaan siten, että se luottaa ensin paikallisten alueiden vihjeisiin ja oppii sitten vähitellen antamaan suuremman painon kauempana oleville alueille.

Kuvio 21. Tarkkaavaisuuskerroksen ulostulo. SAGANin tuottamat 128×128 esimerkkikuvat eri luokille. (Kuvalähde: Partial Fig. 6 in Zhang et al., 2018)

Cited as:

Jos huomaat virheitä ja puutteita tässä postauksessa, älä epäröi ottaa yhteyttä minuun osoitteeseen ja korjaan ne mielelläni heti!

Tapaamisiin seuraavassa postauksessa 😀

”Attention and Memory in Deep Learning and NLP”. – Jan 3, 2016 by Denny Britz

”Neural Machine Translation (seq2seq) Tutorial”

Dzmitry Bahdanau, Kyunghyun Cho ja Yoshua Bengio. ”Neuraalinen konekääntäminen yhteisesti oppimalla kohdistamaan ja kääntämään”. ICLR 2015.

Kelvin Xu, Jimmy Ba, Ryan Kiros, Kyunghyun Cho, Aaron Courville, Ruslan Salakhudinov, Rich Zemel ja Yoshua Bengio. ”Näytä, osallistu ja kerro: Neuraalinen kuvatekstien tuottaminen visuaalisen huomion avulla.” ICML, 2015.

Ilya Sutskever, Oriol Vinyals, and Quoc V. Le. ”Sequence to sequence learning with neural networks”. NIPS 2014.

Thang Luong, Hieu Pham, Christopher D. Manning. ”Effective Approaches to Attention-based Neural Machine Translation”. EMNLP 2015.

Denny Britz, Anna Goldie, Thang Luong ja Quoc Le. ”Massive exploration of neural machine translation architectures”. ACL 2017.

Ashish Vaswani, et al. ”Attention is all you need.” NIPS 2017.

Jianpeng Cheng, Li Dong ja Mirella Lapata. ”Pitkän lyhytkestoisen muistin verkostot koneellista lukemista varten.” EMNLP 2016.

Xiaolong Wang, et al. ”Non-local Neural Networks.” CVPR 2018

Nikhil Mishra, Mostafa Rohaninejad, Xi Chen ja Pieter Abbeel. ”A simple neural attentive meta-learner”. ICLR 2018.

”WaveNet: A Generative Model for Raw Audio” – Sep 8, 2016 by DeepMind.

Oriol Vinyals, Meire Fortunato, and Navdeep Jaitly. ”Osoitinverkot”. NIPS 2015.

Alex Graves, Greg Wayne ja Ivo Danihelka. ”Neural turing machines.” arXiv preprint arXiv:1410.5401 (2014).