Den beste forklaringen på konvolusjonelle nevrale nettverk på Internett!

CNN-er har brede applikasjoner innen bilde- og videogjenkjenning, anbefalingssystemer og naturlig språkbehandling. I denne artikkelen er eksemplet som jeg tar relatert til Computer Vision. Imidlertid forblir det grunnleggende konseptet det samme og kan brukes på enhver annen bruk-sak!

For en rask oversikt over nevrale nettverk, her er en veldig tydelig forklart artikkelserie.

CNN-er, som nevrale nettverk, består av nevroner med lærbare vekter og skjevheter. Hver nevron mottar flere innganger, tar en vektet sum over seg, passerer den gjennom en aktiveringsfunksjon og svarer med en utgang. Hele nettverket har en tapsfunksjon, og alle tips og triks som vi utviklet for nevrale nettverk, gjelder fortsatt på CNN. Ganske greit, ikke sant?

Så, hvordan er konvolusjonelle nevrale nettverk annerledes enn nevrale nettverk?

CNN opererer over volumer!

Hva mener vi med dette?

1. Eksempel på et RGB-bilde (la oss kalle det

I motsetning til nevrale nettverk, der inngangen er en vektor, er inngangen her et flerkanalsbilde (3 kanalisert i dette tilfellet).

Det er andre forskjeller som vi vil snakke om om en stund.

Før vi går dypere, la oss først forstå hva konvolusjon betyr.

konvolusjon

2. Å konvolvere et bilde med et filter

Vi tar 5 * 5 * 3-filteret og skyver det over hele bildet og tar underveis prikkproduktet mellom filteret og biter på inngangsbildet.

3. Slik ser det ut

For hvert prikkprodukt som tas, er resultatet en skalar.

Så, hva skjer når vi konvolverer hele bildet med filteret?

4. Dette!

Jeg overlater det til å finne ut hvordan '28' kommer. (Hint: Det er 28 * 28 unike posisjoner der filteret kan settes på bildet)

Nå tilbake til CNN

Konvolusjonssjiktet er hovedbyggestenen til et innviklet nevralt nettverk.

5. Convolution Layer

Oppviklingssjiktet består av et sett uavhengige filtre (6 i eksempelet vist). Hvert filter er uavhengig viklet av bildet, og vi ender opp med 6 funksjonskart med form 28 * 28 * 1.

Anta at vi har en rekke sammenløpningslag i rekkefølge. Hva skjer da?

6. Konvolusjonslag i rekkefølge

Alle disse filtrene initialiseres tilfeldig og blir våre parametere som senere læres av nettverket.

Jeg vil vise deg et eksempel på et trent nettverk.

7. Filtre i et trent nettverk

Ta en titt på filtrene i det aller første laget (dette er våre 5 * 5 * 3 filtre). Gjennom ryggformering har de innstilt seg på å bli klatter av fargede stykker og kanter. Når vi går dypere til andre oppløsningslag, gjør filtrene prikkprodukter til inngangen til de forrige oppløsningslagene. Så de tar de mindre fargede brikkene eller kantene og lager større deler av dem.

Ta en titt på bilde 4 og forestill deg 28 * 28 * 1 rutenett som et rutenett med 28 * 28 nevroner. For et bestemt funksjonskart (utgangen som mottas ved å konvolvere bildet med et bestemt filter kalles et funksjonskart), er hver nevron kun koblet til en liten del av inngangsbildet, og alle nevronene har de samme tilkoblingsvektene. Så igjen å komme tilbake til forskjellene mellom CNN og et nevralt nettverk.

CNN-er har et par konsepter som kalles parameterdeling og lokal tilkobling

Parameterdeling er deling av vekter av alle nevroner i et bestemt funksjonskart.

Lokal tilkobling er konseptet for hver nevrale koblet bare til en delmengde av inngangsbildet (i motsetning til et nevralt nettverk der alle nevronene er helt koblet)

Dette bidrar til å redusere antall parametere i hele systemet og gjør beregningen mer effektiv.

Jeg vil ikke snakke om konseptet null polstring her, da ideen er å holde det enkelt. Interesserte kan lese om det hver for seg!

Bassenglag

Et bassenglag er en annen byggestein i et CNN.

Bading

Dens funksjon er å gradvis redusere den romlige størrelsen på representasjonen for å redusere mengden parametere og beregning i nettverket. Bassenglaget fungerer uavhengig av hvert funksjonskart.

Den vanligste tilnærmingen som brukes i sammenføyning er maks.

Max Pooling

Typisk arkitektur av et CNN

Typisk arkitektur av CNN

Vi har allerede diskutert om konvolusjonssjikt (betegnet med CONV) og samlingslag (betegnet med POOL).

RELU er bare en ikke-linearitet som brukes lik nevrale nettverk.

FC er det fullt tilkoblede laget av nevroner på slutten av CNN. Nevroner i et fullt tilkoblet lag har fulle tilkoblinger til alle aktiveringer i det forrige laget, sett i vanlige nevrale nettverk og fungerer på lignende måte.

Jeg håper du forstår arkitekturen til et CNN nå. Det er mange varianter av denne arkitekturen, men som jeg nevnte før, er det grunnleggende konseptet det samme. I tilfelle du er i tvil / tilbakemelding, vennligst kommenter.

Kjærligheten din driver meg! Så hvis du likte å lese denne artikkelen, kan du trykke på den lille grønne hjerteknappen!

Du kan følge meg for å lese mer TechnologyMadeEasy-artikler!

Og hvis du vil at vennene dine skal lese dette også, klikk på del!

Referanser: http://cs231n.github.io/convolutional-networks/#overview