Grunnleggende AI

Hva er CNN (Convolutional Neural Networks)?

mm
Legg til Unite.AI blant dine foretrukne kilder på Google

Kanskje har du lurt på hvordan Facebook (META ) eller Instagram kan automatisk gjenkjenne ansikter i et bilde, eller hvordan Google (GOOGL ) lar deg søke etter lignende bilder ved å laste opp et bilde av din egen. Disse funksjonene er eksempler på datavisjon, og de er drevet av convolutional neural networks (CNNs). Men hva er egentlig convolutional neural networks? La oss dykke dypt inn i arkitekturen til en CNN og forstå hvordan de opererer.

Hva er Neurale Netverk?

Før vi begynner å snakke om convolutional neural networks, la oss ta et øyeblikk til å definere vanlige neurale netverk. Det finnes en annen artikkel om neurale netverk, så vi kommer ikke til å gå for dypt inn i dem her. Men for å definere dem kort, er de komputasjonelle modeller inspirert av menneskehjernen. Et neuralt netverk opererer ved å ta inn data og manipulere dataene ved å justere “vektene”, som er antagelser om hvordan innputt-egenskapene er relatert til hverandre og objektets klasse. Etterhvert som nettverket blir trent, blir vekttallene justert, og de vil håpefullt konvergere mot vekter som nøyaktig fanger relasjonene mellom egenskapene.

Dette er hvordan et feed-forward neuralt netverk opererer, og CNNs består av to halvdeler: et feed-forward neuralt netverk og en gruppe convolutional lag.

Hva er Convolution Neural Networks (CNNs)?

Hva er “konvolusjonene” som skjer i et convolutional neuralt netverk? En konvolusjon er en matematisk operasjon som skaper en sett med vekter, essensielt skapende en representasjon av deler av bildet. Dette settet med vekter kalles en kernel eller filter. Filteret som skapes er mindre enn hele innputtbildet, og dekker bare en undersekvens av bildet. Verdier i filteret multipliseres med verdier i bildet. Filteret flyttes deretter over for å danne en representasjon av en ny del av bildet, og prosessen gjentas til hele bildet er dekket.

En annen måte å tenke på dette er å forestille seg en mur av murstein, hvor mursteinene representerer pikslene i innputtbildet. Et “vindu” flyttes frem og tilbake langs muren, som er filteret. Mursteinene som er synlige gjennom vinduet er pikslene som får verdien multiplisert med verdiene i filteret. Av denne grunn kalles denne metoden for å skape vekter med et filter ofte “glidende vinduer”-teknikken.

Utdata fra filterene som flyttes rundt hele innputtbildet er en todimensjonal matrise som representerer hele bildet. Denne matrisen kalles en “egenskapskart”.

Hvorfor er Konvolusjoner Essensielle

Hva er formålet med å skape konvolusjoner? Konvolusjoner er nødvendige fordi et neuralt netverk må kunne tolke pikslene i et bilde som numeriske verdier. Funksjonen til de convolutionale lagene er å konvertere bildet til numeriske verdier som det neurale nettverket kan tolke og deretter trekke ut relevante mønster fra. Jobben til filterene i det convolutionale nettverket er å skape en todimensjonal matrise med verdier som kan overføres til de senere lagene i et neuralt netverk, som vil lære mønstrene i bildet.

Filter og Kanaler

Foto: cecebur via Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Convolutional_Neural_Network_NeuralNetworkFeatureLayers.gif)

CNNs bruker ikke bare ett filter for å lære mønster fra innputtbildene. Flere filter brukes, fordi de forskjellige matrisene som skapes av de forskjellige filterene fører til en mer kompleks, rik representasjon av innputtbildet. Vanlige antall filter for CNNs er 32, 64, 128 og 512. Jo flere filter det er, jo flere muligheter har CNN til å undersøke innputtdata og lære av det.

En CNN analyserer forskjellene i piksverdier for å bestemme grensene til objekter. I et gråskala-bilde vil CNN bare se på forskjellene i svart og hvit, lys til mørk. Når bildene er fargebilder, tar CNN ikke bare mørk og lys med i betraktning, men den må også ta de tre forskjellige fargekanalene – rød, grønn og blå – med i betraktning. I dette tilfelle har filterene 3 kanaler, akkurat som bildet selv. Antall kanaler et filter har, kalles dets dybde, og antall kanaler i filteret må matche antall kanaler i bildet.

Convolutional Neural Network (CNN) Arkitektur

La oss se på den fullstendige arkitekturen til en convolutional neural network. Et convolutionalt lag finnes i begynnelsen av hver convolutional network, fordi det er nødvendig å transformere bilde-data til numeriske matriser. Men convolutionale lag kan også komme etter andre convolutionale lag, noe som betyr at disse lagene kan stable på toppen av hverandre. Å ha flere convolutionale lag betyr at utdata fra ett lag kan undergå ytterligere konvolusjoner og grupperes sammen i relevante mønster. Praktisk talt betyr dette at når bilde-data går gjennom de convolutionale lagene, begynner nettverket å “gjenkjenne” mer komplekse egenskaper ved bildet.

De tidlige lagene i en ConvNet er ansvarlige for å trekke ut lav-nivå-egenskaper, som piksler som utgjør enkle linjer. Senere lag i ConvNet vil sammenføye disse linjene til former. Denne prosessen med å gå fra overflatenivå-analyse til dypt-nivå-analyse fortsetter til ConvNet gjenkjenner komplekse former som dyr, menneskeansikter og biler.

Etter at dataene har passert alle de convolutionale lagene, går de inn i den tett koblete delen av CNN. De tett koblete lagene er det som et tradisjonelt feed-forward neuralt netverk ligner, en rekke noder arrayet i lag som er koblet til hverandre. Dataene går gjennom disse tett koblete lagene, som lærer mønstrene som ble trukket ut av de convolutionale lagene, og på den måten blir nettverket i stand til å gjenkjenne objekter.

Blogger og programmerer med spesialområder i Machine Learning og Deep Learning emner. Daniel håper å hjelpe andre med å bruke kraften av AI for sosialt godt.