Hoppa till innehållet

Flerlagerperceptron

Från Wikipedia

En flerlager-perceptron (MLP, engelska: Multilayer Perceptron) är en starkt förenklad matematisk modell av ett biologiskt neuralt nätverk som används för att approximera (och med en vältränad perceptron modellera) en diskret funktion eller klassificera ett diskret mönster. Faktum är att MLP under perioden 1990–2012 var en av de bästa metoderna för att modellera eller approximera funktionsutdrag med syftet att förutsäga funktionen i ”framtiden” – till exempel antalet solfläckar som funktion av tiden. Flerlager-perceptronen är ett exempel på ett artificiellt neuralt nätverk.[källa behövs]

MLP är ett exempel på övervakat lärande, där man oftast (men inte nödvändigtvis) använder backpropagation-algoritmen för lärandet.[1]

Ett exempel på en MLP med 3 inputneuroner, 4 dolda neuroner (fördelade på ett enda lager) och 2 outputneuroner.

MLP är uppbyggd av minst tre lager av starkt förenklade "neuroner":

  • 1 inputlager
  • (Minst) 1 dolt lager
  • 1 outputlager

Mellan dessa finns en ”vikt” mellan varje neuron i varje lager till varje neuron i det följande lagret. Det är genom att uppdatera dessa vikter som lärandet sker.

I verkligheten är inputlagret endast en "hållplats" för ett reellt talvärde per input-"neuron" som används av nästa "neuronnät" under en klassificeringsberäkning (framåtriktad beräkning). Därför har inputlagret inga vikter eller sigmoida funktioner; dessa cirklar är alltså inte egentliga neuroner, eller så representerar de bara signaler från neuroner som inte ingår i denna perceptron. Det reella talvärdet kan också vara diskreta värden som till exempel 0 eller 1 – eller -1 och 1, med flera.

De dolda lagren och outputlagret beräknas på samma sätt under en framåtriktad beräkning. De dolda lagren och outputlagret är äkta lager och varje lager består av lagrets "neuroner" och alla dess tillhörande lokala inputvikter.

Antal neuroner i lagren

[redigera | redigera wikitext]

Antalet neuroner i inputlagret bör motsvara antalet variabler i den funktion man arbetar med. Antalet neuroner i outputlagret bör vara 1 om man modellerar en envariabel matematisk funktion, eller antalet av ens olika klassifikationsklasser om man tränar MLP att klassificera dessa. Det optimala antalet dolda neuroner för att optimera storleken på det dolda lagret är teoretiskt omöjligt att fastställa. Det är dock känt att ett tillräckligt stort lager kan modellera vilken delmängd som helst av Rn, enligt det universella approximationsteoremet. Detta resultat är dock mer teoretiskt än praktiskt, eftersom ett stort dolt lager i praktiken kan kräva för många neuroner för att träningen ska vara möjlig inom rimlig tid.

Aktiveringsfunktion

[redigera | redigera wikitext]

Där en enlager-perceptron använder en heavisidefunktion som aktiveringsfunktion, använder en MLP en annan funktion, som måste vara både normaliserbar och differentierbar. Ofta väljs sigmoidfunktionen, men andra funktioner kan också användas.

Det optimala utgångsläget för vikterna mellan lagren är okänt, men de bör initialiseras som slumpmässiga (eller åtminstone olika) tal inom intervallet [-1,1].

Användningsområden

[redigera | redigera wikitext]

Eftersom MLP har visat sig kunna approximera komplicerade funktioner och klassifikationer, används de bland annat för

MLP har vissa problem som inte har några direkta lösningar:

  • Kan under inlärning fastna i ett lokalt extremum som inte är det globala extremum. Detta skulle kunna lösas genom att välja bra startvikter, men ingen sådan algoritm har upptäckts än. (Till skillnad från exempelvis ett RBF-nätverk)
  • Den optimala storleken på de dolda lagren är svår att bestämma. Om för små lager används kommer MLP att ”glömma” tidigare lärda mönster, och om lagren är för stora tar träningen onödigt lång tid.
  • Det optimala antalet dolda lager är obestämbart. Fler lager kan approximera svårare funktioner, men träningen tar också längre tid.

Det har forskats om dessa problem, men det verkar som om det inte finns någon automatiserad eller enkel lösning, utan bara förslag på mycket manuellt arbete.[2][3][4][5]