Adaptive Behavior from Fixed Weight Networks - Jonas Zilles, 11. Juni 2007 Betreuer: Dr. Mohamed Oubbati
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
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