Konvolutional neurale netværk - forenklet

En uomviklet forklaring til en stærk algoritme, der er vidt brugt i billedgenkendelsesopgaver

Tag dig et øjeblik til at observere og se på dine omgivelser. Selv hvis du sidder stille på din stol eller ligger på din seng, prøver din hjerne konstant at analysere den dynamiske verden omkring dig. Uden din bevidste indsats gør din hjerne konstant forudsigelser og handler efter dem.

Foto af Adrienn, Kilde: https://www.pexels.com

Efter blot et kort kig på dette foto identificerede du, at der er mennesker og genstande i scenen. Du identificerede straks nogle af objekterne i scenen som vinglas, tallerken, bord, lys osv. Du har sandsynligvis også gættet, at kvinderne på fotografiet nyder deres måltid. Hvordan var du i stand til at komme med disse forudsigelser? Hvordan identificerede du de mange objekter på billedet?

Det tog naturen millioner af års udvikling for at opnå denne bemærkelsesværdige bedrift. Vores øje og vores hjerne arbejder i perfekt harmoni for at skabe så smukke visuelle oplevelser. Systemet, der gør dette muligt for os, er øjet, vores visuelle vej og den visuelle cortex i vores hjerne.

Primær visuel sti, kilde: http://mriquestions.com/visual.html

Vores øjne fanger lys og farver på nethinden. Receptorerne på nethinden overfører disse signaler til synsnerven, der overfører dem til hjernen for at give mening om denne information. Øjet og den visuelle cortex er en meget kompleks og hierarkisk struktur. Hele den visuelle vej spiller en vigtig rolle i processen med at forstå og give mening om det, vi ser omkring os. Det er dette system inde i os, der giver os mulighed for at give mening om billedet ovenfor, teksten i denne artikel og alle andre visuelle genkendelsesopgaver, vi udfører hver dag.

Vi har gjort det siden vores barndom. Vi blev lært at genkende en paraply, en hund, en kat eller et menneske. Kan vi lære computere at gøre det? Kan vi lave en maskine, der kan se og forstå så godt som mennesker gør?

Computere “ser” verden på en anden måde end vi gør. De kan kun “se” noget i form af tal

Hvert tal til højre repræsenterer en pixel

At lære computere at give mening ud fra denne forvirrende række af numre er en udfordrende opgave. Computer forskere har brugt årtier på at bygge systemer, algoritmer og modeller, der kan forstå billeder. I dag i en æra med kunstig intelligens og maskinlæring har vi været i stand til at opnå en bemærkelsesværdig succes med at identificere objekter i billeder, identificere konteksten af ​​et billede, opdage følelser osv. En af de mest populære algoritmer, der bruges i computervision i dag, er Convolutional Neural Network eller CNN.

Inspiration bag CNN

CNN er en type neuralt netværk, som løst henter inspiration fra arbejdet og hierarkiske strukturen i hjernens primære visuelle vej.

Kilde: xkcd.com

I 1950'erne og 1960'erne udførte David Hubel og Torsten Wiesel eksperimenter på hjernen hos pattedyr og foreslog en model for, hvordan pattedyr opfatter verden visuelt. De registrerede aktivitet fra neuroner i en kattes visuelle cortex, da de bevægede en lys linje over nethinden. Under deres optagelser bemærkede de et par interessante ting

  1. Neuronerne fyrede kun af, når linjen var på et bestemt sted på nethinden
  2. Aktiviteten af ​​disse neuroner ændrede sig afhængigt af linjens orientering
  3. Nogle gange fyrede neuronerne kun, når linjen bevægede sig i en bestemt retning

Skru op for dit volumen og se videoen af ​​eksperimentet her -

I deres papir beskrev de to basistyper af visuelle neuronceller i hjernen, som hver fungerer på en anden måde: enkle celler (S-celler) og komplekse celler (C-celler), som er arrangeret i en hierarkisk struktur.

De enkle celler aktiveres for eksempel når de identificerer grundlæggende former som linjer i et fast område og en bestemt vinkel. De komplekse celler har større modtagelige felter, og deres output er ikke følsom over for den specifikke position i feltet. De komplekse celler reagerer fortsat på en bestemt stimulus, selvom dets absolutte position på nethinden ændrer sig. Jeg har brugt noget jargon her, lad os prøve at forstå, hvad et modtageligt felt er.

Modtagelsesfelt for sensoriske neuroner

På billedet ovenfor har 3 primære neuroner deres eget receptive felt, hvilket betyder, at den blå neuron kun aktiveres, hvis der er en stimulus i det blå område, den gule primære neuron aktiveres, hvis der er en stimulus i den gule region og så på. Hvis der er en stimulus i overlappningsregionen, aktiveres alle neuroner, der er knyttet til det område.

Bortset fra enkle og komplekse celler spiller den hierarkiske struktur i hjernen en vigtig rolle i lagring og forståelse af information. I 1980 foreslog Kunihiko Fukushima et hierarkisk neuralt netværk kaldet Neocognitron, der var inspireret af den enkle og komplekse cellemodel. Neocognitron var i stand til at genkende mønstre ved at lære om objekternes former.

Senere, i 1998, introducerede Bengio, LeCun, Bottou og Haffner Convolutional Neural Networks. Deres første konvolutional neurale netværk blev kaldt LeNet-5 og var i stand til at klassificere cifre fra håndskrevne numre.

Det handlede om CNNs historie. Du kan læse mere om historien og udviklingen af ​​CNN overalt på internettet.

Kilde: xkcd.com

Konvolutional neurale netværk

Hvis du har en grundlæggende idé om flerlags perceptron og neurale netværk, forstår du allerede en lille del af hele strukturen i et CNN.

CNN består af to hoveddele:

  1. Funktionsekstraktion
  2. Klassifikation
Grundlæggende komponenter i CNN. Kilde: Researchgate

Du skal ikke bekymre dig om de forvirrede firkanter og linjer inden for det røde, stiplede område, vi nedbryder det senere. De grønne cirkler inden for det blå prikkede område, der kaldes klassifikation, er det neurale netværk eller perlagtron med flere lag, der fungerer som en klassifikator. Indgange til dette netværk kommer fra den foregående del, der hedder funktionsekstraktion.

1) Funktionekstraktion

Dette er den del af CNN-arkitekturen, hvorfra dette netværk henter sit navn. Konvolution er den matematiske operation, der er central for effektiviteten af ​​denne algoritme. Lad os forstå på et højt niveau, hvad der sker inden i det røde lukkede område. Indgangen til det røde område er det billede, som vi vil klassificere, og output er et sæt funktioner. Tænk på funktioner som attributter for billedet, for eksempel kan et billede af en kat have funktioner som snørre, to ører, fire ben osv. Et håndskrevet digitalt billede kan have funktioner som vandrette og lodrette linjer eller løkker og kurver. Lad os se, hvordan vi udtrækker sådanne funktioner fra billedet.

Funktionsekstraktion: konvolution

Konvolution i CNN udføres på et inputbillede ved hjælp af et filter eller en kerne. For at forstå filtrering og sammenvoksning skal du lave et lille kighul ved hjælp af din pegefinger og tommelfinger ved at rulle dem sammen, som du ville gøre for at lave en knytnæve. Nu gennem dette kiggehul se på din skærm, kan du se på en meget lille del af skærmen gennem kigthullet. Du bliver nødt til at scanne skærmen fra øverste venstre mod højre og bevæge sig lidt ned efter at have dækket skærmens bredde og gentaget den samme proces, indtil du er færdig med at scanne hele skærmen.

Konvolution af et billede med en kerne fungerer på en lignende måde. Kernen eller filteret, som er en lille matrix af værdier, fungerer som keglehullet, der udfører en matematisk operation på billedet, mens du scanner billedet på en lignende måde. For eksempel hvis inputbilledet og filteret ser ud -

Filteret (grønt) glider over det indlagte billede (blå) en pixel ad gangen, der starter fra øverste venstre hjørne. Filtret multiplicerer sine egne værdier med de overlappende værdier på billedet, mens det glider over det og tilføjer dem alle op for at udsende en enkelt værdi for hver overlapning.

Kilde: Anvendt dyb læring

I ovenstående animation svarer værdien 4 (øverst til venstre) i outputmatrixen (rød) til filteroverlapningen øverst til venstre på billedet, der beregnes som -

Tilsvarende beregner vi de andre værdier i outputmatrixen. Bemærk, at værdien øverst til venstre, som er 4, i outputmatrixen kun afhænger af de 9 værdier (3x3) øverst til venstre i den originale billedmatrix. Det ændres ikke, selvom resten af ​​værdierne i billedet ændres. Dette er det modtagelige felt for denne outputværdi eller neuron i vores CNN. Hver værdi i vores outputmatrix er kun følsom over for et bestemt område i vores originale billede. Rul op for at se det overlappende neurons modtagelige feltdiagram, bemærker du ligheden?
Hver tilstødende værdi (neuron) i outputmatrixen har overlappende modtagelige felter som vores røde, blå og gule neuroner på billedet tidligere. Animationen nedenfor giver dig en bedre fornemmelse af, hvad der sker i sammenvikling.

OK, så det er den grundlæggende idé ved konklusionen. Hvad opnår denne handling på billedet? Hvad er output, hvis dette?

Lad os sige, at vi har et håndskrevet cifferbillede som det nedenfor. Vi ønsker kun at udtrække de vandrette kanter eller linjer fra billedet. Vi bruger et filter eller en kerne, som, når de er indviklet med det originale billede, dæmper alle de områder, der ikke har vandrette kanter.

Bemærk, hvordan outputbilledet kun har den vandrette hvide linje, og resten af ​​billedet er dæmpet. Kernen her er som en kigshul, som er en vandret spalte. Tilsvarende for en lodret kantekstraktor er filteret som en lodret keglehul og udgangen ser ud -

Funktionsekstraktion: Ikke-linearitet

Hvis du går tilbage og læser om et grundlæggende neuralt netværk, vil du bemærke, at hvert på hinanden følgende lag i et neuralt netværk er en lineær kombination af dens input. Indførelsen af ​​ikke-linearitet eller en aktiveringsfunktion gør det muligt for os at klassificere vores data, selvom de ikke er adskilt lineært.

Venstre: Lineært adskillelig vs. højre: Ikke lineært adskillelig

Hvilket fører os til en anden vigtig operation - ikke-linearitet eller aktivering. Efter at have skubbet vores filter over det originale billede, sendes output, som vi får, gennem en anden matematisk funktion, der kaldes en aktiveringsfunktion. Aktiveringsfunktionen, der normalt bruges i de fleste tilfælde i ekstraktion af CNN-funktion er ReLU, der står for Rectified Linear Unit. Hvilket ganske enkelt konverterer alle de negative værdier til 0 og holder de positive værdier de samme.

Efter at have sendt outputene gennem ReLU-funktioner, ser de ud som nedenfor -

Så for et enkelt billede ved at konvolvere det med flere filtre kan vi få flere outputbilleder. Til det håndskrevne ciffer her anvendte vi en vandret kantekstraktor og en lodret kantekstraktor og fik to outputbilleder. Vi kan anvende flere andre filtre til at generere flere sådanne outputbilleder, der også kaldes funktionskort.

Funktionsekstraktion: Pooling

Efter et konvolutionslag, når du først har fået funktionskortene, er det almindeligt at tilføje en pooling eller et sub-samplinglag i CNN-lag. Pooling reducerer dimensionaliteten for at reducere antallet af parametre og beregning i netværket. Dette forkorter træningstiden og kontrollerer overdreven tilpasning.

Den hyppigste type pooling er max pooling, der tager den maksimale værdi i et specificeret vindue. Vinduerne ligner vores tidligere kerne-glidefunktion. Dette formindsker kortets størrelse, samtidig med at de vigtige oplysninger bevares.

Max pooling Kilde: CS231

2) Klassificering

Okay, så nu har vi alle de stykker, der kræves for at opbygge et CNN. Konvolution, ReLU og pooling. Outputet fra max pooling føres ind i klassificeren, vi diskuterede indledningsvis, og som normalt er et flerlags perceptron a.k.a fuldt tilsluttet lag. Normalt bruges disse lag i CNN mere end én gang, dvs. Convolution -> ReLU -> Max-Pool -> Convolution -> ReLU -> Max-Pool og så videre. Vi diskuterer ikke det fuldt forbundne lag i denne artikel. Du kan læse denne artikel for en grundlæggende intuitiv forståelse af det fuldt forbundne lag.

Afsluttende bemærkninger

CNN er en meget kraftig algoritme, der er vidt brugt til billedklassificering og objektdetektion. Den hierarkiske struktur og kraftfulde egenskaber til ekstraktion fra et billede gør CNN til en meget robust algoritme til forskellige billed- og objektgenkendelsesopgaver. Der er adskillige forskellige arkitekturer af indviklede neurale netværk som LeNet, AlexNet, ZFNet, GoogleNet, VGGNet, ResNet osv. Men den grundlæggende idé bag disse arkitekturer forbliver den samme.

LeNet-arkitektur

I denne artikel har jeg ikke behandlet træningen af ​​disse netværk og kerner. Træning af disse netværk ligner træning af flere lag perceptron ved hjælp af tilbagespredning, men matematikken er lidt mere involveret på grund af konvolutionsoperationerne.

Jeg har berørt meget grundlæggende i CNN-arkitekturen og dens byggesten og dens inspiration. Forhåbentlig har det lidt afmystificeret og lettet din forståelse af CNN-arkitekturerne, som ovenstående. Denne artikel er beregnet til at vække nysgerrighed til at udforske og lære videre, ikke fordi din chef har bedt dig om at lære om CNN, fordi læring er sjovt!

Kilde: xkcd.com

Anbefalinger og referencer

  • On Intelligence af Jeff Hawkins
  • Vent men hvorfor artikel om Neuralink og hjerne
  • Konvolutional neurale net til visuel genkendelse
  • En sjov video at se på 3D-simulering af neurale netværk

X8 sigter mod at organisere og opbygge et samfund for AI, der ikke kun er open source, men også ser på de etiske og politiske aspekter af det. Vi offentliggør en artikel om sådanne forenklede AI-koncepter hver fredag. Hvis du kunne lide dette eller har nogle spørgsmål om feedback eller opfølgning, skal du kommentere nedenfor.

Tak for læsning!