avsnitt 8 av 9

Neuronnät & Djupinlärning (Deep Learning)

Johan Svensson mars 30, 2020

Djupinlärning (Deep Learning)

Deep learning är en typ av machine learning. När man talar om artificiell intelligens syftar man oftast på olika tillämpningar av deep learning. Principen för deep learning är mycket enkel. Med deep learning skapas representationer i flera steg. Dessa steg kallas lager (eng layer) och syftet är att skapa bättre representationer för varje lager. Det är inte ovanligt att använda flera hundra lager.

I deep learning är dessa lager ordnade i neuronnät (eng. neural networks). Benämningen är hämtad från människans hjärnceller (neuron). Neuronnät i deep learning är inspirerade av hjärnans neuron. Detta innebär dock inte att neuronnät fungerar som hjärncellerna. Det  finns faktiskt väldigt få likheter mellan deep learning och hjärncellernas sätt att lära. Den populärvetenskapliga beskrivningen av deep learning som en digital version av hjärnan är alltså fel. Neurala nätverk med många lager kallas deep neural networks (DNN), eller mer generellt deep learning.

Figur 1.

Neuronnätets uppgift är att transformera input (data som matas in) till representationer som blir allt mer annorlunda (jämfört med input) men samtidigt mer informativa. Neuronnätet destillerar och filtrerar informationen så att endast de användbara och karaktäristiska dragen kvarstår i det sista lagret. I det sista lagret har informationen kondenserats till den grad att neuronnätet kan, utifrån aktiveringen i lagret, avgöra vilken siffra det är.

Vad händer i ett lager?

Varje lager skall ta emot information (siffror) från föregående lager och behandla dessa siffror innan de skickas vidare till nästa lager. Allteftersom informationen flödar genom lagren så extraheras användbara representationer.

Figur 2.
Figur 3.

I varje lager är det neuron (synonym: noder) som tar emot, behandlar och skickar vidare information. I ovanstående figur tar neuronet emot x1 och x2, utför beräkningar och därefter skickar den vidare värdet y. I neuronet multipliceras varje input (inkommande siffra) med en vikt. Därefter summeras alla input och en bias adderas. Resultatet passerar sedan en aktiveringsfunktion. Syftet med aktiveringsfunktionen är att omvandla slutresultatet till en siffra lätthantering siffra. I ovanstående exempel är aktiveringsfunktionen en sigmoidal funktion. Denna funktionen omvandlar alla inkommande värden till en siffra mellan 0 och 1. Stora positiva tal närmar sig 1 och stora negativa tal närmar sig 0.

Vikterna är avgörande för neuronnätet. Med rätt vikter kommer neuronnätet fungera väl och därmed klara av uppgiften den utvecklats för. Utmaningen står i att hitta rätt vikter. Eftersom neuronnätet kan innehålla miljoner vikter så blir detta en mycket svår utmaning. Det blir ännu svårare när vi konstaterar att justering i en enda vikt kan påverka hela neuronnätet. Den stora utmaningen är alltså att justera alla dessa vikter så att de blir optimala för ändamålet.

Vikterna justeras med hjälp av en loss funktion (diskuterat ovan). Loss funktionen beräknar helt enkelt hur stor skillnaden är mellan neuronnätets aktuella gissning och sanningen. Denna skillnaden kallas loss score. Om loss score är stor så är skillnaden mellan gissningen och sanningen stor, vilket är dåligt. Om loss score är litet så har neuronnätet gjort en bra gissning. Loss score fungerar som en återkopplingssignal (feedback signal) som används för att justera vikternas värde. Det innebär att neuronnätet utvärderar sin egen förmåga, återkopplar resultatet till sig själv och justerar därefter vikterna för att förbättra sin förmåga. Vikterna justeras sedan i den riktning som gör att loss score blir mindre.

Varje neuronnät har en optimerare (eng. optimizer). Det är optimerades uppgift att sköta återkopplingen och justera vikterna i neuronnätet. Optimeraren använder en algoritm som kallas backpropagation algorithm.

När neuronnätet aktiveras första gången så är värdet på alla vikterna helt slumpmässiga. Detta leder till att neuronnätets gissning blir dålig (loss score blir stor) första omgången. Men för varje exempel som neuronnätet tränar på, så justerar den vikterna i rätt riktning och då förbättras förmågan successivt. Om neuronnätet får träna på tusentals, eller till och med hudnratusenals, exempel så minimeras slutligen loss funktionen, vilket innebär att neuronnätet maximerat sin förmåga.

Denna simpla mekanism – som innebär att varje neuron tar emot input, gör en enkel transformation och skickar vidare en output – visar sig vara extremt kraftfull.

Ett neuronnät kan ha godtyckligt antal lager och i dessa lager kan det finnas ett godtyckligt antal neuron. Principen för neuronnät är densamma oavsett nätets storlek: mata in inputvärden, låt de flöda genom lagren och erhåll slutligen en output i sista lagret. I ett neuronnät kallas det allra första lagret input layer och det allra sista lagret (lagret innan label) kallas output layer. Alla lager däremellan kallas hidden layers. Allteftersom data passerar dessa lager så lär sig algoritmen vilka mönster som finns och hur dessa mönster korrelerar med utfallet som studeras.

Vad är bias?

Bias är ytterligare en parameter som justeras när neuronnätet kalibreras. Genom att justera bias kan man öka eller minska ett neurons aktivitet. Det innebär att de tär två saker som justeras när neuronnätet kalibrerar sig: vikter och bias.

Principen för deep learning

Neuronnätet skapar representationer allteftersom informationen flödar genom lagren. När vikterna justeras så blir vissa neuron starkare medan andra neuron blir svagare, eller till och med slocknar. Neuronnätet guidar sig själv med hjälp av loss funktionen.  Deep learning kan således betraktas som en process där data filtreras i flera steg och allteftersom data flödar genom lagren så dechiffreras de.

Denna mekanism leder till att lagren extraherar nyckelkomponenter i data och med hjälp av dessa lär sig datorn vilka komponenter som särskiljer hundar och katter.

När dator skall tolka innehållet på en bild så kan den inte omedelbart se de större dragen i bilden. I datorn omvandlas nämligen bilden till ett rutnät med siffror och dessa siffror matas sedan in i neuronnätet där informationen transformeras. Under transformationen extraheras den viktiga informationen. Dator kan då upptäckab linjer, hörn, cirklar osv. Kombinationen av olika geometrier används sedan för att särskilja olika objekt.

Varför är deep learning så effektivt?

Det finns många metoder för att prediktera. En del metoder är generella och kan prediktera på många olika typer av data, medan andra metoder är mer specifika. De allra flesta metoder kräver någon grad av feature engineering, vilket innebär att rådatan måste bearbetas innan den kan analyseras. Detta kan exempelvis innebär att man måste manuellt omvandla innehållet på ett foto till ett format som går att analysera. Detta manuella arbete är som regel mycket omständligt och komplicerat. Med deep learning är feature engineering fullständigt automatiserat. Neuronnätet sköter detta helt automatiskt, oavsett hur data ser ut. Till skillnad från andra analysmetoder kan deep learning hantera tabellerade data, bilder, video.

5/5 (1 Review)