stub Hvad er CNN'er (Convolutional Neural Networks)? - Unite.AI
Følg os

AI 101

Hvad er CNN'er (Convolutional Neural Networks)?

mm
Opdateret on

Måske har du undret dig over, hvordan Facebook eller Instagram er i stand til automatisk at genkende ansigter i et billede, eller hvordan Google lader dig søge på nettet efter lignende billeder blot ved at uploade et billede af dit eget. Disse funktioner er eksempler på computervision, og de er drevet af konvolutionelle neurale netværk (CNN'er). Men hvad er konvolutionelle neurale netværk præcist? Lad os tage et dybt dyk ned i arkitekturen på et CNN og forstå, hvordan de fungerer.

Hvad er neurale netværk?

Før vi begynder at tale om konvolutionelle neurale netværk, lad os tage et øjeblik på at definere regulære neurale netværk. Der er en anden artikel om emnet tilgængelige neurale netværk, så vi vil ikke gå for dybt ind i dem her. Men for kort at definere dem er de beregningsmodeller inspireret af den menneskelige hjerne. Et neuralt netværk fungerer ved at tage data ind og manipulere dataene ved at justere "vægte", som er antagelser om, hvordan inputfunktionerne er relateret til hinanden og objektets klasse. Efterhånden som netværket trænes, justeres værdierne af vægtene, og de vil forhåbentlig konvergere på vægte, der nøjagtigt fanger forholdet mellem funktioner.

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

Hvad er Convolution Neural Networks (CNN'er)?

Hvad er de "viklinger", der sker i et foldet neuralt netværk? En foldning er en matematisk operation, der skaber et sæt vægte, der i det væsentlige skaber en repræsentation af dele af billedet. Dette sæt vægte omtales som en kerne eller et filter. Filteret, der oprettes, er mindre end hele inputbilledet og dækker kun en undersektion af billedet. Værdierne i filteret ganges 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 dette på er at forestille sig en murstensvæg, hvor murstenene repræsenterer pixels i inputbilledet. Et "vindue" skydes frem og tilbage langs væggen, som er filteret. De klodser, der kan ses gennem vinduet, er pixels, der har deres værdi ganget med værdierne i filteret. Af denne grund omtales denne metode til at skabe vægte med et filter ofte som "skydevinduer"-teknikken.

Outputtet fra filtrene, der flyttes rundt i hele inputbilledet, er et todimensionelt array, der repræsenterer hele billedet. Dette array kaldes a "funktionskort".

Hvorfor viklinger er essentielle

Hvad er formålet med at skabe viklinger overhovedet? Konvolutioner er nødvendige, fordi et neuralt netværk skal være i stand til at fortolke pixels i et billede som numeriske værdier. Funktionen af ​​foldningslagene er at konvertere billedet til numeriske værdier, som det neurale netværk kan fortolke og derefter udtrække relevante mønstre fra. Filtrenes opgave i foldningsnetværket er at skabe et todimensionelt array af værdier, der kan overføres til de senere lag af et neuralt netværk, dem der lærer mønstrene i billedet.

Filtre og kanaler

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

CNN'er bruger ikke kun et filter til at lære mønstre fra inputbillederne. Der bruges flere filtre, da de forskellige arrays skabt af de forskellige filtre fører til en mere kompleks, rig repræsentation af inputbilledet. Almindelige antal filtre for CNN'er er 32, 64, 128 og 512. Jo flere filtre der er, jo flere muligheder har CNN for at undersøge inputdataene og lære af dem.

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ørke termer. Når billederne er farvebilleder, tager CNN ikke kun højde for mørke og lys, men det skal også tage højde for de tre forskellige farvekanaler - rød, grøn og blå. I dette tilfælde har filtrene 3 kanaler, ligesom billedet selv gør. Antallet af kanaler, som et filter har, omtales som dets dybde, og antallet af kanaler i filteret skal svare til antallet af kanaler i billedet.

Convolutional Neural Network (CNN) arkitektur

Lad os tage et kig på den komplette arkitektur af et konvolutionelt neuralt netværk. Et foldningslag findes i begyndelsen af ​​hvert foldningsnetværk, da det er nødvendigt at transformere billeddataene til numeriske arrays. Konvolutionslag kan dog også komme efter andre foldningslag, hvilket betyder, at disse lag kan stables oven på hinanden. At have flere foldningslag betyder, at output fra ét lag kan gennemgå yderligere foldninger og grupperes sammen i relevante mønstre. I praksis betyder det, at når billeddataene fortsætter gennem de foldede lag, begynder netværket at "genkende" mere komplekse træk ved billedet.

De tidlige lag af et ConvNet er ansvarlige for at udtrække funktionerne på lavt niveau, såsom de pixels, der udgør simple linjer. Senere lag af ConvNet vil forbinde disse linjer sammen til former. Denne proces med at gå fra analyse på overfladeniveau til analyse på dybt niveau fortsætter, indtil ConvNet genkender komplekse former som dyr, menneskeansigter og biler.

Efter at dataene er gået gennem alle de foldede lag, fortsætter de ind i den tæt forbundne del af CNN. De tæt forbundne lag er, hvordan et traditionelt feed-forward neuralt netværk ser ud, en række noder opstillet i lag, der er forbundet med hinanden. Dataene fortsætter gennem disse tæt forbundne lag, som lærer de mønstre, der blev udtrukket af de foldede lag, og derved bliver netværket i stand til at genkende objekter.