Capsule-netwerken:
Wat zijn Capsule-netwerken? Het is in feite een netwerk van een reeks geneste neurale lagen.
Ik zou je aanraden om ook de onderstaande blogs door te nemen:
Ik neem aan dat jullie Convolutional Neural Networks (CNN) kennen. Hier zal ik u een korte inleiding geven, zodat ik de beperkingen van CNN's kan bespreken.
U kunt ook de onderstaande video raadplegen over Convolutional Neural Network.
Convolutionele neurale netwerken (CNN)
Convolutionele neurale netwerken zijn in feite een stapel van verschillende lagen kunstmatige neuronen, die worden gebruikt voor computervisie. Hieronder heb ik die lagen genoemd:
Convolutionele laag: Wanneer we Feedforward Neural Networks (Multi Layer Perceptron) gebruiken voor beeldclassificatie, zijn er veel uitdagingen mee. De meest frustrerende uitdaging is dat het veel parameters introduceert, kijk eens naar de video-tutorial op CNN.
Om deze uitdaging te overwinnen Convolutielaag werd geïntroduceerd. Aangenomen wordt dat pixels die ruimtelijk dichter bij elkaar zijn, veel meer zullen 'samenwerken' om een bepaald interessant kenmerk te vormen dan pixels op tegenoverliggende hoeken van het beeld. Als een bepaald (kleiner) kenmerk van groot belang blijkt te zijn bij het definiëren van het label van een afbeelding, is het even belangrijk als dit kenmerk ergens in de afbeelding is aangetroffen, ongeacht de locatie.
ReLU-laag: Rectified Linear Unit (ReLU) transformatiefunctie activeert alleen een knooppunt als de invoer boven een bepaalde hoeveelheid is, terwijl de invoer onder nul is, is de uitvoer nul, maar wanneer de invoer boven een bepaalde drempel komt, heeft het een lineaire relatie met de afhankelijke variabele.
- In deze laag verwijderen we alle negatieve waarden uit de gefilterde afbeeldingen en vervangen we deze door nullen
- Dit wordt gedaan om te voorkomen dat de waarden worden opgeteld tot nul
Pooling-laag: Dit wordt gebruikt om downsampling uit te voeren, waarbij kleine en (meestal) onsamenhangende delen van de afbeelding worden verbruikt en deze tot een enkele waarde worden samengevoegd. Er zijn verschillende mogelijke schema's voor de aggregatie - het meest populaire wezen Max-pooling , waar de maximale pixelwaarde binnen elk blok wordt genomen. Het maakt het netwerk onveranderlijk voor kleine transformaties, vervormingen en vertalingen in het invoerbeeld (een kleine vervorming in invoer zal de uitvoer van pooling niet veranderen - aangezien we de maximale / gemiddelde waarde in een lokale buurt nemen).
Volledig verbonden laag: Deze laag berekent de klassenscores, waarbij elk van de cijfers overeenkomt met een klassenscore. Net als bij gewone neurale netwerken en zoals de naam al aangeeft, zal elk neuron in deze laag worden verbonden met alle neuronen in het vorige deel. Kortom, het voert het eindklassement uit.
Op deze manier transformeert ConvNets de originele afbeelding laag voor laag van de oorspronkelijke pixelwaarden naar de uiteindelijke klassenscores.
Dit was een zeer korte inleiding tot convolutionele neurale netwerken, ik zou je toch aanraden om de CNN-video te bekijken die ik in dit bericht heb ingesloten.
In deze Capsule Networks-blog zal ik nu enkele beperkingen van convolutionele neurale netwerken bespreken
Beperkingen van convolutionele neurale netwerken:
Nou, laat me dit uitleggen met een analogie.
Stel dat er een mens is wiens ogen de kenmerken van verschillende afbeeldingen kunnen detecteren. Laten we het gezicht van een mens als voorbeeld beschouwen. Dus deze ongelukkige kan verschillende kenmerken identificeren, zoals ogen, neus enz., Maar kan de ruimtelijke relaties tussen kenmerken (perspectief, grootte, oriëntatie) niet identificeren. De volgende afbeelding kan die man bijvoorbeeld voor de gek houden door het te classificeren als een goede schets van een menselijk gezicht.
Dit is ook het probleem met convolutionele neurale netwerken. CNN is goed in het detecteren van functies, maar zal het neuron ten onrechte activeren voor gezichtsdetectie. Dit komt omdat het minder effectief is in het onderzoeken van de ruimtelijke relaties tussen kenmerken.
Een eenvoudig CNN-model kan de kenmerken voor neus, ogen en mond correct extraheren, maar zal het neuron ten onrechte activeren voor de gezichtsherkenning. Zonder de mis-match in ruimtelijke oriëntatie en grootte te beseffen, zal de activering voor de gezichtsherkenning te hoog zijn.
Welnu, deze beperking is vanwege de Max Pooling-laag.
De maximale pooling in een CNN verwerkt translationele variantie. Zelfs een element is enigszins verplaatst, als het zich nog binnen het poolingvenster bevindt, kan het nog steeds worden gedetecteerd. Desalniettemin behoudt deze benadering alleen de max-functie (de meest dominante) en gooit de andere weg.
De bovenstaande gezichtsfoto wordt dus geclassificeerd als een normaal gezicht. Pooling-laag voegt ook dit type invariantie toe.
Dit was nooit de bedoeling van de pooling-laag. Wat de pooling moest doen, is positionele, oriëntationele, proportionele invarianties introduceren.
In werkelijkheid voegt deze poolinglaag allerlei positionele invariantie toe. Zoals je ook in het bovenstaande diagram kunt zien, leidt dit tot het dilemma om het gezicht correct te detecteren.
Laten we eens kijken wat de voorgestelde oplossing is Geoffrey Hinton .
Hoe dit probleem oplossen?
Nu stellen we ons voor dat elk neuron zowel de waarschijnlijkheid als de eigenschappen van de kenmerken bevat. Het voert bijvoorbeeld een vector uit die [waarschijnlijkheid, oriëntatie, grootte] bevat. Met deze ruimtelijke informatie kunnen we de consistentie in de oriëntatie en grootte van de neus-, ogen- en oorkenmerken detecteren en daarom een veel lagere activering voor de gezichtsherkenning uitvoeren.
In de krant uitgegeven door Geoffrey Hinton , worden dit soort neuronen capsules genoemd. Deze capsules produceren een vector in plaats van een enkele schaalwaarde.
Laat me wat licht zetten over wat Capsule Networks zijn.
Wat zijn Capsule-netwerken?
Capsule is eigenlijk een set geneste neurale lagen. De toestand van de neuronen in een capsule legt de verschillende eigenschappen vast, zoals pose (positie, grootte, oriëntatie), vervorming, snelheid, textuur enz., Van één entiteit in een afbeelding.
In plaats van een kenmerk vast te leggen met een specifieke variant, wordt een capsule getraind om de waarschijnlijkheid van een kenmerk en zijn variant vast te leggen. Het doel van de capsule is dus niet alleen om een kenmerk te detecteren, maar ook om het model te trainen om de variant te leren.
Zodat dezelfde capsule dezelfde objectklasse met verschillende oriëntaties kan detecteren (bijvoorbeeld met de klok mee draaien):
We kunnen zeggen dat het werkt op basis van gelijkwaardigheid, niet op basis van onveranderlijkheid.
Invariantie: is de detectie van kenmerken ongeacht de varianten. Een neusdetectie-neuron detecteert bijvoorbeeld een neus, ongeacht de oriëntatie.
Equivariantie: is de detectie van objecten die naar elkaar kunnen transformeren (bijvoorbeeld het detecteren van gezichten met verschillende oriëntaties). Intuïtief detecteert het capsulenetwerk dat het gezicht 31 ° naar rechts is gedraaid (equivariantie) in plaats van te beseffen dat het gezicht overeenkomt met een variant die 31 ° is gedraaid. Door het model te dwingen de feature-variant in een capsule te leren, kunnen we mogelijke varianten effectiever extrapoleren met minder trainingsgegevens. Bovendien kunnen we tegenstanders effectiever afwijzen.
Een capsule voert een vector uit om het bestaan van de entiteit weer te geven. De oriëntatie van de vector vertegenwoordigt de eigenschappen van de entiteit.
De vector wordt naar alle mogelijke ouders in het neurale netwerk gestuurd. Voor elke mogelijke ouder kan een capsule een voorspellingsvector vinden. Voorspellingsvector wordt berekend op basis van het vermenigvuldigen van het eigen gewicht en een gewichtsmatrix. Welke ouder het grootste scalaire voorspellingsvectorproduct ook heeft, verhoogt de capsulebinding. De rest van de ouders vermindert hun band. Dit wordt genoemd als Routing volgens overeenkomst .
Dit is absoluut een betere benadering dan max pooling, waarbij routering is gebaseerd op het sterkste kenmerk dat in de onderste laag wordt gedetecteerd.
Hierna is er een squashfunctie die wordt toegevoegd. Dit wordt gedaan om niet-lineariteit te introduceren. Deze squashfunctie wordt toegepast op de vectoruitvoer van elke capsule.
Laat me je nu vertellen hoe Capsule Networks werkt.
Hoe Capsule-netwerken werken?
Laten we een stap terug doen. In een volledig verbonden netwerk is de output van elk neuron de gewogen som van de inputs.
Laten we nu eens kijken wat er gebeurt in Capsule Networks.
Capsule neuraal netwerk:
Laten we eens kijken naar een Capsule Neuraal Netwerk waar ‘uik‘Is de activiteitsvector voor de capsule’ik'in de laag eronder.
Stap - 1: Pas een transformatiematrix toeINijnaar de capsule-uitgang uik van de vorige laag. Met een m × k-matrix transformeren we bijvoorbeeld een k-Duik naar een m-Du ^j | ik. ((m × k) × (k × 1) = m × 1).
Het is de voorspelling ( stemmen ) van de capsule ‘i’ aan de uitgang van de capsule ‘j’ hierboven. ‘Vj‘Is de activiteitsvector voor de capsule’j 'in de laag erboven
Stap - 2: Bereken een gewogen somjmet gewichtencij.cijzijn de koppelingscoëfficiënten. De som van deze coëfficiënten is gelijk aan één. Het is de feitelijke parameter die werkt op de relatie tussen de groep capsules die we eerder hebben besproken.
Stap - 3: In convolutionele neurale netwerken hebben we de ReLU-functie gebruikt. Hier zullen we een squashfunctie toepassen om de vector te schalen tussen 0 en lengte-eenheid. Het verkleint kleine vectoren tot nul en lange vectoren tot eenheidsvectoren. Daarom is de waarschijnlijkheid van elke capsule begrensd tussen nul en één.
Het is de voorspelling ( stemmen ) van de capsule ‘i’ aan de uitgang van de capsule ‘j’ hierboven. Als de activiteitsvector veel gelijkenis vertoont met de voorspellingsvector, concluderen we dat capsule ‘ik'is sterk verwant met de capsule ‘j '. (De neuscapsule is bijvoorbeeld sterk verwant aan de gezichtscapsule.) Een dergelijke overeenkomst wordt gemeten met behulp van het scalaire product van de voorspellings- en activiteitsvector. Daarom houdt de gelijkenis rekening met zowel de waarschijnlijkheid als de eigenschapseigenschappen. (in plaats van alleen waarschijnlijkheid in neuronen).
Stap - 4: Bereken de relevantiescore ‘bij‘. Het wordt het puntproduct van de activiteitsvector en de voorspellingsvector. De koppelingscoëfficiëntencikjwordt berekend als de softmax vanbikj:
wat is aggregatie in java
De koppelingscoëfficiënt cijwordt berekend als de softmax van bij.
Deze bijwordt iteratief bijgewerkt in meerdere iteraties.
Dit wordt genoemd als Routing volgens overeenkomst .
Onderstaand diagram is een voorbeeld:
Na deze blog over Capsule Networks, zal ik een blog bedenken over de implementatie van Capsule Neural Network met behulp van TensorFlow.
Ik hoop dat je deze blog met plezier hebt gelezen over capsulenetwerken, bekijk de door Edureka, een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld. De Edureka Deep Learning with TensorFlow Certification Training-cursus helpt leerlingen expert te worden in het trainen en optimaliseren van basis- en convolutionele neurale netwerken met behulp van real-time projecten en opdrachten, samen met concepten zoals SoftMax-functie, Auto-encoder Neural Networks, Restricted Boltzmann Machine (RBM).
Heeft u een vraag voor ons? Vermeld het in het opmerkingengedeelte en we nemen contact met u op.