Big Data – ein Schlagwort, das zur Zeit in aller Munde ist, egal ob in nerdigen Blogs, wissenschaftlichen Artikeln oder der Tageszeitung. Doch wie funktionieren Analysen von Big Data eigentlich? Um das heraus zu finden, habe ich an dem Workshop über „Deep Learning mit Keras und TensorFlow“ teilgenommen.
An einem stürmischen Donnerstagmittag erwarten uns in der modernen lichtdurchfluteten Eingangshalle der codecentric AG der Performance-Experte Dieter Dirkes und die Data Scientistin Dr. Shirin Glander. Shirin hat uns zwei Tage lang sehr anschaulich in die Geheimnisse von Deep Learning eingeführt und uns dabei geholfen, unser erstes eigenes Neuronales Netz zu programmieren. Nach einer kurzen Vorstellungsrunde der Teilnehmenden wurde deutlich, dass Deep Learning in sehr vielen verschiedenen Bereichen von Interesse ist: Die Geologen möchten (Luft-)Bilder klassifizieren, die Energiewirtschaft Zeitreihen analysieren, die Versicherungsbranche Zahlen vorhersagen und ich als Geisteswissenschaftlerin möchte Text klassifizieren. Auch für codecentric selbst bestand ein großes Interesse daran, mit den Möglichkeiten des Deep Learnings vertraut zu werden, sodass ein Drittel der Workshop-Teilnehmer eigene Mitarbeiter waren.
Der zweite Tag begann mit einem leckeren Latte Macchiato und einem netten „Guten Morgen“ in der großzügigen Kaffeeküche von codecentric. Der freundlich gestaltete Raum mit echtem Moos an der einzigen nicht verglasten Wand strahlt eine kreative Atmosphäre aus, die den Start in den Tag erleichterte. Shirin hatte für diesen Tag ein Neuronales Netz in R programmiert, an dem wir das Gelernte anwenden und ausprobieren konnten. Wir verbrachten viel Zeit damit, die verschiedenen Parameter zu verändern und die Auswirkungen auf die Performance des Neuronalen Netzes zu beobachten. Bei der praktischen Arbeit kamen immer wieder Fragen auf, die Shirin gerne beantwortete. Auch die eigenen Projekte der Teilnehmer wurden angesprochen und mit Shirins Hilfe weiter durchdacht.
Deep Learning mit künstlichen Neuronalen Netzen
Hochkomplexe Datenanalysen werden heute mit Hilfe von Deep Learning mit künstlichen Neuronalen Netzen durchgeführt. Deep Learning ist ein Teilbereich des Machine Learning, das wiederum zur Künstlichen Intelligenz gehört. Vorbild ist das menschliche Gehirn, das wunderbar dazu geeignet ist, Dinge zu lernen und das Gelernte auf Neues zu übertragen. Forscher versuchen dies mit künstlichen Neuronalen Netzen nachzuahmen, die anhand von Trainingsdaten etwas lernen, das sie dann auf neue Daten anwenden.
Bereits 1958 stellte Frank Rosenblatt [1] sein Konzept eines künstlichen Neuronalen Netzes vor, das sogenannte Perzeptron. Das Perzeptron verarbeitet numerischen Input anhand von gewichteten Verknüpfungen in einem künstlichen Neuron; zusammen mit einer Aktivierungsfunktion kommt es dann zu einem eindeutigen Ergebnis.
Mit steigender Rechenkraft von Computern und zunehmenden Datenmengen, wurden im Laufe der Jahre mehrschichtige Perzeptrone und tiefere Neuronale Netz-Strukturen entwickelt. Parallel dazu entstanden auch immer mehr Deep Learning Frameworks, Bibliotheken und Programmierschnittstellen in den verschiedenen Programmiersprachen, sodass es heute ein ein vielfältiges Angebot an benutzerfreundlichen und freiverfügbaren Materialien gibt. Die Hürde in dieses komplexe Thema einzusteigen ist also so niedrig wie nie zuvor, da kaum noch mathematisches Wissen vorausgesetzt wird, um Neuronale Netze bauen zu können.
TensorFlow und Keras
TensorFlow und Keras sind solche Deep Learning Programmierschnittstellen, kurz APIs. TensorFlow wurde von Google Brain in Python und C++ entwickelt und ist mittlerweile eine viel verwendete Open-Source Bibliothek für Machine Learning. Keras setzt darauf auf und ist auf Neuronale Netze spezialisiert. Es ist ebenfalls Open-Source und in Python programmiert. Neben TensorFlow gibt es noch einige weitere Bibliotheken, die als Backend für Keras genutzt werden können, so z. B. Theano und CNTK. TensorFlow basiert auf dem Konzept der data flow graphs, sodass jedes Neuronale Netz in Form von mathematischen Operationen als Knoten und multidimensionalen Datenspeichern, sogenannten Tensors, als Kanten visualisiert werden kann. In TensorFlow integriert findet sich das darauf spezialisierte Werkzeug: TensorBoard. TensorBoard ist eine Sammlung von Visualisierungswerkzeugen, die das Prozessverständnis, die Fehlersuche und die Optimierung in einem Neuronalen Netz durch die visuelle Aufbereitung vereinfachen.
Klassifizierung von Bildern mit Neuronalen Netzen
Die bisherige Forschung im Bereich der Neuronalen Netze beschäftigte sich vor allem mit der Klassifikation von Bildern. Der wohl bekannteste Datensatz dafür ist MNIST [2], der handgeschriebene Ziffern in Bildern mit 28 x 28 Pixeln und ihre zugehörigen Label enthält. Er eignet sich ideal als Einstieg in die Bildklassifikation mit Neuronalen Netzen. Die Klassifikation mit Neuronalen Netzen gehört in die Kategorie des überwachten Lernens (engl.: supervised learning), da das Neuronale Netz anhand von Beispielen trainiert wird. Die handgeschriebenen Ziffern des MNIST-Datensatzes können dazu verwendet werden, eine Klassifikation zu lernen, das heißt, welche Anordnung von schwarzen Pixeln welcher Ziffer entspricht.
Zu Anfang bekommt das Netz viele verschiedene Inputdaten aus dem Trainingsdatensatz, die es mit zufällig gewählten Anfangsgewichten an eine nachfolgende Neuronenschicht übergibt. Für jedes Neuron einer Neuronenschicht wird anhand der eingehenden Daten und Gewichte ein Output berechnet, der wiederum an weitere Neuronenschichten gesendet wird. In der Ausgabeschicht wird durch eine Softmaxfunktion die Wahrscheinlichkeit angegeben, mit der ein Input in eine Klasse gehört. Die Vorhersage des Neuronalen Netzes ist die Klasse mit der höchsten Wahrscheinlichkeit. Da die korrekte Lösung für jeden Input in den Trainingsdaten bekannt ist, kann nun die Differenz zwischen der Vorhersage des Neuronalen Netzes und dem korrekten Label dieses Inputs berechnet werden. Diese Differenz ist die sogenannte Cross-Entropy. Wenn eine Cross-Entropy von 0 berechnet werden würde, hätte das Neuronale Netz mit 100%-iger Sicherheit die richtige Vorhersage getroffen. Am Ende eines Trainingszyklus wird eine Fehlerrate (engl.: loss) errechnet, die die gesamte Cross-Entropy eines Trainingssets ist.
Ziel des Trainings ist es, die Lossfunktion zu minimieren. Um dies zu erreichen, müssen die Gewichte zu den Neuronen angepasst (optimiert) werden, z. B. durch ein Backpropagation-Verfahren mit Stochastic Gradient Descent-Optimierung. Die Richtung der Anpassung wird über einen Gradienten gesucht, zu dessen Minimum „hinabgestiegen“ werden soll. Die Schritte des Abstiegs werden durch die sogenannte Lernrate beschrieben. Sie kann mit großen Schritten beginnen, um lokale Minima zu überschreiten, sollte jedoch im Laufe des Trainings verringert werden, damit das globale Minimum erreicht werden kann. Bei einer Lossfunktion von 0 wäre das globale Minimum erreicht und das Neuronale Netz hätte perfekt gelernt.
Wie gut das Neuronale Netz wirklich funktioniert, oder ob es nur den Trainingsdatensatz gelernt hat, wird deutlich, wenn es auf einen vorher unbekannten Testdatensatz angewendet wird. Wie bereits an dieser Stelle deutlich wird, gibt es viele verschiedene Parameter, an denen gedreht werden kann, um die optimale Einstellung für die Klassifikation mit einem Neuronalen Netz zu finden. Was die beste Einstellung ist, lässt sich über Ausprobieren verschiedenster Kombinationen herausfinden.
An dieser Stelle möchte ich mich bei Shirin bedanken, es war ein toller Workshop! Du hast uns das komplexe Thema Deep Learning und Neuronale Netze ein großes Stück näher gebracht.
Maria Hartmann
—
Workshop-Beschreibung: https://www.codecentric.de/schulung/deep-learning-mit-keras-und-tensorflow/
[1] Rosenblatt, Frank (1985). The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain. Web: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.335.-3398&rep=rep1&type=pdf
[2] LeCun, Yann. The MNIST Database of Handwritten Digits. Web: http://yann.lecun.com/-exdb/mnist/
—
Gastautorin Maria Hartmann studiert Digital Humanities an der Universität Trier. Über ihre Liebe zur Sprachwissenschaft ist sie zur Klassifikation von semistrukturierten Texten mit Neuronalen Netzen gekommen, worüber sie jetzt ihre Masterarbeit schreibt. TensorFlow und Keras erleichtern ihr den Einstieg in das komplexe Thema.
Weitere Beiträge
von Shirin Elsinghorst
Dein Job bei codecentric?
Jobs
Agile Developer und Consultant (w/d/m)
Alle Standorte
Weitere Artikel in diesem Themenbereich
Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.
Gemeinsam bessere Projekte umsetzen.
Wir helfen deinem Unternehmen.
Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.
Hilf uns, noch besser zu werden.
Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.
Blog-Autor*in
Shirin Elsinghorst
Team Lead & Consultant Data/AI
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.