E-Book, Deutsch, 496 Seiten
Reihe: Rheinwerk Computing
Deru / Ndiaye Deep Learning mit TensorFlow, Keras und TensorFlow.js
2. Auflage 2020
ISBN: 978-3-8362-7427-2
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
E-Book, Deutsch, 496 Seiten
Reihe: Rheinwerk Computing
ISBN: 978-3-8362-7427-2
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
Deep Learning - eine Schlüsseltechnologie der Künstlichen Intelligenz. Neuronale Netze bringen Höchstleistung, wenn sie zu Deep-Learning-Modellen verknüpft werden - vorausgesetzt, Sie machen es richtig. Große und gute Trainingsdaten beschaffen, geschickt implementieren ... lernen Sie hier, wie Sie die mächtige Technologie wirklich in Ihren Dienst nehmen. Unsere Autoren zeigen Ihnen sowohl die Arbeit mit Python und Keras als auch für den Browser mit JavaScript, HTML5 und TensorFlow.js.
Aus dem Inhalt:
Deep-Learning-Grundkonzepte
Installation der Frameworks
Vorgefertigte Modelle verwenden
Datenanalyse und -vorbereitung
Convolutional Networks, LSTM, RNN, Pooling ...
Aufgaben eines Modells richtig festlegen
Eigene Modelle trainieren
Overfitting und Underfitting vermeiden
Ergebnisse visualisieren
Autoren/Hrsg.
Weitere Infos & Material
1. Einführung ... 15
1.1 ... Über dieses Buch ... 15
1.2 ... Ein Einblick in Deep Learning ... 17
1.3 ... Deep Learning im Alltag und in der Zukunft ... 19
2. Machine Learning und Deep Learning ... 33
2.1 ... Einführung ... 33
2.2 ... Lernansätze beim Machine Learning ... 38
2.3 ... Deep-Learning-Frameworks ... 44
2.4 ... Datenbeschaffung ... 46
2.5 ... Datasets ... 48
2.6 ... Zusammenfassung ... 65
3. Neuronale Netze ... 67
3.1 ... Aufbau und Prinzip ... 67
3.2 ... Lernprozess neuronaler Netze ... 73
3.3 ... Datenaufbereitung ... 81
3.4 ... Ein einfaches neuronales Netz ... 82
3.5 ... Netzarchitekturen ... 91
3.6 ... Bekannte Netze ... 98
3.7 ... Fallstricke beim Deep Learning ... 101
3.8 ... Zusammenfassung ... 106
4. Python und Machine-Learning-Bibliotheken ... 107
4.1 ... Installation von Python 3.7 mit Anaconda ... 108
4.2 ... Alternative Installationen von Python 3.7 ... 113
4.3 ... Programmierumgebungen ... 116
4.4 ... Jupyter Notebook ... 121
4.5 ... Python-Bibliotheken für das Machine Learning ... 126
4.6 ... Nützliche Routinen mit NumPy und Scikit-learn für ML ... 129
4.7 ... Ein zweites Machine-Learning-Beispiel ... 133
4.8 ... Zusammenfassung ... 137
5. TensorFlow: Installation und Grundlagen ... 139
5.1 ... Einführung ... 139
5.2 ... Installation ... 143
5.3 ... Google Colab: TensorFlow ohne Installation benutzen ... 153
5.4 ... Tensoren ... 154
5.5 ... Graphen ... 160
5.6 ... Benutzung der CPU und GPU ... 171
5.7 ... Erstes Beispiel: Eine lineare Regression ... 174
5.8 ... Von TensorFlow 1.x zu TensorFlow 2 ... 180
5.9 ... Zusammenfassung ... 183
6. Keras ... 185
6.1 ... Von Keras zu tf.keras ... 185
6.2 ... Erster Kontakt ... 189
6.3 ... Modelle trainieren ... 191
6.4 ... Modelle evaluieren ... 193
6.5 ... Modelle laden und exportieren ... 194
6.6 ... Keras Applications ... 197
6.7 ... Keras Callbacks ... 198
6.8 ... Projekt 1: Iris-Klassifikation mit Keras ... 200
6.9 ... Projekt 2: CNNs mit Fashion-MNIST ... 204
6.10 ... Projekt 3: Ein einfaches CNN mit dem CIFAR-10-Dataset ... 213
6.11 ... Projekt 4: Aktienkursvorhersage mit RNNs und LSTMs ... 220
6.12 ... Zusammenfassung ... 226
7. Netze und Metriken visualisieren ... 227
7.1 ... TensorBoard ... 228
7.2 ... TensorBoard.dev ... 246
7.3 ... Debugging mit TensorBoard (nur TF 1.x) ... 248
7.4 ... Der TensorBoard-Debugger mit Keras (nur TF 1.x) ... 257
7.5 ... Visualisierung mit Keras ... 259
7.6 ... Visualisierung von CNNs mit Quiver (nur mit Keras.io) ... 267
7.7 ... Interaktive Visualisierung mit Keras-Callbacks, Node.js und HTML5 selbst implementieren ... 271
7.8 ... Weitere Visualisierungsmöglichkeiten ... 281
8. TensorFlow.js ... 285
8.1 ... Anwendungsfälle ... 285
8.2 ... Installation von BrowserSync ... 288
8.3 ... Installation von TensorFlow.js ... 290
8.4 ... Konzepte ... 293
8.5 ... Ihr erstes Modell mit TensorFlow.js: Eine quadratische Regression ... 304
8.6 ... Laden und Speichern von Modellen ... 318
8.7 ... PoseNet-Modell mit TensorFlow.js ... 327
8.8 ... Eine intelligente Smart-Home-Komponente mit TensorFlow.js und Node.js ... 343
8.9 ... TensorFlow.js noch einfacher: ml5.js ... 356
9. Praxisbeispiele ... 361
9.1 ... Projekt 1: Verkehrszeichenerkennung mit Keras ... 363
9.2 ... Projekt 2: Intelligente Spurerkennung mit Keras und OpenCV ... 379
9.3 ... Projekt 3: Erkennung der Umgebung mit YOLO und TensorFlow.js bzw. ml5.js ... 392
9.4 ... Projekt 4: Haus oder Katze? Vorgefertigte Modelle mit Keras benutzen -- VGG-19 ... 403
9.5 ... Projekt 5: Buchstaben- und Ziffernerkennung mit dem Chars74K-Dataset und Datenaugmentierung ... 410
9.6 ... Projekt 6: Stimmungsanalyse mit Keras ... 418
9.7 ... Projekt 7: Sentiment-Analyse mit TensorFlow.js ... 425
9.8 ... Projekt 8: Benutzung von TensorFlow Hub ... 429
9.9 ... Projekt 9: Hyperparameter-Tuning mit TensorBoard ... 437
9.10 ... Projekt 10: CNN mit Fashion-MNIST und TensorFlow-Estimators (nur TF 1.x) ... 442
9.11 ... Allgemeine Tipps und Tricks ... 455
10. Ausblick ... 463
10.1 ... Deep Learning in der Cloud ... 463
10.2 ... Bildgenerierung mit Deep Learning ... 471
10.3 ... Musik mit Deep Learning ... 476
10.4 ... Videogenerierung mit Deep Learning ... 478
10.5 ... Deep Learning einfacher gemacht ... 480
11. Fazit ... 489
Index ... 492
1.3 Deep Learning im Alltag und in der Zukunft
In diesem Abschnitt werden zur Einführung in die Thematik einige Anwendungsbeispiele von Deep Learning präsentiert. Sie haben bestimmt irgendwann in Ihrem Alltag eines dieser Systeme benutzt – vielleicht auch, ohne es zu wissen! 1.3.1 Sprachverarbeitung
Die Spracherkennung und die natürlichsprachlichen Dialogsysteme haben in den letzten Jahren enorm von den Fortschritten des Deep Learning profitiert. Durch die Analyse massiver Datenmengen und annotierter Sprachaufnahmen ist es möglich, die Sprache des Benutzers besser zu verstehen (auch mit Dialekten) und semantisch zu verarbeiten, d. h., den Sinn des gesprochenen Satzes automatisch zu ermitteln. Denken Sie dabei an persönliche digitale Assistenten wie Apple Siri, Amazon Alexa (siehe Abbildung 1.3), Google Now, Cortana, aber auch an Hotline- und Chat-Systeme, die bei den Callcentern der Deutschen Telekom, der Lufthansa oder sogar von Zalando benutzt werden. Abbildung 1.3 Digitaler Assistent: »Amazon Echo Dot« mit der Sprachverarbeitungskomponente Alexa (Bildquelle: https://www.amazon.de/Echo-Dot-3-Gen-Intelligenter-Lautsprecher-mit-Alexa-Anthrazit-Stoff/dp/B07PHPXHQS/) Diese Systeme analysieren binnen einiger Millisekunden die Spracheingabe des Benutzers bzw. Anrufers und geben eine passende Antwort zurück. Abstrahiert man vom einfachen Frage-Antwort-Szenario à la »Wie wird morgen das Wetter?« oder »Gib mir Informationen zu meinem Termin!«, geht die aktuelle Entwicklung in Richtung Dialogsysteme, d. h., Systeme, die in der Lage sind, unter Berücksichtigung von Dialogkontext und -historie einen kompletten Dialog mit dem Benutzer zu führen. Diese Systeme können sogar Rückfragen stellen, wenn das Gesprochene nicht eindeutig genug war oder mehr Informationen vom Benutzer benötigt werden, um eine Anfrage vollständig zu beantworten. Google Duplex[ 4 ], ein neuer digitaler Assistent, wurde so weit trainiert, dass er selbstständig ein Telefonat mit einem Gesprächspartner führen kann, um z. B. Termine beim Friseur zu vereinbaren. Die Dialoge sind zwar noch auf die üblichen Aufgaben beschränkt, die Benutzer in ihrem Terminkalender eintragen (z. B. »Tisch beim Restaurant Locanda für 19 Uhr reservieren«), aber am anderen Ende der Telefonleitung merkt der Angerufene oftmals nicht, dass er einen Dialog mit einem KI-gestützten Dialogsystem führt! Durch Deep Learning können auch Emotionen von Menschen anhand ihrer Stimmen bzw. Äußerungen identifiziert und vom System bei der Interaktion mit dem Menschen berücksichtigt werden, etwa in Callcentern. 1.3.2 Automatische Sprachübersetzungen
Sprachübersetzung ist eine komplexe Aufgabe: Regeln müssen aufgesetzt werden, und Begriffe, Synonyme, Flexionen sowie Syntax müssen besonders gut analysiert werden. Traditionelle Sprachübersetzungssoftware benutzt Statistiken, Wörterbücher und Grammatiken und versucht, eine Abbildung von einer Sprache in die andere zu erzeugen. Bei Deep-Learning-basierten Sprachübersetzungen oder besser gesagt Neural Machine Translation werden neuronale Netze benutzt, um Texte oder Äußerungen in andere Sprachen zu übersetzen. Ein gutes Beispiel für die Benutzung von tiefen neuronalen Netzen für die Übersetzungsaufgaben zeigt uns die Kölner Firma DeepL (siehe Abbildung 1.4). Abbildung 1.4 DeepL benutzt neuronale Netze, um Übersetzungen genauer durchzuführen. (Bildquelle: https://www.deepl.com/press.html) Dank eines Supercomputers werden eine Million Wörter in weniger als einer Sekunde übersetzt, und zwar für 42 Sprachkombinationen. Angefangen hatte DeepL mit dem webbasierten Dienst Linguee[ 5 ], und zwar mit offenen Textquellen, die schon von Menschen in verschiedenste Sprachen übersetzt wurden, z. B. die offiziellen Webseiten bzw. Texte des Europäischen Parlaments.[ 6 ] Diese bildeten die Datengrundlage für das Lernen eines Übersetzungsmodells. 1.3.3 Visual Computing
Im Bereich Visual Computing (computergestütztes Sehen) sind mithilfe von Deep Learning enorme Fortschritte erzielt worden. Diese reichen von der Handschriftenerkennung über Erkennung von Objekten und Personen in Bildern bzw. Videos sowie deren Emotionen und Aktivitäten bis hin zu Echtzeit-Videoanalysen, die bei selbstfahrenden Autos zum Einsatz kommen und etwa bei der Fahndung nach polizeilich gesuchten Personen.[ 7 ] Online-Dienste, wie z. B. Amazon Recognition oder Microsoft Cognitive Services (siehe Abbildung 1.5), bieten sogar mehrere Out-of-the-Box-Modelle, die es ermöglichen, Objekte, Personen, Texte, Szenen und Aktivitäten in Bildern zu erkennen und anhand bestimmter Parameter auszuwerten. Abbildung 1.5 Bildanalyse mit »Microsoft Cognitive Services« (Bildquelle: https:// azure.microsoft.com/de-de/services/cognitive-services/computer-vision) Der Grafikkartenhersteller NVIDIA bietet ebenfalls für Entwickler in Form eines SDK (Software Development Kit) zahlreiche Bausteine, z. B. DeepStream, um Lösungen für Videoanalyse-Applikationen mit Deep Learning zu erstellen. Aber wieso interessiert sich ausgerechnet ein Grafikkartenhersteller für Deep Learning? Da die Vorverarbeitung und das Trainieren von Modellen auf Basis von Daten aus Pixelinformationen von Bildern und Videos sehr rechenintensiv sind, werden diese Operation nicht mehr direkt auf der CPU (Central Processing Unit) durchgeführt, sondern auf GPUs (Graphical Processing Units)[ 8 ]. GPUs sind im Gegensatz zu CPUs dafür konzipiert, schnell, effizient und parallel Matrix- und Vektoroperationen durchzuführen: Denken Sie an Videospiele und an die zahlreichen Operationen, die synchron ausgeführt werden müssen, damit eine 3D-Szene flüssig auf Ihrem Bildschirm angezeigt wird. Diese Fähigkeit der Grafikkarten, sehr schnell komplexe Daten und Operationen zu berechnen, wurde quasi für Deep-Learning-Anwendungen »missbraucht« (siehe Abbildung 1.6). Somit sind heute die Konzepte von GPU-basierten Systemen und Deep Learning nicht mehr voneinander zu trennen. Sie werden später in diesem Buch erfahren, wie Sie auch Ihre eigene Deep-Learning-Applikation mit GPU-Unterstützung implementieren können. Abbildung 1.6 Modularer Aufbau der DeepStream-SDK-Lösung zur Videoanalyse (Bildquelle: https://developer.nvidia.com/deepstream-sdk) Diskriminierungen Machine Learning und Deep Learning können natürlich diskriminierend sein. Für das Trainieren der Lernalgorithmen werden Daten eingesetzt, die von Menschen über einen Zeitraum von mehreren Jahren gesammelt oder erstellt wurden. Diese Daten sind eventuell verzerrt (engl. biased). Die Algorithmen können so Vorurteile reproduzieren, die diesen Daten inhärent sind. Diese Frage wird nicht in diesem Buch thematisiert. Mehr zu dieser Thematik finden Sie z. B. in: https://history.stanford.edu/news/ai-can-be-sexist-and-racist-%E2%80%94-it%E2%80%99s-time-make-it-fair https://www.zeit.de/digital/internet/2018-05/algorithmen-rassismus- diskriminierung-daten-vorurteile-alltagsrassismus/komplettansicht http://proceedings.mlr.press/v81/buolamwini18a/buolamwini18a.pdf 1.3.4 Autonomes Fahren
Einer der am heißesten diskutierten und medienwirksamsten Anwendungsbereiche für KI und Deep Learning ist wahrscheinlich das autonome Fahren. Systeme wie Autopilot des Autoherstellers Tesla, das selbstfahrende Auto Waymo von Google oder sogar das bescheidene Open-Source-Projekt comma.ai[ 9 ] zeigen, wie durch eine automatische Sensorfusion (z. B. von LIDAR oder der ODB-2-Schnittstelle) und Deep Learning ein Fahrzeug eigenständig und intelligent angesteuert werden kann (siehe Abbildung 1.7). Abbildung 1.7 Tesla Autopilot: Die einzelnen Bereiche und Gegenstände, die während der Fahrt von den Kameras des Fahrzeugs aufgenommen werden (Ampel, Verkehrsschild), werden klassifiziert und in Echtzeit gekennzeichnet. (Bildquelle: Tesla Werbevideo – https://www.tesla.com/de_DE/autopilot) Dieser Bereich profitiert sehr stark von den Entwicklungen im Deep...