zurück

Aufgabe UE-1.2

 Source Code:  aufg_1_1.m
   perco.m
   genData.m

1. Einleitung

Die Aufgabe besteht darin, den Online Perzeptron Trainingsalgorithmus aus dem Skriptum zur Vorlesung (S. 33) zu implementieren und auf Trainingssets zu testen, die die Probleme OR, AND und XOR beschreiben.

2. Lösungsweg

Die Matlab-Implementierung gliedert sich in zwei Funktionen und ein Skript, das den allgemeinen Ablauf regelt.
  • genData.m: generiert Datenset mit zugehörigen Targets
  • perco.m: traininert Perceptron und berechnet Gewichtsvektor
  • aufg_1_1.m: regelt den Ablauf

2.1 Ausgangsdaten

Abhängig von den zwei Benutzereingaben n und L für die Anzahl und Art(OR, AND, XOR) der Trainingsdaten wird mit genData(n,L) das von L spezifizierte Trainingsset mit zugehörigen Targets erstellt. Die Trainingsvektoren sind dabei mit einem Rauschen zwischen -0.2 und 0.2 gestört.

2.2 Trainieren des Perceptrons

Nach der Konvertierung der Trainingsdaten in ein homogenes Trainingsset wird mit Hilfe der Funktion perco(X,t,maxEpoches) der Gewichtsvektor w berechnet.

Die Funktion perco(X,t,maxEpoches) implementiert den Online Perzeptron Trainingsalgorithmus. Die Lernrate wird mit gamma = 1.0 und der Gewichtsvektor mit w = 0 initialisiert. Im Falle der linearen Separierbarkeit konvergiert der Algorithmus, sobald keine Samples mehr falsch klassifiziert werden. Spätestens wird aber nach maxEpoches Iterationen abgebrochen.

2.3 Plotten der Daten

Am Ende des Skripts werden die Trainingsdaten je nach Klassenlabel eingefärbt geplottet. Zusätzlich werden noch die Entscheidungsgrenze und der Gewichtsvektor eingezeichnet.

3. Ergebnisse

Aufgrund der zufällig generierten Störung in den Trainingsdaten können diese Ergebnisse nicht genau reproduziert werden.

3.1 Trainingsset 1: OR-Daten

Es wurden n = 100 Testdaten erzeugt, die das OR-Problem beschreiben(L=1). Das Trainingsset ist linear separierbar und so konvergiert der Online-Perceptron Trainingsalgorithmus schon nach 2 Epochen. Ein Plot der Daten, sowie der Entscheidungsgrenze und des Gewichtsvektors ist in Abbildung 1 zu sehen.


Abbildung 1: Plot der Daten und Entscheidungsgrenze für OR-Testset

Die geometrische margin beträgt gm(X,t) = 0.0074. Daraus lässt sich auf eine relativ schlechte Generalisierungsfähigkeit schließen.

3.2 Trainingsset 2: AND-Daten

Erneut werden n = 100 Testdaten erzeugt, die das AND-Problem beschreiben(L=2). Das Trainingsset ist wieder linear separierbar und der Algorithmus konvergiert nach 4 Epochen. Ein Plot der Daten sowie der Entscheidungsgrenze und des Gewichtsvektors ist in Abbildung 2 zu sehen.


Abbildung 2: Plot der Daten und der Entscheidungsgrenze für AND-Testset

Die geometrische margin beträgt gm(X,t) = 0.0043

3.3 Trainingsset 3: XOR-Daten

Für ein Trainingsset des XOR-Problems(L=3) werden n = 100 Samples erzeugt. Es ist leicht zu sehen, dass das XOR-Problem nicht durch eine lineare Entscheidungsgrenze teilbar ist und erwartungsgemäß bricht der Algorithmus nach maxEpoches Epochen ab. Ein Bild des letzten Gewichtsvektors sowie der Eintscheidungsgrenze ist in Abbildung 3 dargestellt.


Abbildung 3: XOR-Problem mit falscher Entscheidungsgrenze nach Abbruch des Algorithmus


 nach oben