Capsule Neural Networks - Sett med nestede nevrale lag



Capsule Networks - Denne bloggen snakker om begrensningene ved Convolutional Neural Networks, og hvordan Capsule Neural Networks løser disse begrensningene.

Kapselnettverk:

Hva er Capsule Networks? Det er i utgangspunktet et nettverk av sett med nestede nevrale lag.

Jeg vil anbefale deg å gå gjennom bloggene nedenfor:





Jeg antar at dere kjenner Convolutional Neural Networks (CNN). Her vil jeg gi deg en liten introduksjon om det samme, slik at jeg kan diskutere begrensningene til CNN.

Du kan også henvise til videoen nedenfor på Convolutional Neural Network.



Convolutional Neural Networks (CNN)

Convolutional Neural Networks, er i utgangspunktet en stabel med forskjellige lag med kunstige nevroner, som brukes til datasyn. Nedenfor har jeg nevnt disse lagene:

Convolutional Neural Network - Capsule Neural Network - Edureka

Konvolusjonslag: Når vi bruker Feedforward Neural Networks (Multi Layer Perceptron) for bildeklassifisering, er det mange utfordringer med det. Den mest frustrerende utfordringen er at den introduserer mange parametere, vurder videoopplæringen på CNN.



For å overvinne denne utfordringen Convolution Layer Ble introdusert. det antas at piksler som er romlig tettere sammen vil 'samarbeide' om å danne et bestemt trekk av interesse mye mer enn de i motsatte hjørner av bildet. Hvis en bestemt (mindre) funksjon blir funnet å være av stor betydning når du definerer et bildes etikett, vil det også være like viktig hvis denne funksjonen ble funnet hvor som helst i bildet, uavhengig av plassering.

ReLU-lag: Rectified Linear Unit (ReLU) transformasjonsfunksjon aktiverer bare en node hvis inngangen er over en viss størrelse, mens inngangen er under null, er utgangen null, men når inngangen stiger over en viss terskel, har den et lineært forhold til avhengig variabel.

  • I dette laget fjerner vi alle negative verdier fra de filtrerte bildene og erstatter det med null
  • Dette gjøres for å unngå at verdiene summeres til null

Pooling Layer: Dette brukes til å utføre nedprøving, som forbruker små og (vanligvis) usammenhengende biter av bildet og samler dem til en enkelt verdi. Det er flere mulige ordninger for aggregering - det mest populære vesenet Maks pooling , hvor den maksimale pikselverdien i hver del blir tatt. Det gjør nettverket uforanderlig for små transformasjoner, forvrengninger og oversettelser i inngangsbildet (en liten forvrengning i inngangen vil ikke endre utgangen fra Pooling - siden vi tar maksimum / gjennomsnittsverdien i et lokalt nabolag).

hvordan du bruker navneområdet i c ++

Fullt koblet lag: Dette laget beregner klassepoengene, der hvert av tallene tilsvarer klassepoengene. Som med vanlige nevrale nettverk og som navnet antyder, vil hvert nevron i dette laget være koblet til alle nevronene i forrige volum. I et nøtteskall utfører den den endelige klassifiseringen.

På denne måten forvandler ConvNets det opprinnelige bildet lag for lag fra de opprinnelige pikselverdiene til den endelige klassescore.

Dette var en veldig kort introduksjon til Convolutional Neural Networks, jeg vil likevel anbefale deg å ta en titt på CNN-videoen som jeg har lagt inn i dette innlegget.

I denne Capsule Networks-bloggen vil jeg nå diskutere noen begrensninger av Convolutional Neural Networks

Begrensninger av konvolusjonelle nevrale nettverk:

La meg forklare dette med en analogi.

Anta at det er et menneske, hvis øyne kan oppdage funksjonene til forskjellige bilder. La oss betrakte ansiktet til et menneske som et eksempel. Så denne uheldige fyren kan identifisere forskjellige funksjoner som øyne, nese osv., Men klarer ikke å identifisere romlige forhold mellom funksjoner (perspektiv, størrelse, orientering). For eksempel kan følgende bilde lure den fyren i å klassifisere det som en god skisse av et menneskelig ansikt.

Dette er også problemet med Convolutional Neural Networks. CNN er flink til å oppdage funksjoner, men vil feilaktig aktivere nevronet for ansiktsgjenkjenning. Dette er fordi det er mindre effektivt å utforske romlige forhold mellom funksjoner.

En enkel CNN-modell kan trekke ut funksjonene for nese, øyne og munn riktig, men vil uriktig aktivere nevronet for ansiktsgjenkjenning. Uten å innse feil samsvar i romlig orientering og størrelse, vil aktivering for ansiktsgjenkjenning være for høy.

Vel, denne begrensningen skyldes Max Pooling-laget.

Maks samkjøring i en CNN håndterer translasjonsavvik. Selv en funksjon er litt flyttet, hvis den fremdeles er i bassengvinduet, kan den fremdeles oppdages. Likevel holder denne tilnærmingen bare maksfunksjonen (den mest dominerende) og kaster bort de andre.

Så ansiktsbildet vist ovenfor vil bli klassifisert som et normalt ansikt. Bassenglag legger også til denne typen invarians.

Dette var aldri meningen med pooling-laget. Hva samlingen skulle gjøre er å innføre posisjonelle, orienterende, proporsjonale invarianter.

I virkeligheten tilfører dette pooling-laget alle slags posisjonsvariasjoner. Som du kan se i diagrammet ovenfor også, fører det til dilemmaet med å oppdage ansiktet riktig.

La oss se hva løsningen er foreslått av Geoffrey Hinton .

Hvordan løse dette problemet?

Nå forestiller vi oss at hvert nevron inneholder sannsynligheten og egenskapene til funksjonene. For eksempel sender den ut en vektor som inneholder [sannsynlighet, retning, størrelse]. Med denne romlige informasjonen kan vi oppdage konsistensen i orienteringen og størrelsen blant nese-, øyne- og øreegenskapene og derfor sende en mye lavere aktivering for ansiktsgjenkjenning.

I avisen utgitt av Geoffrey Hinton , disse typer nevroner kalles kapsler. Disse kapslene viser en vektor i stedet for en enkelt skaleringsverdi.

La meg sette litt lys på hva som er Capsule Networks.

Hva er Capsule Networks?

Kapsel er i utgangspunktet et sett med nestede nevrale lag. Nevronenes tilstand i en kapsel fanger opp de forskjellige egenskapene som - posisjon (posisjon, størrelse, orientering), deformasjon, hastighet, tekstur osv. Til en enhet i et bilde.

I stedet for å fange en funksjon med en bestemt variant, blir en kapsel opplært til å fange sannsynligheten for en funksjon og dens variant. Så formålet med kapselen er ikke bare å oppdage en funksjon, men også å trene modellen til å lære varianten.

Slik at samme kapsel kan oppdage samme objektklasse med forskjellige retninger (for eksempel rotere med klokken):

Vi kan si det fungerer på ekvivarians, ikke invarians.

Invarians: er deteksjon av funksjoner uavhengig av variantene. For eksempel oppdager en nesedeteksjonsneuron en nese uavhengig av orientering.

Ekvivarians: er deteksjon av objekter som kan transformere seg til hverandre (for eksempel å oppdage ansikter med forskjellige retninger). Intuitivt oppdager kapselnettverket at ansiktet roteres rett 31 ° (ekvivarians) i stedet for å innse at ansiktet matchet en variant som roteres 31 °. Ved å tvinge modellen til å lære funksjonsvarianten i en kapsel, kan vi ekstrapolere mulige varianter mer effektivt med mindre treningsdata. I tillegg kan vi avvise motstandere mer effektivt.

En kapsel sender ut en vektor som representerer enhetens eksistens. Orienteringen til vektoren representerer egenskapene til enheten.

Vektoren sendes til alle mulige foreldre i nevrale nettverk. For hver mulig foreldre kan en kapsel finne en prediksjonsvektor. Prediksjonsvektor beregnes basert på å multiplisere egenvekt og vektmatrise. Uansett hvilken av foreldrene som har det største skalarforutsigende vektorproduktet, øker kapselbinding. Resten av foreldrene reduserer båndet. Dette kalles som Rute etter avtale .

Dette er definitivt en bedre tilnærming enn maks pooling, der ruting er basert på den sterkeste funksjonen som er oppdaget i det nederste laget.

Etter dette er det en squashing-funksjon som legges til. Dette gjøres for å innføre ikke-linearitet. Denne squashing-funksjonen brukes på vektorutgangen til hver kapsel.

La meg fortelle deg nå, hvordan Capsule Networks fungerer.

Hvordan fungerer kapselnettverk?

La oss ta et skritt tilbake. I et fullt tilkoblet nettverk er utgangen fra hvert nevron den vektede summen av inngangene.

La oss nå se hva som skjer i Capsule Networks.

Capsule Neural Network:

La oss se på et Capsule Neural Network hvor ‘uJeg‘Er aktivitetsvektoren for kapselen‘Jeg'i laget under.

Trinn 1: Bruk en transformasjonsmatriseIijtil kapselutgangen uJeg av forrige lag. For eksempel, med en m × k matrise transformerer vi en k-DuJeg til en MDu ^j | i. ((m × k) × (k × 1) = m × 1).

Det er spådommen ( stemme ) fra kapselen ‘i’ på utgangen av kapselen ‘j’ ovenfor. ‘Vj‘Er aktivitetsvektoren for kapselen‘j ’i laget over

Trinn - 2: Beregn en vektet sumjmed vektercij.cijer koblingskoeffisientene. Summen av disse koeffisientene er lik en. Det er den faktiske parameteren som fungerer på forholdet mellom kapselgruppen vi snakket tidligere.

Trinn 3: I Convolutional Neural Networks brukte vi ReLU-funksjonen. Her vil vi bruke en squashing-funksjon for å skalere vektoren mellom 0 og enhetslengde. Den krymper små vektorer til null og lange vektorer til enhetsvektorer. Derfor er sannsynligheten for hver kapsel avgrenset mellom null og en.

Det er spådommen ( stemme ) fra kapselen ‘i’ på utgangen av kapselen ‘j’ ovenfor. Hvis aktivitetsvektoren har nær likhet med prediksjonsvektoren, konkluderer vi med at kapsel ‘Jeg'er sterkt relatert til kapselenj ’. (For eksempel er nesekapselen sterkt relatert til ansiktskapselen.) Slik likhet måles ved hjelp av det skalære produktet fra prediksjon og aktivitetsvektor. Derfor tar likheten hensyn til både sannsynlighet og funksjonsegenskapene. (i stedet for bare sannsynlighet i nevroner).

Trinn - 4: Beregn relevanspoeng ‘bij‘. Det vil være prikkproduktet til aktivitetsvektoren og prediksjonsvektoren. KoblingskoeffisientenecJegjberegnes som softmax forbJegj:

Koblingskoeffisienten cijberegnes som softmax for bij.

Dette bijoppdateres iterativt i flere iterasjoner.

Dette kalles som Rute etter avtale .

Nedenfor er diagrammet et eksempel:

Etter denne bloggen på Capsule Networks, vil jeg komme med en blogg om Capsule Neural Network implementering ved hjelp av TensorFlow.

Jeg håper du har likt å lese denne bloggen på kapselnettverk, sjekk ut av Edureka, et pålitelig online læringsfirma med et nettverk av mer enn 250 000 fornøyde elever spredt over hele verden. Edureka Deep Learning with TensorFlow Certification Training-kurset hjelper elever til å bli eksperter i å trene og optimalisere grunnleggende og konvolusjonelle nevrale nettverk ved hjelp av sanntidsprosjekter og oppgaver sammen med konsepter som SoftMax-funksjon, Auto-encoder Neural Network, Restricted Boltzmann Machine (RBM).

Har du et spørsmål til oss? Vennligst nevn det i kommentarfeltet, så kommer vi tilbake til deg.