i

Exkurs: Maschinelles Lernen - Delta-Regel nach Rosenblatt

Bei diesem Abschnitt handelt es sich um einen Exkurs, er kann beim Lesen ohne weiteres übersprungen werden.

Kommen wir nun zu der eigentlichen Stärke von Perzeptronen, dem so genannten maschinellen Lernen, durch das sich Perzeptronen ganz prinzipiell von herkömmlichen Algorithmen entscheiden.

Die Gewichte und Schwellenwerte von Perzeptronen mühsam per Hand zu justieren ist sehr arbeitsaufwendig. Daher hat Rosenblatt 1958 einen Algorithmus entwickelt, mit dessen Hilfe die Gewichte und Schwellenwerte von Perzeptronen automatisiert mittels so genannter Trainingsdaten bestimmt werden können. Dazu werden die Gewichte und Schwellenwerte zu Beginn des Lernprozesses einfach mit Zufallszahlen belegt und dann iterativ mittels vorklassifizierter Trainingsdaten sukzessive verbessert.

Um bei dem Beispiel mit den Tieren zu bleiben, kann man sich vorstellen, dass es eine Menge von Tieren gibt, die durch Menschen als gefährlich bzw. ungefährlich klassifiziert worden sind. Mit diesen Trainingsdaten werden Gewichte und Schwellenwert eines Perzeptron nun so trainiert (also sukzessive angepasst), dass das Perzeptron anschließend selbständig weitere, ihm bisher unbekannte, Tiere als gefährlich bzw. ungefährlich klassifizieren können soll.

Um den Lernalgorithmus nach Rosenblatt detailliert zu erläutern, betrachten wir zunächst wieder ein Perzeptron mit zwei Eingängen. Zur Veranschaulichung kann man sich vorstellen, dass es sich dabei wieder um die beiden Merkmale Zahn- und Augengröße handelt:

Perzeptron NOR-Verknüpfung

Statt die Gewichte $\vec{w}$ und den Schwellenwert $\Theta$ mühsam per Hand zu justieren, soll das Perzeptron nun selbständig lernen, auf bestimmten Eingangsgrößen $\vec{x}$ mit einer jeweils vorgegebenen Ausgangsgröße $y \in \{0,1\}$ zu reagieren.

Bevor der Lernalgorithmus von Rosenblatt weiter unten formal in Pseudocode angegeben wird, kann man durch die folgende Klickstrecke schon mal ein Gefühl von der prinzipiellen Funktionsweise des Algorithmus' bekommen. Die rot dargestellten Punkte sollen durch die Separationsgerade von den grünen Punkten getrennt werden. Rote Punkte stellen gefährliche Tiere dar, so dass das Perzeptron in diesen Fällen feuern soll. Blau dargestellt ist jeweils die Separationsgerade mit angeheftetem Gewichtsvektor $\vec{w}$. Der Gewichtsvektor zeigt in den Halbraum, für den das Perzeptron feuert (also $y=1$ am Ausgang anliegt).

Klickstrecke: Grundsätzliche Idee des Algorithmus nach Rosenblatt

Führe aus, solange noch nicht alle Lernpunkte korrekt klassifiziert werden:
start:
    wähle zufällig einen beliebigen Lernpunkt $\vec{x}$ aus (jeweils gelb markiert)
test:
    if   Lernpunkt $\vec{x}$ noch auf der falschen Seite der Gerade   then   goto adapt
    goto test
adapt:
    Drehe und translatiere die Gerade so, dass sie den Punkt $\vec{x}$ besser repräsentiert als vorher
    (durch geschickte Veränderung des Gewichtsvektors $\vec{w}$ und des Schwellenwertes $\theta$)
    goto test
Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus Rosenblatt-Algorithmus

Nun wird der Lernalgorithmus nach Rosenblatt zunächst in Pseudocode angegeben und im Anschluss daran wird die Funktionsweise des Algorithmus' dann auch noch einmal graphisch veranschaulicht.

Sei eine Menge an Eingabevektoren $\Omega$ gegeben, die in zwei disjunkte Teilmengen $\Omega = \Omega_P \cap \Omega_N$ zerfällt. Für einen Eingabevektor $\vec{x} \in \Omega_P$ soll das Perzeptron feuern ($y=1$), für einen Eingabevektor $\vec{x} \in \Omega_N$ soll es nicht feuern ($y=0$). Um bei dem gewählten Beispiel zu bleiben, kann man sich vorstellen, dass $\Omega_P$ die Menge der gefährlichen und $\Omega_N$ die Menge der ungefährlichen Tiere darstellt.

Anschaulich formulierter Lern-Algorithmus nach Rosenblatt:

start:
    wähle $\vec{w}(0) \in \mathbb{R}^2$ zufällig (Startgewichte)
    wähle $\Theta(0) \in \mathbb{R}$ zufällig (Startschwellenwert)
    setzte $t := 0$
test:
    Solange noch nicht ausgewählt $\vec{x}$
    und solange noch nicht alle $\vec{x}$ das gewünschte Ergebnis $y$ liefern,
    wähle $\vec{x} \in \Omega$ zufällig
    if $\vec{x} \in \Omega_P$ and $y=1$ then goto test
    if $\vec{x} \in \Omega_P$ and $y=0$ then goto add
    if $\vec{x} \in \Omega_N$ and $y=0$ then goto test
    if $\vec{x} \in \Omega_N$ and $y=1$ then goto sub
add:
    setzte $\vec{w}(t+1) := \vec{w} (t) + \vec{x}$
    setzte $\Theta(t+1) := \Theta (t) -1$
    setzte $t := t+1$
    goto test
sub:
    setzte $\vec{w}(t+1) := \vec{w} (t) - \vec{x}$
    setzte $\Theta(t+1) := \Theta (t) + 1$
    setzte $t := t+1$
    goto test

Anmerkung:

Im Rosenblatt-Algorithmus erscheint es zunächst etwas seltsam, dass der Gewichtsvektor $\vec{w}$ ausgerechnet um den Eingangsvektor $\vec{x}$ und der Schwellenwert $\Theta$ um $-1$ geändert werden. Das liegt aber dran, dass die so genannten partiellen Ableitungen der Progagierungsfunktion $u(\vec{x})=\vec{w}\cdot\vec{x}-\Theta$ gegeben sind durch: $$ \frac{\partial u}{\partial w_i} = x_i \qquad \frac{\partial \Theta}{\partial x_i} = -1 $$ Bei einer partiellen Ableitung wird nur nach der angegebenen Variablen abgeleitet, alles andere wird als fester Parameter angesehen. Die partielle Ableitung nach einer bestimmten Größe ist also ein Maß dafür, wie stark sich die Funktion mit dieser Größe ändert. Im Rosenblatt-Algorithmus wird also in jedem Schritt die Progagierungsfunktion ggf. in Richtung ihrer stärksten Änderung variiert.

Geometrische Veranschaulichung des Lernalgorithmus

Visualisierung des Lernalgorithmus Durch den Lernalgorithmus wird der Gewichtsvektor wie in der Abbildung gezeigt sukkzessive gedreht, bis schließlich alle Eingangsvektoren $\vec{x}$ korrekt klassifiziert werden. Beachte jedoch, dass die Abbildung insofern unvollständig ist, als die Updateregeln für den Schwellenwert $\Theta$ nicht berücksichtigt wurden. (Die tatsächlichen Separationsgeraden liegen bei Berücksichtigung der jeweiligen Werte von $\Theta$ daher lediglich parallel zu den eingezeichneten Geraden $g_1, g_2$ und $g_3$.)

Zusammenfassung des Lernalgorithmus in einer einzigen Lernregel

Betrachte einen Eingangsvektor $\vec{x} \in \Omega$. Sei $Y(\vec{x})$ die zugehörige Sollausgabe, also \begin{eqnarray} Y(\vec{x}) := \left\{\begin{array}{ll} 1 & \vec{x} \in \Omega_P \\ 0 & \vec{x} \in \Omega_N \end{array}\right. , \nonumber \end{eqnarray} und setzte $\delta := Y(\vec{x}) - y(\vec{x})$ als die Abweichung von $y$ von der Sollausgabe $Y$. Dann lassen sich die Unterfälle des obigen Lernalgorithmus elegant zusammenfassen zu je einer einzigen Lernregel für $\vec{w}$ und für $\Theta$ als \begin{eqnarray} \vec{w}(t+1) &:=& \vec{w}(t) + \delta \vec{x} \nonumber \\ \Theta(t+1) &:=& \theta(t) + \delta\cdot (-1) \nonumber \\ &=& \theta(t) - \delta \nonumber \end{eqnarray} Meist wird noch eine so genannte Lenrate $\eta>0$ (Lerngeschwindigkeit) eingeführt, so dass man als Lernregel für Perzeptronen erhält: \begin{eqnarray} \vec{w}(t+1) &:=& \vec{w}(t) + \eta \delta \vec{x} \nonumber \\ \Theta(t+1) &:=& \theta(t) - \eta \delta \nonumber \end{eqnarray} Wenn die Menge $\Omega$ eine sehr große Menge Eingangsvektoren enthält, wird sie oft aufgeteilt in zwei disjunkte Teilmengen \begin{eqnarray} \Omega_L &:& \textrm{learning batch} \nonumber \\ \Omega_T &:& \textrm{testing batch} \nonumber \end{eqnarray}

Die Teilmenge $\Omega_L$ wird dann zum Trainieren des Perzeptrons nach der Lernregel verwendet, während die anderen Teilmenge $\Omega_T$ zum anschließenden Testen verwendet wird, um herauszufinden, wie gut die Gewichte und der Schwellenwert des Perzeptrons justiert wurden. Oft wird das zahlenmäßiges Verhältnis von $\#\Omega_L : \#\Omega_T$ als $80\% : 20\%$ gewählt.

Abschließend wird die obige Lernregel noch auf den Fall von $n$-dimensionalen Eingangsvektoren erweitert, so dass man den vollständigen Lernalgorithmus erhält als:

Lernalgorithmus für Perzeptronen

start:
    wähle $\vec{w}(0) \in \mathbb{R}^n$ zufällig (Startgewichte)
    wähle $\Theta(0) \in \mathbb{R}$ zufällig (Startschwellenwert)
    wähle $\eta > 0$ (Lernrate)
    setzte $t := 0$
step:
    wähle $\vec{x} \in \Omega_L$
    if $\vec{x} \in \Omega_P$ setze $Y:=1$
    if $\vec{x} \in \Omega_N$ setze $Y:=0$
    berechne $y(\vec{x}) = f_\theta(\vec{w}\cdot\vec{x})$ (Ausgabegröße)
    berechne $\delta = Y - y$ (Fehler)
    update $\vec{w}(t+1) := \vec{w}(t) + \eta \delta \vec{x}$
    update $\Theta(w+1) := \Theta(t) - \eta \delta$
    setzte $t := t+1$
end:
    Solange es noch $\vec{x} \in \Omega_L$ gibt mit $\delta \ne 0$ goto step

Anmerkung

Wird der Schwellenwert $\Theta$ wie oben beschrieben in den Gewichtsvektor integriert, so fällt in dem obigen Algorithums die entsprechenden Zeile zum Update des Schwellenwertes $\Theta$ weg, da es dann bereits automatisch in dem Update des Gewichtsvektors enthalten ist.

Rosenblatt hat 1958 gezeigt, dass der obige Algorithmus terminiert, falls die Menge der Eingabegrößen separierbar ist. Auf die Wiedergabe des Beweises wird an dieser Stelle verzichtet.

Anwendung auf neue Eingabegrößen

Nachdem das Perzeptron mit Hilfe der obigen Lernregel trainiert worden ist, kann es anschließend auch auf Eingabevektoren $\vec{x} \notin \Omega$ angewandt werden, die gar nicht in der ursprünglichen Menge $\Omega$ enthalten waren und für die die tatsächliche Ausgabegröße $Y$ daher unter Umständen noch unbekannt ist. In diesem Sinne stellt $y(\vec{x})$ dann eine Vorhersage für den tatsächlichen Wert $Y(\vec{x})$ dar.

Man beachte jedoch, dass es sich dabei lediglich um eine Vorhersage handelt, die sich (mit einer gewissen Wahrscheinlichkeit) bei näherer Analyse dann aber durchaus auch als falsch erweisen kann. In dem oben gewählten Beispiel könnte das bedeuten, dass das Perzeptron ein Tier als ungefährlich einstuft, während es sich in Wirklichkeit um ein äußerst gefährliches Tier handelt. Zum Beispiel könnte das Tier weder große Zähne noch große Augen haben aber trotzdem hochgiftig sein. Ein blindes Vertrauen auf die Vorhersage des Perzeptrons könnte abhängig vom Anwednungsszenario also sehr dramatische Konsequenzen haben.

Bedeutung der Trainingsdaten

Im Unterschied zu herkömmlichen Algorithmen ist für automatisiertes maschinelles Lernen die Verfügbarkeit von vorklassifizierte Trainingsdaten unerlässlich. Ohne solche Trainingsdaten kann der oben beschriebene Lern-Algorithmus zwar implementiert, aber nicht trainiert werden.

Damit liegt die Kontrolle solcher maschinell lernenden Algorithmen bei denjenigen, die Zugriff auf geeignete vorklassifizierten Daten haben. Vor diesem Hintergrund wird auch verständlich, warum es heute so lukrativ geworden ist, möglichst viele Daten über möglichst viele Menschen zu sammeln.

Aufgabe 1:

Finde weitere Beispiele, bei denen ein blindes Vertrauen in die Klassifikationsvorhersage eines Perzeptrons unerwünschte Konsequenzen haben könnte.

Aufgabe 2:

Recherchiere, welche Konzerne im Moment als die wertvollsten der ganzen Welt gelten. Fallen dir Gemeinsamkeiten auf? Warum werden ausgerechnet diese Konzeren als so wertvoll eingeschätzt?

Aufgabe 3:

Implementiere den Lernalgorithmus für das maschinelle Erlernen der AND, OR, NAND und NOR-Verknüpfungen.

Suche

v
5.1.3.6.5
dev.inf-schule.de/ki/menueansicht/maschinelles_lernen_mit_python/deep_learning/maschinelles_lernen_delta_regel_nach_rosenblatt
dev.inf-schule.de/5.1.3.6.5
dev.inf-schule.de/@/page/OchzHnl7axldTedg

Rückmeldung geben