22,99 €
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:
Seitenzahl: 452
Veröffentlichungsjahr: 2020
Deep Learning kompakt für Dummies
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 NetzeDamit 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
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.
Dieses Buch widme ich Donnie und Shannon Thompson, die für mich nicht nur zwei äußerst zuvorkommende Nachbarn, sondern wahre Freunde sind.
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.
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.
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.
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
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...
Cover
Inhaltsverzeichnis
Fangen Sie an zu lesen
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
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.
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.
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.
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.
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.
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
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ützenKapitel 1
IN DIESEM KAPITEL
Die Grundprinzipien von Deep Learning verstehenDeep-Learning-Lösungen entwickelnDie Grenzen von Deep Learning erkennenDeep 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.
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.
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.
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 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 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.
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/).
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.
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.
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 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.
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 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.
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/