Grunderna i AI

Vad är djupinlärning?

mm
Lägg till Unite.AI bland dina föredragna källor på Google

Djupinlärning är ett av de mest inflytelserika och snabbast växande områdena inom artificiell intelligens. Det kan dock vara svårt att få en intuitiv förståelse för djupinlärning, eftersom begreppet djupinlärning täcker en mängd olika algoritmer och tekniker. Djupinlärning är också en underdisciplin till maskinlärning i allmänhet, så det är viktigt att förstå vad maskinlärning är för att förstå djupinlärning.

Vad är maskinlärning?

Djupinlärning är en utvidgning av några av de koncept som härrör från maskinlärning, så av den anledningen ska vi ta en minut för att förklara vad maskinlärning är.

Maskinlärning är en metod för att möjliggöra för datorer att utföra specifika uppgifter utan att explicit koda varje rad av algoritmerna som används för att utföra dessa uppgifter. Det finns många olika maskinlärningsalgoritmer, men en av de vanligaste algoritmerna är en multilayerperceptron. En multilayerperceptron kallas också för ett neuronnätverk och består av en serie noder/neuroner som är kopplade till varandra. Det finns tre olika lager i ett multilayerperceptron: inmatningslagret, det dolda lagret och utmatningslagret.

Inmatningslagret tar emot data i nätverket, där det manipuleras av noderna i det mittre/dolda lagret. Noderna i det dolda lagret är matematiska funktioner som kan manipulera data från inmatningslagret, extrahera relevanta mönster från indata. Detta är hur neuronnätverket “lär sig”. Neuronnätverk får sitt namn från det faktum att de är inspirerade av struktur och funktion i den mänskliga hjärnan.

Kopplingarna mellan noder i nätverket har värden som kallas vikter. Dessa värden är i princip antaganden om hur data i ett lager är relaterade till data i nästa lager. När nätverket tränas justeras vikterna, och målet är att vikterna/antagandena om data kommer att konvergera till värden som korrekt representerar de meningsfulla mönstren inom data.

Aktiveringsfunktioner finns i noderna i nätverket, och dessa aktiveringsfunktioner omvandlar data på ett icke-linjärt sätt, vilket möjliggör för nätverket att lära sig komplexa representationer av data. Aktiveringsfunktioner multiplicerar indata med viktvärden och lägger till en bias-term.

Vad är djupinlärning?

Djupinlärning är den term som ges till maskinlärningsarkitekturer som kopplar samman många multilayerperceptron, så att det inte bara finns ett dolt lager utan många dolda lager. Ju “djupare” det djupa neuronnätverket är, desto mer sofistikerade mönster kan nätverket lära sig.

De djupa lagren som består av neuroner kallas ibland för fullständigt anslutna nätverk eller fullständigt anslutna lager, med hänvisning till det faktum att en given neuron upprätthåller en anslutning till alla neuroner som omger den. Fullständigt anslutna nätverk kan kombineras med andra maskinlärningsfunktioner för att skapa olika djupinlärningsarkitekturer.

Olika typer av djupinlärning

Det finns en mängd olika djupinlärningsarkitekturer som används av forskare och ingenjörer, och var och en av de olika arkitekturerna har sin egen specialiserade användningsfall.

Konvolutionsneuronnätverk

Konvolutionsneuronnätverk, eller CNN, är den neuronnätverksarkitektur som vanligtvis används vid skapandet av datorsynsystem. Strukturen i konvolutionsneuronnätverk möjliggör för dem att tolka bilddata, omvandla dem till siffror som ett fullständigt anslutet nätverk kan tolka. Ett CNN har fyra huvudkomponenter:

  • Konvolutionslager
  • Undersampling/ poolninglager
  • Aktiveringsfunktioner
  • Fullständigt anslutna lager

Konvolutionslagren är vad som tar emot bilderna som indata i nätverket, analyserar bilderna och hämtar pixlarnas värden. Undersampling eller poolning är där bildvärdena konverteras/minskas för att förenkla representationen av bilderna och minska känsligheten för bildfilter till brus. Aktiveringsfunktionerna kontrollerar hur data flödar från ett lager till nästa lager, och de fullständigt anslutna lagren är vad som analyserar värdena som representerar bilden och lär sig mönstren i dessa värden.

RNN/LSTM

Rekurrenta neuronnätverk, eller RNN, är populära för uppgifter där dataordningen är viktig, där nätverket måste lära sig om en sekvens av data. RNN används vanligtvis för problem som naturlig språkbehandling, eftersom ordens ordning är viktig när man tolkar en mening. Den “rekurrerande” delen av termen Rekurrent Neuronnätverk kommer från det faktum att utdata för ett visst element i en sekvens beror på den tidigare beräkningen samt den aktuella beräkningen. Till skillnad från andra former av djupa neuronnätverk har RNN “minnen”, och informationen som beräknas vid de olika tidpunkterna i sekvensen används för att beräkna de slutliga värdena.

Det finns flera typer av RNN, inklusive dubbelriktade RNN, som tar hänsyn till framtida objekt i sekvensen, utöver tidigare objekt, när de beräknar ett objekts värde. En annan typ av RNN är en Långt Korttidsminne, eller LSTM, nätverk. LSTM är typer av RNN som kan hantera långa kedjor av data. Vanliga RNN kan drabbas av något som kallas “exploderande gradientproblemet”. Detta problem uppstår när kedjan av indata blir extremt lång, men LSTM har tekniker för att bekämpa detta problem.

Autoencoders

De flesta av de djupinlärningsarkitekturer som nämns hittills tillämpas på övervakade inlärningsproblem, snarare än oövervakade inlärningsuppgifter. Autoencoders kan omvandla oövervakad data till en övervakad format, vilket möjliggör för neuronnätverk att användas på problemet.

Autoencoders används ofta för att upptäcka avvikelser i datamängder, ett exempel på oövervakad inlärning eftersom avvikelsens natur inte är känd. Sådana exempel på avvikelseupptäckt inkluderar bedrägeridetektering för finansiella institutioner. I detta sammanhang är syftet med en autoencoder att fastställa en baslinje för vanliga mönster i data och identifiera avvikelser eller utbrytare.

Strukturen i en autoencoder är ofta symmetrisk, med dolda lager arrangerade så att nätverkets utdata liknar indata. De fyra typer av autoencoders som ser frekvent användning är:

  • Regelbundna/autoencoders
  • Multilager-encoders
  • Konvolutionsencoders
  • Regulariserade encoders

Regelbundna/autoencoders är bara neurala nätverk med ett enda dolt lager, medan multilager-autoencoders är djupa nätverk med mer än ett dolt lager. Konvolutionsautoencoders använder konvolutionslager istället för, eller i kombination med, fullständigt anslutna lager. Regulariserade autoencoders använder en specifik typ av förlustfunktion som tillåter det neurala nätverket att utföra mer komplexa funktioner, funktioner utöver att bara kopiera indata till utdata.

Generativa Adversariala Nätverk

Generativa Adversariala Nätverk (GAN) är faktiskt flera djupa neuronnätverk istället för bara ett nätverk. Två djupa inlärningsmodeller tränas samtidigt, och deras utdata matas in i den andra modellen. Nätverken är i konkurrens med varandra, och eftersom de får tillgång till varandras utdata, lär de sig båda av dessa data och förbättras. Nätverken spelar i princip ett spel med förfalskning och upptäckt, där den generativa modellen försöker skapa nya instanser som kommer att lura detektionsmodellen/diskriminatormodellen. GAN har blivit populära inom området datorsyn.

Djupinlärningssammanfattning

Djupinlärning utvidgar principerna för neuronnätverk för att skapa sofistikerade modeller som kan lära sig komplexa mönster och generalisera dessa mönster till framtida datamängder. Konvolutionsneuronnätverk används för att tolka bilder, medan RNN/LSTM används för att tolka sekventiell data. Autoencoders kan omvandla oövervakade inlärningsuppgifter till övervakade inlärningsuppgifter. Slutligen är GAN flera nätverk som är i konkurrens med varandra och som är särskilt användbara för datorsyntuppgifter.

Blogger och programmerare med specialområden inom Machine Learning och Deep Learning ämnen. Daniel hoppas på att hjälpa andra att använda kraften från AI för socialt väl.