Deep Learning kompakt für Dummies - John Paul Mueller - E-Book

Deep Learning kompakt für Dummies E-Book

John Paul Mueller

0,0
22,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.
Mehr erfahren.
Beschreibung

Wollen Sie sich über Deep Learning informieren und vielleicht erste kleine Schritte machen, diese Technologie zu nutzen? Dann hilft Ihnen dieses Buch. Die Autoren erklären Ihnen, welchen Einfluss Deep Learning im Alltag hat und in welcher Beziehung es zu maschinellem Lernen steht. Sie sammeln erste eigene Erfahrungen mit vorgegebenen Python-Programmen und verstehen so die Funktionsweise von neuronalen Netzen und wie Bilder klassifiziert und Sprache sowie Text verarbeitet werden. So ist dieses Buch ein schneller erster und verständlicher Einstieg in Deep Learning.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 452

Veröffentlichungsjahr: 2020

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Deep Learning kompakt für Dummies

Schummelseite

Deep Learning ist aus unserem Alltag nicht mehr wegzudenken. Ob auf dem Smartphone, im Kaufhaus oder in der Arztpraxis – überall beeinflussen diese cleveren Algorithmen unser tägliches Leben. Python ist eine mächtige Programmiersprache, mit der Sie auch ohne viel Mühe eigene DL-Anwendungen erstellen können. Dank zahlreicher verfügbarer Bibliotheken und kompatibler Frameworks müssen Sie den Code dabei gar nicht von Grund auf neu schreiben. So können Sie sich voll und ganz auf die konkrete Aufgabenstellung konzentrieren. Diese Schummelseiten enthalten einige nützliche Überblicke, die Ihnen als Wegweiser für Ihre eigenen Experimente mit Deep Learning dienen sollen.

Frameworks für Deep LearningVerschiedene Schichten in KonvolutionsnetzenAnwendungsbereiche für rekurrente neuronale Netze

Damit Sie bei der Anwendungsentwicklung mit Python für Deep Learning den Programmcode nicht von Grund auf neu schreiben müssen, sondern auf fertig entwickelte Entwurfsmuster zurückgreifen können, gibt es sogenannte Frameworks. Ein Framework ist im Prinzip ein abstrahiertes Grundgerüst, auf dem Ihr eigentlicher Programmcode aufbaut. Während Bibliotheken in Ihrer Anwendung importiert werden und dort Dienste bereitstellen, die Ihre Anwendung steuert, ist ein Framework eine Art Ausführungsumgebung, in der Sie Anwendungen entwickeln und implementieren, die dann auf vorhersagbare und zuverlässige Weise funktionieren. Die folgende Liste enthält bekannte Frameworks für Deep Learning (nach ihrer Beliebtheit geordnet), die gut mit Python harmonieren. Unter https://towardsdatascience.com/deep-learning-framework-power-scores-2018-23607ddf297a finden Sie eine ähnliche Rangliste, die verschiedene Frameworks anhand ihrer typischen Merkmale und Beliebtheit vergleicht.

TensorFlow (https://www.tensorflow.org/): TensorFlow liegt derzeit ganz vorn auf der Beliebtheitsskala und unterstützt sowohl C++ als auch Python. Mit der Open-Source-Version können Sie ganz vernünftige Anwendungen entwickeln. Für kompliziertere Projekte und höhere Ansprüche steht außerdem eine kostenpflichtige Version mit zusätzlicher Funktionalität bereit. Zu den Vorteilen von TensorFlow zählen vor allem die einfache Installation und die hohe Benutzerfreundlichkeit. Allerdings sei TensorFlow manchen Anwendern zufolge bei der Ausführung seiner Aufgaben noch zu langsam.Keras (https://keras.io/): Keras ist eigentlich kein Framework, sondern ließe sich eher als eine Art API oder integrierte Entwicklungsumgebung (IDE) beschreiben. Meist wird das Tool aber in einem Atemzug mit Frameworks für Deep Learning genannt, weil viele Anwender Keras auf ähnliche Weise nutzen. Keras bringt Ihnen aber nur etwas, wenn Sie bereits ein DL-Framework wie TensorFlow, Theano, MXNet oder CNTK installiert haben. Bei TensorFlow ist Keras im Installationspaket sogar mit drin (siehe https://www.tensorflow.org/api_docs/python/tf/keras) – dies erklärt, warum Keras so gern genutzt wird, um die Arbeit mit TensorFlow zu erleichtern. Die Veröffentlichung von TensorFlow 2.0 (Details dazu unter https://medium.com/tensorflow/standardizing-on-keras-guidance-on-high-level-apis-in-tensorflow-2-0-bad2b04c819a) dürfte diese Beziehung zwischen Keras und TensorFlow noch weiter stärken. Aber auch wenn Sie sich für Theano statt TensorFlow entscheiden, können Sie Keras problemlos nutzen, denn das Tool unterstützt die Sprache des zugrunde liegenden Frameworks.PyTorch (https://pytorch.org/): PyTorch ist in Lua (https://www.lua.org/) geschrieben und eine Abspaltung von Chainer (siehe weiter unten in dieser Liste). Ursprünglich wurde PyTorch bei Facebook entwickelt; heute kommt es aber unter anderem auch bei Twitter, Salesforce und der Universität Oxford zum Einsatz. PyTorch ist äußerst benutzerfreundlich, geht effizient mit Arbeitsspeicher um, ist relativ schnell und kommt vor allem im Forschungssektor zum Einsatz. Dieses Framework unterstützt nur Python als Programmiersprache.Theano (http://deeplearning.net/software/theano/): Theano wird inzwischen nicht mehr aktiv weiterentwickelt, was durchaus problematisch ist. Allerdings wird dieses Framework aufgrund seiner umfassenden Unterstützung für numerische Aufgabenstellungen von Entwicklern trotzdem noch gern genutzt. Zudem ist die Kompatibilität mit GPU-Systemen besonders gut. Dieses Framework unterstützt nur Python als Programmiersprache.MXNet (https://mxnet.apache.org/): Für MXNet spricht vor allem seine Geschwindigkeit. MXNet und CNTK (siehe nächster Eintrag in dieser Liste) arbeiten ähnlich schnell und werden beide oft genutzt, um der von manchen Anwendern beklagten Schwerfälligkeit von TensorFlow etwas entgegenzusetzen. (Details zum Benchmarking von DL-Code enthält das englischsprachige Whitepaper unter https://arxiv.org/pdf/1608.07249v7.pdf.) MXNet zeichnet sich vor allem durch seine erweiterte GPU-Unterstützung, die Ausführbarkeit auf beliebigen Geräten, die hochleistungsfähige imperative API, die leichte Modellbereitstellung und die hohe Skalierbarkeit aus. Dieses Framework unterstützt diverse Programmiersprachen, einschließlich C++, Python, Julia, Matlab, JavaScript, Go, R, Scala, Perl und Wolfram Language.Microsoft Computational Network TookKit (CNTK) (https://www.microsoft.com/en-us/cognitive-toolkit/): CNTK ist ein reines Open-Source-Produkt und nutzt seine eigene Programmiersprache (Network Description Language, NDL) – es ist also etwas Einarbeitungszeit nötig. Das Tool unterstützt dafür aber die Entwicklung in C++, C#, Java und Python und bietet somit mehr Flexibilität als manch andere Lösung. Dieses Framework lässt sich zudem gut erweitern und in seinem Funktionsumfang besser an Ihre Anforderungen anpassen.Caffe2 (https://caffe2.ai/): Dieses Framework eignet sich am besten für Anwender, die sehr geläufige Aufgaben mit Deep Learning bewältigen möchten, aber mit der Programmentwicklung nicht so viel am Hut haben. Beliebt ist Caffe2 vor allem, weil sich damit Modelle trainieren und bereitstellen lassen, ohne dass irgendwelcher Code geschrieben werden muss. Stattdessen wählt der Benutzer ein vorgefertigtes Modell aus und fügt es einer Konfigurationsdatei hinzu (die JSON-Code sehr ähnlich ist). Eine große Auswahl vortrainierter Modelle findet sich im »Model Zoo« (https://github.com/BVLC/caffe/wiki/Model-Zoo). Dieses Tool unterstützt C++ und Python direkt und könnte theoretisch mittels Protobuf (https://developers.google.com/protocol-buffers/) erweitert werden, was aber gewisse Risiken birgt (siehe dazu die Diskussion unter https://github.com/facebookarchive/caffe2/issues/1897).Chainer (https://chainer.org/): Dieses Framework legt besonderen Wert auf eine möglichst leichte Zugänglichkeit der Funktionalität, die von den meisten Systemen heute bereitgestellt oder über Onlinehosts abgerufen wird. Folglich überzeugt Chainer vor allem durch CUDA-Unterstützung für den GPU-Zugriff, die mühelose Nutzbarkeit mehrerer GPU, die Unterstützung für unterschiedlichste Netze und Per-Batch-Architekturen, die Steuerbarkeit des Prozessflusses bei Vorwärtsberechnungen ohne Beeinträchtigung der Rückpropagierung sowie wesentliche Debugging-Funktionen zur schnelleren Fehlerbehebung. Viele Entwickler nutzen dieses Framework anstelle von Bibliotheken wie Pylearn2, die auf TensorFlow basieren (Details unter http://deeplearning.net/software/pylearn2/), um vorhandene Lücken zwischen Algorithmen und Deep Learning zu schließen. Dieses Framework unterstützt nur Python als Programmiersprache.

Deep Learning kompakt für Dummies

Bibliografische Information der Deutschen Nationalbibliothek

Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie;detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

1. Auflage 2020

© 2020 WILEY-VCH Verlag GmbH & Co. KGaA, Weinheim

Original English language edition Deep Learning For Dummies © 2019 by Wiley Publishing, Inc. All rights reserved including the right of reproduction in whole or in part in any form. This translation published by arrangement with John Wiley and Sons, Inc.

Copyright der englischsprachigen Originalausgabe Deep Learning For Dummies © 2019 by Wiley Publishing, Inc.

Alle Rechte vorbehalten inklusive des Rechtes auf Reproduktion im Ganzen oder in Teilen und in jeglicher Form. Diese Übersetzung wird mit Genehmigung von John Wiley and Sons, Inc. publiziert.

Wiley, the Wiley logo, Für Dummies, the Dummies Man logo, and related trademarks and trade dress are trademarks or registered trademarks of John Wiley & Sons, Inc. and/or its affiliates, in the United States and other countries. Used by permission.

Wiley, die Bezeichnung »Für Dummies«, das Dummies-Mann-Logo und darauf bezogene Gestaltungen sind Marken oder eingetragene Marken von John Wiley & Sons, Inc., USA, Deutschland und in anderen Ländern.

Das vorliegende Werk wurde sorgfältig erarbeitet. Dennoch übernehmen Autoren und Verlag für die Richtigkeit von Angaben, Hinweisen und Ratschlägen sowie eventuelle Druckfehler keine Haftung.

Coverfoto: ustas – stock.adobe.comKorrektur: Claudia Lötschert

Print ISBN: 978-3-527-71687-6ePub ISBN: 978-3-527-82597-4

Über die Autoren

John Mueller ist freiberuflicher Autor und technischer Redakteur. Das Schreiben liegt ihm offensichtlich im Blut, denn er hat bereits an 112 Büchern und mehr als 600 Artikeln mitgewirkt. Die Themen reichen vom Datenbank- und Netzwerkbetrieb über die künstliche Intelligenz bis hin zur praxisorientierten Programmierung. Zu seinen aktuellen Büchern zählen Leitfäden für die Datenwissenschaft, maschinelles Lernen und den Umgang mit Algorithmen. Als technischer Redakteur hat er schon über siebzig Autoren zu ihren Manuskripten beraten und die Herausgeber verschiedener Zeitschriften unterstützt. Neben seiner Beratertätigkeit hilft er außerdem beim Erstellen von Prüfungs- und Zertifizierungsfragen. Branchenthemen kommentiert er in seinem Blog unter http://blog.johnmuellerbooks.com/. Er ist ebenfalls über seine Website http://www.johnmuellerbooks.com/ und per E-Mail (auf Englisch) unter der E-Mail-Adresse [email protected] erreichbar.

Luca Massaron hat sich auf die Datenwissenschaft und Marketingforschung spezialisiert. Sein besonderes Augenmerk gilt der multivariaten Statistik, dem maschinellen Lernen und der Kundenanalyse. Seit über einem Jahrzehnt löst er knifflige Herausforderungen in der Praxis mithilfe von Algorithmen, Data-Mining und statistischen Methoden. Er gilt in Italien als einer der Pioniere der Internetzielgruppenanalyse und zählt zu den produktivsten Anwendern auf dem Data-Science-Portal kaggle.com. Seine Erfahrungen mit Daten, Analysen und dem vielversprechenden Gebiet Knowledge Discovery gibt er gern an Experten und Laien gleichermaßen weiter. Er ist überzeugt, dass ein grundlegendes Verständnis der Datenwissenschaft zu enormen technischen Fortschritten beitragen wird. Er ist außerdem als Google Developer Expert (GDE) für maschinelles Lernen zertifiziert.

Widmung von John Mueller

Dieses Buch widme ich Donnie und Shannon Thompson, die für mich nicht nur zwei äußerst zuvorkommende Nachbarn, sondern wahre Freunde sind.

Widmung von Luca Massaron

Ich widme dieses Buch meiner Frau Yukiko und unserer Tochter Amelia, meinen Eltern Renzo und Licia sowie Yoshiki, Takayo und Makiko, der Familie von Yukiko.

Danksagung von John Mueller

Mein größter Dank gilt meiner Frau Rebecca, die auch in schweren Zeiten fest an mich geglaubt hat. Obwohl sie nicht mehr unter uns weilt, ist sie immer noch die treibende Kraft hinter all meinen Büchern, hinter jedem Wort auf dem Papier.

Russ Mullen gilt Dank für sein technisches Lektorat dieses Buchs, von dem die Genauigkeit und Vielfalt der Inhalte klar profitiert hat. Russ hat sich bei der Recherche wie immer richtig ins Zeug gelegt, die Weiten des Internets nach hilfreichen Webseiten durchsucht und nützliche Verbesserungsvorschläge unterbreitet.

Matt Wagner, meinem Agenten, verdanke ich den Auftrag zu diesem Buch. Zudem hat er sich um die formellen Details gekümmert, mit denen sich Autoren nur ungern plagen. Dafür stehe ich in seiner Schuld.

Mehrere freiwillige Testleser haben das Buch in seiner Entstehungsphase teilweise oder vollständig gelesen und die Skripte ausprobiert und mir mit wertvollen Ratschlägen zur Seite gestanden. Mehr kann sich ein Autor wirklich nicht wünschen! Ich bedanke mich besonders bei Eva Beattie, Glenn A. Russell, Osvaldo Téllez Almirall und Simone Scardapane, die dieses Projekt immer wieder selbstlos unterstützt haben.

Und zu guter Letzt gilt mein Dank natürlich auch Katie Mohr, Susan Christophersen und dem gesamten Verlagsteam.

Danksagung von Luca Massaron

Mein größter Dank geht an meine Familie – Yukiko und Amelia –, deren Unterstützung und liebevolle Geduld meine Mitarbeit an diesem Buch ermöglicht hat. Außerdem möchte ich mich bei Simone Scardapane, seines Zeichens Dozent an der Universität La Sapienza (Rom) und ebenfalls Google Developer Expert, für seine wertvollen Anregungen beim Schreiben dieses Buchs bedanken.

Inhaltsverzeichnis

Cover

Über die Autoren

Widmung von John Mueller

Widmung von Luca Massaron

Danksagung von John Mueller

Danksagung von Luca Massaron

Einführung

Über dieses Buch

Törichte Annahmen über den Leser

Symbole, die in diesem Buch verwendet werden

Weitere Ressourcen

Wie es weitergeht

Teil I: Einführung in Deep Learning

Kapitel 1: Einführung in Deep Learning

Definition von Deep Learning

Deep Learning in der Praxis

Programmierumgebung für Deep Learning

Deep Learning: Hype vs. Realität

Kapitel 2: Maschinelles Lernen

Definition von maschinellem Lernen

Lernstrategien und Arten von Algorithmen

Sinnvolle Einsatzbereiche für maschinelles Lernen

Kapitel 3: Installation und Verwendung von Python

Verwendung von Python in diesem Buch

Installation von Anaconda

Jupyter Notebook

Verwendete Datensätze in diesem Buch

Erstellen einer Anwendung

Weitere Informationen zu Python

Arbeiten in der Cloud

Kapitel 4: Frameworks für Deep Learning

Das Framework-Prinzip

Frameworks speziell für Deep Learning

Teil II: Grundlagen von Deep Learning

Kapitel 5: Rechnen mit Matrizen

Nötige mathematische Grundlagen

Skalar-, Vektor- und Matrixoperationen

Der Lernprozess als Optimierung

Kapitel 6: Grundlagen der linearen Regression

Kombination von Variablen

Vermischung von Variablen unterschiedlichen Typs

Nutzung von Wahrscheinlichkeiten

Schätzung der richtigen Merkmale

Lernen aus einzelnen Beispielen

Kapitel 7: Einführung in neuronale Netze

Das faszinierende Perzeptron

Komplexere Lernverfahren und neuronale Netze

Kapitel 8: Entwurf eines einfachen neuronalen Netzes

Grundlegende Funktionsweise neuronaler Netze

Ein Blick ins Innere von neuronalen Netzen

Kapitel 9: Deep Learning im Detail

Daten, Daten, Daten

Vorteile durch all die neuen Daten

Mehr Tempo bei der Datenverarbeitung

Neuerungen von Deep Learning

Die Suche nach noch smarteren Lösungen

Kapitel 10: Konvolutionsnetze

Bilderkennung mit Konvolutionsnetzen

Konvolutionen (Faltungen)

Erkennung von Kanten und Formen in Bildern

Kapitel 11: Rekurrente neuronale Netze

Einführung in rekurrente neuronale Netze

LSTM-Zellen (Long Short-Term Memory)

Teil III: Anwendung von Deep Learning

Kapitel 12: Bildklassifikation

Herausforderungen bei der Bildklassifikation

Unterscheidung von Verkehrszeichen

Kapitel 13: Komplexe Konvolutionsnetze

Unterschiedliche Aufgaben beim Erkennen von Objekten im Bild

Wahrnehmung von Objekten in ihrer Umgebung

Böswillige Angriffe auf DL-Anwendungen

Kapitel 14: Sprachverarbeitung

Verarbeitung von Sprache

Auswendiglernen von wichtigen Sequenzen

KI für Stimmungsanalysen

Kapitel 15: Automatisch erzeugte Musik und visuelle Kunst

Computergenerierte Kunst

Imitation eines Künstlers

Kapitel 16: Generative Adversarial Networks

Konkurrierende neuronale Netze

Komplexere GANs für anspruchsvollere Aufgaben

Kapitel 17: Verstärkendes Lernen mit Deep Learning

Strategische Spiele mit neuronalen Netzen

Funktionsweise von AlphaGo

Teil IV: Der Top-Ten-Teil

Kapitel 18: Zehn Anwendungsszenarien für Deep Learning

Kolorieren von Schwarz-Weiß-Aufnahmen

Analyse der Körperhaltung in Echtzeit

Verhaltensanalysen in Echtzeit

Übersetzung von Sprachen

Einsparungen mit Solaranlagen

Computer als Spielgegner

Erzeugung von Stimmen

Demografische Analysen

Kunst basierend auf normalen Fotos

Vorhersage von Naturkatastrophen

Kapitel 19: Zehn unverzichtbare Tools für Deep Learning

Kompilieren von mathematischen Ausdrücken mit Theano

Stärkung von TensorFlow mit Keras

Dynamische Berechnung von Graphen mit Chainer

Einrichtung einer MATLAB-ähnlichen Umgebung mit Torch

Dynamische Ausführung von Aufgaben mit PyTorch

Schnellere DL-Forschung dank CUDA

Geschäftliche Erfolge mit Deeplearning4j

Data-Mining mit Neural Designer

Algorithmentraining mit Microsoft Cognitive Toolkit (CNTK)

Volle GPU-Leistung mit MXNet

Stichwortverzeichnis

End User License Agreement

Illustrationsverzeichnis

Kapitel 1

Abbildung 1.1: Deep Learning ist eine Unterkategorie des maschinellen Lernen...

Kapitel 2

Abbildung 2.1: Visualisierung eines einfachen ML-Szenarios

Kapitel 3

Abbildung 3.1: Jupyter Notebook erleichtert das Erstellen von Beispielen fü...

Abbildung 3.2: Ein Notebook umfasst Zellen, die Programmcode enthalten.

Abbildung 3.3: Ihre gespeicherten Notebooks erscheinen in einer Liste im Pro...

Abbildung 3.4: Dateien, die zum Repository hinzugefügt werden sollen, e...

Abbildung 3.5: Das Boston-Objekt beinhaltet den geladenen Datensatz.

Abbildung 3.6: Zellen werden in einem Notebook separat ausgeführt.

Abbildung 3.7: Änderungen an Daten beeinflussen alle Zellen, die diese ...

Abbildung 3.8: Überschriften mit unterschiedlichen Formaten heben besti...

Abbildung 3.9: Durch Konkatenation werden mehrere Codezeilen verkettet und a...

Abbildung 3.10: Mehrzeilige Kommentare erzeugen eigene Ausgaben.

Abbildung 3.11: Mit Colab können Sie Ihre Python-Projekte auf einem Tab...

Kapitel 4

Abbildung 4.1: Startbildschirm von Anaconda Navigator

Abbildung 4.2: Ansicht der Pakete in der Basisumgebung

Abbildung 4.3: Benennung der neuen Umgebung

Abbildung 4.4: Auswahl der Scikit-Pakete

Abbildung 4.5: Pakete, von denen Scikit-learn abhängig ist

Abbildung 4.6: Matplotlib-Paketauswahl

Abbildung 4.7: Pakete, von denen Matplotlib abhängig ist

Abbildung 4.8: Auswahl der Pakete keras und tensorflow

Abbildung 4.9: Paketzusammenstellung

Abbildung 4.10: Installieren Sie die Visual C++-Buildtools für Ihre Pyt...

Abbildung 4.11: Wählen Sie die gewünschte Umgebung im Anaconda-Nav...

Kapitel 5

Abbildung 5.1: Bei der Optimierung wird das globale Minimum gesucht.

Kapitel 6

Abbildung 6.1: Fehler sind exemplarisch für eine Regressionsgerade und e...

Abbildung 6.2: Wahrscheinlichkeiten funktionieren mit einer Schwanenhalskurv...

Abbildung 6.3: Verschiedene Optimierungspfade für dasselbe Datenproblem...

Kapitel 7

Abbildung 7.1: Die Trennlinie eines Perzeptrons grenzt zwei Klassen voneinan...

Abbildung 7.2: Für neuronale Netze gibt es verschiedene Aktivierungsfun...

Abbildung 7.3: Neuronen in einem neuronalen Netz sind auf Schichten angeordn...

Abbildung 7.4: Feedforward-Verfahren: In einem neuronalen Netz werden Daten ...

Kapitel 8

Abbildung 8.1: Kurvenverlauf der Sigmoidfunktion

Abbildung 8.2: Zwei Punktwolken in Form von Halbmonden überlappen einan...

Kapitel 9

Abbildung 9.1: Im Laufe der Jahre passten immer mehr Transistoren in einen P...

Abbildung 9.2: Die ReLU-Aktivierungsfunktion leitet nur Signale grö...

Abbildung 9.3: Durch Dropout werden 40 Prozent der Neuronen beim Trainin...

Kapitel 10

Abbildung 10.1: Die Pixel eines Bilds entsprechen Werten in einer Matrix.

Abbildung 10.2: Nur ein translationsinvarianter Algorithmus erkennt den ...

Abbildung 10.3: Ein Bildausschnitt wird zwecks Konvolution durch Matrixm...

Abbildung 10.4: Die Umrisse der zwei Plüschtiere werden mit einem ...

Abbildung 10.5: Eine Pooling-Schicht bestimmt hier jeweils den größt...

Abbildung 10.6: Die Architektur von LeNet5 ermöglichte das Erkennen ...

Abbildung 10.7: Das Bild eines Hunds wird mittels Konvolution klassifizie...

Abbildung 10.8: Ein Bild wird anhand des Stils eines anderen Bilds transf...

Kapitel 11

Abbildung 11.1: Eine RNN-Zelle erkennt ein Wort als Sequenz aus Buchstabe...

Abbildung 11.2: Die Eingaben und Ausgaben von RNN-Zellen gibt es in versc...

Abbildung 11.3: Die interne Struktur eines LSTM umfasst zwei Informations...

Abbildung 11.4: Die interne Struktur einer GRU-Zelle umfasst einen Inform...

Kapitel 12

Abbildung 12.1: Durch verschiedene Bearbeitungsmethoden werden zusät...

Abbildung 12.2: Der GTSRB-Datensatz enthält Bilder von deutschen Ver...

Abbildung 12.3: Die Beispielbilder sind ungleichmäßig auf die K...

Abbildung 12.4: Die Trainings- und Validierungsleistung werden verglichen.

Kapitel 13

Abbildung 13.1: Objekte in einem Bild aus MS COCO werden erkannt, lokalisi...

Abbildung 13.2: Die mit Keras-RetinaNet erkannten Objekte werden umrahmt u...

Kapitel 15

Abbildung 15.1: Ein Mensch sieht hier eine Grafik mit verschiedenen geomet...

Abbildung 15.2: Für einen Computer ist dasselbe Bild nichts weiter al...

Abbildung 15.3: Aus einem Inhaltsbild und einem Stilbild entsteht ein ...

Kapitel 16

Abbildung 16.1: In einer GAN-Architektur interagieren zwei neuronale Netze i...

Abbildung 16.2: Nach 100 Epochen erzeugt die GAN-Architektur ziemlich gute I...

Abbildung 16.3: Die Trainingsfehler der GAN-Architektur lassen sich nachverf...

Kapitel 17

Abbildung 17.1: Ein Agent interagiert mit seiner Umgebung beim verstärk...

Abbildung 17.2: Die CartPole-Umgebung von OpenAI Gym simuliert ein klassisch...

Orientierungspunkte

Cover

Inhaltsverzeichnis

Fangen Sie an zu lesen

Seitenliste

1

2

3

4

7

8

9

10

21

22

23

24

25

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

297

298

299

300

301

302

303

304

305

306

307

309

310

311

312

313

314

315

316

317

318

319

320

321

322

323

324

325

326

327

328

329

330

331

332

333

334

335

336

337

338

339

340

341

342

343

344

345

346

347

348

349

351

352

353

354

355

356

357

358

359

360

361

362

363

364

365

Einführung

Mit dem Begriff Deep Learning kann ein Großteil der Bevölkerung noch nicht viel anfangen. Vor allem im englischsprachigen Raum vermutet manch einer gar etwas Geheimnisvolles oder Unerklärliches dahinter, da das Wörtchen »deep« in gewissen Zusammenhängen auf düstere Intrigen oder unergründliche Mysterien hinweist (»deep conspiracy«, »deep mystery«). Tatsächlich jedoch ist Deep Learning alles andere als mysteriös und aus unserem Alltag nicht mehr wegzudenken. Auch Sie nutzen schon Deep Learning – wenn Sie Ihr Smartphone mit Sprachbefehlen steuern, wenn Sie bestimmte Apps verwenden und manchmal sogar, wenn Sie einfach nur einen Einkaufsbummel machen. Deep Learning findet sich heute überall. Darum wird es Zeit, sich genauer mit diesem »tief gehenden Lernen« und seinen faszinierenden Anwendungsgebieten zu befassen.

Wie so viele neue Technologien weckt auch Deep Learning in manchen Menschen irrationale Ängste. Sie fürchten eine unabwendbare Apokalypse und außer Kontrolle geratene Killerroboter. Mit der Realität hat das eher nichts zu tun. Viel wahrscheinlicher ist wohl, dass gewiefte Ganoven mithilfe von Deep Learning täuschend echte Dokumente und Profile von erfundenen Personen erstellen werden, um ihre Mitmenschen oder den Staat hereinzulegen und um Tausende Euros zu erleichtern.

Falls auch Ihnen Deep Learning noch fremd ist – oder Sie womöglich gar zur besorgten Killerroboterfraktion gehören –, bringt Deep Learning für Dummies hoffentlich Licht ins Dunkel. Diese neue Technologie eröffnet uns im Alltag ungeahnte Möglichkeiten, hat aber auch ihre Grenzen. Nach dem Lesen des Buchs sind Sie mit den Vor- und Nachteilen besser vertraut.

Über dieses Buch

Deep Learning für Dummies enthält Codebeispiele, die auf jedem standardmäßigen Mac-, Linux- und Windows-System laufen. Sie können den Code auch online testen, unter anderem mit Google Colab. (Hinweise im Buch erklären, wie Sie dies bewerkstelligen.) Mit einem Grafikprozessor oder anderer spezieller Ausstattung werden die Beispiele zwar schneller ausgeführt, aber in diesem Buch geht es ja nicht um Geschwindigkeitsrekorde. Vielmehr sollen Sie lernen, wie Sie auf jedem beliebigen Rechner Programme für Deep Learning schreiben können – selbst wenn die Ausführung dann etwas Geduld erfordert. (Falls ein Beispiel besonders lange dauert, wird an der entsprechenden Stelle darauf hingewiesen.)

Der erste Teil dieses Buchs vermittelt Grundkenntnisse, damit Sie nicht gleich zu Beginn die Orientierung verlieren. Sie erfahren, wie Sie nötige Tools installieren und welche mathematischen Methoden Sie beherrschen sollten. Die ersten Beispiele behandeln eher geläufige Regressionsaufgaben und maschinelles Lernen, aber ohne diese Grundlagen können Sie das Potenzial von Deep Learning nicht ausschöpfen.

Danach geht es richtig los: Sie lernen zum Beispiel, wie sich automatisch Kunstwerke generieren lassen und wie Sie so manch andere Aufgabe ganz ohne aufwendige Programmierung oder besondere Hardware bewältigen. Dieses Buch ersetzt zwar kein ausführlicheres Studium in diesem Fachbereich, aber es vermittelt Ihnen ein gutes Gespür für die Theorie und Praxis beim Deep Learning.

Damit Sie alle Erläuterungen im Buch besser nachvollziehen können, gelten folgende Konventionen:

Text, den Sie exakt übernehmen sollen, Programmcode und Internetadressen erscheinen in

Festbreitenschrift

. Falls Sie eine digitale Version dieses Buchs auf einem Gerät mit bestehender Internetverbindung lesen, können Sie Links auch anklicken oder antippen, zum Beispiel diesen hier:

http://www.fuer-dummies.de

.

Wörter, die Sie eingeben sollen und die zusätzlich

kursiv

hervorgehoben sind, dienen als Platzhalter. Das heißt, Sie müssen sie jeweils mit passenden Wörtern ersetzen. Lautet die Anweisung beispielsweise: »Geben Sie

Ihren Namen

ein und bestätigen Sie mit «, so müssen Sie

Ihren Namen

durch Ihren tatsächlichen Namen ersetzen.

Für wichtige Begriffe nutzen wir die

Kursivschrift

. Meist gibt es auch eine kurze Definition oder einen Verweis auf Quellen mit weiteren Informationen.

Menübefehle werden in KAPITÄLCHEN gesetzt. Wenn Sie mehrere Menübefehle hintereinander anklicken sollen, werden diese durch einen senkrechten Strich verknüpft, etwa so: DATEI | NEUE DATEI. In diesem Fall müssten Sie im Menü erst auf DATEI und dann auf NEUE DATEI klicken.

Törichte Annahmen über den Leser

Eigentlich soll man seinen Mitmenschen ja nichts unterstellen. Wir tun dies aber trotzdem.

Wir nehmen nämlich an, dass Sie mit Ihrem Computer und Betriebssystem vertraut sind und diesbezüglich keine Hilfestellung benötigen. (In Kapitel 3 finden Sie allerdings Installationshinweise für Anaconda, und in Kapitel 4 wird erklärt, wie Sie die TensorFlow- und Keras-Frameworks installieren.) Wir möchten uns voll und ganz auf Deep Learning mit der Programmiersprache Python konzentrieren und gehen daher nicht auf plattformspezifische Fragen ein. Sie sollten also wissen, wie Sie Anwendungen installieren und aufrufen und wie Sie generell mit Ihrem gewählten Betriebssystem arbeiten.

Zu Python finden Sie bei Bedarf unzählige Kurse und Hilfeseiten im Web. Als Beispiel seien hier https://www.w3schools.com/python/ und https://www.tutorialspoint.com/python/ (beide auf Englisch) sowie https://www.python-kurs.eu/index.php (auf Deutsch) genannt.

Die offizielle Dokumentation der Python Software Foundation findet sich hier: https://www.python.org/doc/.

Dieses Buch ist auch kein Auffrischungskurs in Mathe. Es enthält zwar zahlreiche komplexe Formeln, aber primär geht es um das Lösen von Problemen mittels Deep Learning und Python, nicht um die Grundlagen der theoretischen Mathematik.

Zu guter Letzt nehmen wir an, dass Sie wissen, wie man Inhalte im Internet abruft. Das Buch bietet Verweise auf weiterführende Materialien, die natürlich nur dann nützlich sind, wenn Sie sie auch tatsächlich im Web finden.

Symbole, die in diesem Buch verwendet werden

Wichtige Hinweise oder zusätzliche Informationen in diesem Buch sind durch die folgenden Symbole am Seitenrand gekennzeichnet:

Tipps sparen Ihnen Zeit und unnötigen Arbeitsaufwand. Es handelt sich meist um Methoden oder Hilfsmittel, mit denen Sie Python optimal nutzen oder Aufgaben beim Deep Learning effizienter ausführen.

Wir möchten uns ungern wie strenge Eltern aufspielen und Ihnen missbilligend auf die Finger klopfen, aber die Ratschläge neben diesem Warnsymbol sollten Sie unbedingt befolgen! Sonst kann es sein, dass Ihr Programm nicht wie gewünscht funktioniert oder dass eigentlich narrensichere Algorithmen doch die falschen Ergebnisse liefern. Schlimmstenfalls gehen womöglich gar Ihre Daten verloren.

Dieses Symbol weist auf vertiefende Tipps oder Methoden hin. Manche dieser Informationshappen finden Sie vielleicht langweilig – oder aber sie liefern Ihnen den entscheidenden Hinweis, wie Sie eines Ihrer Programme zum Laufen bringen. Diese Abschnitte können Sie nach Belieben auch überspringen.

Den Text neben diesem Symbol sollten Sie unbedingt lesen und verinnerlichen. Hier werden wesentliche Prozesse oder Zusammenhänge erläutert, die Sie zur Arbeit mit Python oder zur erfolgreichen Umsetzung von Deep Learning benötigen.

Weitere Ressourcen

Bestimmt haben Sie keine Lust, den Programmcode aus unserem Buch mühsam abzutippen und all die neuronalen Netze manuell zu rekonstruieren. Viel lieber würden Sie wahrscheinlich praktische Aufgaben lösen und testen, was mit Python, maschinellen Lernverfahren und Deep Learning tatsächlich alles möglich ist. Da haben wir gute Nachrichten: Alle Beispiele aus den verschiedenen Kapiteln stehen als Download bereit. Sie finden sie unter http://wiley-vch.de/ISBN9783527716876.

Wie es weitergeht

Nun kann es losgehen! Wenn Sie sich bisher noch nie mit Python und Deep Learning befasst haben, beginnen Sie am besten mit Kapitel 1. Lesen Sie sich das Buch in Ihrem eigenen Rhythmus durch, sodass Sie alle Informationen gut verarbeiten können.

Sollten Sie es auch als Neuling ganz eilig haben und sofort Ihre ersten Deep-Learning-Programme mit Python schreiben wollen, können Sie direkt zu Kapitel 3 springen. Beschweren Sie sich aber nicht, wenn Ihnen einige Themen später etwas verwirrend vorkommen. Falls Sie Anaconda (die in diesem Buch genutzte Programmierumgebung) bereits installiert und eine aktuelle Python-Distribution zum Laufen gebracht haben, brauchen Sie Kapitel 3 nur zu überfliegen.

Die in diesem Buch erläuterten Aufgabenstellungen beim Deep Learning werden mit TensorFlow und Keras gelöst. Selbst als fortgeschrittener Anwender sollten Sie Kapitel 4 unbedingt lesen, um Ihr System korrekt zu konfigurieren. Falls Sie der Konfigurationsanleitung in diesem Buch nicht folgen, gibt es später beim Ausführen der Codebeispiele höchstwahrscheinlich Probleme und Fehler.

Teil I

Einführung in Deep Learning

IN DIESEM TEIL

Den Einfluss von Deep Learning auf unseren Alltag erkennenDie Beziehung zwischen Deep Learning und maschinellem Lernen verstehenEine Python-Distribution installieren und verwendenDeep Learning durch Frameworks unterstützen

Kapitel 1

Einführung in Deep Learning

IN DIESEM KAPITEL

Die Grundprinzipien von Deep Learning verstehenDeep-Learning-Lösungen entwickelnDie Grenzen von Deep Learning erkennen

Deep Learning – davon haben Sie sicher schon mal gehört, oder? Der Begriff taucht ja heutzutage überall auf und scheint alles Mögliche zu bezeichnen. Tatsächlich handelt es sich bei Deep Learning (DL) um eine Unterkategorie des Maschinellen Lernens (ML), was wiederum ein Teilgebiet der Künstlichen Intelligenz (KI) darstellt. In diesem Kapitel erfahren Sie, was genau wir unter Deep Learning verstehen und welche Rolle diese Form der Datenanalyse in unserem Alltag spielt.

Dabei ist zu beachten, dass es neben Deep Learning noch viele andere Ansätze in der KI gibt. Es lassen sich mit Deep Learning zwar unterschiedlichste Aufgaben lösen, aber eben nicht alle. Für manche Szenarien wäre dieser Ansatz gänzlich ungeeignet.

Dieses Kapitel erläutert zudem, warum Deep Learning nicht die einzige Methode zur Datenverarbeitung in Ihrem Werkzeugkasten sein sollte. Manchmal müssen Sie nämlich auch andere Techniken in Erwägung ziehen oder zumindest mit Deep Learning kombinieren, um für ein spezifisches Problem eine möglichst effiziente und elegante Lösung zu finden. Tun Sie das nicht, machen Sie sich Ihre Arbeit im Endeffekt unnötig schwerer.

Definition von Deep Learning

Zur Vermeidung von Missverständnissen müssen wir zunächst wichtige Begriffe klar definieren. Wie schon erwähnt, ist Deep Learning eine Form des maschinellen Lernens und dies wiederum ein Teilgebiet der KI (Abbildung 1.1). In den folgenden Abschnitten arbeiten wir uns daher Stück für Stück bis zum Kern der Sache vor, damit Sie Deep Learning künftig korrekt von anderen Verfahren abgrenzen können.

Abbildung 1.1: Deep Learning ist eine Unterkategorie des maschinellen Lernens und dies wiederum ein Teilgebiet der KI.

Künstliche Intelligenz als Oberbegriff

Was ist »künstliche Intelligenz«? Diese Frage könnte man damit beantworten, dass es sich um ein intelligentes System oder Wesen handelt, das künstlich erschaffen wurde. Aber was genau meinen wir eigentlich mit »intelligent«? Hier gehen die Definitionen weit auseinander. Wir können aber festhalten, dass Intelligenz bestimmte kognitive Funktionen und Fähigkeiten voraussetzt, nämlich:

Lernen:

Neue Informationen werden aufgenommen und verarbeitet.

Schlussfolgern:

Informationen werden auf verschiedene Weise ausgewertet.

Verstehen:

Die Bedeutung der ausgewerteten Informationen wird begriffen.

Überprüfen:

Die Gültigkeit der Informationen wird geprüft und mit konsistenten, belegbaren Quellen verglichen.

Vorausschauen:

Zusammenhänge zwischen geprüften Daten und anderen Daten werden vorhergesagt.

Beurteilen:

Spezifische Situationen werden gemäß den identifizierten Zusammenhängen analysiert.

Intelligenz beruht also auf bestimmten Denkprozessen, die ein Computersystem in einer Simulation recht gut nachahmen kann:

Es wird ein zu erreichendes Ziel festgelegt.

Alle bisher verfügbaren Daten zu diesem Ziel werden beurteilt.

Zusätzliche Daten, die beim Erreichen des Ziels helfen könnten, werden erfasst.

Die Daten werden so manipuliert und arrangiert, dass sie in ihrer Form mit den vorhandenen Daten übereinstimmen.

Die Beziehungen und Wahrheitswerte zwischen den vorhandenen und neuen Daten werden definiert.

Es wird geprüft, ob das Ziel mithilfe der aufbereiteten Daten erreicht wird.

Falls nicht, wird der Prozess an die neuen Daten und die sich ändernden Erfolgschancen angepasst.

Die Schritte 2 bis 7 werden so oft wiederholt, bis entweder das Ziel erreicht ist (das Ergebnis ist wahr) oder alle Möglichkeiten erfolglos ausprobiert wurden (das Ergebnis ist falsch).

Ein Computer hat nur sehr eingeschränkte Möglichkeiten, sich zu einem wahrlich intelligenten System zu entwickeln. Da er die Daten durch maschinelle Prozesse automatisch und auf rein mathematische Weise manipuliert und auswertet, kann von echtem »Begreifen« und »Verstehen« wohl keine Rede sein. Bisher sind Computer nicht in der Lage, die kognitiven Fähigkeiten, auf denen Intelligenz basiert, vollständig zu implementieren.

Die Entwickler von KI-Systemen wollen menschliche Intelligenz aber ohnehin nur bestmöglich nachahmen und nicht replizieren. Ein Computer hat keine Gedanken wie ein Mensch, sondern erweckt durch seine Arbeitsweise nur den Eindruck, er würde denken. All seine »Gedanken« sind eigentlich logische oder mathematische Berechnungen. Visuell-räumliche und körperlich-kinästhetische Intelligenz kann ein Computer bis zu einem gewissen Grad ganz gut nachahmen. Zwischenmenschliche und linguistische Intelligenz beherrscht er ebenfalls in akzeptablem Maße. Intrapersonale oder kreative Intelligenz ist einem Computer im Gegensatz zu uns Menschen jedoch fremd – er hat also kein Bewusstsein.

Die Rolle der KI

Wenngleich so manches KI-System das menschliche Denken simuliert, ist künstliche Intelligenz eben nur das: eine Simulation. Bei KI-Systemen laufen drei zusammenhängende Prozesse ab, nämlich das Festlegen eines zu erreichenden Ziels, das Verarbeiten relevanter Daten und das Erfassen weiterer Daten zum besseren Verständnis des Ziels. Algorithmen helfen dem KI-System dabei, sich dem Ziel anzunähern und das gewünschte Ergebnis zu erreichen. Das Ziel und die genutzten Methoden sind nicht zwingend mit menschlichen Zielen und Methoden zu vergleichen. Mit dieser Tatsache im Hinterkopf können wir KI-Systeme in vier Kategorien einteilen:

KI-Systeme, die sich wie Menschen verhalten: Wenn sich ein Computer wie ein Mensch verhält, besteht er zumeist auch den Turing-Test, bei dem ein Mensch schriftlich und ohne Sichtkontakt mit einem anderen Menschen und einem Computer kommuniziert und dabei nicht klar sagen kann, wer Mensch und wer Maschine ist (siehe https://de.wikipedia.org/wiki/Turing-Test). In Medienberichten geht es oft um diese Kategorie. Anwendungsbeispiele sind die Verarbeitung natürlicher Sprache, die Wissensrepräsentation, automatisierte Entscheidungsprozesse und das maschinelle Lernen (diese vier Fähigkeiten sind nötig, um den Test zu bestehen).

Im Gegensatz zum ursprünglichen Turing-Test umfasst eine neuere Variante (Total Turing Test) auch eine physische Komponente. Der Computer muss sich in seiner Umgebung zurechtfinden und mit Gegenständen oder Hindernissen umgehen können. Dies gelingt mittels maschinellem Sehen und Robotik. Moderne Verfahren konzentrieren sich auf das zu erreichende Ziel und versuchen nicht mehr, den Menschen einfach nur nachzuahmen. So gelang den Gebrüdern Wright schließlich auch ihr erster Flugversuch: Statt die Flugweise eines Vogels präzise zu imitieren, erforschten sie lieber die zugrunde liegenden Prinzipien der Aerodynamik. Das Fliegen ist also das Ziel. Aber die Methodik, mit der Vögel und Menschen dieses Ziel erreichen, unterscheidet sich erheblich.

KI-Systeme, die wie Menschen denken: Wenn ein Computer das menschliche Denken nachahmt, kann er auch Aufgaben erledigen, die ein Mensch durch intelligentes Handeln bewältigt (also nicht durch einstudierte Routine). Autofahren wäre ein Beispiel. Bevor ein Computerprogramm aber wie ein Mensch denken kann, müssen wir diese Denkprozesse modellieren. Dafür gibt es drei wesentliche Methoden:

Selbstwahrnehmung:

Die eigenen Gedankenabläufe werden beobachtet, und man dokumentiert, wie man die vorgegebenen Ziele erreicht.

Psychologische Tests:

Das Verhalten einer Person wird beobachtet und in eine Datenbank mit ähnlichen Verhaltensweisen anderer Personen unter vergleichbaren Umständen mit ähnlichen Zielen, Ressourcen und Umgebungsbedingungen aufgenommen.

Messung der Gehirnaktivität:

Die Gehirnaktivität lässt sich durch verschiedene Verfahren überwachen, zum Beispiel durch Computertomografie (CT), Positronenemissionstomografie (PET), Magnetresonanztomografie (MRT) und Magnetenzephalografie (MEG).

Nachdem Sie ein Modell erstellt haben, können Sie ein Programm schreiben, das dieses Modell simuliert. Da menschliche Denkprozesse enorm variieren und sich kaum in Programme transformieren lassen, sind die Ergebnisse jedoch rein experimenteller Natur. Diese KI-Kategorie findet sich oft in der Psychologie und in anderen Bereichen, bei denen menschliche Denkprozesse modelliert werden, um realistische Simulationen zu entwerfen.

KI-Systeme, die rational denken:

Wenn wir menschliches Denken auf standardisierte Weise analysieren, können wir Richtlinien zur Beschreibung typischer menschlicher Verhaltensweisen erstellen. Entspricht das Verhalten einer bestimmten Person diesen Richtlinien (mit gewissen zulässigen Abweichungen), so agiert diese Person rational. Ebenso können wir einem Computer anhand von Verhaltensrichtlinien sagen, wie er basierend auf verfügbaren Daten mit seiner Umgebung interagieren soll. Der Computer kennt also die grundlegende Vorgehensweise zum logischen Lösen eines Problems und passt sie dann an das spezifische Problem an.

KI-Systeme, die sich rational verhalten:

Durch Beobachten des Verhaltens von Menschen in bestimmten Situationen unter spezifischen Bedingungen können wir herausfinden, welche Methoden effizient und wirkungsvoll sind. Ein Computer, der sich rational verhält, arbeitet nach demselben Prinzip. Er nutzt bereits gelernte Verhaltensweisen zur Interaktion mit seiner Umgebung und nähert sich dann basierend auf Umgebungsfaktoren, vorherrschenden Bedingungen und verfügbaren Daten Schritt für Schritt dem Ziel.

Menschliches vs. rationales Handeln

Menschliches Handeln unterscheidet sich von rein rationalem Handeln. Eine Handlungsweise gilt als rational, wenn basierend auf vorhandenen Informationen und vorgegebenen Leistungskriterien immer die jeweils optimale Aktion durchgeführt wird. Anders ausgedrückt: Rationales Handeln hält sich streng an die Regeln und geht davon aus, dass diese Regeln korrekt sind. Bei menschlichem Handeln hingegen spielen auch Instinkt, Eingebung und andere Verhaltensmuster eine Rolle, die nicht unbedingt den Regeln entsprechen und womöglich gar die vorhandenen Daten außer Acht lassen. Beim Autofahren beispielsweise würde sich ein rational handelndes System immer an die Verkehrsregeln halten. Im Verkehr läuft allerdings nicht alles regelkonform. Andere Autofahrer machen Fehler oder legen die Verkehrsregeln großzügiger aus. Ein selbstfahrendes Auto muss dies beachten, um nicht komplett ausgebremst zu werden.

KI-Systeme kommen heute schon in zahlreichen Anwendungen zum Einsatz. Die Technik funktioniert dabei so gut, dass Sie sich ihrer wahrscheinlich gar nicht bewusst sind. Einige Beispiele seien hier stellvertretend genannt:

Erkennung und Verhinderung von Betrug:

Wenn Ihr Kreditkartenunternehmen Sie anruft und fragt, ob ein bestimmter Kauf tatsächlich von Ihnen autorisiert wurde, dann ist das keine Neugier, sondern eine Vorsichtsmaßnahme. Grund ist meist eine Warnung durch das KI-System des Kreditkartenunternehmens, das ein auffälliges Kaufmuster entdeckt hat.

Ressourcenplanung:

Viele Unternehmen und Einrichtungen müssen ihre Ressourcen effizient einteilen. Ein Krankenhaus muss zum Beispiel die richtige Station und ein geeignetes Zimmer für einen Patienten bestimmen, je nachdem, welche Behandlung nötig ist, welche Fachärzte schnell erreichbar sein müssen und wie lange der Patient voraussichtlich in der Klinik bleiben wird.

Komplexe Analysen:

Wenn bei einer Analyse zu viele Faktoren zu beachten sind, brauchen menschliche Experten Hilfe. So könnten beispielsweise ähnliche Symptome auf mehrere gesundheitliche Probleme hinweisen. Kann der Arzt oder Sanitäter mit entsprechender Unterstützung die Diagnose schneller stellen, rettet dies oft Leben.

Automatisierung:

Viele Formen der Automatisierung lassen sich mit künstlicher Intelligenz verbessern. Unerwartete Ereignisse wie ein Arbeitsobjekt an der falschen Stelle können schlimmstenfalls den kompletten Prozess zum Stillstand bringen. Mithilfe von KI lassen sich solche plötzlichen Zwischenfälle bewältigen und die Prozesse ungestört fortsetzen.

Kundenservice:

Service-Hotlines von Unternehmen werden immer häufiger durch Computer gesteuert. Fortschrittliche Automatisierungsprozesse können vorgegebenen Skripten folgen und den Großteil Ihrer Fragen beantworten. Ist der Tonfall und die Aussprache des KI-Systems gut genug, merken Sie vielleicht gar nicht, dass Sie es eigentlich mit einem Computer zu tun haben.

Sicherheitssysteme:

Viele Sicherheitssysteme in Fahrzeugen sind heute auf KI angewiesen, um im Notfall die Kontrolle übernehmen zu können. Wenn ein Auto ins Schleudern gerät, erfassen automatische Bremssysteme diverse Daten (Fahrtrichtung, Drehzahl der Räder und so weiter), um das Fahrzeug sicher zum Stehen zu bringen.

Effizienzverbesserung für Maschinen:

Damit Maschinen effizienter arbeiten und keine Ressourcen vergeuden, werden mittels KI die optimale Arbeitsgeschwindigkeit und -leistung sichergestellt. Jedes Quäntchen Energie wird präzise genutzt, um die gewünschten Prozesse durchzuführen.

Maschinelles Lernen als Teil der KI

Maschinelles Lernen ist eines von mehreren Teilgebieten der KI und hat zum Ziel, menschliches Lernen so gut zu simulieren, dass sich das System selbstständig an ungewisse oder unerwartete Bedingungen anpassen kann. Zu diesem Zweck werden mithilfe von Algorithmen riesige Datenmengen analysiert.

Derzeit sind maschinelle Lernverfahren noch nicht so ausgereift, dass sich damit auch nur annähernd die Art von KI-System entwickeln ließe, die Sie aus Filmen kennen. Eine Maschine kann nicht so intuitiv lernen wie ein Mensch, sondern lediglich bestimmte Lernmethoden in begrenztem Umfang imitieren. Selbst die besten Algorithmen können weder denken noch fühlen. Sie haben kein Bewusstsein und können keinen freien Willen ausüben. Durch diese Einschränkungen sind viele Aufgaben, die uns Menschen sehr leicht fallen, für Maschinen äußerst schwierig.

Eine echte Stärke von ML-Systemen sind hingegen prädiktive Datenanalysen in einem Tempo, mit dem wir nicht mehr mithalten können. Die ethische und moralische Auswertung der Analyseergebnisse obliegt jedoch weiterhin uns Menschen. Unterm Strich sorgt diese Kooperation zwischen Mensch und Maschine für deutlich effizientere Abläufe.

Die teils schwammige Unterscheidung zwischen Lernen und Intelligenz ergibt sich aus der Fehlannahme, dass eine Maschine, die ihre Aufgabe nach und nach besser erledigt (durch Lernen), ein Bewusstsein entwickelt haben muss (Intelligenz). Dafür gibt es aber keine Beweise. Ebenso unsinnig ist die Annahme, dass Computer absichtlich Fehler erzeugen, um Benutzer zu verärgern. Ein Computer hat keine Gefühle und verarbeitet schlicht die erhaltenen Eingaben, so wie es das jeweilige Programm vorschreibt. Von echter KI können wir erst dann sprechen, wenn es Computern gelingt, drei wichtige Aspekte unserer natürlichen Welt nachzuahmen:

Genetik: langsame Lernprozesse von einer Generation zur nächsten.Unterricht: schnelle Lernprozesse dank organisierter Quellen.Erkundung: spontanes Lernen durch Medien und Interaktionen mit anderen.

Damit Sie Ihre Ziele bei der Anwendung maschineller Lernverfahren nicht zu hoch stecken, beachten Sie stets die vorgenannten Einschränkungen und zügeln Sie Ihre Erwartungen. Sie werden schnell erkennen, dass sich das maschinelle Lernen trotzdem vielseitig einsetzen lässt, sogar in Bereichen, in denen man eigentlich keine KI vermuten würde. Auch hier wieder einige Beispiele:

Zugriffssteuerung:

In vielen Fällen besteht die Zugriffssteuerung aus einer simplen Ja/Nein-Entscheidung. Die Smartcard eines Mitarbeiters gewährt den Zugang zu einem Raum auf ähnliche Weise, wie dies Schlüssel schon seit Jahrhunderten tun. Bei manchen Schlössern lassen sich zwar auch Zeitfenster festlegen, in denen der Zugang gewährt wird, aber generell sind die Möglichkeiten einer solch groben Zugriffssteuerung doch begrenzt. Mithilfe von maschinellem Lernen kann man Mitarbeitern den Zugang basierend auf ihren Rollen und Anforderungen gewähren oder verweigern. So könnte ein Schulungsraum beispielsweise Mitarbeitern vorbehalten bleiben, deren Funktion im Unternehmen tatsächlich eine Schulung erfordert.

Tierschutz:

Obwohl unsere Ozeane riesig sind und eigentlich allen Schiffen und Tieren genug Platz bieten, kommt es regelmäßig zu Zusammenstößen. Ein Lernalgorithmus könnte die Geräusche und Merkmale sowohl der Tiere als auch der Schiffe erlernen und so den Schiffen helfen, Tiere und potenzielle Kollisionen zu vermeiden. (Die Schiffe würden mit Unterwassermikrofonen die Geräusche der Tiere über weite Entfernungen hinweg verfolgen und zur Ortung nutzen.)

Vorhersage von Wartezeiten:

Niemand verbringt gern unnötig Zeit im Wartezimmer. Erst recht nicht, wenn die Dauer unklar ist. Durch maschinelles Lernen kann eine Anwendung anhand von Daten zum verfügbaren Personal, zur Auslastung und zum erforderlichen Aufwand die voraussichtlichen Wartezeiten zuverlässig berechnen.

Deep Learning als Form des maschinellen Lernens

Wie erwähnt, ist Deep Learning eine Unterkategorie des maschinellen Lernens. Auch DL-Systeme werten riesige Datensätze aus, um daraus etwas Neues zu lernen. (In manchen Fällen genügen auch sehr kleine Datensätze zum Lernen.) Deep Learning zeichnet sich jedoch durch besonders intensive Analysen und eine stärkere Automatisierung aus. Die Unterschiede und Gemeinsamkeiten zwischen Deep Learning und anderen Formen des maschinellen Lernens können wir wie folgt zusammenfassen:

Grundsätzlich verschiedene Paradigmen:

Maschinelles Lernen umfasst eine Reihe von Verfahren, mit deren Hilfe ein Computer aus Daten lernt und das Gelernte zumeist in Form einer Vorhersage als Antwort auf eine Problemstellung ausgibt. Normalerweise kommen dabei verschiedene Techniken zum Einsatz: statistische Analysen, die Suche nach Analogien in Daten, die Anwendung von Logik und die Verwendung von Symbolen. Im Gegensatz dazu greift Deep Learning auf eine einzige Technik zurück: das Nachahmen der Funktionsweise des menschlichen Gehirns. Die Datenverarbeitung erfolgt durch Recheneinheiten, sogenannte

Neuronen

, die in

Schichten

angeordnet sind. Das Gesamtkonstrukt wird als

neuronales Netz

bezeichnet.

Flexible Architekturen:

Maschinelle Lernsysteme bieten diverse Regler (

Hyperparameter

), mit denen Sie den Algorithmus und somit das Lernen aus den Daten optimieren können. Dies gilt ebenso für Deep Learning. Neben üblichen Hyperparametern wie etwa der Lernrate lassen sich hier auch die einzelnen Neuronenschichten konfigurieren. Je nach neuronalem Netz wird die Anzahl an Schichten unter Umständen sehr groß, und es entstehen einzigartige Netze für sehr spezielle Lernaufgaben – von der Bilderkennung bis hin zur Verarbeitung von Sprachbefehlen. Nun verstehen Sie sicher, was das Wörtchen »deep« hier meint: Die zur Datenanalyse genutzten Neuronen sind in so zahlreichen Schichten angeordnet, dass sich insgesamt eine Architektur ergibt, in die man sehr »tief« eintauchen kann.

Autonom definierte Merkmale:

Viele Verfahren des maschinellen Lernens erfordern menschliches Eingreifen. Damit die Daten korrekt ausgewertet werden, lassen ML-Profis ihr eigenes Wissen in die Algorithmen einfließen. Soll beispielsweise ein ML-System den Wert eines Hauses anhand der Raumgrößen bestimmen, müssen Sie ihm vorab beibringen, wie die Flächen der einzelnen Zimmer zu berechnen sind. Das Bereitstellen der nötigen Informationen für den Algorithmus wird als Merkmalserzeugung

bezeichnet und kann viel Zeit in Anspruch nehmen. Beim Deep Learning werden die geeigneten Merkmale nicht durch Menschen, sondern durch die Schichten in den neuronalen Netzen automatisch erzeugt. Aus diesem Grund ist Deep Learning anderen Verfahren des maschinellen Lernens bei gewissen komplexen Aufgaben klar überlegen. DL-Systeme können zum Beispiel Sprache und Bilder besser erkennen, Textinhalte auswerten oder gar den menschlichen Champion im Spiel Go besiegen.

Auch ein DL-System besitzt kein Bewusstsein und kann Zusammenhänge nicht so verstehen wie wir Menschen. Es nutzt lediglich eine Art Feedbackschleife und automatisierte Berechnungen, um die Ergebnisse schneller bereitzustellen, als dies ein Mensch durch manuelles Justieren von Parametern je könnte.

Die Vorgänge in den lernenden Schichten eines DL-Netzes sind keineswegs unzugänglich oder verborgen, wie Ihnen dies so mancher Experte einreden will. Fast alles, was ein Computer erzeugt, kann auch von Menschen geprüft werden, wenngleich manchmal nur mit viel Mühe. Die Datenschutz-Grundverordnung (DSGVO) (https://ec.europa.eu/commission/priorities/justice-and-fundamental-rights/data-protection/2018-reform-eu-data-protection-rules_de) fordert sogar die Durchführung solcher Prüfungen. (Details zu den Folgen der DSGVO für die KI-Branche bieten folgende Artikel: https://www.heise.de/newsticker/meldung/DSGVO-und-KI-Unvertraeglichkeiten-beim-Datenschutz-4049785.html und https://www.pcmag.com/commentary/361258/how-gdpr-will-impact-the-ai-industry.)

Bedenken Sie zudem stets die Grenzen des autonomen Lernens. Deep Learning führt nicht immer zu einem zuverlässigen oder korrekten Ergebnis. Im ungünstigen Fall könnten Sie sogar den Ruf Ihres Unternehmens aufs Spiel setzen. Man erinnere sich nur an den Fauxpas, der Microsoft mit seinem »rassistischen Chatbot« passierte (https://www.zeit.de/digital/internet/2016-03/microsoft-tay-chatbot-twitter-rassistisch). Selbst wenn der Programmcode keine Fehler erzeugt, könnte dies immer noch durch die genutzte Hardware geschehen (https://www.focus.de/digital/internet/eine-totale-verletzung-der-privatsphaere-amazon-alexa-schickt-unbemerkt-gespraechsaufzeichnung-an-fremde-person_id_8983071.html). Wenn Sie diese Stolpersteine beachten, eröffnet Ihnen Deep Learning beeindruckende neue Möglichkeiten (Beispiele unter https://medium.com/@vratulmittal/top-15-deep-learning-applications-that-will-rule-the-world-in-2018-and-beyond-7c6130c43b01 und https://machine-rockstars.com/2017/5-coole-anwendungen-fur-deep-learning-projekte-ideen-beispiele/).

Deep Learning in der Praxis

Ob es Ihnen bewusst ist oder nicht: Deep Learning ist fester Bestandteil unseres Alltags. Zum Beispiel besitzen heute viele Fahrzeuge eine Sprachsteuerung. Diese kann zwar schon von sich aus diverse Aufgaben erledigen, aber je mehr Sie mit ihr reden, desto besser funktioniert sie. Das Programm lernt Ihre Sprachmuster und persönlichen Vorlieben. Die nächsten Abschnitte erklären genauer, wie Deep Learning in der Praxis funktioniert.

Der Prozess des Lernens

Menschen verlassen sich beim Lernen nicht nur auf Daten, sondern auch auf ihre Intuition und ihr Gefühl dafür, welche Ideen sich in die Tat umsetzen lassen. Dieses angeborene Wissen beruht zum Teil auf Instinkten, die über Generationen hinweg vererbt werden. Ein Computer kann so etwas nicht. Auch beim Umgang mit erhaltenen Informationen unterscheidet er sich vom Menschen und nutzt zum Lernen eine Datenbank bestehend aus einem neuronalen Netz mit integrierten Gewichtungen und Verzerrungen. Das neuronale Netz verarbeitet die Daten – mit der menschlichen Informationsverarbeitung hat dieser Vorgang nichts gemeinsam.

Aufgabenbewältigung mit Deep Learning

Menschen und Computer bewältigen unterschiedliche Aufgaben unterschiedlich gut. Menschen können besser Schlussfolgerungen herleiten, ethische Lösungen sorgfältig durchdenken und emotionale Faktoren einbeziehen. Hauptaufgabe eines Computers ist es, Unmengen von Daten möglichst schnell zu verarbeiten. Deep Learning kommt darum in Szenarien zum Einsatz, in denen bestimmte Muster in riesigen Datenmengen aufgespürt werden sollen. Ein solches Problem lässt sich nicht durch Intuition oder genaues Hinschauen lösen. Unter http://www.yaronhadad.com/deep-learning-most-amazing-applications/ finden Sie rund dreißig Beispiele, wie Deep Learning derzeit genutzt wird. Bei quasi jedem Beispiel führt der Weg zur Lösung des Problems über die schnelle Verarbeitung einer großen Datenmenge, die Suche nach Mustern und das Herleiten des gewünschten Ergebnisses mithilfe der erkannten Muster.

Deep Learning als Bestandteil größerer Anwendungen

Deep Learning kann nicht nur als eigenständige Methode genutzt werden, so wie in diesem Buch, sondern auch als Bestandteil einer viel größeren Anwendung und in Kombination mit anderen Verfahren. Häufig wird Deep Learning mit Expertensystemen kombiniert. (Eine kurze Erläuterung dieser Systeme und ihrer Beziehung zur KI finden Sie unter https://innovationsblog.dzbank.de/2017/10/18/warum-expertensysteme-nicht-als-teilgebiet-von-kuenstlicher-intelligenz-wahrgenommen-werden/.) Echte Praxisanwendungen bestehen nicht nur aus Zahlenspielen, sondern müssen mit unterschiedlichen Datenquellen umgehen können. Eine Kamera, die Bild- und Tondaten erfasst, braucht zur Auswertung sicher eine andere DL-Lösung als ein Temperatursensor oder Bewegungsmelder, der einfache Zahlenwerte oder aufzubereitende analoge Daten ausgibt. In der Praxis erwarten uns uneinheitliche Systeme und komplexe Probleme, denen wir mit einem umfangreichen Arsenal an Lösungsansätzen begegnen müssen.

Programmierumgebung für Deep Learning

Um eigene DL-Anwendungen zu erstellen, müssen Sie sich nicht zwingend irgendeine exotische Programmiersprache aneignen. Zwar hätten Sie mit einer geeigneten Sprache mehr Flexibilität bei der Anwendungsentwicklung, aber mit Produkten wie Deep Learning Studio können Sie DL-Lösungen auch komplett ohne Programmieraufwand entwickeln. (Eine kurze Videoeinführung gibt es unter https://www.youtube.com/watch?v=SU3EoKhHmx0 und einige Tipps auf Englisch unter https://towardsdatascience.com/is-deep-learning-without-programming-possible-be1312df9b4a.) In derartigen Softwarelösungen beschreiben Sie Ihre gesuchten Ergebnisse mithilfe von grafischen Modellen. Bei bekannten Problemstellungen kommen Sie auf diese Weise schon recht weit. Bei komplizierteren oder neuen Aufgaben stoßen die Programme allerdings schnell an ihre Grenzen.

Cloud-Lösungen für Deep Learning, wie die von Amazon Web Services (https://aws.amazon.com/de/deep-learning/), sorgen ebenfalls für mehr Flexibilität. Meist vereinfacht sich dadurch auch die Entwicklungsumgebung, da diese Lösungen so viel oder so wenig Funktionalität bieten, wie Sie wünschen. AWS beispielsweise unterstützt diverse Arten der serverlosen Datenverarbeitung (https://aws.amazon.com/de/serverless/), bei der Sie sich um die Infrastruktur keine Gedanken mehr machen müssen. Diese Lösungen belasten allerdings Ihren Geldbeutel. Und obwohl sie flexibler sind als vorgefertigte Systeme, können auch sie mit der Flexibilität einer echten Entwicklungsumgebung nicht mithalten.

Produkte wie MATLAB (https://de.mathworks.com/help/deeplearning/ug/deep-learning-in-matlab.html), dessen Repertoire ein DL-Toolkit beinhaltet, konzentrieren sich stärker auf die zu entwickelnden Algorithmen und können ebenfalls für Deep Learning genutzt werden. Auch hier profitieren Sie aber von der vollen Funktionalität nur, wenn Sie zumindest das Schreiben geeigneter Skripte beherrschen. Zudem arbeiten einige dieser Umgebungen nicht besonders schnell – Ihre gesuchten Ergebnisse lassen unter Umständen etwas auf sich warten.

Wenn Sie sich ernsthaft mit Deep Learning beschäftigen möchten, kommen Sie um das Programmieren nicht herum. Leider werden im Web bei Rezensionen die KI, maschinelles Lernen und Deep Learning oft in einen Topf geworfen, obwohl sich die Anforderungen an die Programmiersprache jeweils unterscheiden. Eine gute DL-Lösung erfordert Multiprocessing, vorzugsweise durch einen Grafikprozessor (GPU) mit vielen Kernen. Ihre gewählte Programmiersprache muss den Grafikprozessor mit kompatiblen Bibliotheken oder Paketen unterstützen. Sie sollten also bei der Auswahl einer Sprache genau überlegen, ob sie wirklich all Ihre Anforderungen erfüllt. Beliebte Sprachen für Deep Learning sind Python, R, MATLAB (die Skriptsprache, nicht das Produkt) und Octave (siehe auch https://www.datasciencecentral.com/profiles/blogs/which-programming-language-is-considered-to-be-best-for-machine).

Wenn Sie sich für eine Programmiersprache entscheiden – sei es Python oder R oder eine der vielen Alternativen (siehe https://www.geeksforgeeks.org/top-5-best-programming-languages-for-artificial-intelligence-field/) –, beachten Sie insbesondere die folgenden Aspekte:

Lernkurve:

Welche Sprache Sie leicht oder schwer finden, hängt von Ihren Erfahrungen ab. Haben Sie schon einige Jahre programmiert, fällt Ihnen Python sicher leicht. Sind Sie mit der funktionalen Programmierung vertraut, käme R infrage. MATLAB oder Octave eignen sich für Mathematiker und Ingenieure.

Geschwindigkeit:

DL-Lösungen verschlingen viel Rechenleistung. Da es sich bei R um eine Sprache für statistische Aufgaben handelt, wird oft behauptet, dass R statistische Berechnungen besser unterstützt und somit schnellere Ergebnisse liefert. Python kompensiert dies aber durch seine Unterstützung für parallele Programmierung – vorausgesetzt, Sie besitzen die nötige Hardware.

Community:

Gibt es einen großen und aktiven Benutzerkreis, finden Sie leichter Hilfe bei der Definition von Lösungen oder bei der Suche nach vorgefertigten Algorithmen. Python bietet hervorragende Unterstützung durch die Community – bei einer Lösung wie Octave sieht es nicht ganz so gut aus.

Kosten:

Die Kosten hängen von Ihrer gewählten Sprache und Ausführungsumgebung ab. MATLAB beispielsweise ist ein proprietäres Produkt, das Sie kaufen müssten. Andere Sprachen sind zwar an sich kostenlos, haben aber unter Umständen versteckte Kosten. Möchten Sie Ihren Code zum Beispiel in der Cloud ausführen, könnten dafür Gebühren anfallen.

Unterstützung von Frameworks:

Frameworks erleichtern Ihnen die Arbeit mit Ihrer Programmiersprache, sollten aber mit allen anderen Komponenten Ihrer Lösung harmonieren. Die zwei beliebtesten Frameworks sind TensorFlow und PyTorch. Nur Python unterstützt beide Frameworks und bietet hier die höchste Flexibilität. MATLAB verwendet Caffe, und R nutzt TensorFlow.

Einsatzbereitschaft:

Die gewählte Programmiersprache muss natürlich die Art von Ausgaben unterstützen, die Sie für Ihr Projekt benötigen. Als Allzwecksprache glänzt Python in dieser Hinsicht. Andere Sprachen mit spezifischeren Ausführungsumgebungen könnten sich jedoch bei manchen Projekten als hilfreich erweisen und sollten ebenfalls erwogen werden.

Deep Learning: Hype vs. Realität

Deep Learning wird leider allzu oft als übermächtige Wunderwaffe verstanden, die überall zum Einsatz kommt und jedes Problem löst. In gewissem Sinne ist Deep Learning ein Opfer seiner eigenen Medienkampagne. Die folgenden Abschnitte sollen Ihnen helfen, Deep Learning realistischer zu betrachten.

Ihre ersten Schritte

Die Entwicklung eigener DL-Lösungen ist keine Angelegenheit, die Sie mal eben schnell nebenbei erledigen können. Die Infografik zu Deep Learning mit Python unter https://www.analyticsvidhya.com/blog/2018/08/infographic-complete-deep-learning-path/