Tähelepanu pole päris kõik, mida vajate

Töötades MacGraphiga, mis on närvivõrk, mis vastab küsimustele teadmiste graafikute abil, sattusin probleemi: Kuidas teada saada, kas midagi pole loendis?

Selles artiklis näitame teile oma lahendust, fookussignaali ja näeme, kuidas see töötab usaldusväärselt paljude erinevate andmekogumite ja arhitektuuride korral.

Taust

Traditsioonilises programmeerimises on lihtne öelda, kas midagi pole loendis: juhtige üksuste kohal for a loop ja kui jõuate lõppu ilma seda leidmata, siis pole seda olemas. Kuid närvivõrgud pole sugugi nii lihtsad.

Neuraalvõrgud koosnevad diferentseeritavatest funktsioonidest, nii et neid saab treenida gradiendi laskumisel. Võrdõiguslikkuse operaatorid silmuste ja tingimustel selle ülesande lahendamiseks kasutatava tavapärase programmeerimise standardsed tükid ei tööta närvivõrkudes nii hästi:

  • Võrdõiguslikkuse operaator on põhimõtteliselt astmeline funktsioon, millel on peaaegu kõikjal nullgradient (ja seetõttu rikub gradiendi laskumise tagasi levimine)
  • Kui tingimused kasutavad harukontoride vahetamiseks tavaliselt tõeväärtussignaali, mis on jällegi sageli probleemse sammu funktsiooni väljund
  • Kuigi ahelad võivad GPU-de osas olla ebaefektiivsed ja mõnikord isegi mitte kasulikud, kuna sageli nõuavad närvivõrgu raamatukogud, et kõigil andmetel oleksid samad mõõtmed (nt TensorFlow täidab staatiliselt määratletud tensograafil).

Populaarne närvivõrgustiku tehnika tööks üksuste loenditega (nt lausete tõlkimisel, käsitledes neid sõnade loenditena) on „tähelepanu“ rakendamine. See on funktsioon, kus võrgus otsitavat päringut võrreldakse iga loendi üksusega ja väljastatakse päringuga sarnaste üksuste kaalutud summa:

Ülaltoodud näites

  1. Päringu koostamisel kasutatakse punktide loendis iga üksuse punkti, et arvutada hinne. Kõigi üksuste puhul tehakse seda paralleelselt
  2. Seejärel antakse hinded läbi softmaxi, et muuta need loendiks, mille väärtus on 1,0. Hindeid saab seejärel kasutada tõenäosusjaotisena.
  3. Lõpuks arvutatakse üksuste kaalutud summa, iga üksus kaalutakse skooriga

Tähelepanu on olnud väga edukas ja see on aluseks praegustele oma klassi parimatele tõlkemudelitele. Mehhanism on eriti hästi töötanud, kuna:

  • Selle rakendamine on kiire ja lihtne
  • Võrreldes korduva närvivõrguga (nt LSTM) on see palju paremini võimeline viitama sisestusjada mineviku väärtustele. LSTM peab õppima säilitama mineviku väärtusi järjestikku ühes sisemises olekus mitme RNN iteratsiooni ajal, samal ajal kui tähelepanu võib meelde tuletada mineviku jada väärtused mis tahes punktis ühel edasisel käigul.
  • Paljusid ülesandeid saab lahendada loendielementide ümberkorraldamise ja kombineerimise teel, et moodustada uus nimekiri (nt tähelepanu mudelid on olnud oluliseks komponendiks paljudes praegustes oma klassi parima tõlke, küsimuste vastamise ja põhjendamise mudelis)

Meie probleem

Hoolimata tähelepanu mitmekülgsusest ja edust, on sellel puudust, mis vaevab meie tööd graafikuküsimustele vastamisel: tähelepanu ei anna meile teada, kas mõni toode on loendis.

See juhtus kõigepealt siis, kui üritasime vastata küsimustele nagu “Kas on olemas jaam nimega London Bridge?” Ja “Kas Trafalgari väljaku jaam külgneb Waterloo jaamaga?”. Meie graafiku sõlmede ja servade tabelites on kogu see teave tähelepanu saamiseks, kuid tähelepanu ise ei suutnud üksuse olemasolu edukalt kindlaks teha.

See juhtub seetõttu, et tähelepanu tagastab loendi kaalutud summa. Kui päring vastab (nt hinded on kõrged) ühe loendi üksusega, on väljund peaaegu täpselt see väärtus. Kui päring ei vastanud ühelegi üksusele, tagastatakse kõigi loendis olevate üksuste summa. Tähelepanu tulemuste põhjal ei saa ülejäänud võrk neid kahte olukorda hõlpsalt eristada.

Meie lahendus

Meie pakutud lihtne lahendus on toorainepäringu tulemuste skalaarse koondnäitaja väljastamine (nt enne softmaxi kasutamist). See signaal on madal, kui ükski üksus pole päringuga sarnane, ja kõrge, kui palju üksusi on.

Praktikas on see eksistentsiküsimuste lahendamisel olnud väga tõhus (tõepoolest ainuke jõuline lahendus paljudest, mida oleme katsetanud). Nüüdsest viidatakse sellele signaalile kui fookusele. Siin on näide tähelepanuvõrgust, mida me varem näitasime, millele oli lisatud fookussignaal:

Tähelepanu fookussignaaliga, kasutades summeerimist töötlemata tulemuste liitmiseks

Eksperimentaalne seadistus

Leides, et fookussignaal on MacGraphi jaoks mõne ülesande õnnestumiseks hädavajalik, testisime seda kontseptsiooni paljude andmekogumite ja mudelarhitektuuride abil.

Katse närvivõrk

Ehitasime võrgu, mis võtab vastu üksuste loendi ja soovitud üksuse („päringu”) ning väljastab, kas see üksus oli loendis. Võrk võtab sisendid, viib tähelepanu (valikuliselt koos meie fookussignaaliga), teisendab väljundid paari jääkkihi kaudu, seejärel väljastab binaarse jaotuse¹, kas objekt leiti.

Võrgukadu arvutatakse softmaxi rist-entroopia abil ja treenitakse Adam-i optimeerija abil. Igal võrguvariandil on ideaalne õppimismäär enne koolituse algust, kasutades õppimiskiiruse leidjat.

Oma katsetes varieerume võrku järgmiselt:

  • Fookusesignaali kaasamine / eemaldamine tähelepanu etapilt („Kasuta fookust” allpool)
  • Tähelepanu skoori funktsiooni muutmine
  • Fookussignaali liitmise funktsiooni muutmine
  • Esimese teisenduskihi aktiveerimisfunktsiooni muutmine (allpool “Väljundi aktiveerimine”)

Seejärel rakendame need võrguvariandid mõnele järgmisele jaotisele loetletud andmekogumitele.

Siin on kõik meie testitud võrguseadistused:

Leiti, et fookussignaal on võrgu jaoks hädavajalik, saavutades usaldusväärsuse> 99% täpsusega kogu andmekogumite ja võrgu konfiguratsioonide vahemikus.

Meie katsete kood on meie GitHubis avatud lähtekoodiga.

Andmekogumid

Iga andmestik on näidete kogum, iga näide sisaldab sisendfunktsioone Üksuste loend, Soovitud üksus ja alusetu väljund, Üksus on loendis. Üksus on ujukoma numbrite N-mõõtmeline vektor.

Iga andmestik on konstrueeritud nii, et 100% täpsus on võimalik.

Testisime kolmel erineval andmestikul, millest igaüks sisaldas erinevat allikat:

  • Ortogonaalsed ühe kuumavektorid pikkusega 12
  • Paljud kuumad vektorid (nt juhuslikud stringid pikkusega 1,0s ja 0,0s) pikkusega 12
  • Word2vec vektorid pikkusega 300

Igal andmestikul on tasakaalustatud vastusklassid (st võrdne arv tõese ja vale vastuseid)

Üks kuum ja palju kuum vektor loodi juhuslikult. Igal koolitusnäitel on loetelu kahest elemendist. Igas andmestikus on 5000 koolitust. Siin on üks koolitusnäide:

Treeningnäide ortogonaalses kuumakomplektis. (Visuaalse lihtsuse huvides on vektoriteks näidatud pikkus 3)

Word2veci andmestiku jaoks kasutasime Google Newsis koolitatud eel arvutatud Word2vec manuseid, mille saab alla laadida siit.

Andmekomplektis word2vec on üksuste loendeid pikkusega 77, millest igaüks tähistab 300-realise vikipeediaartikli juhuslikult valitud lauset. Iga soovitud üksus on juhuslikult valitud word2vec vektor artikli sõnadest.

Tulemused

Leiti, et fookussignaal on üksuse olemasolu usaldusväärseks määramiseks hädavajalik:

  • Ilma fookussignaalita ei saavutatud võrgusätteid> 56% täpsusega kõigi andmekogumite korral
  • Ortogonaalsete andmekogumivektorite korral ei saavutatud ühtegi võrku täpsusega> 80% ilma fookussignaalita
  • Võrgud, kus fookussignaal on saavutatud> 98% täpsusega kõigis andmekogumites ja konfiguratsioonides, fookuseta signaalita võrgud on saavutatud ainult> 98% 4-st 9-st konfiguratsioonist

Tuleb märkida, et fookussignaalita võrk saavutas mõnedes konfiguratsioonides ja andmestikes täpsuse> 98%.

Järeldus

Selles artiklis oleme tutvustanud tähelepanuvõrkude uut kontseptsiooni, nn fookussignaali. Oleme näidanud, et see on kindel mehhanism loendis olevate üksuste olemasolu tuvastamiseks, mis on oluline toiming masinate põhjendamisel ja küsimustele vastamisel. Fookussignaal tuvastas edukalt üksuse olemasolu kõigis testitud andmestikes ja võrgukonfiguratsioonides.

Loodame, et see töö aitab teisi meeskondi esemete olemasolu väljakutsetega toimetulemisel ja lisab selgust, millist arhitektuuri kasutada.

Octaviani uurimus

Octaviani missioon on arendada välja süsteemid, millel on inimtasandi mõtlemisvõime. Usume, et graafikuandmed ja sügav õppimine on selle võimaldamise peamised koostisosad. Kui soovite teada saada rohkem meie teadusuuringutest või anda oma panus, vaadake meie veebisaiti või võtke ühendust.

Tänusõnad

Sooviksin tänada David Macki esialgse idee eest ja selle artikli suure redigeerimise eest abistamise eest. Samuti tahaksin tänada Andrew Jeffersonit suure osa koodi kirjutamise ja mind selle koostamise eest juhendamise eest. Lõpuks tahaksin tänada Octavianust, kes andis mulle võimaluse selle projekti kallal töötada.

Joonealused märkused

  1. Väljundi teisenduskihid kopeeriti MacGraphist ja neid oli võimalik lihtsustada. Sigmoid (σ) kiht pole selles mudelis kindlasti vajalik, kuna see piirab sisendite vahemikku softmax ja takistab seetõttu mudeli treenimist nullkaotusele (ehkki see võib siiski saavutada 100% täpsuse, kuna väljund on argmax ' redigeeritakse ühe kuuma vektorina ja võrreldakse märgisega). Me ei usu, et see keerukus mõne tulemuse kehtetuks muudab, kuid tundsime end sunnitud seda välja kutsuma.