# Perceptron

Een perceptron (of meerlaags perceptron) is een neuraal netwerk waarin de neuronen in verschillende lagen met elkaar verbonden zijn. Een eerste laag bestaat uit ingangsneuronen, waar de inputsignalen aangelegd worden. Vervolgens zijn er één of meerdere 'verborgen’ lagen, die zorgen voor meer 'intelligentie' en ten slotte is er de uitgangslaag, die het resultaat van het perceptron weergeeft.
Alle neuronen van een bepaalde laag zijn verbonden met alle neuronen van de volgende laag, zodat het ingangssignaal voort propageert door de verschillende lagen heen.

## Single-layer perceptron

De single-layer perceptron is de simpelste vorm van een neuraal netwerk, in 1958 door Rosenblatt ontworpen (ook wel Rosenblatt's perceptron genoemd). Het is gebaseerd op de McCulloch-Pitts model van een neuron (1943). Doel van het algoritme: pattern classification bij lineair afscheidbare klassen. Een perceptron bestaat uit een simpele neuron, met aanpasbare gewichten en een bias. Rosenblatt bewees eveneens dat wanneer patronen uit twee lineair afscheidbare klassen komen, het perceptron algoritme convergeert en het algoritme een lijn creëert die tussen de klassen wordt gepositioneerd: de perceptron convergentie theorie.
Het is mogelijk het aantal klassen uit te breiden naar meer dan twee, wanneer de output layer wordt uitgebreid met meerdere output neurons. Er geldt nog steeds dat deze klassen lineair afscheidbaar moeten zijn.

### Trainingsalgoritme

Begrippen:
$x(n)$ = inputvector $[+1,x1(n),x2(n),...,xm(n)]^{T}$
$w(n)$ = gewichtsvector (weights vector) $[b,w1(n),w2(n),...,wm(n)]^{T}$
Met $b$ = bias
$y(n)$ = de uitkomst die de perceptron genereert
$d(n)$ = 'desired output', de gewenste output zoals deze als correct beschouwd wordt
$l$ = rate ten aanzien van leersnelheid
1. Initialisatie
$w(0)=0$
LOOP: Herhaal volgende stappen voor tijdstap $n=1,2,...$
2. Activatie
De perceptron wordt geactiveerd door de input van $x(n)$ en een bijhorende gewenste output $d(n)$
3. Berekening van response door de perceptron
De uitkomst die door de perceptron wordt gegenereerd, wordt berekend door: $y(n)=sgn[w^{T}(n)x(n)]$
Met $sgn$ als signum (wiskunde) functie
4. Aanpassen van de gewichten
Op basis van de uitkomst ten aanzien van gewenste uitkomst wordt de aanpassing uitgevoerd: $w(n+1)=w(n)+l[d(n)-y(n)]x(n)$ met $d(n)=+1$ als $x(n)$ behoort tot de class 1 en $d(n)=-1$ als $x(n)$ behoort tot de class 2.
5. Continuering
EINDE LOOP

## Toepassing: classificatie

Een mogelijke toepassing van het meerlaags perceptron is classificatie, dat wil zeggen het onderverdelen van bepaalde zaken in een aantal categorieën, gebaseerd op kenmerken of eigenschappen van deze zaak.
Een voorbeeld hiervan is het bepalen of een bepaalde paddenstoel giftig is, gebaseerd op uiterlijke kenmerken zoals gewicht, grootte, kleur, stippen, enzovoort. De ingangslaag bevat evenveel neuronen als er uiterlijke kenmerken zijn en de uitgangslaag bevat slechts één neuron die dan als uitgang positief (giftig) of negatief (niet giftig) is. Om het perceptron te trainen (dat is: de gewichten bepalen van de verbindingen tussen de neuronen) worden de gegevens van bestaande paddenstoelen gebruikt, waarvan tevens geweten is of ze giftig zijn of niet. Dit is een classificatie in twee klasses.
Men kan ook classificeren in meerdere klasses, bijvoorbeeld bij Optical Character Recognition wordt er een onderverdeling gemaakt in 26 klasses, namelijk de 26 letters van het alfabet. De uitgangslaag bestaat dan meestal uit 26 neuronen: elk neuron duidt één klasse aan.
Een meerlaags perceptron maakt niet-lineaire classificatie mogelijk. Bij lineaire classificatie wordt de populatie gescheiden door een lijn (in geval van twee kenmerken), een vlak (drie kenmerken) of een hypervlak (meer dan drie kenmerken). Maar bij niet-lineaire classificatie kan de populatie gescheiden worden door ingewikkeldere vormen, zoals ellipsen, cirkels of grillige vormen. Dit maakt een preciezere classificatie mogelijk, en dat is nu net de kracht van het perceptron.

## Toepassing: voorspelling van een niet-lineaire tijdsreeks

Het perceptron kan ook gebruikt worden om voorspelling te doen van een niet-lineaire tijdsreeks. Dat wil zeggen dat het perceptron aan de hand van een gegeven signaal kan voorspellen wat de waarde van het signaal zal zijn in de (nabije) toekomst. Dit kan een zeer waardevolle techniek zijn, bijvoorbeeld voor het voorspellen van beurscijfers. Er wordt dan ook veel onderzoek gedaan in deze materie.