Adaptive Behavior from Fixed Weight Networks - Jonas Zilles, 11. Juni 2007 Betreuer: Dr. Mohamed Oubbati

Die Seite wird erstellt Milo Büttner
 
WEITER LESEN
Adaptive Behavior from Fixed Weight Networks
Jonas Zilles, 11. Juni 2007

Betreuer: Dr. Mohamed Oubbati

                                1
Inhaltsverzichnis

1. Abstrakt ……………………………………………………………………… Seite 3
2. Einführung …………………………………………………………………… Seite 3
3. Problem ………………………………………………………………………. Seite 5
   3.1. Training …………………………………………………………………. Seite 6
   3.2. Trainingsprobleme ………………………………………………………. Seite 7
   3.3. Multistream Training ……………………………………………………. Seite 7
4. Tests ………………………………………………………………………….. Seite 8
5. Ergebnisse …………………………………………………………………… Seite 8
6. Zusammenfassung …………………………………………………………… Seite 10
7. Quellenangabe ……………………………………………………………….. Seite 11

                                2
1. Abstrakt

Eine Eigenschaft die von intelligenten Systemen oft verlangt wird, ist die Fähigkeit sich adaptiv an
neue Gegebenheiten des Umfeldes anzupassen und darauf reagieren zu können. So könnte man von
einem automatischen Bremssystems eines Pkw verlangen, sich auf nassen oder eisigen Untergrund
anders zu verhalten als auf trockener Fahrbahn. Für diesen Bericht soll ein adaptives Verhalten
definieren, als die Fähigkeit sich an veränderte Situationen anpassen zu können, ohne direkt darüber
informiert zu werden. Es soll gezeigt werden, wie ein zeit-verzögertes rekurrentes neuronales Netz
derart trainiert werden kann, dass es in fertig trainiertem Zustand dieses Verhalten aufweist, ohne
seine Gewichte weiter ändern zu müssen. Als Beispiel soll solch ein neuronales Netz mehrere
verschiedene Zeitreihen erlernen und eine Vorhersage für Folgewerte machen können.

2. Einführung

Rekurrente neuronale Netze sind schon lange in der Neuroinformatik ein interessantes Thema, da
sie nicht nur, im Gegensatz zu reinen Feed-Forward-Netzen, eine Art Gedächtnis haben, sondern
auch dem Vorbild aus der Natur sehr viel näher kommen, da alle bekannten biologischen neuronalen
Netze rekurrent sind [2]. Will man ein intelligentes Verhalten mit einem künstlichen System
erzielen, liegt es also theoretisch gesehen sehr nahe ein rekurrentes neuronales Netz zu verwenden,
was jedoch auch einige Schwierigkeiten mit sich bringen kann. Dieser Bericht soll deshalb an
einem Beispiel zeigen, was für Lernalgorithmen es für diese Art von Netzen gibt und wie effizient
ein solches trainiertes Netz sein kann.
In der Neuroinformatik kann man prinzipiell zwei Arten von rekurrenten Netzen unterscheiden:
Architekturen nach Jordan und nach Elman. Der wohl größte Unterschied dieser Netze ist die Art
der Rekurrenz. Da die Jordan-Architektur lediglich die Ausgabe wieder mit als Eingabe verwendet
(siehe Abbildung 1), hängt der Informationsgehalt den diese Verbindungen ermöglichen stark von
der Ausgabedimension des Netzes ab. Die Architektur nach Elman hingegen verwendet die interne
Repräsentation wieder und ermöglicht somit theoretisch eine höhere Kapazität eines Gedächtnisses,
auf Kosten des im Allgemeinen höheren Rechenaufwands.
In diesem Bericht wird deshalb auch diese Architektur verwendet.

                Abbildung 1, Quelle: [1], Links: Jordan-Architektur. Rechts: Elman-Architektur

Das Wort „Anpassungsfähig“ oder „adaptiv“ wird häufig im Zusammenhang mit neuronalen
Netzwerken verwendet, wobei jedoch meist der Lernprozess gemeint ist, wie ein neuronales Netz
durch Änderung seiner Gewichte auf ein System trainiert bzw. angepasst wird. In fertig trainiertem
Zustand besitzen jedoch beispielsweise reine Feed-Forward-Netze ersichtlicher weise keinerlei
Anpassungsfähigkeit mehr, da sie eine reine Relation zwischen Eingabe und Ausgabe darstellen.
                                                      3
Das bedeutet nicht, dass ein reines Feed-Forward-Netz nicht auch Aufgaben erledigen kann, für die
man eigentlich ein adaptives Netz benötigen würde. So kann man durch eine Verzögerungskette am
Eingang eines Feed-Forward-Netzes Zeitreihen erlernen und somit ein Art Gedächtnis über eine
feste Anzahl von Zeitschritten realisieren.

              Abbildung 2. Quelle: [1], Verzögerungskette am Eingang eines Feed-Forward-Netzes

Diese Art von neuronalen Netzen lassen sich zwar relativ leicht mit Standard-Backpropagation-
Algorithmen trainieren, sind jedoch im Verhältnis zu rekurrenten Netzen auch relativ schlecht [3].
Eine weitere Möglichkeit ein adaptives Verhalten zu erhalten ist die Verwendung sog. „mixtures of
experts“ (kurz MOE) oder auch „gated experts“ genannt [5]. In dieser Architektur werden mehrere
Experten-Netze durch ein „Gating“-Netz vereinigt und je nachdem, welcher Experte das aktuelle
Problem wohl am besten lösen kann, dieser ausgewählt oder entsprechend gewichtet.

                          Abbildung 3, Quelle [4], Mictures of Experts - Architektur

Die Idee bei Mixture-of-Experts-Architekturen ist, dass komplexe Aufgaben in kleinere
Teilaufgaben zerlegt werden, für die leichter Lösungen gefunden werden können. Anschließend
werden diese Teillösungen wieder zusammengefügt. Wie gezeigt werden kann, ist es zum
Trainieren eines solchen Netzes nicht notwendig, den einzelnen Experten-Modulen vorher ein
bestimmtes Teilproblem zuzuweisen. Eine Trainingsmethode hierfür ist z.B. das EM-Verfahren [3].
Für den Adaptiven Charakter solch eines Systems, ist jedoch lediglich das Gating-Modul
verantwortlich, wodurch das Problem sich adaptiv zu verhalten, auf einen Teil des Systems
konzentriert wird. Dieses Gating-Modul muss dann selbst wieder als rekurrentes Netz oder als
                                                      4
Feed-Forward-Netz mit einer Verzögerungskette realisiert werden.

Adaptives Verhalten ist jedoch gerade für Zeit-verzögerte rekurrente neuronale Netze ein sehr
typisches Verhalten, mit denen oft bessere Ergebnisse erreicht werden können als mit reinen Feed-
Forward-Netzen oder mit MOE-Systemen [3].
Der größte Unterschied zwischen Netzen dieser Art und MOE-Systemen ist, dass wir eine einzelne,
gleichartig aufgebaute Architektur verwenden die ihr „Wissen“ in alle ihre Gewichte verteilt,
wohingegen MOE-Systeme dazu tendieren, einzelne Netze durch ein zusätzliches Modul zu
verknüpfen, dessen einzige Aufgabe es ist sich um die Anpassung an neue Situationen zu kümmern.
Diese Arbeit soll daher anhand einer praktischen Anwendung zeigen, in wie weit rekurrente
Netzwerke die Fähigkeit haben, ihr „Gedächtnis“ für die Erkennung neuer Situationen zu
verwenden. Eine Einschränkung die jedoch vorab gemacht wird ist, dass die Anzahl der
verschiedenen Systeme/Situationen beschränkt und vorher festgelegt ist. Es wird nicht erwartet,
dass das Netz auch diese Systeme gut verallgemeinern kann. Das heißt, dass wir von unserem
System erwarten können dass es z.B. für ein Fahrzeug einen sandigen und einen vereisten
Untergrund erkennen kann, nicht jedoch unbedingt einen vereisten Untergrund auf dem Sand
gestreut wurde.

3. Problem

Rekurrente Netze sind prinzipiell in der Lage sich für viele verschiedene Arten von Problemen
adaptiv zu verhalten. Um den Umfang dieses Berichts jedoch nicht zu sprengen, wird hier nur auf
das spezielle Problem der Zeitreihen-vorhersage eingegangen. Genauer wollen wir ein Netz so
trainieren, dass es für mehrere verschiedene Zeitreihen eine Ein-Schritt-Vorhersage machen kann
ohne dass ihm explizit mitgeteilt wird, welche Zeitreihe gerade gemeint ist. Dies mag mit einem
Feed-Fordward-Netz wie in Abbildung 2 auch möglich sein, jedoch zeigte sich, dass rekurrente
Netze diese Aufgabe sehr viel besser lösen können. Die verschiedenen Zeitreihen können dabei
komplett verschiedene Generierungsgleichungen, unterschiedliche, zeit-variable oder verrauschte
Parameter besitzen. Dabei erwarten wir von unserem rekurrenten Netz, dass es eine Änderung des
Systems selbstständig anhand der letzten Änderungen erkennt und eine ähnlich gute Vorhersage für
den nächsten Zeitschritt macht, wie ein System, dem eine Änderung des Systems explizit mitgeteilt
werden würde.
Das Beispiel aus der Arbeit von Feldkamp und Puskorius [3] verwendet hierfür 13 verschiedene
Zeitreihen, die von 3 verschiedenen Arten von Generator-Gleichungen erstellt wurden. Dabei
wurden von jeder Zeitreihe 5000 Werte erstellt, welche für das Training verwendet wurden. Dabei
ist es nicht notwendig, dass die Werte markiert sind, von welcher Gleichung sie stammen.
Insgesamt wurden 7 Zeitreihen aus der logistischen Funktion mit unterschiedlichen Werten für den
Parameter α erstellt, wobei eine dieser sieben Reihen ein zeit-abhängiges α verwendet, das anhand
einer Sinus-Schwingung zwischen 3.6 und 3.9 variiert.

x ( k + 1) = αx ( k )(1 − x ( k ))

Drei weitere der Zeitreihen wurden durch die Henon-Abbildung erstellt, welche durch folgende
Gleichungen gegeben ist:

x1 (k + 1) = β − 1.4 x1 (k ) + x 2 (k )
x 2 (k + 1) = 0.3 x1 (k )

Der Parameter β wurde für zwei der Reihen fest und für die dritte Reihe wieder, wie bei der
logistischen Funktion, anhand einer Sinus-Schwingung variiert.
Als elfte Funktion wurde die chaotische Ikeda-Funktion gewählt.

                                                 5
x1 (k + 1) = 1.0 + μ ( x1 (k ) cos(m(k )) − x 2 (k ) sin(m(k ))
x 2 (k + 1) = μ ( x1 (k ) sin(m(k )) + x 2 (k ) cos(m(k )))
                       6.0
m(k ) = 0.4 −
                1 + x (k ) + x 22 (k )
                      2
                      1

Für die letzten zwei Zeitreihen wurden einfache Sinus-Schwingungen mit unterschiedlichen
Frequenzen gewählt.

                   2πk
x( k + 1) = sin(       )
                    T

Das neuronale Netz erhält als Eingabe nun lediglich die Variable x(k) und soll als Ausgabe den Wert
für x(k+1) schätzen. Im Fall der logistischen Funktion mit einem festen α ist der nächste Wert der
Zeitreihe eine Funktion die lediglich vom vorherigen Wert abhängig ist. Bei der Henon- und Ikeda-
Funktion benötigt das Netz jedoch ein Art Gedächtnis, da der Wert für die versteckte Variable x2 (k )
nicht direkt verfügbar ist. Ein reines Feed-Fordward-Netz könnte diese Aufgabe also sicher nicht
lösen.
Zu beachten ist auch, dass die verschiedenen Zeitreihen nicht in ihrem Wertebereich angepasst
worden sind. So behalten die Logistische- und Ikeda-Funktion ihre rein positiven Werte,
wohingegen die Zeitreihen auf Basis der Henon- und Sinus-Funktion positive und negative Werte
annehmen können.
Ein fertig trainiertes Netz soll nun nicht nur in der Lage sein zwischen Änderungen von Parametern
zu inter- oder extrapolieren, ohne über die Änderung direkt informiert zu werden, sondern auch sich
an eine Änderung des Typs der Serie anzupassen, auch wenn die Trainingsdaten solche Änderungen
nicht beinhalten.

3.1 Training

Die Problemstellung von rekurrenten und reinen Feed-Fordward-Netzen ist im Grunde genommen
dieselbe: das Netz soll für eine gegebene Eingabe eine gewünschte Ausgabe ausgeben. Man
definiert eine Fehlerfunktion und berechnet deren Gradienten in Abhängigkeit von den zugehörigen
Gewichten. Der hauptsächliche Unterschied ist jedoch, dass die Ein- und Ausgabe keine statischen
Vektoren, sondern Zeitreihen sind [5]. Da die rekurrenten Verbindungen in solch einem Netz die
Berechnung von Ableitungen sehr komplex macht, benötigt man einen effizienteren Algorithmus,
der diese Ableitungen näherungsweise bestimmen kann.
Die wohl einfachste Methode hierfür ist, die rekurrenten Verbindungen bei der Berechnung der
Ableitungen einfach zu ignorieren. Das ermöglicht es einen einfachen Backpropagation-
Algorithmus zu verwenden. Solche sehr ungenauen Annäherungen haben sich als effektiv bei der
Stimmerkennung herausgestellt [5].
Für die Berechnung von exakten Ableitungen, die rekurrente Verbindungen mit beachten, gibt es
grundsätzlich zwei Herangehensweisen. Die erste Methode ist eine Erweiterung von real-time-
reccurent-learning (RTRL). Diese Vorwärts-Methoden sind jedoch sehr Rechenaufwändig. Deshalb
verwendet man häufig den weit verbreiteten Backpropagation Through Time - Algorithmus (BPTT)
um die benötigten Ableitungen zu berechnen, welcher normalerweise weniger Rechenleistung,
jedoch oft sehr viel mehr Speicher benötigt. Hierfür wird das rekurrente Netz in der Zeit entfaltet
und ein mehrschichtiges Netz erstellt, in dem jede Schicht nun mit einem einfachen
Backpropagation-Algorithmus trainiert werden kann.

                                                              6
Abbildung 4, Quelle [2]: Schema der Idee von BPTT: Links das originale rekurrente Netzwerk, rechts das daraus
erhaltene Feed-Forward-Netzwerk für BPTT. Die Gewichte der einzelnen Netze die durch die Entfaltung des
rekurrenten Netzes entstanden sind, sind in allen Kopien identisch.

Eine sinnvolle Annäherung an BPTT, indem alle vergangenen Zeitschritte mit für die Berechnung
der Ableitungen berücksichtigt werden, ist die Anzahl derer zu beschränken, z.B. auf h viele. Wir
wollen solch einen Algorithmus mit BPTT(h) bezeichnen. Zusätzlich hat sich herausgestellt, dass
man den Beitrag, den vorherige Zeitschritte zur Berechnung der Ableitungen leisten, exponentiell
abschwächen sollte [3].

3.2 Trainingsprobleme

Da einfache Gradientenabstiegsverfahren jedoch oft dazu tendieren sehr langsam zu sein und oft
auch keine ausreichend gute Lösungen zu finden, empfiehlt es sich andere Techniken wie z.B. den
decoupled extended Kalman filter (DEKF) zu verwenden. Es hat sich gezeigt, dass EKF-basierte
Lernverfahren für fast alle Kategorien von Problemen oft sehr viel besser geeignet sind als
einfachen Gradientenabstiegsverfahren [3].
Da der DEKF – Algorithmus jedoch nur im Online- nicht jedoch im Batch-Modus zu betreiben ist
(ansonsten würde eine Inkonsistenz zwischen Gewichtsvektor und der angenäherten Fehler-
Kovarianz-Matrix entstehen [3]), kann es immer noch zu Problemen kommen, wenn das
Eingabesignal nicht oft genug variiert werden kann. Im Falle, dass das Eingabesignal sich nicht
oder nur sehr langsam verändert, tendieren Gradientenabstiegslernverfahren dazu, sich nur auf die
zuletzt trainierten Informationen zu konzentrieren, auf Kosten der Informationen die weit in der
Vergangenheit liegen. Dieser Rezenzeffekt wird normalerweise dadurch gelöst, dass man die
Trainingsdaten während des Lernens ausreichend gut durchmischt oder im Idealfall einen Batch-
Lernalgorithmus verwendet.
Der Rezenzeffekt ist für die hier betrachteten verschiedenen Zeitreihen sogar besonders stark.
Anstelle einzelne Trainingswerte in durchmischter Reihenfolge zu trainieren, könnte die
Reihenfolge der Zeitreihen zufällig ausgewählt werden. Diese Art des Variierens ist jedoch
normalerweise nicht ausreichend um diesen Effekt zu verhindern, da die einzelnen Zeitreihen sehr
lang sein können (5000 Punkte in der hier gezeigten Anwendung).
Eine Alternative bietet hier der Multistream DEKF-Algorithmus.

3.3 Multistream Training

Der Multistream DEKF-Algorithmus ermöglicht es nicht nur den Rezenzeffekt zu vermindern,
indem die Langen Zeitreihen in kürzere Teilabschnitte zerlegt und diese dem Netz in
unterschiedlicher Reihenfolge antrainiert werden, sondern bietet auch eine Möglichkeit den DEKF-

                                                         7
Algorithmus in einem Batch-ähnlichen Modus zu betreiben und konsistent mit der Kalman-
Rekursion zu bleiben.

Sei ein typisches Trainingsproblem mit n Eingabe- und m Ausgabewerten gegen und einer festen
Trainingsmenge mit N vielen Trainingsdaten. Aus dieser Trainingsmenge werden nun M < N
Datenströme gebildet. Zusätzlich werden M viele gleichartige Netze mit identischen Gewichten
erstellt. Jeder dieser Datenströme „füttert“ nun jeweils eines dieser Netze, indem in jedem
Trainingsdurchlauf ein Trainingswert von jedem Datenstrom seinem zugehörigen Netz präsentiert
und die Netzausgabe berechnet wird. Aus diesen M vielen Netzausgaben wird dann eine einziges
Gewichtsaktualisierung berechnet und auf jedes der M Netze angewandt.
Diese Gewichtsaktualisierung kann jedoch nicht wie bei Gradientenabstiegslernverfahren einfach
gemittelt werden. Auf die genaue Berechnung der Gewichtsänderungen soll hier jedoch nicht weiter
eingegangen und auf weiterführende Arbeiten wie z.B. [3] verwiesen werden.

4. Tests

Feldkamp und Puskorius verwenden in ihren speziellen Tests zum Trainieren mehrere Funktionen
eine Netzarchitektur bestehend aus 3 voll-rekurrenten Hidden-Layern mit 8, 7 und 6 Neuronen.
Insgesamt ergeben sich somit 283 anpassbare Gewichte. Für das Multistream-Training wurden 16
Datenströme erstellt.
Eine Trainingsepoche besteht dabei aus den folgenden Schritten:

   1. Alle rekurrenten Netzausgaben werden für alle Netze der 16 Datenströme auf 0 initialisiert.
      Zusätzlich wird jedem Datenstrom eine der 13 Zeitreihen zufällig zugewiesen und eine
      zufällige Startposition ausgewählt.
   2. Ab der zufällig gewählten Startposition wird nun eine bestimmte Anzahl (hier 30) von
      Trainingsdaten dem Netz präsentiert, ohne das Netz zu trainieren, um die rekurrenten
      Netzausgaben auf sinnvolle Werte zu bringen.
   3. Nach dieser Vorbereitungsphase werden nun die folgenden 40 Trainingswerte dem Netz mit
      dem Multistream DEKF-Algorithmus antrainiert.

Feldkamp und Puskorius haben diese Schritte für ihre Ergebnisse 7000 mal wiederholt, jedoch
besaß das Netz bereits nach nur 1000 Epochen eine ausreichend gute Erkennungsrate.
Die Länge der Vorbereitungsphase schien dabei sehr wichtig zu sein. Theoretisch kann man durch
Verkürzen dieser Phase darauf Einfluss nehmen, wie schnell das Netz in fertig trainiertem Zustand
eine Änderung des Systems erkennen kann. Wählt man sie jedoch zu kurz, erhöht sich die
Wahrscheinlichkeit, dass das Netz von mehrdeutigen Sequenzen durcheinander gebracht werden
kann. In dem gegebenen Problem haben Phasenlängen zwischen 10 und 30 ein gutes Ergebnis
erzielt.

5. Ergebnisse

Nach Abschluss des relativ komplizierten Trainingsprozesses reagierte das trainierte Netz auf die
zugrunde liegenden Zeitreihen sehr gut. Wie in Abbildung 5 zu sehen ist, lieferte das Netz
Ausgaben, die den tatsächlichen Werten sehr nahe kommen und im Mittel nicht mehr als um 0.0004
vom Exakten Wert abwichen.

                                                8
Abbildung 5, Quelle [3]: Ergebnisse des trainierten Netzes von 12 der 13 Funktionen. Die exakten Werte sind als
durchgängige Linie gezeichnet, die Ausgabe des Netzes als gestrichelte Linie.
Ein Unterschied ist mit bloßem Auge praktisch nicht zu erkennen.

Auf eine plötzliche Änderung des Eingabesignals von einer Zeitreihe zu einer anderen, reagierte das
Netzwerk wie erwartet: nach einigen wenigen Schritten, in denen der Ausgabefehler noch relativ
hoch ist, da sich das Netz sich auf die neue Zeitreihe „einschwingen“ muss, erkannte das Netz diese
sehr gut.

                                                          9
Abbildung 6, Quelle [3]: Wechsel von einer Zeitreihe zu einer anderen.

6. Zusammenfassung

Das hier gezeigte Experiment demonstriert, wie ein einziges, relativ einfaches rekurrentes
neuronales Netz dazu verwendet werden kann, sich selbstständig auf neue Begebenheiten anpassen
zu können, von denen man erwarten könnte ein explizit adaptives System zu benötigen. Ein
wichtiger Bestandteil ist sicher der hier erwähnte, jedoch nicht weiter vertiefte Multistream DEKF-
Algorithmus. Feldkamp und Puskorius bezweifeln in ihrer Arbeit, dass ein ähnlich gutes Ergebnis
mit anderen gewöhnlichen (Gradienten-) Lernverfahren zu erreichen ist.
In einem Vergleich mit einem reinen Feed-Forward-Netz mit einer Verzögerungskette für die
Eingaben wie in Abbildung 2 und einer ungefähr gleich großen Zahl an Gewichten, erzielte das
rekurrente Netz durchgängig ein sehr viel besseres Ergebnis für alle Zeitreihen.
Das hier behandelte Problem der Zeitreihenerkennung hätte sicherlich auch mit einer MOE-
Architektur ähnlich gut gelöst werden können, jedoch wäre der Ressourcen- und Rechenaufwand
wohl um einiges größer gewesen. Zusätzlich wäre es interessant zu wissen, wie eine solche MOE-
Architektur auf Zeitreihen reagieren würde, die nicht speziell trainiert wurden. Hierfür müsste das
Gating-Modul die einzelnen Experten ausreichend „weich“ miteinander kombinieren können.
Das hier gezeigte Beispiel ist jedoch lediglich ein Versuch und zeigt, zu was rekurrente Netze
prinzipiell in der Lage sein können. Um das ganze Potential dieser Netzwerkarchitektur verstehen
zu können, sind jedoch noch sehr viel tiefer gehende Forschungen nötig. In Anbetracht dessen, dass
alle biologischen neuronalen Netze rekurrent sind [2], scheint dieser Bereich der Neuroinformatik
noch ein sehr großes Potential zu besitzen. Es könnte jedenfalls sehr interessant werden, was mit
größeren Netzwerkarchitekturen, weiteren Verbesserungen der Trainingsmethoden und schnelleren
Computern möglich werden könnte.

                                                         10
7. Quellenangabe

   1. Dr. Friedhelm Schwenker, Vorlesungsscript Uni-Ulm, WS 06/07,
      http://www.informatik.uni-ulm.de/ni/Lehre/WS06/NI1/Vorlesung/eni06.pdf
   2. Herbert Jaeger, Fraunhofer Institute for Autonomous Intelligent Systems (AIS):
      A tutorial on training recurrent neural networks, covering BPPT, RTRL, EKF and the "echo
      state network" approach
   3. L. A. Feldkamp, G. V. Puskorius and P. C. Moore,
      Adaptive Behavior from Fixed Weight Networks
   4. Helge Ritter, Vorlesung Lernarchitekturen SS 2004,
      Mixture-of-Experts-Architektur
   5. Kenji Doya,
      Reccurent Networks: Learning Algorithms

                                              11
Sie können auch lesen