R - Einführung in ML mit ANN (1) (Stefan Bosse) [12.2023]

Einführung in Einführung in ML mit ANN

Einführung in Einführung in ML mit ANN
Vorwort
Das Künstliche Neuronale Netzwerk
Training
Das EXOR Problem
Funktionsregression
Einblicke

Vorwort

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.


R Worker Starten

 ▸ 
[]
 ✗ 
 ≡ 


R Set-up

 ▸ 
[]
 ✗ 
 ≡ 

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.

Das Künstliche Neuronale Netzwerk

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:

  1. Statische Parameter: Die Graphstruktur, d.h. die Anzahl der Schichten und Neuronen sowie ihre Verbindungen;
  2. Dynamische Parameter: Alle funktionalen Parameter wie Geichte und Bias.

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.

Training

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 xy: E=y-y0 um die Gewichte und den Offset (bias) der einzelnen Funktionsknoten anzupassen:

\[ {w}´_{{i}}={w}_{{i}}-\alpha{\left({y}-{y}_{{0}}\right)}{x}_{{i}}\\ {b}´_{{i}}={b}_{{i}}-\alpha{\left({y}-{y}_{{0}}\right)} \]

Ein einfaches ANN mit zwei Eingabe- und einer Ausgabevariable

 ▸ 
[]
 ✗ 
 ≡ 


Ein einfaches ANN mit zwei Eingabe- und einer Ausgabevariable

 ▸ 
[]
 ✗ 
 ≡ 

Frage. Welche Eigenschaft besitzt die Sigmoid Funktion im Vergleich zu einem Polynom?


Let's train

 ▸ 
[]
 ✗ 
 ≡ 


Let's test

 ▸ 
[]
 ✗ 
 ≡ 

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?

Das EXOR Problem


Ein einfaches ANN mit einer Eingabe, einer Ausgabe, und inneren Schichten (oder keine) für eine Klassifikation (0/1)

 ▸ 
[]
 ✗ 
 ≡ 

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?

Funktionsregression

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.


Ein einfaches ANN mit einer Eingabe, einer Ausgabe, und inneren Schichten (oder keine) für eine Funktionsregression

 ▸ 
[]
 ✗ 
 ≡ 

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)).

Einblicke

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 xy 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.


Darstellung der Ausgabe der einzelnen Schichten des ANN Modells für eine bestimmte Aktivierung x

 ▸ 
[]
 ✗ 
 ≡ 

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?


Hilfe



Einreichung (Assignment #01-46158 )



Prüfen



Bewerten (Lehrer)




Created by the NoteBook Compiler Ver. 1.25.0 (c) Dr. Stefan Bosse (Tue Dec 19 2023 16:26:51 GMT+0100 (Central European Standard Time))