Lær om Konvolusjonelle Nevrale Nettverk (CNN): En komplett guide

Konvolusjonelle nevrale nettverk presenterer en mer fleksibel metode for å identifisere objekter og utføre bildeklassifisering.

Teknologien utvikler seg kontinuerlig. Kunstig intelligens (AI) og maskinlæring (ML) er begreper vi ofte hører.

Disse teknologiene anvendes i dag i nesten alle bransjer, fra markedsføring og e-handel til programvareutvikling, bank, finans og medisin.

AI og ML er omfattende områder, og det pågår arbeid for å utvide deres bruk for å løse mange konkrete problemer. Dette er grunnen til at det finnes mange underkategorier; ML er selv en underkategori av AI.

Konvolusjonelle nevrale nettverk er en gren av AI som har blitt svært populær i det siste.

I denne artikkelen skal vi utforske hva CNN er, hvordan de fungerer, og deres betydning i moderne tid.

La oss starte med det samme!

Hva er et konvolusjonelt nevralt nettverk?

Et konvolusjonelt nevralt nettverk (ConvNet eller CNN) er en type kunstig nevralt nettverk (ANN) som benytter dyplæringsalgoritmer for å analysere bilder, kategorisere visuelle elementer og utføre datasynsoppgaver.

CNN bruker lineær algebra, som for eksempel matrisemultiplikasjon, for å oppdage mønstre i et bilde. Disse prosessene krever komplekse beregninger, og dermed grafiske prosesseringsenheter (GPU-er) for å trene modellene.

Enkelt forklart bruker CNN dyplæringsalgoritmer for å behandle bilder som input og tilordne betydning i form av bias og vekter som kan læres, til forskjellige aspekter av bildet. Dette gjør at CNN kan differensiere mellom bilder eller kategorisere dem.

CNN’s: En kort historikk

Siden et konvolusjonelt nevralt nettverk er en form for kunstig nevralt nettverk, er det viktig å se litt nærmere på nevrale nettverk.

Innenfor databehandling er et nevralt nettverk en del av maskinlæring (ML) som bruker dyplæringsalgoritmer. Det er inspirert av koblingsmønstrene som finnes i nevroner i menneskehjernen. Kunstige nevrale nettverk er også inspirert av hvordan den visuelle korteks er organisert.

Forskjellige typer nevrale nettverk, eller kunstige nevrale nettverk (ANN), brukes til ulike formål. Et av dem er CNN, som brukes til bildegjenkjenning og -klassifisering, med mer. Det ble introdusert av en postdoktor, Yann LeCun, på 1980-tallet.

Den tidlige versjonen av CNN – LeNet, oppkalt etter LeCun – kunne gjenkjenne håndskrevne tall. Den ble deretter brukt i bank- og posttjenester for å lese tall på sjekker og postnumre skrevet på konvolutter.

Denne tidlige versjonen manglet imidlertid skalerbarhet. Derfor ble ikke CNN mye brukt innen kunstig intelligens og datasyn. Det krevde også store datamengder og betydelige beregningsressurser for å fungere effektivt for større bilder.

I 2012 introduserte AlexNet dyplæring ved hjelp av nevrale nettverk med flere lag. Rundt denne tiden ble teknologien forbedret, og store datasett og betydelige databehandlingsressurser ble tilgjengelige, noe som muliggjorde opprettelsen av komplekse CNN-er som effektivt kunne utføre datasynsoppgaver.

Lag i et CNN

La oss se på de forskjellige lagene i et CNN. Flere lag i et CNN øker kompleksiteten og gjør det i stand til å oppdage flere aspekter eller områder av et bilde. Det starter med en enkel funksjon og blir etter hvert i stand til å oppdage komplekse funksjoner som objektets form og større elementer, til det endelig kan gjenkjenne hele bildet.

Konvolusjonslag

Det første laget i et CNN er konvolusjonslaget. Det er CNNs hovedbyggestein, der de fleste beregningene gjøres. Det trenger få komponenter, som for eksempel input, et funksjonskart og et filter.

Et CNN kan ha flere konvolusjonslag. Dette gjør CNN-strukturen hierarkisk, siden de påfølgende lagene kan visualisere piksler innenfor tidligere lags mottakelige felt. Deretter transformerer konvolusjonslagene det gitte bildet til numeriske verdier og lar nettverket forstå og trekke ut verdifulle mønstre.

Sammenslåingslag

Sammenslåingslag brukes for å redusere dimensjoner og kalles nedsampling. Det reduserer parameterne som brukes i input. Sammenslåingsoperasjonen kan flytte et filter over hele input, på samme måte som konvolusjonslaget, men det mangler vekter. Her bruker filteret en felles funksjon på de numeriske verdiene i det mottakelige feltet for å fylle ut resultatmatrisen.

Det finnes to typer sammenslåing:

  • Gjennomsnittlig sammenslåing: Gjennomsnittsverdien beregnes i det mottakelige feltet filteret sveiper over input for å sende til outputmatrisen.
  • Maks sammenslåing: Den velger pikselen med maksimal verdi og sender den til outputmatrisen mens filteret sveiper over input. Maks sammenslåing brukes oftere enn gjennomsnittlig sammenslåing.

Selv om en del data går tapt ved sammenslåing, gir det fortsatt mange fordeler for CNN. Det bidrar til å redusere risikoen for overmontering og kompleksitet, samtidig som effektiviteten forbedres. Det forbedrer også CNNs stabilitet.

Fullt tilkoblet (FC) lag

Som navnet antyder, er alle nodene i et outputlag direkte koblet til forrige lags node i et fullstendig tilkoblet lag. Det klassifiserer et bilde basert på de utpakkede funksjonene fra tidligere lag og deres filtre.

FC-lag bruker vanligvis en softmax-aktiveringsfunksjon for å klassifisere input riktig, i stedet for ReLu-funksjoner (som i tilfellet med sammenslåing og konvolusjonslag). Dette bidrar til å produsere en sannsynlighet på enten 0 eller 1.

Hvordan fungerer CNN-er?

Et konvolusjonelt nevralt nettverk består av mange lag, noen ganger hundrevis av lag. Disse lagene lærer å identifisere ulike funksjoner i et gitt bilde.

Selv om CNN-er er nevrale nettverk, skiller arkitekturen seg fra et vanlig ANN.

Et vanlig ANN sender en input gjennom mange skjulte lag for å transformere den. Hvert lag består av et sett med kunstige nevroner og er fullstendig koblet til hver nevron i samme lag. Til slutt er det et fullt tilkoblet lag eller outputlaget for å vise resultatet.

Et CNN organiserer derimot lagene i tre dimensjoner – bredde, dybde og høyde. Her kobles et lags nevroner bare til nevroner i en liten region, i stedet for å forholde seg til hver av dem i neste lag. Til slutt er det endelige resultatet representert med en enkelt vektor med en sannsynlighetsscore, og har bare dybdedimensjonen.

Du lurer kanskje på hva «konvolusjon» betyr i et CNN.

Konvolusjon refererer til en matematisk operasjon der to datasett slås sammen. I et CNN brukes konvolusjonskonseptet på input for å sende ut et funksjonskart ved å filtrere informasjonen.

Dette leder oss til noen av de viktigste konseptene og begrepene som brukes i CNN.

  • Filter: Også kjent som en funksjonsdetektor eller kjerne, kan et filter ha en bestemt dimensjon, for eksempel 3×3. Det går over et inputbilde for å utføre matrisemultiplikasjon for hvert element for å bruke konvolusjon. Å bruke filtre på hvert treningsbilde med varierende oppløsning, pluss output fra det konvolverete bildet, vil fungere som input for det påfølgende laget.
  • Polstring: Det brukes for å utvide en inputmatrise til matrisens kantlinjer ved å sette inn falske piksler. Dette gjøres for å motvirke det faktum at konvolusjon reduserer matrisestørrelsen. For eksempel kan en 9×9-matrise bli til en 3×3-matrise etter filtrering.
  • Skridt: Hvis du vil ha en output som er mindre enn inputen din, kan du bruke skridt. Dette lar deg hoppe over visse områder mens filteret glir over bildet. Ved å hoppe over to eller tre piksler, kan du produsere et mer effektivt nettverk ved å redusere romlig oppløsning.
  • Vekter og bias: CNN-er har vekter og bias i nevronene. En modell kan lære disse verdiene under treningen, og verdiene forblir de samme gjennom et gitt lag for alle nevroner. Dette innebærer at hver skjult nevron oppdager de samme funksjonene i forskjellige områder av et bilde. Dermed blir nettverket mer tolerant når objekter oversettes i et gitt bilde.
  • ReLU: Dette står for Rectified Linear Unit (ReLu) og brukes for mer effektiv og raskere trening. Den kartlegger negative verdier til 0 og opprettholder positive verdier. Det kalles også aktivering, siden nettverket bare bærer de aktiverte bildefunksjonene inn i det påfølgende laget.
  • Mottakelig felt: I et nevralt nettverk mottar hvert nevron input fra ulike steder fra forrige lag. I konvolusjonslagene mottar hvert nevron input fra kun et begrenset område av det forrige laget, som kalles det mottakelige feltet til nevronet. Når det gjelder FC-laget, er hele det forrige laget det mottakelige feltet.

I reelle beregningsoppgaver utføres konvolusjon vanligvis i et 3D-bilde, som krever et 3D-filter.

Når vi kommer tilbake til CNN, består det av ulike deler eller nodelag. Hvert nodelag har en terskel og vekt, og er koblet til et annet. Når terskelgrensen overskrides, sendes data til neste lag i nettverket.

Disse lagene kan utføre operasjoner for å endre dataene for å lære relevante funksjoner. Disse operasjonene gjentas også i hundrevis av lag som fortsetter å lære å oppdage andre funksjoner i et bilde.

Delene i et CNN er:

  • Et inputlag: Dette er der inputen tas, for eksempel et bilde. Det vil være et 3D-objekt med en definert høyde, bredde og dybde.
  • Ett eller flere skjulte lag eller funksjonsuttrekksfase: Disse lagene kan være et konvolusjonslag, et sammenslåingslag og et fullt tilkoblet lag.
  • Et outputlag: Her vises resultatet.

Når bildet sendes gjennom konvolusjonslaget, forvandles det til et funksjonskart eller aktiveringskart. Etter at inputen er konvolvert, konvolverer lagene bildet og sender resultatet til det påfølgende laget.

Et CNN vil utføre mange konvolusjons- og sammenslåingsteknikker for å oppdage funksjonene i uttrekksfasen. For eksempel, hvis du legger inn et bilde av en katt, vil CNN gjenkjenne de fire bena, fargen, de to øynene osv.

Deretter vil fullt tilkoblede lag i et CNN fungere som en klassifisering av de utpakkede funksjonene. Basert på hva dyplæringsalgoritmen har spådd om bildet, vil lagene gi resultatet.

Fordeler med CNN

Høyere nøyaktighet

CNN gir høyere nøyaktighet enn vanlige nevrale nettverk som ikke bruker konvolusjon. CNN-er er nyttige, spesielt når oppgaven involverer mye data, video- og bildegjenkjenning osv. De gir svært nøyaktige resultater og prediksjoner, og derfor øker bruken av dem i ulike sektorer.

Beregningseffektivitet

CNN gir et høyere nivå av beregningseffektivitet sammenlignet med andre vanlige nevrale nettverk. Dette skyldes bruken av konvolusjonsprosessen. De bruker også dimensjonsreduksjon og parameterdeling for å gjøre modellene raskere og enklere å implementere. Disse teknikkene kan også optimaliseres for å fungere på ulike enheter, enten det er smarttelefonen eller en bærbar PC.

Funksjonsuttrekk

CNN kan enkelt lære et bildes funksjoner uten å kreve manuell konstruksjon. Du kan bruke forhåndstrente CNN-er og administrere vektene ved å mate data til dem når du arbeider med en ny oppgave, og CNN vil tilpasse seg den sømløst.

Anvendelser av CNN

CNN brukes i ulike bransjer i mange sammenhenger. Noen av de reelle anvendelsene til CNN inkluderer:

Bildeklassifisering

CNN-er brukes mye til bildeklassifisering. Disse kan gjenkjenne viktige funksjoner og identifisere objekter i et gitt bilde. Derfor brukes de i sektorer som helsevesenet, spesielt MR-undersøkelser. I tillegg brukes denne teknologien til gjenkjenning av håndskrevne tall, som var en av de tidligste anvendelsene for CNN innen datasyn.

Objektdeteksjon

CNN kan oppdage objekter i bilder i sanntid, og også merke og klassifisere dem. Denne teknikken brukes derfor mye i automatiserte kjøretøy. Den gjør det også mulig for smarthus og fotgjengere å gjenkjenne eieren av et kjøretøy ved hjelp av ansiktsgjenkjenning. Den brukes også i AI-drevne overvåkningssystemer for å oppdage og merke objekter.

Audiovisuell matching

CNN hjelper til med audiovisuell matching og forbedrer videostrømmingsplattformer som Netflix, YouTube osv. Det hjelper også med å oppfylle brukerforespørsler som «kjærlighetssanger av Elton John».

Talegjenkjenning

I tillegg til bilder er CNN nyttig i naturlig språkbehandling (NLP) og talegjenkjenning. Et konkret eksempel på dette er Google, som bruker CNN i sitt talegjenkjenningssystem.

Re-konstruksjon av objekter

CNN kan brukes til 3D-modellering av et ekte objekt i et digitalt miljø. Det er også mulig for CNN-modeller å lage en 3D-ansiktsmodell ved hjelp av et bilde. I tillegg er CNN nyttig for å konstruere digitale tvillinger innen bioteknologi, produksjon, bioteknologi og arkitektur.

CNN brukes i ulike sektorer, som:

  • Helsevesenet: Datasyn kan brukes innen radiologi for å hjelpe leger med å oppdage kreftsvulster mer effektivt hos en person.
  • Landbruk: Nettverkene kan bruke bilder fra kunstige satellitter som LSAT og bruke disse dataene til å klassifisere fruktbare landområder. Dette bidrar også til å forutsi fruktbarhetsnivået i landet og utvikle en effektiv strategi for å maksimere avkastningen.
  • Markedsføring: Sosiale medier-applikasjoner kan foreslå en person i et bilde som er lagt ut på noens profil. Dette hjelper med å merke personer i fotoalbumene dine.
  • Detaljhandel: E-handelsplattformer kan bruke visuelt søk for å hjelpe merkevarer med å anbefale relevante varer som målgruppene ønsker å kjøpe.
  • Bilindustri: CNN brukes i biler for å forbedre sikkerheten for passasjerer og sjåfører. Dette gjøres ved hjelp av funksjoner som filgjenkjenning, objektgjenkjenning, bildeklassifisering osv. Dette bidrar også til å fremme utviklingen av selvkjørende biler.

Ressurser for å lære CNN

Coursera:

Coursera tilbyr dette kurset om CNN som du kan vurdere å ta. Kurset lærer deg hvordan datasyn har utviklet seg over tid, og noen av anvendelsene for CNN i moderne tid.

Amazon:

Du kan lese disse bøkene og forelesningene for å lære mer om CNN:

  • Nevrale nettverk og dyplæring: Denne boken dekker modeller, algoritmer og teorien om dyplæring og nevrale nettverk.
  • En guide til konvolusjonelle nevrale nettverk for datasyn: Denne boken lærer deg om anvendelsene av CNN og deres konsepter.
  • Praktiske konvolusjonelle nevrale nettverk med TensorFlow: Du kan løse ulike problemer innen datasyn ved hjelp av Python og TensorFlow med denne boken.
  • Avansert anvendt dyplæring: Denne boken hjelper deg med å forstå CNN, dyplæring og deres avanserte anvendelser, inkludert objektdeteksjon.
  • Konvolusjonelle nevrale nettverk og tilbakevendende nevrale nettverk: Denne boken lærer deg om CNN og RNN, og hvordan du bygger disse nettverkene.

Konklusjon

Konvolusjonelle nevrale nettverk er et av de nyere områdene innen kunstig intelligens, maskinlæring og dyplæring. Det har mange anvendelser i dagens verden i nesten alle sektorer. Med tanke på den økende bruken forventes det å vokse ytterligere og bli enda mer nyttig for å løse problemer i den virkelige verden.