Hur man väljer en aktiveringsfunktion för djupinlärning

Hur man väljer en aktiveringsfunktion för djupinlärning

Aktiveringsfunktioner är en kritisk del av utformningen av ett neuralt nätverk.

Valet av aktiveringsfunktion i det dolda lagret styr hur väl nätverksmodellen lär sig träningsdataset. Valet av aktiveringsfunktion i utlagret definierar vilken typ av förutsägelser som modellen kan göra.

Som sådan måste ett noggrant val av aktiveringsfunktion göras för varje djupt lärande neuralt nätverksprojekt.

I denna handledning kommer du att upptäcka hur du väljer aktiveringsfunktioner för neurala nätverksmodeller.

Efter att ha slutfört denna handledning vet du:

  • Aktiveringsfunktioner är en viktig del av neuralt nätverksdesign.
  • Den moderna standardaktiveringsfunktionen för dolda lager är ReLU-funktionen.
  • Aktiveringsfunktionen för utgående lager beror på typen av förutsägelsesproblem.

Låt oss börja.

Hur man väljer en aktiveringsfunktion för djupinlärning

Hur man väljer en aktiveringsfunktion för djupinlärning
Foto av Peter Dowley, vissa rättigheter reserverade.

Handledning Översikt

Denna handledning är uppdelad i tre delar; dom är:

  1. Aktiveringsfunktioner
  2. Aktivering för dolda lager
  3. Aktivering för utgångslager

Aktiveringsfunktioner

En aktiveringsfunktion i ett neuralt nätverk definierar hur den viktade summan av ingången omvandlas till en utgång från en nod eller noder i ett lager i nätverket.

Ibland kallas aktiveringsfunktionen en ”överföringsfunktion. ” Om aktiveringsfunktionens utgångsområde är begränsat kan det kallas ett “squashing-funktion. ” Många aktiveringsfunktioner är olinjära och kan kallas ”icke-linjäritet”I lagret eller nätverksdesignen.

Valet av aktiveringsfunktion har stor inverkan på det neurala nätverkets kapacitet och prestanda, och olika aktiveringsfunktioner kan användas i olika delar av modellen.

Tekniskt används aktiveringsfunktionen inom eller efter den interna behandlingen av varje nod i nätverket, även om nätverk är utformade för att använda samma aktiveringsfunktion för alla noder i ett lager.

Ett nätverk kan ha tre typer av lager: inmatningsskikt som tar rå input från domänen, dolda lager som tar inmatning från ett annat lager och skickar utdata till ett annat lager, och utgående lager som gör en förutsägelse.

Alla dolda lager använder vanligtvis samma aktiveringsfunktion. Utgångsskiktet använder vanligtvis en annan aktiveringsfunktion från de dolda lagren och är beroende av vilken typ av förutsägelse som krävs av modellen.

Aktiveringsfunktioner är också typiskt differentierbara, vilket betyder att första ordningens derivat kan beräknas för ett givet ingångsvärde. Detta krävs med tanke på att neurala nätverk vanligtvis tränas med hjälp av backpropagation av felalgoritm som kräver derivat av prediktionsfel för att uppdatera vikterna i modellen.

Det finns många olika typer av aktiveringsfunktioner som används i neurala nätverk, men kanske bara ett litet antal funktioner som används i praktiken för dolda och utgående lager.

Låt oss ta en titt på aktiveringsfunktionerna som används för varje typ av lager i tur och ordning.

Aktivering för dolda lager

Ett dolt lager i ett neuralt nätverk är ett lager som tar emot inmatning från ett annat lager (till exempel ett annat dolt lager eller ett inmatningsskikt) och ger utdata till ett annat lager (till exempel ett annat dolt lager eller ett utgående lager).

Ett dolt lager kontaktar inte direkt indata eller producerar utdata för en modell, åtminstone i allmänhet.

Ett neuralt nätverk kan ha noll eller fler dolda lager.

Vanligtvis används en differentierbar icke-linjär aktiveringsfunktion i de dolda skikten i ett neuralt nätverk. Detta gör det möjligt för modellen att lära sig mer komplexa funktioner än ett nätverk utbildat med en linjär aktiveringsfunktion.

För att få tillgång till ett mycket rikare hypotesutrymme som skulle dra nytta av djupa representationer behöver du en icke-linjäritet eller aktiveringsfunktion.

- Sida 72, Deep Learning with Python, 2017.

Det finns kanske tre aktiveringsfunktioner du kanske vill överväga för användning i dolda lager; dom är:

  • Rättad linjär aktivering (ReLU)
  • Logistisk (Sigmoid)
  • Hyperbolisk tangent (Tanh)

Detta är inte en uttömmande lista över aktiveringsfunktioner som används för dolda lager, men de är de vanligaste.

Låt oss titta närmare på varandra i tur och ordning.

ReLU Hidden Layer Activation-funktion

Den korrigerade linjära aktiveringsfunktionen, eller ReLU-aktiveringsfunktionen, är kanske den vanligaste funktionen som används för dolda lager.

Det är vanligt eftersom det är både enkelt att implementera och effektivt övervinna begränsningarna för andra tidigare populära aktiveringsfunktioner, som Sigmoid och Tanh. Specifikt är det mindre mottagligt för försvinnande lutningar som förhindrar att djupa modeller tränas, även om det kan drabbas av andra problem som mättad eller "död" enheter.

ReLU-funktionen beräknas enligt följande:

Detta innebär att om ingångsvärdet (x) är negativt returneras ett värde 0,0, annars returneras värdet.

Du kan lära dig mer om detaljerna i ReLU-aktiveringsfunktionen i den här handledningen:

Vi kan få en intuition för formen på denna funktion med det bearbetade exemplet nedan.

Att köra exemplet beräknar utgångarna för ett värdeintervall och skapar en plot av ingångar kontra utgångar.

Vi kan se den välbekanta formen på ReLU-aktiveringsfunktionen.

Diagram över ingångar kontra utgångar för ReLU-aktiveringsfunktionen.

Diagram över ingångar kontra utgångar för ReLU-aktiveringsfunktionen.

När du använder ReLU-funktionen för dolda lager är det bra att använda en ”Han Normal”Eller”Han Uniform”Viktinitiering och skala inmatningsdata till intervallet 0-1 (normalisera) före träning.

Sigmoid Hidden Layer Activation-funktion

Sigmoid-aktiveringsfunktionen kallas också logistikfunktionen.

Det är samma funktion som används i den logistiska regressionsklassificeringsalgoritmen.

Funktionen tar alla verkliga värden som in- och utmatningsvärden i intervallet 0 till 1. Ju större ingången (mer positiv), desto närmare kommer utgångsvärdet att vara 1.0, medan ju mindre ingången (mer negativ), desto närmare produktionen blir till 0,0.

Sigmoid-aktiveringsfunktionen beräknas enligt följande:

Där e är en matematisk konstant, som är basen för den naturliga logaritmen.

Vi kan få en intuition för formen på denna funktion med det bearbetade exemplet nedan.

Att köra exemplet beräknar utgångarna för ett värdeintervall och skapar en plot av ingångar kontra utgångar.

Vi kan se den välbekanta S-formen på sigmoid-aktiveringsfunktionen.

Diagram över ingångar kontra utgångar för Sigmoid-aktiveringsfunktionen.

Diagram över ingångar kontra utgångar för Sigmoid-aktiveringsfunktionen.

När du använder Sigmoid-funktionen för dolda lager är det bra att använda en ”Xavier Normal”Eller”Xavier Uniform”Viktinitiering (även hänvisad till Glorot-initialisering, uppkallad efter Xavier Glorot) och skala inmatningsdata till intervallet 0-1 (t.ex. intervallet för aktiveringsfunktionen) före träning.

Tanh Hidden Layer Activation-funktion

Den hyperboliska tangent aktiveringsfunktionen kallas också helt enkelt Tanh (även "tanh”Och”TanH“) Funktion.

Det liknar sigmoid-aktiveringsfunktionen och har till och med samma S-form.

Funktionen tar alla verkliga värden som in- och utmatningsvärden i intervallet -1 till 1. Ju större ingången (mer positiv), desto närmare kommer utgångsvärdet att vara 1.0, medan ju mindre ingången (mer negativ), desto närmare produktionen blir -1,0.

Tanh-aktiveringsfunktionen beräknas enligt följande:

  • (e ^ x - e ^ -x) / (e ^ x + e ^ -x)

Där e är en matematisk konstant som är basen för den naturliga logaritmen.

Vi kan få en intuition för formen på denna funktion med det bearbetade exemplet nedan.

Att köra exemplet beräknar utgångarna för ett värdeintervall och skapar en plot av ingångar kontra utgångar.

Vi kan se den välbekanta S-formen för Tanh-aktiveringsfunktionen.

Inmatningsdiagram kontra utgångar för Tanh-aktiveringsfunktionen.

Inmatningsdiagram kontra utgångar för Tanh-aktiveringsfunktionen.

När du använder TanH-funktionen för dolda lager är det bra att använda en ”Xavier Normal”Eller”Xavier Uniform”Viktinitiering (även hänvisad till initialisering av Glorot, namngiven efter Xavier Glorot) och skalningsingångsdata till intervallet -1 till 1 (t.ex. intervallet för aktiveringsfunktionen) före träning.

Hur man väljer en dold lageraktivering

Ett neuralt nätverk kommer nästan alltid att ha samma aktiveringsfunktion i alla dolda lager.

Det är mest ovanligt att variera aktiveringsfunktionen genom en nätverksmodell.

Traditionellt var sigmoid-aktiveringsfunktionen standardaktiveringsfunktionen på 1990-talet. Kanske genom mitten till slutet av 1990-talet till 2010-talet var Tanh-funktionen standardaktiveringsfunktionen för dolda lager.

... den hyperboliska tangent aktiveringsfunktionen fungerar vanligtvis bättre än den logistiska sigmoiden.

- Sida 195, Deep Learning, 2016.

Både sigmoid- och Tanh-funktionerna kan göra modellen mer mottaglig för problem under träningen, via det så kallade försvinnande gradientproblemet.

Du kan lära dig mer om detta problem i den här handledningen:

Aktiveringsfunktionen som används i dolda lager väljs typiskt baserat på typen av neurala nätverksarkitektur.

Moderna neurala nätverksmodeller med vanliga arkitekturer, som MLP och CNN, kommer att använda ReLU-aktiveringsfunktionen eller tilläggen.

I moderna neurala nätverk är standardrekommendationen att använda den rättade linjära enheten eller ReLU ...

- Sida 174, Deep Learning, 2016.

Återkommande nätverk ...

Du kan också vara intresserad av