AI 101

Hva er dyp læring?

mm

Dyp læring er ett av de mest innflytelsesrike og raskest voksende feltene innen kunstig intelligens. Likevel kan det være vanskelig å få en intuitiv forståelse av dyp læring fordi begrepet dyp læring dekker en rekke forskjellige algoritmer og tekniker. Dyp læring er også en underdisiplin av maskinlæring i generell forstand, så det er viktig å forstå hva maskinlæring er for å forstå dyp læring.

Hva er Maskinlæring?

Dyp læring er en utvidelse av noen av konseptene som opprinnelig kommer fra maskinlæring, så av den grunn, la oss ta et minutt til å forklare hva maskinlæring er.

Putt enkelt, maskinlæring er en metode for å aktivere datamaskiner til å utføre bestemte oppgaver uten å kode hver enkelt linje av algoritmene som brukes til å utføre disse oppgavene. Det finnes mange forskjellige maskinlæring-algoritmer, men en av de mest vanlig brukt algoritmene er en multilayer perceptron. En multilayer perceptron kalles også et neuralt nettverk, og det består av en rekke noder/nevroner koblet sammen. Det finnes tre forskjellige lag i en multilayer perceptron: inngangslaget, skjult lag og utgangslaget.

Inngangslaget tar inn dataene i nettverket, der de manipuleres av nodene i midten/skjult lag. Nodene i skjult lag er matematiske funksjoner som kan manipulere dataene fra inngangslaget, trekke ut relevante mønster fra inngangsdataene. Dette er hvordan neuralt nettverk “lærer”. Neurale nettverk får navnet sitt fra det faktum at de er inspirert av strukturen og funksjonen til det menneskelige hjernen.

Forbindelsene mellom nodene i nettverket har verdier kalt vekter. Disse verdiene er essensielt antagelser om hvordan dataene i ett lag er relatert til dataene i neste lag. Etterhvert som nettverket trener, justeres vektene, og målet er at vektene/antagelsene om dataene til slutt vil konvergere på verdier som nøyaktig representerer de meningsfulle mønstrene innenfor dataene.

Aktiveringsfunksjoner er til stede i nodene i nettverket, og disse aktiveringsfunksjonene transformerer dataene på en ikke-lineær måte, som muliggjør at nettverket kan lære komplekse representasjoner av dataene. Aktiveringsfunksjoner multipliserer inngangsverdiene med vektverdiene og legger til en bias-terme.

Hva er Dyp Læring?

Dyp læring er begrepet gitt til maskinlæring-arkitekturer som kobler mange multilayer perceptron sammen, så det ikke bare er ett skjult lag, men mange skjulte lag. “Dypere” det dype neurale nettverket er, jo mer sofistikerte mønster nettverket kan lære.

De dype lag-nettverkene bestående av noder/nevroner kalles noen ganger fullt koblet nettverk eller fullt koblet lag, med henvisning til det faktum at en gitt neuron opprettholder en forbindelse til alle nodene omkring den. Fullt koblet nettverk kan kombineres med andre maskinlæring-funksjoner for å skape forskjellige dyp læring-arkitekturer.

Forskjellige Typer Dyp Læring

Det finnes en rekke dyp læring-arkitekturer brukt av forskere og ingeniører, og hver av de forskjellige arkitekturene har sin egen spesialitet brukstilfelle.

Convolutional Neural Networks

Convolutional neurale nettverk, eller CNN, er den neurale nettverks-arkitekturen som vanligvis brukes i skapelsen av datavisjonssystemer. Strukturen til convolutional neurale nettverk muliggjør at de kan tolke bilde-data, konvertere dem til tall som et fullt koblet nettverk kan tolke. Et CNN har fire hovedkomponenter:

  • Convolutional lag
  • Subsampling/Pooling lag
  • Aktiveringsfunksjoner
  • Fullt koblet lag

De convolutional lagene er det som tar inn bildene som inngang til nettverket, analyserer bildene og får verdier av pikslene. Subsampling eller pooling er der bildverdiene konverteres/reduces til å forenkle representasjonen av bildene og redusere sensitiviteten av bildefiltrene til støy. Aktiveringsfunksjonene kontrollerer hvordan dataene flyter fra ett lag til neste lag, og de fullt koblet lagene er det som analyserer verdiene som representerer bildene og lærer mønstrene i disse verdiene.

RNNs/LSTMs

Recurrent neurale nettverk, eller RNN, er populære for oppgaver hvor rekkefølgen av dataene betyr noe, hvor nettverket må lære om en sekvens av data. RNN er vanligvis brukt til problemer som naturlig språkbehandling, da rekkefølgen av ord betyr noe når man dekoder mening av en setning. “Recurrent” delen av begrepet Recurrent Neural Network kommer fra det faktum at utgangen for en gitt element i en sekvens avhenger av den foregående beregningen samt den nåværende beregningen. I motsetning til andre former for dyp neurale nettverk, har RNN “minner”, og informasjonen beregnet på de forskjellige tidspunktene i sekvensen brukes til å beregne de endelige verdiene.

Det finnes flere typer RNN, inkludert bidirectional RNN, som tar fremtidige elementer i sekvensen i betraktning, i tillegg til tidligere elementer, når de beregner en verdie. En annen type RNN er en Long Short-Term Memory, eller LSTM, nettverk. LSTMs er typer RNN som kan håndtere lange kjeder av data. Vanlige RNN kan falle offer for noe som kalles “exploding gradient problem”. Dette problemet oppstår når kjeden av inngangsdata blir ekstremt lang, men LSTMs har teknikker for å bekjempe dette problemet.

Autoencoders

De fleste av de dyp læring-arkitekturene nevnt hittil er brukt til overvåket læring-problemer, snarere enn uovervåket læring-oppgaver. Autoencoders kan transformere uovervåket data til en overvåket format, som muliggjør at neurale nettverk kan brukes på problemet.

Autoencoders brukes ofte til å detektere unormaliteter i datamengder, et eksempel på uovervåket læring da naturen til unormaliteten ikke er kjent. Slike eksempler på unormalitetsdeteksjon inkluderer svindel-deteksjon for finansielle institusjoner. I denne sammenhengen er formålet med en autoencoder å bestemme en basis for vanlige mønster i dataene og identifisere unormaliteter eller outliers.

Strukturen til en autoencoder er ofte symmetrisk, med skjulte lag arrayet slik at utgangen av nettverket ligner inngangen. De fire typene autoencoders som sees hyppig brukt er:

  • Vanlige/enkle autoencoders
  • Flere lag-encodere
  • Convolutional encodere
  • Regulariserte encodere

Vanlige/enkle autoencoders er bare neurale nettverk med ett skjult lag, mens flere lag-autoencoders er dype nettverk med mer enn ett skjult lag. Convolutional autoencoders bruker convolutional lag i stedet for, eller i tillegg til, fullt koblet lag. Regulariserte autoencoders bruker en spesiell type tap-funksjon som lar neuralt nettverk utføre mer komplekse funksjoner, funksjoner utover bare å kopiere inngang til utgang.

Generative Adversarial Networks

Generative Adversarial Networks (GANs) er faktisk flere dyp neurale nettverk i stedet for bare ett nettverk. To dyp læring-modeller trenes samtidig, og deres utganger mates til den andre nettverket. Nettverkene er i konkurranse med hverandre, og siden de får tilgang til hverandres utgangsdata, lærer de begge av denne dataen og forbedrer seg. Nettverkene spiller essensielt en kamp om forfalskning og deteksjon, hvor den generative modellen prøver å lage nye eksemplarer som vil lure detektive-modellen/diskriminatoren. GANs har blitt populære i feltet datavisjon.

Dyp Læring Sammendrag

Dyp læring utvider prinsippene til neurale nettverk for å skape sofistikerte modeller som kan lære komplekse mønster og generalisere disse mønstrene til fremtidige datamengder. Convolutional neurale nettverk brukes til å tolke bilder, mens RNNs/LSTMs brukes til å tolke sekvensielle data. Autoencoders kan transformere uovervåket læring-oppgaver til overvåket læring-oppgaver. Til slutt er GANs flere nettverk som er satt mot hverandre som er spesielt nyttige for datavisjonsoppgaver.

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.