R - Einführung in ML mit ANN (1) (Stefan Bosse) [12.2023] |
Bitte folgenden Code ausführen um notwendige Bibliotheken zu laden. Nicht erforderlich bei nativer R Software.
Der Code in dieser Übung wird in einem eigenen Web Worker Prozess unabhängig von der Frontend Seite ausgeführt. Daher muss der Worker zuerst EINMAL gestartet werden.
▸
[] |
✗
≡
|
▸
[] |
✗
≡
|
Es wird in diesem Kurs der R-Dialekt r+ verwendet. R+ ist eine Reimplementierung von R in JavaScript und läuft direkt in Web Browsern und node webkit Applikationsprogrammen. Es ist keine Softwareinstallation erforderlich.
R+ ist nahezu R Syntax mit einigen Ergänzungen die die Programmierung und lesbarkeit von Programmen erleichtern.
Nicht alle R Packages sind in R+ enthalten, und es kann Abweichungen geben. Hier werden vor allem das math, und ann Package verwendet.
Dennoch lassen sich die meisten öffentlich verfügbaren algorithmischen Lösungen und Hilfestellungen mit R+ umsetzen.
Es gibt verschiedene KNN (ANN) Pakete in R. "Neuralnt" ist ein solches in R programmiertes Paket. Es bietet moderne Trainingsalgorithmen wie "resilent backpropagation" (rprop). Alternativ gibt es auch Schnittstellen zu bekannten Frameworks wie TensorFlow oder Keras. Hier wird ein vereinfachtes ANN Paket verwendet. Es bietet klassische gradientenbasierte Fehlerückpropagation.
Das ANN Modell läßt sich durch folgende Parameter definieren:
Auch die Architektur (statisch) kann prinzipiell beim Training verändert werden. Zum einen gibt es Graphenreduktion, zum anderen kann mit genetischen/evolutionäre Algorithmen auch die Strutkur während des Trainings angepasst werden.
Das Training soll die dynamischen Parameter des Modell derart anpassen dass der gesamte Modellfehler y0-y minimal wird (Optimierunsgproblem). Diese Optimierungsprobleme sind häufig mit gradientenbasierten Verfahren gelöst werden.
Vereinfacht verwendet man den aktuellen Modellfehler x → y: E=y-y0 um die Gewichte und den Offset (bias) der einzelnen Funktionsknoten anzupassen:
▸
[] |
✗
≡
|
▸
[] |
✗
≡
|
Frage. Welche Eigenschaft besitzt die Sigmoid Funktion im Vergleich zu einem Polynom?
▸
[] |
✗
≡
|
▸
[] |
✗
≡
|
Aufgabe. Verändere die Lernrate, die Anzahl der Epochen, und die Startwerte der Parameter. Notiere einige Ergebnisse und Beobachtungen. Was passiert wenn die Lernrate zu groß gewählt wird?
▸
[] |
✗
≡
|
Aufgabe. Variiere die Trainingsparamter (rate,epochs) und berichte über die Ergebnisse. Wichtig: jeder Traingslauf startet mit einer randomisierten Initialisierung der Gewichte der Neuronen. Ergebnisse können daher varaiieren. Dann variiere die inneren Schichten (oder lasse sie weg). Wie ändern sich die Ergebnisse?
Neben der Klassifikation durch approximkierte binäre Ausgänge des netzwerks (typisch ein Neuron pro Klasse) kann man mit ANN auch eine Funktionsregression implementieren. Nachfolgend ist das für die Approximation der Sinusfunktion (erster Quadrant) gezeigt.
▸
[] |
✗
≡
|
Aufgabe. Variiere die Trainingsparamter (rate,epochs) und berichte über die Ergebnisse. Wichtig: jeder Traingslauf startet mit einer randomisierten Initialisierung der Gewichte der Neuron. Ergebnisse können daher varaiieren. Dann variiere die inneren Schichten (oder lasse sie weg). Wie ändern sich die Ergebnisse? Berechne jeweils den mittleren Fehler (abs(yp-y)/length(y)
).
Ein ANN ist ein "Black Box" Modell. Es setzt sich aus i.A. aus einer Vielzahl von nicht linearen Funktionen zusammen und bildet eine "Meta" Funktion deren Übertragungsfunktion der gewünschten x → y Abbildung angenähert ist. Um Einblicke in das Verhalten von ANN (ind anderen komplexen ML Modellen) zu erhalten kann man sich z.B. die Ausgänge der Teilfunktionen für eine gegebene Aktivierung (x) anschauen.
▸
[] |
✗
≡
|
Aufgabe. Beobachte die Ausgaben für die Werte x[1], x[20], und x[90]. Wo liegen typischerweise die Ausgabewerte der inneren Neuronen? Betrachte die Sigmoid Funktion (Übertragungsbereich), was bedeutet das für die Nicht-Lineraität der Gesamtfunktion bzw. wie kommt sie zu stande?