Zeichenbasierte Generierung von Texten mithilfe von Recurrent Neural Networks (RNN)

Katja Cornelia Hader

Matrikelnummer: 2538490

Bachelorarbeit

zur Erlangung des akademischen Grades

Bachelor of Science

Wirtschaftsinformatik

Erstprüfer: Prof. Dr. Florian Gallwitz Zweitprüfer: Prof. Dr. Matthias Teßmann

Nürnberg, 25. Juni 2017 Hiermit erkläre ich, dass die vorliegende Arbeit von mir selbständig verfasst und nicht anderweitig für Prüfungszwecke vorgelegt wurde, keine anderen als die angegebenen Quellen oder Hilfsmittel benutzt sowie wörtliche oder sinngemäße Zitate als solche gekennzeichnet wurden.

Nürnberg, 25. Juni 2017

Katja Cornelia Hader E-mail: haderka56442@th-nuernberg.de

Studiengang Wirtschaftsinformatik Georg Simon Ohm Technische Hochschule Nürnberg Keßlerplatz 12 90489 Nürnberg Deutschland

Abstract

English...

Keywords: Reccurent Neural Network, RNN, textbasiert, Georg Simon OHm, Wirtschaftsinformatik

Zusammenfassung

Deutsch...

Inhaltsverzeichnis

v

Abbildungsverzeichnis

vii

Tabellenverzeichnis

ix

Abkürzungsverzeichnis

KNN Künstlich Neuronale Netze KI Künstliche Intelligenz

Kapitel 1

Einleitung

1.1 Motivation

In vielen Anwendungsbereichen sind Computer den Menschen in Schnelligkeit sowie Genauigkeit weit überlegen. In der Industrie gibt es kaum noch ein Prozess welcher ohne automatischer Kontrolle von Maschinen abläuft. Nichts desto trotz existieren weiterhin viele Tätigkeiten bei denen sich heraus gestellt hat, dass sie sehr schwer für Maschinen zu kopieren bzw. zu erlernen sind. Darunter fallen unter anderem die Fähigkeit bewegende Objekte zu erkennen und zu kategorisieren, Fußball zu spielen (Anderes Beispiel finden) und das Beantworten von unvollständigen bzw. schwammig gestellten Fragen, um nur einige zu nennen. Die Gemeinsamkeit und somit auch die Schwierigkeit dieser Aufgaben liegt darin, dass keine genaue Anleitung zur Lösung der Tätigkeiten besteht. Es ist ein Teil menschlicher Intuition. Menschen nutzen implizites Wissen sowie Erfahrungen, welche meist durch „Trial and Error„ gewonnen werden, um diese Art von Aufgaben zu lösen. Dies ist ein Prozess den Maschinen bis zur heutigen Zeit nicht erfolgreich nachahmen bzw. erlernen konnten. Das Fehlen von Regeln machte es schier unmöglich ihnen dieses Wissen zu implantieren oder anders gesagt ein solches Programm zu entwickeln. Mithilfe des Maschinellen Lernens und Rekurrenten Neuronalen Netzen hat man nun eine Möglichkeit gefunden wie Maschinen eine Art menschliches Gehirn entwickeln können, welches genau dieser Aufgabenstellungen gewachsen ist.

1.2 Ziel der Arbeit

Die Arbeit beschäftigt sich mit dem aktuellen Stand der Technik zu Recurrent Neural Networks (RNN). Dieser soll anhand von Beispielen belegt und nachvollzogen werden können, außerdem soll die Funktionsweise von RNN erklärt werden. Mithilfe des Open Source Codes von Andrej Karpathy soll versucht werden ein Recurrent Neural Networks zu trainieren um einen Text, aufgrund eines variablen Inputs, zu generieren. Bei dem erstellen Text ist die Priorität nicht unbedingt der sinnvolle Kontext, sondern dass dieser den Input-Daten in Schreibstil sowie Form in größtmöglichen Maße ähnelt.

1.3 Überblick

Was gibt es bereits in diesem Bereich? Maschinelles Lernen und Neuronale Netze sind gegen die Vermutung Vieler nicht eine Entdeckung jüngster Zeit sondern wird bereits seit Jahrzehnten eingesetzt. Die gerade 1. Einleitung

in den letzten 10-20 Jahren zunehmende Popularität sowie der aktuelle Fortschritt in diesem Bereich, hat jedoch seine Gründe. Der Zugang zu einem stets wachsenden Netz an Informationen - das Internet - ist der ausschlaggebendste. Mittels des Internets stehen noch nie dagewesene Datenmengen zur Verfügung mit welchen die Künstliche Intelligenz (KI) „gefüttert„ wird. Warum dies von elementarer Bedeutung ist, wird in kaptitel bla bla noch weiter eingegangen. Außerdem half der Durchbruch im Bereich der Lernprogramme für die KI. Lernprogramme sind wichtig um passable Ergebnisse erzielen zu können (mehr dazu unter Kaptiel bla bla). Zu guter Letzt ist der Fortschritt bei Software und Hardware nicht zu vernachlässigen. Mit der verbesserten Technik im Bereich der Speicherkapazität und Rechnerleistung können Lernprozesse in Tagen und nicht mehr Jahren bewerkstelligt werden. http://www.nvidia.de/object/tesla-gpu-machine-learning-de.html Quelle: https://www.google.com/intl/de/about/main/machine-learning-qa/

Quelle: http://www.zeit.de/digital/internet/2015-12/maschinelles-lernen-facebook-google-tensorflow/seite-2

Rekurrente neuronale Netzwerke (engl. Reccurrent Neural Networks) ist unter dem Begriff des Maschinelles Lernen einzuordnen. Es wird darunter auch eine Art künstlicher Intelligenz verstanden. Im großen und ganzen sind es Computerprogramme die versuchen durch die Analyse zahlreicher Beispiele bzw. Input Informationen, Muster zu ermitteln welche diese Beispiele erkläre und mithilfe diesen gewonnen Erkenntnissen die selben Muster auf neue Beispiele anwenden um Vorhersagen treffen zu können. Beispiele hierfür sind Spracherkennung, Gesichtserkennung, usw..

Grundlagen

2.1 Maschinelles Lernen

„Machine learning is programming computers to optimize a performance criterion using example data or past experience.„ [? ]

In einfachen Worten spricht man bei „Maschinellen Lernen„ auch von künstlicher Intelligenz. Diese selbst lernenden Algorithmen finden ihren Einsatz in unterschiedlichsten Gebieten. Gebiete in welche menschliche Fachkenntnis nicht existiert bzw. Menschen unfähig sind diese zu erklären, da sie intuitiv ist. Beispiele dafür sind die Bildklassifikation, Videoanalyse, Spracherkennung sowie die Verarbeitung von Sprache. Es existieren bereits viele erfolgreiche Anwendungen von maschinellem Lernen. Wir sind dato in der Lage Handschrift sowohl als auch Sprache zu erkennen, Kundenverhalten kann aufgrund vergangene Verkaufsdaten prognostiziert werden. [? ] Beispiele dafür sind die persönliche Assistentin Siri von Apple, Automatische Antorten der Inbox von Gmail oder der Fotodienst Google-Photos.

Google-Software-Programms, das eine beeindruckende Partie Go spielt, oder durch die automatischen Antworten von Inbox by Gmail.

2.2 Künstliche Neuronale Netze

Künstlich Neuronale Netze (KNN) (engl. artificial neural networks) faszinieren Wissenschaftler aus verschiedenen Bereichen. Auf Grund der Ähnlichkeit zu realen Nervensystemen treffen sie in der (Neuro-)Biologie und (Neuro-)Physiologie als auch in der Psychologie auf Interesse. Hier werden sie als Modelle genutzt um auf die Funktionsweise des Gehirns Aufschluss zu erhalten. Die Neuronen der KNN verhalten sich ähnlich wie die im menschlichen Gehirn. Bedeutet durch die Beobachtung solcher Systeme kann man Rückschlüsse auf unser eigenes Lernverhalten ziehen. Prinzipiell ist davon auszugehen, dass man mit Hilfe der KNN versucht bestimmte Gehirnfunktionalitäten bzw. Gehirnareale künstlich darzustellen. Die Informatik nutzt diese Art von KI um kognitive Leistung des Menschen nachzubilden [? ]. Man unterscheidet zwischen den

• einschichtigen feedforward-Netzen

• mehrschichtigen feedforward-Netzen

• Rekkurenten Netzen (siehe Kaptiel ??)

2. Grundlagen

Man spricht von einem feedforward Netz wenn die Neuronen der Inputschicht Informationen über die Verborgene Schicht an die Outputschicht weiterleiten (siehe Kapitel 2.2.2)(Bei mehrschichtigen feedforward Netzen sind, wie der Name vermuten lässt, mehrere verborgene Schichten vorhanden).[? ]. Der Beschränktheit der Bachelorarbeit wegens wird nur genauer auf die Rekurrenten Netze eingegangen.

2.2.1 Biologischer Hintergrund

Künstlich neuronale Netzwerke sind nach dem Vorbild des menschlichen Gehirn konzipiert und dieses ist auch Namensgeber (lat. neuron). Genau wie das menschliche Gehirn bestehen die KNN aus Neuronen (auch Units, Knoten oder Einheiten genannt). In der Abbildung 2.1 ist ein menschliches Neuron dargestellt.

Abbildung 2.1: Menschliches Neuron [? ].

Die Soma mit ihrem Zellkern besitzt Dendriten. Dendriten sind kleine Nervenfasern über welche Reize - besser gesagt Signale - aus der Umwelt oder von anderen Neuronen aufgenommen werden. Diese Signale werden dann in der Soma akkumuliert. Das Axon leitet daraufhin diese elektrischen Signale weiter. Hierbei muss beachtet werden, dass nur bei einer Überschreitung eines festgelegten Schwellenwerts durch die summierten Eingangssignale eine Weiterleitung durch Synapsen an ein benachbartes Neuron statt findet. Auf die Funktionsweise eines künstliches Neuron wird im nächsten Kapitel 2.2.2 genauer eingegangen. Vereinfacht lässt sich ein neuronales Netz wie folgt darstellen(Abbildung ??).

Abbildung 2.2: Neuronales Netz [? ].

Im Großen und Ganzen kann gesagt werden, dass sich ein solches Neuron wie ein „Sender„ und „Empfänger„ Prinzip verhält.

2.2.2 Funktionsweise

Wie bereits im Kapitel 2.2.1 beschrieben ist der Zweck von Neuronen Informationen aus der Umwelt bzw. von anderen Neuronen aufzufassen und nach Verarbeitung der Information, diese wieder in modifizierter Form weiterzuleiten. Die meisten modernen Netze haben trotzdem, dass sie auf der Funktionsweise des Gehirns entwickelt wurden, nur noch wenig mit diesem gemein.Es wird bei Neuronalen Netzen zwischen 3 Neuronenarten unterschieden ??.

Quelle: http://www.neuronalesnetz.de/units.html Die Neuronen der Input-Schicht empfangen Daten bzw. Signale aus der Umwelt. Die Verbindung zwischen den einzelnen Knoten bezeichnet man als Kante. Mithilfe eines Gewichts wird die Stärke der Verbindung zweier Neuronen ausgedrückt. Umso größer der Absolutbetrag des Gewichts, umso größer ist der Einfluss der Neuronen untereinander. Analog zur Funktionsweise vom menschlichen Neuron (siehe Abbildung 2.1) ist die Funktionsweise eines künstlichen Neuron ??. Die Signale

2.3. Deep Learning

aus der Umwelt (y1, y2, ...yn) ergeben akkumuliert den Netzinput. Mit der Aktivitätsfunktion f welche der Netzinput als Berechnungsgrundlage dient, wird dann der Output y berechnet.

2.2.3 Lernverfahren

Überwachtes Lernen Unüberwachtes Lernen Bestärkendes Lernen

2.3 Deep Learning

Verbindung

2.4 Reccurent Neural Networks

Die Idee hinter Recurrent Neural Network (RNN) ist die Verwendung von sequentiellen Informationen. Der Unterschied von RNN zu KNN besteht darin, dass Rückkopplungen zwischen den Neuronen existieren. Man unterscheidet zwischen:

• direkte Rückkopplung (engl. direct feedback) Hierbei wird der Output einer Einheit zum Input der selben Einheit (siehe blaue Linie (Wd) in Fig. ??)

• indirekte Rückkopplung (engl. indirect feedback) Hierbei wird der Output einer Einheit zum Input einer Einheit einer vorhergehenden Schicht (siehe grüne Linie (Wi) in Fig. ??)

• seitlichen Rückkopplungen (engl. lateral feedback) Hierbei wird der Output einer Einheit zum Input einer Einheit in der selben Schicht (siehe rote Linie (Wl) in Fig. ??)

• vollständigen Verbindungen Hierbei existieren Verbindungen zu sämtlichen Neuronen

Abbildung 2.3: Rekurentes Neurales Netz [? ].

Bei einem regulären neuronalen Netzwerk wird davon ausgegangen, dass alle Inputs sowie Outputs unabhängig voneinander sind. Für viele Anwendungen ist dies jedoch eine ungünstige Lösung. Nehmen wir zum Beispiel an man möchte das nächste Wort eines Satzes voraussagen, um dies korrekt ausführen zu können, sollte man die vorhergehenden Wörter kennen. RNN sind recurrent, da die selbe Anwendung immer wieder auf jedes Zeichen/Wort aufbauend auf den Berechnungen der vorhergehenden Iteration angewendet wird. Theoretisch können RNN auf beliebig lange Sequenzen angewendet werden, in der Praxis jedoch ist der mögliche Rückblick auf ein paar Schritten limitiert. Quelle: http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/

2.4.1 LSTM und GRU

Long short term memory Gated Reccurent Unit

2.4.2 Einsatzgebiete von RNN

Generell: Prognosten für die Zukunft treffen (hier auf Finanzanalyse) Simulation von menschlichen Verhaltenssequenzen (hier auf Spracherkennung https://www.googlewatchblog.de/2015/09/recurrentneural-networks-neue/

Stand der Technik

Was haben andere schon mit KNN gemacht um Zeichenbasierte Texte zu lernen/generiern? Einstieg z.B. mit Sutskever, Martens und Hinton (Generating Text with Recurrent Neural Networks http://www.cs.utoronto.ca/ ilya/pubs/2011/LANG-RNN.pdf)

Domänen auf dem Gebiet Hinton, LeCunn, Bengio ca. 4-5 relenvante Publitionen Komplette Kapitel ca. 8-9 Seiten

Software und Ursprung

4.1 Code

über den autor

4.1.1 Phyton 4.1.2 Numpy 4.1.3 RNN Code von Andrey Kampacy

Sprache und System Python egal welches Betriebssystem verbesserte Version python mit Linux (Virtuelle Maschine verwenden)

4.1.4 Verwendete Parameter

Hyperparameter Was sind Hyperparameter? Welche hat der Autor gewählt und warum?

Eigene Untersuchungen

5.1 Ausgangsszenarium Beispiel 1

5.2 Daten

5.2.1 Szenarien 5.2.2 Daten 5.2.3 Programme 5.2.4 Evaluation

Kapitel 6

Zusammenfassung

bla bla bla....

Kapitel 7

Ausblick

bla bla bla....