Enjoy this title right now, plus millions more, with a free trial

Only $9.99/month after trial. Cancel anytime.

Praxiseinstieg Deep Learning: Mit Python, Caffe, TensorFlow und Spark eigene Deep-Learning-Anwendungen erstellen

Praxiseinstieg Deep Learning: Mit Python, Caffe, TensorFlow und Spark eigene Deep-Learning-Anwendungen erstellen

Read preview

Praxiseinstieg Deep Learning: Mit Python, Caffe, TensorFlow und Spark eigene Deep-Learning-Anwendungen erstellen

Length:
451 pages
3 hours
Publisher:
Released:
Jan 2, 2018
ISBN:
9783960101574
Format:
Book

Description

Deep Learning ist ein Teilbereich des Machine Learning und basiert auf künstlichen neuronalen Netzen. Dieser praktische Leitfaden bietet einen schnellen Einstieg in die Schlüsseltechnologie und erschließt Grundlagen und Arbeitsweisen von Deep Learning.

Anhand Python-basierter Beispielanwendungen wird der Umgang mit den Frameworks Caffe/Caffe2 und TensorFlow gezeigt. Einfache, alltagstaugliche Beispiele laden zum Nachprogrammieren ein. Darüber hinaus erfahren Sie, warum moderne Grafikkarten, Big Data und Cloud Computing beim Deep Learning so wichtig sind. Wenn Sie bereits mit Python, NumPy und matplotlib arbeiten, ermöglicht Ihnen dieses Buch, praktische Erfahrungen mit Deep-Learning-Anwendungen zu machen.

Deep Learning – die Hintergründe
- Lernmethoden, die Deep Learning zugrunde liegen
- Aktuelle Anwendungsfelder wie maschinelle Übersetzungen, Sprach- und Bilderkennung bei Google, Facebook, IBM oder Amazon

Der Werkzeugkasten mit Docker
- Der Docker-Container zum Buch: Alle nötigen Tools und Programme sind bereits installiert, damit Sie die Beispiele des Buchs und eigene Deep-Learning-Anwendungen leicht ausführen können.
- Die Arbeitsumgebung kennenlernen: Jupyter Notebook, Beispieldatensätze, Web Scraping

Der Praxiseinstieg
- Einführung in Caffe/Caffe2 und TensorFlow
- Deep-Learning-Anwendungen nachprogrammieren: Handschrifterkennung, Bilderkennung und -klassifizierung, Deep Dreaming
- Lösungen für Big-Data-Szenarien: verteilte Anwendungen, Spark, Cloud-Systeme
- Modelle in produktive Systeme überführen
Publisher:
Released:
Jan 2, 2018
ISBN:
9783960101574
Format:
Book

About the author


Related to Praxiseinstieg Deep Learning

Related Books

Related Articles

Book Preview

Praxiseinstieg Deep Learning - Ramon Wartala

Cloud.

KAPITEL 1

Einführung

Our machines are dumb, and we're just trying to make them less dumb

Yoshua Benglo, AI-Professor an der Universität von Montreal

Wozu Deep Learning?

Seitdem die ersten Rechenmaschinen konstruiert wurden, versucht der Mensch, ihnen die reale Welt näherzubringen. Das Ziel ist, dass Computer nicht nur einzelne Aufgaben berechnen, sondern unsere Welt als solche begreifen.

Um dieses Ziel zu erreichen, werden immer mehr Daten von Computern verarbeitet. Doch mehr Daten heißt nicht automatisch, dass Computer diese auch verstehen oder selbstständig Zusammenhänge aus ihnen ableiten können. Dazu braucht es geeignete Algorithmen, also eindeutige Vorschriften, um aus einer Menge von eingehenden Daten Rückschlüsse ziehen und Zusammenhänge herstellen zu können.

Der Teilbereich der Informatik, der sich mit Algorithmen für die Erkennung derartiger Zusammenhänge beschäftigt, ist das maschinelle Lernen, das wiederum ein Teilgebiet der künstlichen Intelligenz ist. Im Lauf der Zeit wurden die unterschiedlichsten algorithmischen Ansätze erdacht, um die verschiedensten Aufgaben lösen zu können. Da Computer gute Rechenmaschinen sind, basieren alle Algorithmen auf mathematischen und statistischen Methoden.

Heutzutage lässt sich eine Welt ohne maschinelles Lernen kaum noch vorstellen. Geeignete Algorithmen separieren Spam- von wichtigen E-Mails, suchen für uns passende Informationen aus Abermilliarden Webseiten heraus, machen uns Vorschläge für den nächsten Einkauf, zeigen uns personalisierte Nachrichten an oder spielen uns Musik vor, die wir noch nicht kennen, aber vermutlich mögen werden.

In den letzten Jahren sind darüber hinaus Anwendungen entstanden, deren Nutzung durch eine immer bessere Qualität in den Lernergebnissen erst möglich wurde. Gerade bei komplexen Aufgaben wie der Spracherkennung, der maschinellen Übersetzung oder der automatischen Bilderkennung sind in letzter Zeit reihenweise Durchbrüche erzielt worden. Systeme wie Amazons Alexa, Apples Siri oder Microsofts Cortana ermöglichen die Interaktion mit unseren Computern und Smartphones über natürliche, gesprochene Sprache.

Bildverarbeitende Systeme sind in der Lage, selbstständig Gesichter und andere Merkmale auf unseren Urlaubsfotos zu erkennen, und können daraus selbst Alben gruppieren.

Diese Fortschritte in der Qualität automatischer Bilderkennungssysteme haben Auswirkungen auf eine ganze Reihe weiterer Anwendungsfelder. So bilden sie die Grundlage für die Realisierung selbstfahrender Autos und autonom agierender Drohnen oder die automatische Diagnose von Krankheiten anhand bildgebender Verfahren wie Computertomografie, Ultraschall oder Magnetresonanztomografie.

Vielfach wird dieser Fortschritt im Bereich des maschinellen Lernens durch sogenannte künstliche neuronale Netze erzielt, die, angetrieben durch Rechenkraft und die Existenz von mehr und mehr Daten, eine immer bessere Erkennungsrate erreichen. Technologisch neu an dieser Art künstlicher neuronaler Netze ist deren komplexer, hierarchischer Aufbau, mit dessen Hilfe sich Teilmuster erkennen und weiterverarbeiten lassen. Bei vielen hintereinandergeschalteten Schichten spricht man von einem tiefen Netz oder eben von Deep Learning.

Deep-Learning-Anwendungen bringen zwei große Vorteile bei der Produktentwicklung mit sich: Zum einen lässt sich die Extraktion der nötigen Daten für das Training, also die Modellbildung, innerhalb des künstlichen neuronalen Netzes auf wenige Arbeitsschritte reduzieren, für die sich in der Regel kein Experte verantwortlich zeigen muss. Das sogenannte Feature Engineering, das bei klassischen Machine-Learning-Algorithmen spezielles Domänenwissen voraussetzt, ist im Deep Learning nicht notwendig. Der zweite große Vorteil ist die Skalierung von Deep-Learning-Algorithmen, die es ermöglicht, besser und vor allen Dingen schneller als der Mensch Daten zu verarbeiten. Diese beiden Gründe und die daraus ableitbaren Konsequenzen für Geschäftsprozesse, Arbeitsplätze und unsere Gesellschaft erklären den Hype, der weltweit um dieses Thema gemacht wird.

Das vorliegende Buch soll einen praxisnahen Einstieg in den Umgang mit dieser Art künstlicher neuronaler Netze geben und Beispiele und Anwendungen aufzeigen, die sich auf jedem gängigen Personal Computer oder in der Cloud nachvollziehen lassen.

Zielgruppe

In diesem Buch geht es um maschinelles Lernen mithilfe künstlicher neuronaler Netze. Um sich mit diesem Thema in der Praxis zu beschäftigen, sind neben Grundkenntnissen in mathematischen Verfahren folgende Voraussetzungen von Vorteil:

Erfahrung mit Programmiersprachen wie Python und der Organisation spezifischer Module.

Erfahrung in der Anwendung von Tools wie NumPy oder matplotlib.

Erfahrung bei der Installation von Software unter Windows, macOS oder Linux.

Grundkenntnisse in der Verwendung von Docker, git und Jupyter Notebook.

Erfahrung mit Cloud-Diensten wie Amazon Web Service oder Google Cloud Platform.

Struktur des Buchs

Dieses Buch besteht aus acht Kapiteln, die Schritt für Schritt den Praxiseinstieg in das Thema Deep Learning ermöglichen sollen.

In diesem Kapitel 1 geht es um eine kurze Einführung in den Nutzen und einige Anwendungsfelder von Deep Learning sowie in die Organisation dieses Buchs.

Kapitel 2, Was ist Deep Learning?, beschreibt nach einem geschichtlichen Überblick die genaue Funktionsweise künstlicher neuronaler Netze. Dabei geht es um einfache und mehrschichtige Systeme. Es wird vermittelt, wie Techniken des Gradientenverfahrens, nichtlineare Funktionen und Backpropagation die Anpassung des neuronalen Netzes ermöglicht und so das eigentliche »Lernen« realisiert. Zu guter Letzt werden der Einfluss moderner Grafikprozessoren und die Parallelisierung auf Mehr-GPU- und Cloud-Systemen beschrieben.

Kapitel 3, Wozu wird Deep Learning verwendet?, soll eine Übersicht über prominente Deep-Learning-Anwendungen geben, die von Firmen wie Google, Facebook, Microsoft, IBM und anderen genutzt werden.

Innerhalb von Kapitel 4, Werkzeuge für Deep Learning, wird ein Docker-basierter Werkzeugkasten vorgestellt, mit dessen Hilfe sich die Beispiele aus dem Buch und eigene Deep-Learning-Anwendungen ausführen lassen. Alle nötigen Tools und Programme sind in diesem Werkzeugkasten schon installiert und können einfach genutzt werden. Darüber hinaus gibt es eine kurze Einführung in das webbasierte Jupyter Notebook, mit dem sich die Beispiele innerhalb des Buchs auf einfache Art nachvollziehen lassen. Jupyter Notebook ist darüber hinaus ein hervorragendes Werkzeug, um eigene Deep-Learning-Experimente zu starten. Zu guter Letzt stellt Kapitel 4 einige Datenquellen vor, die im Rahmen dieses Buchs genutzt werden, und gibt einen Überblick über weitere Quellen und deren Nutzung.

Kapitel 5, Zwei Deep-Learning-Frameworks, zeigt anhand einfacher Beispiele, wie sich mithilfe von Caffe und TensorFlow eigene Deep-Learning-Anwendungen erstellen lassen. Dabei geht es um die grundlegenden Konstrukte beider Frameworks und deren Anwendung.

In Kapitel 6, Deep-Learning-Anwendungen, wird anhand einiger Beispielanwendungen die Nutzung beider Frameworks für die Lösung unterschiedlicher Aufgaben gezeigt. Dabei werden neben klassischen Anwendungen von Deep Learning auch einige eher exotische gezeigt, die viel Raum für eigene Experimente bieten.

Deep-Learning-Anwendungen sind besonders im Kontext großer Datenmengen sinnvoll. Kapitel 7, Deep Learning und Big Data, zeigt Lösungsmöglichkeiten dazu auf, wie sich solche Big-Data-Szenarien mit Caffe und TensorFlow bearbeiten lassen. Neben Frameworks für die Verteilung von Deep-Learning-Anwendungen auf mehrere Rechner und Grafikkarten werden auch Lösungen gezeigt, die innerhalb von Cloud-Systemen lauffähig sind.

Kapitel 8, Deep Learning produktiv, liefert Antworten auf die Frage, wie sich Deep-Learning-Anwendungen produktiv einsetzen lassen. Allein diese Fragestellung könnte ein eigenes Buch füllen, und so habe ich mich auf die Nutzung innerhalb einer Cloud-Umgebung konzentriert.

Für Kapitel 7 und 8 sind darüber hinaus Zugänge zur Google Cloud Platform und den Amazon Web Services nötig, die einfach mithilfe einer Kreditkarte angelegt werden können. Bei der Benutzung dieser Dienste können allerdings Kosten entstehen. Daher ist es ratsam, sich über die Preise der einzelnen Dienste genau zu informieren. Aktuelle Preise für Mietinfrastruktur bei AWS finden sich unter https://aws.amazon.com/de/ec2/pricing/. Google nennt seine Preise unter https://could.google.com/pricing/list?hl=de.

Jedes Kapitel wird von einem – aus meiner Sicht – passenden Zitat eingeleitet. Einige dieser Zitate stammen von führenden Deep-Learning-Experten wie Yann LeCun, Andrew Ng, Jürgen Schmidhuber, Yoshua Bengio oder Geoffrey Hinton, und einige von Gelehrten wie Johannes von Salisbury und Arthur Schopenhauer.

Weiterführende Quellen

Ein Buch wie dieses kann nicht alle Fragen zum Thema Deep Learning und den Umgang mit den vorgestellten Tools beantworten. An der einen oder anderen Stelle werde ich URLs zu den Quellen oder zu tiefer gehenden Informationen angeben. Darüber hinaus gibt es zum Thema Deep Learning und Machine Learning eine Menge weiterführender nützlicher Informationen. Folgende Publikationen zum Thema seien empfohlen:

Tariq Rashid, Neuronale Netze selbst programmieren: Ein verständlicher Einstieg mit Python (O’Reilly). Dieses Buch bietet einen guten Einstieg in die Funktionsweise künstlicher neuronaler Netze und deren mathematische Konzepte. Alle Beispiele sind in Python implementiert, und es werden auch die mathematischen Grundlagen erläutert.

Aurélien Géron, Praxiseinstieg Machine Learning mit Scikit-Learn und Tensor-Flow: Konzepte, Tools und Techniken für intelligente Systeme (O’Reilly). Dieses Buch vermittelt einen sehr praxisnahen Einstieg in die grundlegenden Konzepte von Machine Learning und Deep Learning mithilfe von Python.

Wes McKinney, Datenanalyse mit Python: Auswertung von Daten mit Pandas, NumPy und IPython (O’Reilly). In diesem Buch erhalten Sie eine gute Einführung in die Anwendung von NumPy und Pandas im Kontext der Datenanalyse. Hier finden Sie auch eine kurze Einführung in die Programmiersprache Python.

Ian Goodfellow, Deep Learning: Adaptive Computation and Machine Learning series (MIT Press), beleuchtet auf 800 Seiten das Thema Deep Learning auf wissenschaftlichem Niveau.

Auf der Suche nach praktischen Anwendungen sei hier auch auf die Plattform Kaggle.com (https://www.kaggle.com) von Google verwiesen. Auf dieser Seite finden sich echte Herausforderungen aus dem Bereich Machine Learning, die von Data Scientists aus der ganzen Welt bearbeitet werden. Hier findet man nicht nur Wettbewerbe, an denen man teilnehmen kann, sondern auch eine Menge Daten, die sich für eigene Experimente nutzen lassen.

Typografische Konventionen

In diesem Buch werden folgende typografische Konventionen verwendet:

Kursivschrift

Wird genutzt, um neue Termini, URLs, E-Mail-Adressen, Dateinamen und Dateiendungen zu markieren.

Nichtpropertionalschrift

Wird verwendet, um Quellcode, Befehle, Kommandozeilenaufrufe und Schlüsselwörter zu markieren.

Quellcode und Beispiele

Alle Beispiele sind mit ihrem Quellcode auf meinem GitHub-Account verfügbar unter:

https://github.com/rawar/deeplearning

Den Docker-Container mit allen nötigen Programmen und Tools finden Sie auf dem Docker-Hub unter:

https://hub.docker.com/r/rawar/deeplearning/

Die Quellcodes stehen hier zur freien Verfügung, und deren Nutzungsrechte sind nicht eingeschränkt. Einzig wenn größere Teile des Quellcodes kommerziell eingesetzt werden sollen, ist die Erlaubnis des O’Reilly Verlags einzuholen.

Danksagung

Das Interesse und die Beschäftigung mit Deep Learning lässt sich bei mir auf direktem Weg auf das Thema Datenanalyse und Big Data zurückführen. Besonders wenn man Zugriff auf viele Daten hat, liegt es nahe, aus diesen Daten auch zu lernen.

Für mich war es die Beschäftigung mit Open-Source-Technologien im Umfeld von Hadoop und Spark, die mich zum Thema Deep Learning gebracht hat. Erfahrungen in Projekten konnte ich so schon im Rahmen von Artikeln beim »Magazin für professionelle Informationstechnik, iX« teilen.

Dies wäre nicht ohne die tatkräftige Unterstützung von Henning Behme, Christian Kirsch, Kersten Auel, Jürgen Seeger, Tilman Wittenhorst, Alexander Neumann und anderen möglich gewesen.

Bei diesem Buch haben mir Dr. Stefan Kühn und Dr. Philipp Sorg an vielen Stellen mit Ihrer fachlich Expertise weitergeholfen und die eine oder andere Kante abgerundet. Björn Böttcher und Florian Müller haben mich thematisch an vielen Stellen inspiriert.

Viel Überzeugungsarbeit war auch zu leisten, um mich für dieses Buchprojekt und die damit verbundenen Einschränkungen in meiner Freizeit über die letzten Monate zu begeistern. Hier gilt der Dank meiner Lektorin Alexandra Follenius von O’Reilly.

Mein größter Dank gilt meiner Frau Andrea, die mich tatkräftig bei meinem Wunschprojekt unterstützt und es ermöglicht hat, einen Großteil meiner Freizeit in den letzten Monaten in dessen Realisierung zu stecken.

KAPITEL 2

Was ist Deep Learning?

Wir sind gleichsam Zwerge, die auf den Schultern von Riesen sitzen, um mehr und Entfernteres als diese sehen zu können – freilich nicht dank eigener scharfer Sehkraft oder Körpergröße, sondern weil die Größe der Riesen uns emporhebt.

Johannes von Salisbury, 1159 n. Chr.

In diesem Kapitel soll der Frage nachgegangen werden, was Deep Learning eigentlich ist, woher es kommt und welche Technologien dahinterstecken. Es beleuchtet sowohl die geschichtlichen als auch die technologischen Hintergründe.

Kurze Geschichte der künstlichen neuronalen Netze

Künstliche neuronale Netze gibt es bereits seit den frühen 1940er-Jahren. Warren McCulloch und Walter Pitts beschrieben in einem 1943 erschienenen Aufsatz mit dem Titel A Logical Calculus of the Ideas Immanent in Nervous Activity die Idee eines neurophysiologischen Netzwerks. Ihr sogenanntes Neuron stellte dabei ein logisches Schwellwertelement dar, das mit mehreren Eingängen und einem Ausgang verbunden ist. Wenn die Summe der Eingangswerte einen bestimmten Schwellwert erreichte, konnte der Ausgang feuern.

Basierend auf der Erkenntnis, dass einfache Klassen neuronaler Netze jede logische oder arithmetische Funktion berechnen können, beschäftigen sich die beiden bekannten Forscher Norbert Wiener und John von Neumann näher mit diesem Thema. In seiner Arbeit befasste sich John von Neumann noch bis kurz vor seinem Tod 1957 mit den Unterschieden zwischen Computern und menschlichen Gehirnen, sein Buch The Computer and the Brain erschien posthum.

Schließlich beschrieb der Psychologe Donald O. Hebb 1949 in seinem Buch The Organization of Behaviour die nach ihm benannte Hebb’sche Lernregel (https://de.wikipedia.org/wiki/Hebbsche_Lernregel), die ein einfaches, aber universelles Lernkonzept darstellt, das auf der Interaktion individueller Neuronen beruht. Einen ersten Computer auf Basis dieser theoretischen Arbeiten baute Marvin Minsky 1951 an der Universität von Princeton. 1959 entwickelten Frank Rosenblatt und Charles Wightman einen Rechner an der Cornell University, der über einen 20 x 20 Pixel großen Bildsensor einfache Ziffern mithilfe sogenannter Perzeptrons erkennen konnte. Dieses von Frank Rosenblatt in seinem Buch The Perceptron – A Probabilistic Model for Information Storage and Organization in the Brain beschriebene Konzept wurde 1969 von Marvin Minsky und Seymour Papertin seiner Universalität jedoch angezweifelt. Sie konnten mathematisch beweisen, dass sich einige Problemstellungen nicht mit Perzeptrons modellieren lassen. Nach diesen Erkenntnissen ebbte der Rummel um die künstlichen neuronalen Netze weitgehend ab. Andere Verfahren des maschinellen Lernens, wie Support Vector Machines (SVM) und Bayes’sche Verfahren, versprachen auf der vorhandenen Rechenleistung bessere Ergebnisse.

Und dennoch befassten sich auch nach dieser Zeit verschiedene Wissenschaftler weltweit mit dem Thema. Die Franzosen Yann LeCun und Yoshua Bengio, der Engländer Geoffrey E. Hinton oder auch der Deutsche Jürgen Schmidhuber entwickelten die Konzepte weiter und stützten sich dabei auf immer leistungsfähigere Hardware. In den 2000ern war allerdings noch nicht absehbar, dass diese Wissenschaftler zu den Stars einer neuen Ära aufsteigen würden.

Einen neuen Antrieb erhielt die Neuroinformatik in den 2010er-Jahren mit den Erfolgen des deutschen Informatikers Jürgen Schmidhuber, der am Schweizer Forschungsinstitut Istituto Dalle Molle di Studi sull’Intelligenza Artificiale (IDSIA) eine Reihe internationaler Wettbewerbe auf dem Gebiet des maschinellen Lernens und der Mustererkennung mithilfe von Deep-Learning-Netzen gewann (http://people.idsia.ch/~juergen/firstdeeplearner.html).

Zu dieser Zeit fingen auch immer mehr Firmen an, sich mit Themen rund um künstliche neuronale Netze im Allgemeinen und Deep-Learning-Verfahren im Besonderen zu beschäftigen. Besonders Firmen mit vielen Daten erkannten schnell, dass dieser Umstand eine ideale Ausgangslage für das Training tiefer Netze war.

So publizierte 2012 das Google X Lab das sogenannte Katzen-Experiment (https://arxiv.org/abs/1112.6209). Dafür konstruierten die Forscher um Jeffrey Dean ein künstliches neuronales Netz, das, verteilt auf 1.000 Rechner mit 16.000 CPUKernen, Bilder aus YouTube-Videos auswertete. Die Idee dabei war, ein Netz zu konstruieren, das selbstständig Dinge in Bildern erkennen kann. Dabei fanden sie heraus, dass ihr Deep-Learning-Netz nicht nur Gesichter auf Bildern eigenständig klassifizieren konnte, sondern auch das Konzept einer Katze erkannte.

Im gleichen Jahr gewannen Geoffrey »Jeff« Hinton, Alex Krizhevsky und Ilya Sutskever den Wettbewerb ILSVTC (ImageNet Large-Scale Visual Recognition Challenge) mit einem Convolutional Neural Network (http://www.image-net.org/challenges/LSVRC/2012/). Neuartig war hierbei die Hardware, auf der das Training stattfand. Wurden vorher überwiegend CPU-Kerne für die einzelnen Berechnungen genutzt, so nutzte Jeff Hintons Team bereits zwei NVIDIA-GTX-580-Grafikkarten (http://www.nvidia.de/object/product-geforce-gtx-580-de.html), die mit ihren 512 CUDA-Cores die Berechnung parallelisierten.

Bereits ein Jahr später fanden diese Forschungsarbeiten Eingang in erste Produkte. So verkündete Google im Sommer 2013, dass mithilfe der CNNs die Bildersuche (https://photos.google.com) verbessert wurde (https://research.googleblog.com/2013/06/improving-photo-searchstep-across.html). 2014 kaufte Google dann für rund 400 Millionen britische Pfund die auf künstliche Intelligenz spezialisierte Londoner Firma DeepMind (https://www.theguardian.com/technology/2014/jan/27/google-acquires-uk-artificial-intelligence-startup-deepmind). DeepMind war erst zwei Jahre zuvor von Demis Hassabis gegründet worden, der als Lead-AI-Programmierer in Peter Molyneux' Computerspiele-Schmiede, Lionhead Studios, an der Entwicklung von Black & White beteiligt war.

2015 gewann ein Team um Joan

You've reached the end of this preview. Sign up to read more!
Page 1 of 1

Reviews

What people think about Praxiseinstieg Deep Learning

0
0 ratings / 0 Reviews
What did you think?
Rating: 0 out of 5 stars

Reader reviews