Connect with us

AI 101

Hvad er CNNs (Convolutional Neural Networks)?

mm

Måske har du undret dig over, hvordan Facebook eller Instagram kan automatisk genkende ansigter på et billede, eller hvordan Google kan lade dig søge på webben efter lignende billeder ved blot at uploade et billede af dig selv. Disse funktioner er eksempler på computer vision, og de er drevet af convolutional neural networks (CNNs). Men hvad er convolutional neural networks nøjagtigt? Lad os dykke dybt ned i arkitekturen af en CNN og forstå, hvordan de fungerer.

Hvad er Neurale Netværk?

Før vi begynder at tale om convolutional neural networks, lad os tage et øjeblik til at definere et almindeligt neuralt netværk. Der er en anden artikel på dette emne, så vi vil ikke gå for dybt ind i det her. Men for at definere det kort er de computermæssige modeller inspireret af det menneskelige hjerte. Et neuralt netværk fungerer ved at tage imod data og manipulere data ved at justere “vægte”, som er antagelser om, hvordan inputfunktionerne er relateret til hinanden og objektets klasse. Da netværket trænes, justeres værdierne af vægtene, og de vil håbefuldt konvergere på vægte, der nøjagtigt fanger relationerne mellem funktionerne.

Dette er, hvordan et feed-forward neuralt netværk fungerer, og CNNs består af to halvdele: et feed-forward neuralt netværk og en gruppe convolutional lag.

Hvad er Convolution Neural Networks (CNNs)?

Hvad er de “konvolutioner”, der sker i et convolutional neuralt netværk? En konvolution er en matematisk operation, der opretter en sæt af vægte, som essentielt opretter en repræsentation af dele af billedet. Dette sæt af vægte kaldes en kernel eller filter. Filteret, der oprettes, er mindre end det hele inputbillede, og dækker kun en underafsnit af billedet. Værdierne i filteret multipliceres med værdierne i billedet. Filteret flyttes derefter over for at danne en repræsentation af en ny del af billedet, og processen gentages, indtil hele billedet er dækket.

En anden måde at tænke over dette er at forestille sig en mur af mursten, hvor murstenene repræsenterer pixelene i inputbilledet. Et “vindue” flyttes frem og tilbage langs muren, som er filteret. Murstenene, der kan ses gennem vinduet, er pixelerne, der har deres værdi multipliceret med værdierne inden for filteret. Af denne grund kaldes denne metode til at oprette vægte med et filter ofte for “sliding windows”-teknikken.

Udgangen fra filterne, der flyttes rundt om hele inputbilledet, er en to-dimensionel matrix, der repræsenterer hele billedet. Denne matrix kaldes en “feature map”.

Hvorfor Konvolutioner er Essentielle

Hvad er formålet med at oprette konvolutioner overhovedet? Konvolutioner er nødvendige, fordi et neuralt netværk skal kunne fortolke pixelene i et billede som numeriske værdier. Funktionen af de convolutional lag er at konvertere billedet til numeriske værdier, som det neurale netværk kan fortolke og derefter trække relevante mønstre ud af. Jobbet med filterne i det convolutional netværk er at oprette en to-dimensionel matrix af værdier, der kan overføres til de senere lag af et neuralt netværk, som vil lære mønstrene i billedet.

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 bruger ikke kun ét filter til at lære mønstre fra inputbillederne. Flere filter bruges, da de forskellige matricer, der oprettes af de forskellige filter, fører til en mere kompleks, rig repræsentation af inputbilledet. Almindelige antal filter for CNNs er 32, 64, 128 og 512. Jo flere filter, der er, jo flere muligheder har CNN for at undersøge inputdata og lære af det.

En CNN analyserer forskellene i pixelværdier for at bestemme grænserne for objekter. I et gråtonebillede ville CNN kun se på forskellene i sort og hvid, lys til mørk. Når billederne er farvebilleder, tager CNN ikke kun mørk og lys i betragtning, men den skal også tage de tre forskellige farvekanaler – rød, grøn og blå – i betragtning. I dette tilfælde har filterne 3 kanaler, ligesom billedet selv. Antallet af kanaler, et filter har, kaldes for dets dybde, og antallet af kanaler i filteret skal matche antallet af kanaler i billedet.

Convolutional Neural Network (CNN) Arkitektur

Lad os tage et kig på den komplette arkitektur af en convolutional neural network. Et convolutional lag findes i begyndelsen af hvert convolutional netværk, da det er nødvendigt at transformere billeddata til numeriske matricer. Men convolutional lag kan også komme efter andre convolutional lag, hvilket betyder, at disse lag kan stable på toppen af hinanden. At have flere convolutional lag betyder, at udgangene fra ét lag kan undergå yderligere konvolutioner og samles sammen i relevante mønstre. Praktisk set betyder det, at da billeddataene passerer gennem de convolutional lag, begynder netværket at “genkende” mere komplekse funktioner af billedet.

De tidlige lag af et ConvNet er ansvarlige for at trække de lavniveaufunktioner ud, såsom pixelerne, der udgør simple linjer. Senere lag af ConvNet vil samle disse linjer sammen til former. Denne proces med at gå fra overfladeanalyse til dybdeanalyse fortsætter, indtil ConvNet genkender komplekse former som dyr, menneskeansigter og biler.

Efter at dataene er passeret gennem alle de convolutional lag, går de ind i den tæt forbundne del af CNN. De tæt forbundne lag er, hvad et traditionelt feed-forward neuralt netværk ligner, en række noder anordnet i lag, der er forbundet til hinanden. Dataene passerer gennem disse tæt forbundne lag, som lærer mønstrene, der blev trukket ud af de convolutional lag, og på den måde bliver netværket i stand til at genkende objekter.

Blogger og programmør med specialer i Machine Learning og Deep Learning emner. Daniel håber at hjælpe andre med at bruge AI's kraft til sociale formål.