Deep learning

Slutförd

Djupinlärning är en avancerad form av maskininlärning som försöker emulera hur den mänskliga hjärnan lär sig. Nyckeln till djupinlärning är skapandet av ett artificiellt neuralt nätverk som simulerar elektrokemisk aktivitet i biologiska neuroner med hjälp av matematiska funktioner, som du ser här.

Biologiskt neuralt nätverk Artificiellt neuralt nätverk
Diagram över ett naturligt neuralt nätverk. Diagram över ett artificiellt neuralt nätverk.
Neuroner avfyras som svar på elektrokemiska stimuli. När den utlöses skickas signalen till anslutna neuroner. Varje neuron är en funktion som fungerar på ett indatavärde (x) och en vikt (w). Funktionen omsluts av en aktiveringsfunktion som avgör om utdata ska skickas vidare.

Artificiella neurala nätverk består av flera lager av neuroner – vilket i huvudsak definierar en djupt kapslad funktion. Den här arkitekturen är anledningen till att tekniken kallas djupinlärning och de modeller som skapas av den kallas ofta för djupa neurala nätverk (DNN). Du kan använda djupa neurala nätverk för många typer av maskininlärningsproblem, inklusive regression och klassificering, samt mer specialiserade modeller för bearbetning av naturligt språk och visuellt innehåll.

Precis som andra maskininlärningstekniker som beskrivs i den här modulen omfattar djupinlärning att anpassa träningsdata till en funktion som kan förutsäga en etikett (y) baserat på värdet för en eller flera funktioner (x). Funktionen (f(x)) är det yttre lagret i en kapslad funktion där varje lager i det neurala nätverket kapslar in funktioner som fungerar på x och de viktvärden (w) som är associerade med dem. Algoritmen som används för att träna modellen omfattar att iterativt mata funktionsvärdena (x) i träningsdata framåt genom lagren för att beräkna utdatavärden för ŷ, validera modellen för att utvärdera hur långt bort de beräknade ŷ värdena är från de kända y-värdena (som kvantifierar felnivån eller förlusten i modellen), och sedan ändra vikterna (w) för att minska förlusten. Den tränade modellen innehåller de slutliga viktvärdena som resulterar i de mest exakta förutsägelserna.

Exempel – Använda djupinlärning för klassificering

För att bättre förstå hur en modell för djupt neuralt nätverk fungerar ska vi utforska ett exempel där ett neuralt nätverk används för att definiera en klassificeringsmodell för pingvinarter.

Diagram över ett neuralt nätverk som används för att klassificera en pingvinart.

Funktionsdata (x) består av vissa mätningar av en pingvin. Mer specifikt är måtten:

  • Längden på pingvinens räkning.
  • Djupet på pingvinens räkning.
  • Längden på pingvinens simfötter.
  • Pingvinens vikt.

I det här fallet är x en vektor med fyra värden, eller matematiskt, x=[x1,x2,x3,x4].

Etiketten vi försöker förutsäga (y) är pingvinarten, och att det finns tre möjliga arter det kan vara:

  • Adelie
  • Gentoo
  • Chinstrap

Det här är ett exempel på ett klassificeringsproblem där maskininlärningsmodellen måste förutsäga den mest sannolika klassen som en observation tillhör. En klassificeringsmodell åstadkommer detta genom att förutsäga en etikett som består av sannolikheten för varje klass. Med andra ord är y en vektor med tre sannolikhetsvärden; en för var och en av de möjliga klasserna: [P(y=0|x), P(y=1|x), P(y=2|x)].

Processen för att härleda en förutsagd pingvinklass med det här nätverket är:

  1. Funktionsvektorn för en pingvinobservation matas in i indataskiktet i det neurala nätverket, som består av en neuron för varje x-värde . I det här exemplet används följande x-vektor som indata: [37.3, 16.8, 19.2, 30.0]
  2. Funktionerna för det första neuronlagret beräknar var och en en viktad summa genom att kombinera x-värdet och w-vikten och skicka den till en aktiveringsfunktion som avgör om den uppfyller tröskelvärdet som ska överföras till nästa lager.
  3. Varje neuron i ett lager är anslutet till alla neuroner i nästa lager (en arkitektur som ibland kallas ett helt anslutet nätverk) så att resultatet av varje lager matas framåt via nätverket tills de når utdataskiktet.
  4. Utdataskiktet skapar en vektor med värden. I det här fallet använder du en softmax - eller liknande funktion för att beräkna sannolikhetsfördelningen för pingvinens tre möjliga klasser. I det här exemplet är utdatavektorn: [0.2, 0.7, 0.1]
  5. Elementen i vektorn representerar sannolikheten för klasserna 0, 1 och 2. Det andra värdet är det högsta, så modellen förutsäger att pingvinarten är 1 (Gentoo).

Hur lär sig ett neuralt nätverk?

Vikterna i ett neuralt nätverk är centrala för hur det beräknar förutsagda värden för etiketter. Under träningsprocessen lär sig modellen de vikter som resulterar i de mest exakta förutsägelserna. Nu ska vi utforska träningsprocessen lite mer detaljerat för att förstå hur den här inlärningen sker.

Diagram över ett neuralt nätverk som tränas, utvärderas och optimeras.

  1. Datauppsättningarna för träning och validering definieras och träningsfunktionerna matas in i indataskiktet.
  2. Neuronerna i varje lager i nätverket tillämpar sina vikter (som ursprungligen tilldelas slumpmässigt) och matar data via nätverket.
  3. Utdataskiktet skapar en vektor som innehåller de beräknade värdena för ŷ. Till exempel kan utdata för en pingvinklassförutsägelse vara [0,3. 0.1. 0.6].
  4. En förlustfunktion används för att jämföra de förutsagda ŷ värdena med de kända y-värdena och aggregera skillnaden (som kallas förlust). Om till exempel den kända klassen för fallet som returnerade utdata i föregående steg är Chinstrap, ska y-värdet vara [0.0, 0.0, 1.0]. Den absoluta skillnaden mellan detta och ŷ-vektorn är [0.3, 0.1, 0.4]. I verkligheten beräknar förlustfunktionen den aggregerade variansen för flera fall och sammanfattar den som ett enda förlustvärde .
  5. Eftersom hela nätverket i stort sett är en stor kapslad funktion kan en optimeringsfunktion använda differentiell kalkyl för att utvärdera effekten av varje vikt i nätverket på förlusten och bestämma hur de kan justeras (upp eller ned) för att minska den totala förlusten. Den specifika optimeringstekniken kan variera, men omfattar vanligtvis en gradient descent-metod där varje vikt ökas eller minskas för att minimera förlusten.
  6. Ändringarna av vikterna backpropageras till lagren i nätverket, vilket ersätter de tidigare använda värdena.
  7. Processen upprepas över flera iterationer (kallas epok) tills förlusten minimeras och modellen förutsäger acceptabelt korrekt.

Anteckning

Även om det är lättare att tänka på varje fall i träningsdata som skickas genom nätverket en i taget, batchas data i matriser och bearbetas med linjära algebraiska beräkningar. Därför utförs träning av neurala nätverk bäst på datorer med grafiska bearbetningsenheter (GPU:er) som är optimerade för manipulering av vektorer och matriser.