>> Ressourcen > Theses > Reif, Gerald: M[..] > 08. Neuronale N[..]

next up previous contents
Nächste Seite: 9. Neuronale Fuzzy Systeme Aufwärts: I. Der Untersuchungsbereich Vorherige Seite: 7. Fuzzy Logik   Inhalt



8. Neuronale Netze

Am Ende des vorigen Abschnitts wurde angeführt, wie schwer die Feinabstimmung eines Fuzzy Regel Systems fallen kann. In diesem Abschnitt soll nun anhand der Neuronalen Netze ein Modell eines lernfähiges Systems vorgestellt werden, welches mit Hilfe von Trainingsdaten auf die Durchführung seiner Aufgabe trainiert wird. Das Modell der Neuronalen Netze lehnt sich dabei stark an die Funktionsweise der Neuronen im menschlichen Gehirn an.

8.1 Grundlagen der Neuronalen Netze

Für das Studium der Neuronalen Netze gibt es ganz unterschiedliche Motive, je nachdem welche Forschergruppe daran beteiligt ist. Biologen sind an Modellen interessiert, mit denen natürliche Neuronale Netze verstanden werden können. Mathematiker untersuchen welche Klassen von Funktionen mit Hilfe des Modells der Neuronalen Netze berechnet werden können. Informatiker sind daran interessiert, die Palette der Möglichkeiten zu erforschen, die sich durch den Einsatz eines Neuronalen Netzes als lernfähiges und fehlertolerantes System eröffnen. Die Forschung an Neuronalen Netzen stellt sich somit als stark interdisziplinär heraus. [Rojas1993] Dabei können die einzelnen Disziplinen viel von einander profitieren. So basiert z.B. das Modell des künstlichen Neurons auf den Untersuchungen von natürlichen Nervenzellen. Umgekehrt konnten durch die Simulation von Neuronalen Netzen, Hypothesen über die Informationsverarbeitung im menschlichen Hirn bestätigt oder widerlegt und somit verworfen werden [Hinton1992].

Mit künstlichen Neuronalen Netzen werden natürliche biologische Neuronale Netze als informationsverarbeitende Systeme nachgeahmt. Dazu müssen zunächst die wesentlichen Eigenschaften der biologischen Nervenzellen unter dem Gesichtspunkt der Informationsverarbeitung studiert werden, um dann abstrakte Neuronale Netze zu entwerfen und sie anschließend durch Simulation zu untersuchen. Auch wenn sich die unterschiedlichen Modelle des Gehirns in vielen Aspekten unterscheiden, herrscht Übereinstimmung darüber, daß das Wesen der Funktion des Nervensystems die ,,Kontrolle durch Kommunikation'' ist. Während jedoch elektronische Schaltelemente in der Lage sind, im Nanosekunden-Bereich zu schalten, sind natürliche Neuronen im Gehirn mit einer Schaltzeit im Millisekunden-Bereich vergleichsweise langsam. Trotzdem ist das menschliche Gehirn aber in der Lage, Probleme zu lösen, die für jeden konventionellen Rechner in weiter Ferne liegen. Dies liegt vorallen an der großen Anzahl der Neuronen und der starken Vernetzung. [Rojas1993] Der menschliche Kortex8.1 z.B. besteht aus ca. 100 Milliarden Neuronen die mit ca. 100 Billionen Synapsen8.2 miteinander verbunden sind [Kurzweil1999].

In der nachfolgenden Übersicht soll betrachtet werden, in welchen Anwendungsgebieten künstliche Neuronale Netze in der Praxis verwendet werden. Dabei handelt es sich in den meisten Fällen um Anwendungsgebiete, die mit den Methoden der ,,konventionellen Informatik'' nur mit großem Aufwand in den Griff bekommen werden. Neuronale Netze werden zur Bewältigung dieser Aufgaben nicht im klassischen Sinn programmiert, sie werden vielmehr auf ihre Aufgabe trainiert. [Luger1997]

  • Klassifizierung: Bei der Klassifizierung wird für jedes Eingangsmuster durch das Neuronale Netz entschieden, zu welcher Klasse von Eingangssignalen es gehört. Ein klassisches Beispiel für die Klassifizierung ist die Mustererkennung (Pattern Recognition). Dabei wird versucht, in verrauschen Eingangssignalen bestimmte Strukturen zu identifizieren. Bei der Schrifterkennung wird z.B. versucht eine Pixel-Matrix (Eingangssignal) einem Buchstaben des Alphabets (Klasse) zuzuordnen. [Luger1997]
  • Assoziativspeicher: Bei dieser Art des Speicherzugriffs wird nicht eine bestimmte Speicheradresse (Inputvektor) auf den Inhalt einer Speicherzelle abgebildet, vielmehr wird die ,,Umgebung'' der Speicheradresse auf die Speicherzelle abgebildet. Für den Fall, daß der Eingangsvektor $x$ mit der Speicherzelle $y$ assoziiert wird, so soll auch die Eingabe $\tilde{x}$ zu der Speicherzelle $y$ führen, wenn $\tilde{x}$ in der Umgebung von $x$ liegt. Auf diese Weise können z.B. verrauschte Eingaben dem richtigen Ausgangswert zugeordnet werden. [Rojas1993]

8.2 Das künstliche Neuron

An dieser Stelle soll auf die Basis eines Neuronalen Netzes, das künstliche Neuron, eingegangen werden. Ein künstliches Neuron besteht aus folgenden Bestandteilen, die in Abbildung 8.1 graphisch veranschaulicht sind: [Luger1997]

Abbildung: Schematische Darstellung eines künstlichen Neurons: Aus den Eingangssignalen $x_i$ wird die gewichtete Summe $net$ gebildet. Aus dieser Summe wird dann mit der Aktivierungsfunktion $f(net)$ der Ausgangswert $o$ berechnet.
\includegraphics {bilder/tech/NNneuron.eps}

Eingangssignale $x_i$ :
Diese Daten können von der Umgebung oder vom Ausgang eines anderen künstlichen Neuron stammen. Unterschiedliche Netzwerkmodelle erlauben dabei unterschiedliche Wertebereiche. Typische Wertebereiche sind die reellen Zahlen, das Intervall $[0,1]$ oder die diskreten Werte $\{0,1\}$.
Gewichte $w_i$ :
Jeder Verbindung in einem Neuronalen Netz ist eine reelle Zahl als Gewicht zugeordnet. Dieses Gewicht beschreibt die Stärke der Verbindung. In diesen Verbindungsgewichten ist das Wissen des Neuronalen Netzes gespeichert.
Netto-Input $net$ :
Der Netto-Input entspricht der Summe der gewichteten Eingangssignale.


\begin{displaymath}
net=\sum_i w_ix_i
\end{displaymath} (8.1)

Aktivierungsfunktion $f(net)$ :
Die Aktivierungsfunktion bestimmt, abhängig vom Netto-Input $net$, den Output $o$ des Neurons. Dieser Output $o$ kann das Eingangssignal für ein anderes Neuron sein oder das Ausgangssignal des Neuronalen Netzes. Als Aktivierungsfunktion wird meist eine der nachfolgenden Grundtypen verwendet:
Schwellwertfunktion:


\begin{displaymath}
f(net)= \left\{ \begin{array}{r@{\quad : \quad}l}
0 & net<0 \\ 1 & net \ge 0
\end{array} \right.
\end{displaymath} (8.2)

Abbildung 8.2: Schwellwertfunktion als Aktivierungsfunktion.
\includegraphics {bilder/tech/NNschwellwert.eps}

Der Funktionsverlauf ist in Abbildung 8.2 graphisch dargestellt. Neuronen (Gatter), die diese Aktivierungsfunktion verwenden, nennt man Schwellwertgatter. Das in Abschnitt 8.3 vorgestellte Perzeptron, stellt ein solches Schwellwertgatter dar.

Sigmoide Funktion:


\begin{displaymath}
f(net)= \frac{1}{1+e^{-net}}
\end{displaymath} (8.3)

Abbildung 8.3: Sigmoide Funktion als Aktivierungsfunktion.
\includegraphics {bilder/tech/NNsigmoid.eps}

Der Funktionsverlauf ist in Abbildung 8.3 graphisch dargestellt. Der Unterschied der Sigmoiden Funktion zur Schwellwertfunktion ist, daß diese ein kontinuierliches Ausgangssignal liefert und differenzierbar ist. Erst dadurch werden Lernverfahren wie das Backpropagation-Learning, das in Abschnitt 8.4 vorgestellt wird, möglich. Gatter, die diese Aktivierungsfunktion verwenden, nennt man Sigmoide-Gatter.

Lineare Funktion:


\begin{displaymath}
f(net) = net
\end{displaymath} (8.4)

Abbildung 8.4: Lineare Funktion als Aktivierungsfunktion.
\includegraphics {bilder/tech/NNlinear.eps}

Der Funktionsverlauf ist in Abbildung 8.4 graphisch dargestellt. Die lineare Funktion stellt die einfachste und am wenigsten mächtige Aktivierungsfunktion dar. Gatter die diese Aktivierungsfunktion verwenden, nennt man Linearegatter. Bei der linearen Aktivierungsfunktion ist zu beachten, daß eine Hintereinanderschaltung mehrerer linearer Gatter nur die selbe Funktion berechnen kann, wie ein einzelnes Gatter. Der Grund dafür ist, daß eine Hintereinanderschaltung von linearen Funktionen wieder linear ist8.3.

Zusätzlich zu den Eigenschaften der individuellen Neuronen, werden die Eigenschaften eines Neuronalen Netzes auch durch folgende Charakteristika bestimmt: [Luger1997]

Netzwerktopologie:
Unter der Topologie des Netzwerkes wird das Muster der Verbindungen zwischen den einzelnen künstlichen Neuronen verstanden. Meistens werden die Neuronen in Schichten (Layern) angeordnet. Auf die Einschränkungen, die aus der Topologie folgen, wird im nächsten Abschnitt noch näher eingegangen.
Lernalgorithmus:
Darunter versteht man jenen Algorithmus, mit dem das Netzwerk auf seine zukünftige Aufgabe trainiert wird. In Abschnitt 8.4 wird der Backpropagation Algorithmus als grundlegender Algorithmus für das Lernen in Neuronalen Netzen vorgestellt.

In diesem Abschnitt wurden die grundlegenden Eigenschaften eines Neuronalen Netzes besprochen. Darauf aufbauend soll im nächsten Abschnitt die Arbeitsweise von Neuronalen Netzen anhand des Modells von McCulloch und Pitts erläutert werden.


8.3 Das Perzeptron

Das Perzeptron von McCulloch und Pitts (1943) stellt den ersten Ansatz von Neuronal Computing dar. [Luger1997] Anhand dieses historischen Ansatzes soll die Arbeitsweise eines Neuronalen Netzes veranschaulicht werden. Dabei werden auch die Grenzen dieses Modells beleuchtet und ein Ausweg in der Verwendung von Multi-Layer-Perzeptronen gezeigt.

Ein Perzeptron ist ein Neuron, wie dies in Abbildung 8.1 dargestellt ist. Als Eingangssignale sind die reellen Zahlen zulässig, die Gewichte entsprechen ebenfalls reellen Zahlen. Als Aktivierungsfunktion dient eine Schwellwertfunktion mit variabler Schwelle (Threshold $\theta$). Das Ausgangssignal des Perzeptrons ist somit diskret aus der Menge $\{0,1\}$. [Haykin1994]


\begin{displaymath}
f(x_i)= \left\{ \begin{array}{r@{\quad : \quad}l}
0 & \sum...
... \sum\limits_{i=1}^n x_i w_i \ge \theta
\end{array} \right.
\end{displaymath} (8.5)

Zur Vereinfachung kann die Aktivierungsfunktion auch anderst angeschrieben werden:


\begin{displaymath}
f(x_i)= \left\{ \begin{array}{r@{\quad : \quad}l}
0 & \sum...
...m\limits_{i=1}^n x_i w_i - \theta \ge 0
\end{array} \right.
\end{displaymath} (8.6)

Verwendet man diese Schreibweise, so kann man erkennen, daß der Threshold $\theta$ auch als zusätzliches Gewicht für einen zusätzlichen Eingang, der konstant auf 1 liegt, aufgefaßt werden kann. Ein Perzeptron mit der Realisierung des Schwellwerts durch einen zusätzlichen Eingang und einem zusätzlichen Gewicht ist in Abbildung 8.5 dargestellt. Somit ergibt sich für die Aktivierungsfunktion:


\begin{displaymath}
f(x_i)= \left\{ \begin{array}{r@{\quad : \quad}l}
0 & \sum...
...& \sum\limits_{i=1}^{n+1} x_i w_i \ge 0
\end{array} \right.
\end{displaymath} (8.7)

Durch diese Schreibweise, kann wie später gezeigt wird, der Perzeptron Lernalgorithmus für die Gewichte, als auch für die Schwellwerte einfach angeschrieben werden.

Wie Abbildung 8.6 zeigt, können mit der Hilfe von Perzeptronen logische Gatter realisiert werden. Die gewichtete Summe für das UND-Gatter lautet:

\begin{displaymath}
net=1*x+1*y+(-2)*1 = x+y-2
\end{displaymath} (8.8)

In Tabelle 8.1 sind die gewichteten Summen und die Ausgangswerte für alle möglichen Eingangskombinationen einer UND-Verknüpfung aufgelistet. Die Tabelle für das Oder-Gatter und die Negation kann analog angeschrieben werden. [Luger1997]



Die stärke Neuronaler Netze liegt jedoch in der Eigenschaft, daß sie auf ihre spätere Aufgabe trainiert werden können. Als einfacher Lernalgorithmus soll hier der Perzeptron-Lernalgorithmus vorgestellt werden.

8.3.1 Der Perzeptron Lernalgorithmus

Der Perzeptron Lernalgorithmus wurde erstmals 1958 von F. Rosenblatt vorgestellt. Dabei handelt es sich um ein einfaches überwachtes Lernverfahren. Zu Beginn der Lernphase werden die Gewichte zumeist zufällig initialisiert. Als ersten Lernschritt legt man am Eingang das gewünschte Eingangsmuster an und vergleicht das Ausgangssignal des Perzeptrons mit dem gewünschten Wert. Durch den Lernalgorithmus werden im nächsten Schritt die Gewichte so verändert, daß der Fehler reduziert wird. Die Änderung der Gewichte erfolgt nach folgender Formel: [Luger1997]


$\Delta w_i$ $\ldots$ Gewichtsänderung des Gewichts $w_i$
$\eta$ $\ldots$ Lernrate, bestimmt die Größe der Schritte mit denen das Gewicht verändert wird. $\eta>0$
$t$ $\ldots$ gewünschter Output des Trainingsbeispiels
$o$ $\ldots$ tatsächlicher Output des Perzeptrons $o=f(net)$
$x_i$ $\ldots$ Eingangssignal am Eingang $i$
<>

Die Berechnung der neuen Gewichte erfolgt dann mit der Formel:


\begin{displaymath}
w_i^{neu}=w_i^{alt} + \Delta w_i
\end{displaymath} (8.10)

Da der Ausgang des Perzeptrons nur die diskreten Werte $\{0,1\}$ annehmen kann, kann der Faktor $(t-o)$ aus Formel 8.9 nur die Werte $\{-1,0,1\}$ annehmen. Somit werden für jedes Gewicht $w_i$ folgende Schritte vollzogen:

  • Ist der gewünschte Output und der tatsächliche Output gleich, dann tue nichts.
  • Ist der gewünschte Output $t=0$ und der tatsächliche Output $o=1$, so wird das Gewicht um $-\eta x_i$ erniedrigt.
  • Ist der gewünschte Output $t=1$ und der tatsächliche Output $o=0$, so wird das Gewicht um $\eta x_i$ erhöht.

Mit der Lernrate $\eta$ kann die Größe der Gewichtsänderung eingestellt werden. In der Praxis wählt man die Lernrate als Kompromiß zwischen möglichst großen Lernschritten (großes $\eta$) und möglichst geringer Veränderung des bereits gelernten (kleines $\eta$). Ist die Lernrate zu groß, kann ein Lernschritt zuvor gelerntes zerstören. Das Netz merkt sich jeweils das zuletzt präsentierte Muster am besten. Zuvor erlernte Muster bleiben jedoch nicht ausreichend genug gespeichert. Ist die Lernrate zu klein, sind dementsprechend viele Lernschritt notwendig. In der Praxis wird oft am Beginn der Lernphase die Lernrate groß gewählt, um mit großen Schritten näher zur Lösung zu gelangen, und mit der Fortdauer des Lernprozesses immer mehr verringert. [Köhle1990]

Die Vorgehensweise des Perzeptron Lernalgorithmus bewirkt, daß die Gewichte in der Art verändert werden, daß sich der durchschnittliche Fehler über die gesammte Menge der Testdaten minimiert. Existiert ein Satz von Gewichten $w_i$, sodaß für alle Trainingsdaten der korrekte Output ausgegeben wird, so konvergiert der Perzeptron Lernalgorithmus zu einer Lösung. Dies wurde 1969 von Minsky und Papert bewiesen [Luger1997]. Die Lösung muß jedoch nicht eindeutig sein, d.h. es können mehrere Sätze von Gewichten existieren, die zu den Trainingsdaten den korrekten Output liefern. Anschaulich wird dies, durch die, im folgenden eingeführte, grafische Interpretation der Arbeitsweise eines Perzeptrons.

Es stellt sich nun die Frage, welche Probleme sich mit der Hilfe eines Perzeptrons lösen lassen. Um dies zu veranschaulichen, kann ein Perzeptron als Klassifikator angesehen werden. Einem Eingangsmuster wird entweder die Zahl 0 oder 1 am Ausgang zugeordnet. Dies kann als Zuordnung zur Klasse ,,0'' oder Klasse ,,1'' aufgefaßt werden. Das Perzeptron trifft somit die Entscheidung, ob ein Eingangsmuster zur Klasse ,,0'' oder ,,1'' gehört.

Graphisch kann das Perzeptron als Klassifikator folgendermaßen veranschaulicht werden. Als Beispiel soll an dieser Stelle ein Perzeptron mit zwei Eingangsvariablen dienen, wie diese in Abbildung 8.6 a. und b. dargestellt sind. Ein Eingangssignal wird auf der x-Achse, das andere auf der y-Achse aufgetragen. In der Ebene, die sich so ergibt, werden die Ausgangssignale entsprechend ihren Koordinaten eingetragen. Dabei stellt ein leerer Kreis ein Element der Klasse ,,0'', ein gefüllter Kreis ein Element der Klasse ,,1'' dar. Dies ist in Abbildung 8.7 für das UND, ODER und das XOR-Gatter dargestellt.

Das Trainieren eines Perzeptrons kann somit als finden einer Trennung zwischen den beiden Klassen aufgefaßt werden. Für das UND- und das ODER-Gatter kann diese Trennung durch eine einzige Linie vorgenommen werden, welche die beiden Klassen trennt. In diesem Fall nennt man die Klassen linear separierbar. Für den Fall des XOR-Gatters sind dazu zwei Linien notwendig. Es läßt sich nun zeigen, daß linear separierbare Klassifikationsprobleme durch ein Perzeptron gelöst werden können. Nicht linear separierbare Klassifikationsprobleme können durch ein einfaches Perzeptron nicht gelöst werden. Dies soll anhand des Problems des XOR-Gatters demonstriert werden.

Soll ein Perzeptron das XOR-Problem lösen, so müssen 3 Gewichte $w_1,
w_2, w_3$ existieren, sodaß Nachfolgende Ungleichungen erfüllt sind: [Rojas1993]

\begin{eqnarray*}
x=0,y=0 : & 0*w_1 + 0*w_2 + 1*w_3 < 0 & \mbox{Output } o=0 \\...
...\\
x=1,y=1 : & 1*w_1 + 1*w_2 + 1*w_3 < 0 & \mbox{Output } o=0
\end{eqnarray*}



Vereinfacht kann dies angeschrieben werden als:


\begin{displaymath}
\begin{array}{lcrl}
x=0,y=0 & : & w_3 < 0 & \mbox{Output }...
...=1 & : & w_1 + w_2 + w_3 < 0 & \mbox{Output } o=0
\end{array}\end{displaymath}

Es ist nun offensichtlich, wenn die ersten drei Ungleichungen erfüllt sind, kann Ungleichung vier nicht erfüllt werden. Es existieren somit keine Gewichte um das XOR-Problem mit Hilfe eines Perzeptrons zu lösen. [Rojas1993]

Diese Einschränkung der Anwendbarkeit des Perzeptrons wurde 1969 von Minsky und Papert nachgewiesen und führte zu einer Stagnation in der Euphorie auf dem Gebiet der Neuronalen Netze. Da sich mit Hilfe von Perzeptronen logische Gatter realisieren lassen, war bekannt, daß durch eine Hintereinanderschaltung von mehreren Gattern auch das XOR-Problem und andere komplexe Probleme gelöst werden können. Es war jedoch kein Lernalgorithmus für mehrschichtige Perzeptronennetzwerke bekannt. Erst im Jahr 1986 wurde von Rumelhart, Hinton und Williams der Back-Propagation Algorithmus als Lernverfahren für mehrschichtige Perzeptronennetzwerke (Multi Layer Perzeptron) veröffentlicht und belebte das Interesse am Forschungsgebiet Neuronaler Netze. [Rojas1993]


8.4 Der Backpropagation Algorithmus

Am Ende des vorigen Abschnitts wurde erklärt, daß Netze bei denen mehrere Perzeptronen hintereinander geschalten sind, ein breiteres Anwendungsspektrum abdecken, als ein einfaches Perzeptron. Ein solches Multilayer Perzeptron (MLP) ist in Abbildung 8.8 dargestellt. Dabei sind die Perzeptronen in Schichten (Layern) angeordnet. Das Einganssignal wird an der Eingangs-Schicht (input layer) angelegt. Danach folgen ein oder mehrere Interne Schichten (hidden layer). Am Ende des Netzwerks folgt noch die Ausgangs-Schicht (output layer). Dabei ist jedes Neuron einer Schicht mit den Ausgängen aller Neuronen der Vorgängerschicht verbunden. Für die Angabe der Anzahl der Schichten eines Neuronalen Netzes gibt es in der Literatur keine einheitliche Vorgehensweise. In den meisten Fällen werden nur die Internen Schichten und die Ausgangsschicht gezählt. Ein Neuronales Netz mit einer Internen Schicht wird somit als zweischichtiges Neuronales Netz bezeichnet. [Haykin1994]

Abbildung 8.8: Beispiel eines dreischichtigen Multi Layer Perzeptrons mit fünf Eingangsneuronen, jeweils sieben Neuronen in den zwei Internen Schichten und vier Neuronen in der Ausgangsschicht.
\includegraphics {bilder/tech/NNmlp.eps}

Die Anzahl der Internen Schichten die verwendet wird und wieviele Neuronen pro Schicht vorhanden sind, wird von der Komplexität der Aufgabe bestimmt. Grundsätzlich kann ein Perzeptron mit genügend vielen Neuronen in nur einer Internen Schicht und genügend vielen Trainingsbeispielen alle Aufgaben erfüllen, die auch eine Turing Maschine berechnen kann. [Rojas1993] Es werden jedoch trotzdem Netzwerke mit mehreren internen Schichten verwendet, da diese unter Umständen leichter zu trainieren sind. Dies hängt jedoch von der Art der Anwendung ab.

Es erweist sich jedoch nicht als sinnvoll, ein Neuronales Netz auf eine Aufgabe zu trainieren, die algorithmisch einfacher gelöst werden kann. So ist es z.B. nicht zielführend, ein Neuronales Netz auf die Multiplikation zweier Zahlen zu trainieren. Das Netz müßte erst durch viele Trainingsbeispiele das ,,1x1'' und dessen Anwendung erlernen. In diesem Fall erweist sich eine algorithmische Problemlösung als zielführender.

Der Backpropagation Algorithmus arbeitet in zwei Schritten. Im Feedforward Schritt wird am Eingang ein Testmuster angelegt, und der Output berechnet. Aus dem errechneten Output und dem gewünschten Output wird mit Hilfe der Fehlerfunktion der Fehler berechnet. Dieser Fehler wird nun im Backpropagation Schritt von der Ausgansschicht aus auf die Gewichte in den einzelnen Layern aufgeteilt und diese in der Art modifiziert, daß der Fehler reduziert wird. Als Fehlerfunktion wird dabei der quadratische Fehler $\tilde{E}$ verwendet.


\begin{displaymath}
\tilde{E}=\sum_k(t_k-o_k)^2
\end{displaymath} (8.11)

$o_k$ $\ldots$ tatsächlicher Output des Neurons $k$ der Ausgangssicht
$k_k$ $\ldots$ gewünschter Output des Neurons $k$ für das konkrete Trainingsbeispiel
<>

Der Backpropagation Algorithmus sucht das Minimum der Fehlerfunktion eines bestimmten Lernproblems durch Abstieg in der Gradientenrichtung entlang der Fehlerfunktion. Die Kombination der Gewichte eines Netzes, die den Berechnungsfehler minimiert, wird als Lösung des Lernproblems betrachtet. Der Gradient der Fehlerfunktion muß somit für alle Punkte des Gewichtsraums existieren, d.h. die partiellen Ableitungen der Fehlerfunktion nach den einzelnen Gewichten müssen überall definiert sein. Durch Verwendung der Sigmoiden-Funktion als Aktivierungsfunktion wird die Fehlerfunktion des Netzes stetig und überall differenzierbar. [Rojas1993] Zudem kann die Ableitung der Sigmoiden-Funktion einfach als

\begin{displaymath}
f'(x)=\left(\frac{1}{1+e^{-x}}\right)'=
\frac{e^{-x}}{(1+e^{-x})^2}=f(x)(1-f(x))
\end{displaymath} (8.12)

angeschrieben werden.

Herleitung des Backpropagation Algorithmus

An diese Stelle soll nun der Backpropagation Algorithmus für ein Multilayer Perzeptron mit einer internen Schicht hergeleitet werden. Ein solches Netzwerk ist in Abbildung 8.9 dargestellt. Die Herleitung ist angelehnt an [Pao1989].

Abbildung 8.9: Beispiel eines zweischichtigen Multi Layer Perzeptrons mit $n_i$ Eingangsneuronen, $n_j$ Neuronen in der Internen Schicht und $n_k$ Neuronen in der Ausgangsschicht. In der Feedforward-Richtung wird der Output für ein angelegtes Eingangsmuster berechnet. In der Backpropagation-Richtung wird in der Trainingsphase der Fehler am Output auf die Gewichte zwischen den Schichten aufgeteilt.

Für die weitere Herleitung haben die verwendeten Varialblen folgende Bedeutung:

$x_i$ $\ldots$ Eingangssignal am Eingang $i$
$w_{ij}$ $\ldots$ Gewichte zwischen der Eingangsschicht und der inneren Schicht
$net_j$ $\ldots$ Netto-Input des Neurons $j$ der inneren Schicht
$o_j$ $\ldots$ Output des Neurons $j$ der inneren Schicht und zugleich Eingangssignal für die Neuronen der Ausgangssicht
$w_{jk}$ $\ldots$ Gewichte zwischen der inneren Schicht und der Ausgangssicht
$net_k$ $\ldots$ Netto-Input des Neurons $k$ der Ausgangssicht
$o_k$ $\ldots$ tatsächlicher Output des Neurons $k$ der Ausgangssicht
$k_k$ $\ldots$ gewünschter Output des Neurons $k$ für das konkrete Trainingsbeispiel
\includegraphics {bilder/tech/NNback.eps}

Am Beginn der Trainingsphase werden alle Gewichte zufällig initialisiert. Im Feedforward Schritt wird ein Eingangsmuster am Eingang des Multilayer Perzeptrons angelegt und der Output des Netzes berechnet. Dazu wird zuerst der Netto-Input der Neuronen im Layer $j$ berechnet.

\begin{displaymath}
net_j=\sum_i w_{ij}x_i
\end{displaymath} (8.13)

Der Output der Neuronen im Layer $j$ ist somit
\begin{displaymath}
o_j=f(net_j).
\end{displaymath} (8.14)

Wobei $f(net)$ die Aktivierungsfunktion (hier die Sigmoide-Funktion) darstellt.

Im nächsten Schritt wird der Output des Layers $k$, der dem Output des Multilayer Perzeptrons entspricht, berechnet. Der Netto-Input der Neuronen im Layer $k$ entspricht

\begin{displaymath}
net_k=\sum_j w_{jk}o_j
\end{displaymath} (8.15)

und der korrespondierende Output lautet
\begin{displaymath}
o_k=f(net_k).
\end{displaymath} (8.16)

Im Backpropagation Schritt wird nun mit Hilfe der Fehlerfunktion der quadratische Fehler $E$ berechnet.

\begin{displaymath}
E=\frac{1}{2}\sum_k(t_k-o_k)^2
\end{displaymath} (8.17)

Der Faktor $\frac{1}{2}$ wurde zur Erleichterung der nachfolgenden Rechnung eingeführt. Eine Strategie zur Korrektur der Gewichte und somit zur Reduzierung des Fehlers ist, daß man die inkrementale Gewichtsänderung $\Delta w_{jk}$ proportional zu $-\frac{\partial E}{\partial w_{jk}}$ wählt. Somit folgt

Wobei $\eta$, analog zum Perzeptron Lernalgorithmus, die Lernrate darstellt. Der Fehler $E$ ist jedoch in Gleichung 8.17 als Funktion des Outputs $o_k$ ausgedrückt. Wobei
\begin{displaymath}
o_k=f(net_k)
\end{displaymath} (8.19)

und $net_k$ der Netto-Input des $k$-ten Neurons definiert ist durch die gewichtete Summe des Outputs des vorhergehenden Layers.

Mit Hilfe der Kettenregel kann die partielle Ableitung $\frac{\partial
E}{\partial w_{jk}}$ ausgedrückt werden durch
\begin{displaymath}
\frac{\partial E}{\partial w_{jk}}=
\frac{\partial E}{\partial net_k} \:
\frac{\partial net_k}{\partial w_{jk}}.
\end{displaymath} (8.21)

Setzt man in den Ausdruck $\frac{\partial net_k}{\partial w_{jk}}$ Gleichung
8.20 ein, so erhält man
\begin{displaymath}
\frac{\partial net_k}{\partial w_{jk}} =
\frac{\partial}{\partial w_{jk}} \,
\sum_j w_{jk}o_j.
\end{displaymath} (8.22)

Da die partielle Ableitung nur nach einer Komponente der Summe gebildet wird, kann man schreiben
\begin{displaymath}
\frac{\partial net_k}{\partial w_{jk}} =
\frac{\partial}{\partial w_{jk}} \,
w_{jk}o_j = o_j.
\end{displaymath} (8.23)

Definiert man nun $\delta_k$ als
\begin{displaymath}
\delta_k = - \frac{\partial E}{\partial net_k}
\end{displaymath} (8.24)

und setzt dann in Gleichung 8.18 ein, so erhält man

Um den Ausdruck $\delta_k = - \frac{\partial E}{\partial net_k}$ zu berechnen, verwendet man wieder die Kettenregel.

\begin{displaymath}
\delta_k = - \frac{\partial E}{\partial net_k} =
- \frac{\partial E}{\partial o_k} \:
\frac{\partial o_k}{\partial net_k}
\end{displaymath} (8.26)

Wobei man für den ersten Faktor
\begin{displaymath}
\frac{\partial E}{\partial o_k} =
\frac{\partial }{\partial o_k} \,
\frac{1}{2} \: \sum_m(t_m-o_m)^2
\end{displaymath} (8.27)

schreiben kann, wenn man die Definition der Fehlerfunktion aus Gleichung 8.17 einsetzt. Auch hier wird die partielle Ableitung nur nach einer Komponente der Summen gebildet. Darum kann man vereinfacht schreiben:
\begin{displaymath}
\frac{\partial E}{\partial o_k} =
\frac{\partial }{\partial o_k} \,
\frac{1}{2}(t_k-o_k)^2 = -(t_k-o_k)
\end{displaymath} (8.28)

Für den zweiten Faktor aus Gleichung 8.26 gilt
\begin{displaymath}
\frac{\partial o_k}{\partial net_k} = f'(net_k).
\end{displaymath} (8.29)

Da als Aktivierungsfunktion die Sigmoide-Funktion verwendet wird, kann man nach Gleichung 8.12 schreiben
\begin{displaymath}
\frac{\partial o_k}{\partial net_k} = f'(net_k)=
f(net_k)(1-f(net_k)) =
o_k(1-o_k).
\end{displaymath} (8.30)

Somit erhält man für $\delta_k$

Eingesetzt in Gleichung 8.25 erhält man für die Änderung der Gewichte
\begin{displaymath}
\Delta w_{jk} = \eta \, (t_k-o_k) \, o_k(1-o_k) \, o_j.
\end{displaymath} (8.32)

Diese Formel gilt allerdings nur für die Gewichte der Neuronen in der Ausgangsschicht. Für die Gewichte der Internen Neuronen setzt man analog an.

Für den Fall, daß nur eine Interne Schicht vorhanden ist, entspricht in obiger Gleichung $o_i=x_i$. Da sich der Faktor $\frac{\partial E}{\partial o_j}$ nicht direkt berechnen läßt, schreibt man ihn unter Zuhilfenahme von bekannten oder berechenbaren Ausdrücken an.

Aus Gleichung
8.33 und 8.34 folgt nun somit
\begin{displaymath}
\delta_j = f'(net_j) \sum_k \delta_k w_{jk}.
\end{displaymath} (8.35)

Das $\delta$ eines Inneren Neurons kann somit aus den $\delta$'s der Vorgängerschicht berechnet werden. Beginnt man bei der letzten Schicht, der Ausgangsschicht, kann man sich aus Geichung 8.31 $\delta_k$ berechnen. Anschließend kann man den Fehler ,,rückwärts-propagieren'' um die $\delta$'s für die Inneren Schichten zu berechnen.

Da als Aktivierungsfunktion die Sigmoide-Funktion verwendet wird gilt nach Gleichung 8.12

\begin{displaymath}
f'(net_j) = f(net_j)(1-f(net_j))=o_j(1-o_j).
\end{displaymath} (8.36)

Somit kann für $\delta_j$
\begin{displaymath}
\delta_j=o_j(1-o_j) \sum_k \delta_k w_{jk}
\end{displaymath} (8.37)

geschrieben werden. Für die Änderung der Gewichte in der Inneren Schicht ergibt sich somit
\begin{displaymath}
\Delta w_{ij}= \eta \, o_j(1-o_j) \, o_i \sum_k \delta_k w_{jk}.
\end{displaymath} (8.38)

Wobei für ein Netzwerk mit nur einer Inneren Schicht $o_i=x_i$ gilt.

Zusammenfassend erfolgt die Gewichtsänderung während des Lernprozesses eines Multi Layer Perzeptrons mit Hilfe des Backpropagation Algorithmus nach folgenden Formeln:


$\displaystyle \delta_k = (t_k-o_k) \, o_k(1-o_k)\,;$ $\textstyle \Delta w_{jk}= \eta \, \delta_k o_j$ $\displaystyle \mbox{für die Ausgangsschicht}$ (8.39)
$\displaystyle \delta_j = o_j(1-o_j) \, \sum_k \delta_k w_{jk}\,;$ $\textstyle \Delta w_{ij} = \eta \, \delta_j o_i$ $\displaystyle \mbox{für die inneren Schichten}$ (8.40)

Für die Berechnung der $\delta_j$'s der inneren Schichten werden, nach obigen Formeln, jeweils die $\delta_k$'s der Vorgängerschicht in Backpropagation-Richtung verwendet. Der Fehler wird somit vom Ausgang zum Eingang ,,backpropagiert''.

Bei der Realisierung eines Neuronalen Netzes mit der Hilfe eines Multi Layer Perzeptrons muß darauf geachtet werden, daß die Topologie des Netzes in einem sinnvollen Zusammenhang mit der Anzahl der zur verfügungstehenden Trainingsbeispiele steht. Bei der Festlegung der Topologie wird festgelegt, aus wievielen Schichten ein Multi Layer Perzeptron bestehen soll und wieviele Neuronen sich in jeder internen Schicht befinden. Somit wird die Anzahl der Gewichte des Netzes festgelegt. Um jetzt ein sinnvolles trainieren des Netzes zu ermöglichen, sollte die Anzahl der Trainingsbeispiele um den Faktor 10 größer sein, als die Anzahl der Gewichte des gesamten Netzwerks. Ist obiger Zusammenhang nicht erfüllt, so existieren zuviele freie Parameter (Gewichte) im Netzwerk, alsdaß ein sinnvolles Training möglich wäre. [Haykin1994]

In Neuronalen Netzen ist das Wissen das aus den Trainingsdaten erlernt wurde in den Gewichten verteilt über das Netz gespeichert. Aus diesem gespeicherten Wissen kann der Mensch jedoch leider keine Rückschlüsse auf Gesetzmäßigkeiten und Regeln ziehen. Das erlernte Wissen ist somit für den Menschen nicht unmittelbar zugänglich, das Neuronale Netz arbeitet als ,,Black Box''. Im folgenden Kapitel soll aus der Verbindung von Fuzzy Logic und Neuronalen Netzen ein Ansatz gezeigt werden, bei dem unscharfe Regeln ähnlich wie bei Neuronalen Netzen erlernt werden können. Durch die Verwendung von Neuronalen Fuzzy Systemen wird es somit möglich, Einblicke in das vom System erlernte Wissen zu erhalten. [Kruse1997]


next up previous contents
Nächste Seite: 9. Neuronale Fuzzy Systeme Aufwärts: I. Der Untersuchungsbereich Vorherige Seite: 7. Fuzzy Logik   Inhalt
Gerald Reif
2000-02-01