A convolutional neural network ( CNN ) är en speciell arkitektur av artificiella neurala nätverk som föreslagits av Jan LeCun 1988 [1] och som syftar till effektiv mönsterigenkänning [2] , är en del av djupinlärningsteknologier ( deep learning ). Använder vissa funktioner i den visuella cortex [3] , där de så kallade enkla cellerna upptäcktes, som reagerar på raka linjer i olika vinklar, och komplexa celler, vars reaktion är associerad med aktiveringen av en viss uppsättning enkla celler. Således är idén med faltningsneurala nätverk att interfoliera faltningsskikt ( eng. convolution layers ) och subsampling lager ( eng. subsampling layers eller eng. pooling layers , subsampling layers). Nätverkets struktur är enkelriktad (utan återkoppling), i grunden flerskiktad. För träning används standardmetoder, oftast backpropagation-metoden . Aktiveringsfunktionen hos neuroner (överföringsfunktion) är vilken som helst, efter forskarens val.
Namnet på nätverksarkitekturen berodde på närvaron av faltningsoperationen , vars essens är att varje bildfragment multipliceras med faltningsmatrisen (kärnan) element för element, och resultatet summeras och skrivs till en liknande position i utdatabilden.
Driften av ett konvolutionellt neuralt nätverk tolkas vanligtvis som att man flyttar från specifika egenskaper hos en bild till mer abstrakta detaljer, och vidare till ännu mer abstrakta detaljer upp till extraktion av begrepp på hög nivå. Samtidigt justerar och utvecklar nätverket den nödvändiga hierarkin av abstrakta funktioner (sekvenser av funktionskartor) av sig självt, filtrerar oviktiga detaljer och framhäver det väsentliga.
En sådan tolkning är ganska metaforisk eller illustrativ. Faktum är att "funktionerna" som produceras av ett komplext nätverk är så oklara och svåra att tolka att de i praktiken inte ens försöker förstå essensen av dessa funktioner, än mindre "korrekta", utan istället för att förbättra igenkänningsresultaten, de förändrar nätverkets struktur och arkitektur. Att ignorera några signifikanta fenomen av systemet kan således indikera att antingen det inte finns tillräckligt med data för träning eller så har nätverksstrukturen brister, och systemet kan inte utveckla effektiva funktioner för dessa fenomen.
I en vanlig perceptron , som är ett fullt anslutet neuralt nätverk, är varje neuron ansluten till alla neuroner i det föregående lagret, och varje anslutning har sin egen personliga viktkoefficient. I ett faltningsneuralt nätverk använder faltningsoperationen endast en begränsad viktmatris av liten storlek, som "flyttas" över hela det bearbetade lagret (i början, direkt över ingångsbilden), och bildar efter varje skift en aktiveringssignal för neuronen i nästa lager med en liknande position. Det vill säga, samma viktmatris används för olika neuroner i utgångsskiktet, vilket också kallas faltningskärnan . Det tolkas som en grafisk kodning av någon funktion, till exempel närvaron av en sned linje i en viss vinkel. Sedan visar nästa lager, som är ett resultat av faltningsoperationen med en sådan viktmatris, närvaron av denna egenskap i det bearbetade lagret och dess koordinater, vilket bildar den så kallade egenskapskartan . Naturligtvis finns det i ett faltningsneuralt nätverk inte en uppsättning vikter, utan en hel skala som kodar bildelement (till exempel linjer och bågar i olika vinklar). Samtidigt fastställs inte sådana faltningskärnor av forskaren i förväg, utan bildas självständigt genom att träna nätverket med den klassiska metoden för felbackpropagation . Att passera varje uppsättning vikter genererar sin egen funktionskartinstans, vilket gör det neurala nätverket flerkanaligt (många oberoende funktionskartor på ett lager). Det bör också noteras att när man itererar över ett lager med en viktmatris, flyttas det vanligtvis inte med ett helt steg (storleken på denna matris), utan med ett litet avstånd. Så, till exempel, när dimensionen på viktmatrisen är 5 × 5, skiftas den med en eller två neuroner (pixlar) istället för fem, för att inte "gå över" den önskade funktionen.
Delsamplingsoperationen ( eng. subsampling , eng. pooling , även översatt som "subsampling operation" eller pooling operation), utför en minskning av dimensionen av de genererade egenskapskartorna. I denna nätverksarkitektur anses det att information om närvaron av den önskade funktionen är viktigare än den exakta kunskapen om dess koordinater, därför väljs den maximala från flera närliggande neuroner på funktionskartan och tas som en neuron av den komprimerade egenskapskartan av en mindre dimension. På grund av denna operation, förutom att påskynda ytterligare beräkningar, blir nätverket mer oföränderligt i förhållande till den ingående bildens skala.
Betrakta den typiska strukturen för ett konvolutionellt neuralt nätverk mer detaljerat. Nätverket består av ett stort antal lager. Efter det initiala lagret (ingångsbilden) passerar signalen genom en serie faltningsskikt, i vilka själva faltningen och subsampling (poolning) alternerar. Omväxlande lager låter dig göra "funktionskartor" från funktionskartor, på varje nästa lager minskar kartan i storlek, men antalet kanaler ökar. I praktiken innebär detta förmågan att känna igen komplexa funktionshierarkier. Vanligtvis, efter att ha passerat genom flera lager, degenererar kartan till en vektor eller till och med en skalär, men det finns hundratals sådana kartor. Vid utgången av nätverkets faltningslager installeras dessutom flera lager av ett fullt anslutet neuralt nätverk (perceptron), till vars ingång kartor för slutfunktioner matas.
Konvolutionslagret är huvudblocket i ett faltningsneuralt nätverk . Faltningsskiktet inkluderar sitt eget filter för varje kanal, vars faltningskärna bearbetar det föregående lagret fragment för fragment (summa resultaten av den elementmässiga produkten för varje fragment). Vikterna för faltningskärnan (liten matris) är okända och ställs in under träning.
En egenskap hos faltningsskiktet är ett relativt litet antal parametrar som ställs in under träning. Så till exempel, om originalbilden har en dimension på 100x100 pixlar i tre kanaler (vilket betyder 30 000 ingångsneuroner), och det faltningsskiktet använder filter med en 3x3 pixelkärna med en utgång på 6 kanaler, så bestäms endast 9 kärnvikter i inlärningsprocessen, dock för alla kombinationer av kanaler, det vill säga 9×3×6=162, i detta fall kräver detta lager att man endast hittar 162 parametrar, vilket är betydligt mindre än antalet nödvändiga parametrar för en helt ansluten neuralt nätverk.
Det skalära resultatet av varje faltning faller på aktiveringsfunktionen , som är en sorts icke-linjär funktion. Aktiveringsskiktet kombineras vanligtvis logiskt med faltningsskiktet (det anses att aktiveringsfunktionen är inbyggd i faltningsskiktet). Den icke-linjära funktionen kan vara vilken som helst efter forskarens val, traditionellt har funktioner som hyperbolisk tangent ( , ) eller sigmoid ( ) använts för detta. På 2000-talet föreslogs dock en ny aktiveringsfunktion [4] och studerades [5] - ReLU (förkortning för engelska rectified linear unit ), som gjorde det möjligt att avsevärt snabba upp inlärningsprocessen och samtidigt förenkla beräkningar (p.g.a. enkelheten i själva funktionen) [6] , vilket betyder blocket av linjär likriktning som beräknar funktionen . Det vill säga, i huvudsak är detta en operation för att skära bort den negativa delen av ett skalärt värde. Från och med 2017 är den här funktionen och dess modifieringar (Noisy ReLU, Leaky ReLU och andra) de mest använda aktiveringsfunktionerna i djupa neurala nätverk, särskilt i konvolutionella. Det finns en metod för att bestämma det optimala antalet linjära likriktarblock [7] .
Poolningsskiktet (annars subsampling, subsampling) är en icke-linjär komprimering av en funktionskarta, medan en grupp av pixlar (vanligtvis 2 × 2 i storlek) komprimeras till en pixel och genomgår en icke-linjär transformation. I det här fallet används den maximala funktionen oftast. Transformationerna påverkar icke-överlappande rektanglar eller kvadrater, som var och en komprimeras till en pixel, och pixeln med maximalt värde väljs. Poolningsoperationen kan avsevärt minska bildens rumsliga volym. Poolning tolkas enligt följande: om vissa egenskaper redan identifierades under den tidigare faltningsoperationen, behövs inte längre en sådan detaljerad bild för vidare bearbetning, och den komprimeras till en mindre detaljerad. Att filtrera bort onödiga detaljer hjälper dessutom att inte träna om . Poolningsskiktet infogas vanligtvis efter faltningsskiktet före nästa faltningsskikt.
Förutom pooling med en maximal funktion kan andra funktioner användas - till exempel medelvärde eller L2-normalisering . Men praxis har visat fördelarna med att poola med maximal funktion, vilket ingår i typiska system.
För att mer aggressivt minska storleken på de resulterande representationerna blir idéerna om att använda mindre filter [8] eller fullständig eliminering av poolande lager allt mer populära . [9]
Efter flera omgångar av bildfalsning och poolningskomprimering byggs systemet om från ett specifikt högupplöst pixelrutnät till mer abstrakta funktionskartor, som regel, på varje efterföljande lager ökar antalet kanaler och bilddimensionen i varje kanal minskar . I slutändan är det kvar en stor uppsättning kanaler som lagrar en liten mängd data (även en enda parameter), som tolkas som de mest abstrakta begreppen som avslöjas från den ursprungliga bilden.
Dessa data kombineras och överförs till ett konventionellt fullt anslutet neuralt nätverk, som också kan bestå av flera lager. Samtidigt förlorar helt anslutna lager redan den rumsliga strukturen av pixlar och har en relativt liten dimension (i förhållande till antalet pixlar i originalbilden).
Det enklaste och mest populära sättet att lära sig är metoden att lära sig med en lärare (på märkta data) - metoden för bakåtpropagation av ett fel och dess modifieringar. Men det finns också ett antal oövervakade inlärningstekniker för ett konvolutionerande nätverk. Till exempel kan faltningsoperationsfilter tränas separat och autonomt genom att mata dem slumpmässigt utskurna bitar av de ursprungliga bilderna av träningsprovet och använda alla kända oövervakade inlärningsalgoritmer för dem (till exempel en auto- associator eller till och med k-means- metoden ) - denna teknik är känd som lappbaserad träning . Följaktligen kommer nästa lager av nätverksfalsningen att tränas på delar från det redan tränade första lagret av nätverket. Det är också möjligt att kombinera ett konvolutionellt neuralt nätverk med andra djupinlärningsteknologier . Till exempel, för att göra en faltningsautomatisk associator [10] , en faltningsversion av kaskadbegränsade Boltzmann-maskiner som lär sig med hjälp av en probabilistisk matematisk apparat [11] , en faltningsversion av sparse kodning ( eng. sparse coding ), som kallas dekonvolutionella nätverk ( "distribuera" nätverk) [12] .
För att förbättra nätverkets prestanda, öka dess stabilitet och förhindra överanpassning , används också ett undantag (bortfall) - en subnet-träningsmetod med utstötning av slumpmässiga enstaka neuroner.
Typer av artificiella neurala nätverk | |
---|---|
|
Maskininlärning och datautvinning | |
---|---|
Uppgifter | |
Att lära sig med en lärare | |
klusteranalys | |
Dimensionalitetsreduktion | |
Strukturell prognos | |
Anomali upptäckt | |
Grafisk probabilistiska modeller | |
Neurala nätverk | |
Förstärkningsinlärning |
|
Teori | |
Tidskrifter och konferenser |
|