Kapsuliniai neuroniniai tinklai - įdėtųjų neuroninių sluoksnių rinkinys



Kapsuliniai tinklai - šiame tinklaraštyje kalbama apie konvoliucinių neuroninių tinklų apribojimus ir apie tai, kaip kapsuliniai neuroniniai tinklai išsprendžia tuos apribojimus.

Kapsulių tinklai:

Kas yra kapsulės tinklai? Iš esmės tai yra įdėtų nervinių sluoksnių rinkinio tinklas.

Aš rekomenduočiau jums peržiūrėti ir toliau pateiktus tinklaraščius:





Aš manau, kad jūs, vaikinai, žinote konvoliucinius neuroninius tinklus (CNN). Pateiksiu jums nedidelę įžangą tuo pačiu, kad galėčiau aptarti CNN apribojimus.

Toliau pateiktą vaizdo įrašą galite peržiūrėti ir „Convolutional Neural Network“.



Konvoliuciniai neuroniniai tinklai (CNN)

Konvoliuciniai neuroniniai tinklai iš esmės yra daugybė dirbtinių neuronų sluoksnių, kurie naudojami kompiuteriniam matymui. Toliau paminėjau tuos sluoksnius:

Konvoliucinis neuroninis tinklas - kapsulinis neuroninis tinklas - „Edureka“

Konvoliucinis sluoksnis: Kai vaizdų klasifikavimui naudojame „Feedforward“ neuroninius tinklus (daugiasluoksnis „Perceptron“), tai kelia daug iššūkių. Labiausiai varginantis iššūkis yra tai, kad jame pateikiama daugybė parametrų, apsvarstykite vaizdo įrašo pamoką CNN.



Įveikti šį iššūkį Konvoliucijos sluoksnis buvo pristatytas. daroma prielaida, kad erdviniai arčiau vienas kito esantys pikseliai „bendradarbiaus“ kurdami tam tikrą dominantį bruožą daug labiau nei priešinguose vaizdo kampuose. Be to, jei nustatoma, kad tam tikra (mažesnė) ypatybė turi didelę reikšmę apibrėžiant atvaizdo etiketę, bus vienodai svarbu, jei ši funkcija buvo rasta bet kurioje vaizdo vietoje, nepaisant vietos.

„ReLU“ sluoksnis: Pataisyta linijinio vieneto (ReLU) transformavimo funkcija įjungia mazgą tik tuo atveju, jei įvestis yra didesnė už tam tikrą kiekį, o įvestis yra žemesnė už nulį, išvestis yra lygi nuliui, tačiau kai įvestis pakyla virš tam tikros ribos, ji turi linijinį ryšį su priklausomas kintamasis.

  • Šiame sluoksnyje pašaliname visas neigiamas reikšmes iš filtruotų vaizdų ir pakeičiame nuliais
  • Tai daroma siekiant išvengti verčių susumuojimo iki nulio

Sujungimo sluoksnis: Tai naudojama norint atlikti atranką, kuri sunaudoja mažus ir (paprastai) neatsiejamus vaizdo gabalėlius ir sujungia juos į vieną vertę. Yra kelios galimos agregavimo schemos - populiariausia būtybė „Max-Pooling“ , kur imama maksimali taškų vertė kiekvienoje dalyje. Tai padaro tinklą nekintančiu mažoms transformacijoms, iškraipymams ir vertimams įvesties vaizde (nedidelis įvesties iškraipymas nepakeis „Pooling“ išvesties, nes mes imamės didžiausios / vidutinės vertės vietiniame rajone).

Visiškai sujungtas sluoksnis: Šis sluoksnis apskaičiuos klasės balus, kur kiekvienas skaičius atitinka klasės balą. Kaip ir įprastuose neuroniniuose tinkluose, ir kaip rodo pavadinimas, kiekvienas šio sluoksnio neuronas bus sujungtas su visais ankstesnio tūrio neuronais. Trumpai tariant, jis atlieka galutinę klasifikaciją.

Tokiu būdu „ConvNets“ paverčia pradinį vaizdą sluoksniu po sluoksnio iš pradinių taškų verčių į galutinius klasės balus.

Tai buvo labai trumpa įvadas į konvoliucinius neuroninius tinklus. Aš vis tiek rekomenduočiau jums pažiūrėti CNN vaizdo įrašą, kurį įdėjau į šį įrašą.

Šiame „Capsule Networks“ tinklaraštyje dabar aptarsiu keletą konvolucinių neuroninių tinklų apribojimų

Konvoliucinių neuroninių tinklų apribojimai:

Na, leiskite man tai paaiškinti analogija.

Tarkime, yra žmogus, kurio akys gali aptikti įvairių vaizdų ypatybes. Pažvelkime į žmogaus veidą kaip pavyzdį. Taigi, šis nelaimingas vaikinas gali nustatyti įvairias savybes, tokias kaip, akys, nosis ir kt., Tačiau negali nustatyti erdvinių požymių (perspektyvos, dydžio, orientacijos) santykių. Pavyzdžiui, toks paveikslėlis gali apgauti tą vaikiną, priskiriant jį prie gero žmogaus veido eskizo.

Tai yra ir konvoliucinių neuroninių tinklų problema. CNN gerai aptinka ypatybes, tačiau neteisingai suaktyvins neuroną veido aptikimui. Taip yra todėl, kad ji yra ne tokia efektyvi tiriant erdvinius santykius tarp požymių.

Paprastas CNN modelis gali teisingai išgauti nosies, akių ir burnos ypatybes, tačiau neteisingai suaktyvins neuroną veidui aptikti. Nesuvokiant netinkamos erdvinės orientacijos ir dydžio atitikties, veido aptikimo aktyvinimas bus per didelis.

Na, šis apribojimas yra dėl „Max Pooling“ sluoksnio.

CNN maksimalus sutelkimas valdo vertimo dispersiją. Net funkcija yra šiek tiek perkelta, jei ji vis dar yra telkinio lange, ją vis tiek galima aptikti. Nepaisant to, šis požiūris išlaiko tik maksimalią savybę (labiausiai dominuojančią) ir išmeta kitus.

Taigi, aukščiau parodyta veido nuotrauka bus klasifikuojama kaip įprastas veidas. „Pooling“ sluoksnis taip pat prideda šio tipo nekintamumą.

Tai niekada nebuvo baseino sluoksnio tikslas. Tai, ką turėjo padaryti sutelkimas, turėjo įvesti padėties, orientacijos, proporcingumo invariancijas.

Realybėje šis sujungimo sluoksnis prideda įvairiausių padėties nekintamumų. Kaip matote ir pirmiau pateiktoje diagramoje, tai sukelia dilemą teisingai nustatyti veidą.

Pažiūrėkime, koks yra pasiūlytas sprendimas Geoffrey Hintonas .

Kaip išspręsti šią problemą?

Dabar mes įsivaizduojame, kad kiekviename neurone yra požymių tikimybė ir savybės. Pavyzdžiui, jis pateikia vektorių, kuriame yra [tikimybė, orientacija, dydis]. Naudodamiesi šia erdvine informacija, galime aptikti nosies, akių ir ausų ypatybių orientacijos ir dydžio nenuoseklumą, todėl veido aptikimo aktyvinimas yra daug mažesnis.

Išleistame dokumente Geoffrey Hintonas , tokio tipo neuronai vadinami kapsulėmis. Šios kapsulės išleidžia vektorių, o ne vieną skalerio vertę.

Leiskite man įžiebti tai, kas yra „Capsule Networks“.

Kas yra kapsulės tinklai?

Kapsulė iš esmės yra įdėtųjų nervinių sluoksnių rinkinys. Neuronų būklė kapsulėje fiksuoja įvairias savybes, tokias kaip - poza (padėtis, dydis, orientacija), deformacija, greitis, tekstūra ir kt.

kaip rašyti tostring metodą Java

Užuot užfiksavusi savybę su konkrečiu variantu, kapsulė mokoma užfiksuoti požymio ir jo varianto tikimybę. Taigi, kapsulės tikslas yra ne tik aptikti savybę, bet ir išmokyti modelį išmokti variantą.

Tokia, kad ta pati kapsulė gali aptikti tą pačią objektų klasę su skirtingomis orientacijomis (pavyzdžiui, pasukti pagal laikrodžio rodyklę):

Galime sakyti, kad tai veikia ekvivalentiškumą, o ne nekintamumą.

Invariacija: yra funkcijų aptikimas, neatsižvelgiant į jų variantus. Pavyzdžiui, nosies aptikimo neuronas aptinka nosį, neatsižvelgiant į jos orientaciją.

Ekvivalentiškumas: yra objektų, kurie gali transformuotis vienas į kitą, aptikimas (pavyzdžiui, aptikti skirtingos orientacijos veidus). Intuityviai, kapsulių tinklas nustato, kad veidas pasuktas dešinėn 31 ° (ekvivalentiškumas), o ne suvokia, kad veidas atitiko variantą, kuris pasuktas 31 °. Priversdami modelį išmokti funkcijos variantą kapsulėje, galime efektyviau ekstrapoliuoti galimus variantus, turėdami mažiau treniruočių duomenų. Be to, galime efektyviau atmesti priešininkus.

Kapsulė išleidžia vektorių, kad atspindėtų esybės egzistavimą. Vektoriaus orientacija atspindi objekto savybes.

Vektorius siunčiamas visiems įmanomiems nervų tinklo tėvams. Kiekvienam galimam tėvui kapsulė gali rasti prognozavimo vektorių. Nuspėjamasis vektorius apskaičiuojamas padauginus jo paties svorį ir svorio matricą. Kuris iš tėvų turi didžiausią skaliarinio prognozavimo vektoriaus produktą, padidina kapsulės ryšį. Likę tėvai sumažina savo ryšį. Tai vadinama Maršrutas pagal susitarimą .

Tai neabejotinai yra geresnis būdas nei maksimalus sujungimas, kai maršruto parinkimas pagrįstas stipriausia apatiniame sluoksnyje aptikta funkcija.

Po to yra pridėta „squash“ funkcija. Tai daroma siekiant įvesti nelinijiškumą. Ši gniuždymo funkcija taikoma kiekvienos kapsulės vektoriniam išėjimui.

Leiskite man dabar pasakyti, kaip veikia „Capsule Networks“.

Kaip veikia kapsulės tinklai?

Ženkime žingsnį atgal. Pilnai sujungtame tinkle kiekvieno neurono išvestis yra svertinė įėjimų suma.

Pažiūrėkime, kas vyksta „Capsule Networks“.

Kapsulės neuroninis tinklas:

Panagrinėkime kapsulės neuronų tinklą, kur „ui„Yra kapsulės aktyvumo vektorius“aš ’apačioje esančiame sluoksnyje.

1 žingsnis: pritaikykite transformacijos matricąINtį kapsulės išėjimą ui ankstesnio sluoksnio. Pavyzdžiui, naudodami m × k matricą, mes transformuojame k-Dui į m-Du ^j | i. ((m × k) × (k × 1) = m × 1).

Tai prognozė ( balsas ) iš kapsulės „i“, esančios viršuje esančios kapsulės „j“ išvestyje. „Vj„Yra kapsulės aktyvumo vektorius“j ’aukščiau esančiame sluoksnyje

2 žingsnis: Apskaičiuokite svertinę sumą sjsu svoriaisct.ctyra sukabinimo koeficientai. Šių koeficientų suma lygi vienai. Tai tikrasis parametras, kuris veikia kapsulių grupės santykius, apie kuriuos kalbėjome anksčiau.

3 žingsnis: Konvoliuciniuose neuroniniuose tinkluose mes naudojome „ReLU“ funkciją. Čia vektoriaus masteliui nuo 0 iki vieneto ilgio pritaikysime skvošavimo funkciją. Jis sumažina mažus vektorius iki nulio, o ilgus - į vektorinius vienetus. Todėl kiekvienos kapsulės tikimybė yra ribojama nuo nulio iki vienos.

Tai prognozė ( balsas ) iš kapsulės „i“, esančios viršuje esančios kapsulės „j“ išvestyje. Jei aktyvumo vektorius yra labai panašus į prognozavimo vektorių, darome išvadą, kad kapsulėaš ’yra labai susijęs su kapsule “j ’. (Pavyzdžiui, nosies kapsulė yra labai susijusi su veido kapsule.) Toks panašumas matuojamas naudojant prognozės ir aktyvumo vektoriaus skaliarinį sandaugą. Todėl panašumas atsižvelgia ir į panašumą, ir į požymio savybes. (o ne tik panašumas į neuronus).

4 žingsnis: Apskaičiuokite atitikimo balą ‘bt„. Tai bus aktyvumo vektoriaus ir prognozavimo vektoriaus taškų sandauga. Sukabinimo koeficientaicijyra apskaičiuojamas kaipbij:

Sukabinimo koeficientas ctyra apskaičiuojamas kaip b softmaxt.

Šis btyra atnaujinamas kartotinai keliomis kartojimais.

Tai vadinama Maršrutas pagal susitarimą .

Žemiau pateiktoje diagramoje yra vienas pavyzdys:

Po šio „Capsule Networks“ tinklaraščio pateiksiu tinklaraštį apie „Capsule Neural Network“ diegimą naudojant „TensorFlow“.

Tikiuosi, kad jums patiko skaityti šį tinklaraštį kapsulių tinkluose, patikrinkite sukūrė patikima internetinė mokymosi įmonė „Edureka“, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą visame pasaulyje. „Edureka“ gilaus mokymosi su „TensorFlow“ sertifikavimo mokymo kursai padeda besimokantiesiems tapti ekspertais mokant ir optimizuojant pagrindinius ir konvoliucinius neuroninius tinklus, naudojant realaus laiko projektus ir užduotis kartu su tokiomis sąvokomis kaip „SoftMax“ funkcija, „Auto-encoder“ neuroniniai tinklai, „Restricted Boltzmann Machine“ (RBM).

Turite mums klausimą? Prašau paminėti tai komentarų skiltyje ir mes su jumis susisieksime.