Deep Learning mit Python und Keras - Das Praxis-Handbuch vom Entwickler der Keras-Bibliothek
von: François Chollet
mitp Verlags GmbH & Co. KG, 2018
ISBN: 9783958458390
Sprache: Deutsch
448 Seiten, Download: 24471 KB
Format: PDF, auch als Online-Lesen
Mehr zum Inhalt
Deep Learning mit Python und Keras - Das Praxis-Handbuch vom Entwickler der Keras-Bibliothek
Cover | 1 | ||
Titel | 3 | ||
Impressum | 4 | ||
Inhaltsverzeichnis | 5 | ||
Einleitung | 13 | ||
Über dieses Buch | 14 | ||
Wer sollte dieses Buch lesen? | 14 | ||
Überblick | 15 | ||
Erforderliche Hard- und Software | 16 | ||
Quellcode | 17 | ||
Das Forum zum Buch | 17 | ||
Über den Autor | 17 | ||
Über den Fachkorrektor | 17 | ||
Danksagungen | 18 | ||
Teil I: Grundlagen des Deep Learnings | 19 | ||
Kapitel 1: Was ist Deep Learning? | 21 | ||
1.1 Künstliche Intelligenz, Machine Learning und Deep Learning | 21 | ||
1.1.1 Künstliche Intelligenz | 22 | ||
1.1.2 Machine Learning | 22 | ||
1.1.3 Die Repräsentation anhand der Daten erlernen | 24 | ||
1.1.4 Das »Deep« in Deep Learning | 27 | ||
1.1.5 Deep Learning in drei Diagrammen erklärt | 29 | ||
1.1.6 Was Deep Learning heute schon leisten kann | 31 | ||
1.1.7 Schenken Sie dem kurzfristigen Hype keinen Glauben | 32 | ||
1.1.8 Das Versprechen der KI | 33 | ||
1.2 Vor Deep Learning: eine kurze Geschichte des Machine Learnings | 35 | ||
1.2.1 Probabilistische Modellierung | 35 | ||
1.2.2 Die ersten neuronalen Netze | 36 | ||
1.2.3 Kernel-Methoden | 36 | ||
1.2.4 Entscheidungsbäume, Random Forests und Gradient Boosting Machines | 38 | ||
1.2.5 Zurück zu neuronalen Netzen | 39 | ||
1.2.6 Das Besondere am Deep Learning | 40 | ||
1.2.7 Der Stand des modernen Machine-Learnings | 42 | ||
1.3 Warum Deep Learning? Und warum jetzt? | 42 | ||
1.3.1 Hardware | 43 | ||
1.3.2 Daten | 44 | ||
1.3.3 Algorithmen | 45 | ||
1.3.4 Eine neue Investitionswelle | 46 | ||
1.3.5 Die Demokratisierung des Deep Learnings | 47 | ||
1.3.6 Bleibt es so? | 47 | ||
Kapitel 2: Bevor es losgeht: die mathematischen Bausteine eines NNs | 49 | ||
2.1 Ein erster Blick auf ein NN | 49 | ||
2.2 Datenrepräsentationen | 54 | ||
2.2.1 Skalare (0-D-Tensoren) | 54 | ||
2.2.2 Vektoren (1-D-Tensoren) | 55 | ||
2.2.3 Matrizen (2-D-Tensoren) | 55 | ||
2.2.4 3-D-Tensoren und höherdimensionale Tensoren | 55 | ||
2.2.5 Die wichtigsten Attribute | 56 | ||
2.2.6 Bearbeiten von Tensoren mit Numpy | 58 | ||
2.2.7 Datenstapel | 58 | ||
2.2.8 Beispiele für Datentensoren aus der Praxis | 59 | ||
2.2.9 Vektordaten | 59 | ||
2.2.10 Zeitreihen oder sequenzielle Daten | 60 | ||
2.2.11 Bilddaten | 61 | ||
2.2.12 Videodaten | 62 | ||
2.3 Das Getriebe von NNs: Tensoroperationen | 62 | ||
2.3.1 Elementweise Operationen | 63 | ||
2.3.2 Broadcasting | 64 | ||
2.3.3 Tensorprodukt | 66 | ||
2.3.4 Tensoren umformen | 69 | ||
2.3.5 Geometrische Interpretation von Tensoroperationen | 70 | ||
2.3.6 Eine geometrische Interpretation des Deep Learnings | 72 | ||
2.4 Der Antrieb von NNs: gradientenbasierte Optimierung | 73 | ||
2.4.1 Was ist eine Ableitung? | 74 | ||
2.4.2 Ableitung einer Tensoroperation: der Gradient | 76 | ||
2.4.3 Stochastisches Gradientenabstiegsverfahren | 77 | ||
2.4.4 Ableitungen verketten: der Backpropagation-Algorithmus | 80 | ||
2.5 Zurück zum ersten Beispiel | 81 | ||
2.6 Zusammenfassung Kapitel 2 | 83 | ||
Kapitel 3: Einführung in neuronale Netze | 85 | ||
3.1 Aufbau eines NNs | 86 | ||
3.1.1 Layer: Bausteine des Deep Learnings | 86 | ||
3.1.2 Modelle: vernetzte Layer | 88 | ||
3.1.3 Verlustfunktionen und Optimierer: Konfiguration des Lernvorgangs | 88 | ||
3.2 Einführung in Keras | 89 | ||
3.2.1 Keras, TensorFlow, Theano und CNTK | 91 | ||
3.2.2 Mit Keras entwickeln: eine kurze Übersicht | 92 | ||
3.3 Einrichtung eines Deep-Learning-Rechners | 93 | ||
3.3.1 Die bevorzugte Methode zum Ausführen von Deep-Learning- Experimenten: Jupyter-Notebooks | 94 | ||
3.3.2 Keras zum Laufen bringen: zwei Möglichkeiten | 95 | ||
3.3.3 Pro und Kontra: Deep Learning in der Cloud ausführen | 95 | ||
3.3.4 Für Deep Learning geeignete GPUs | 96 | ||
3.4 Klassifizierung von Filmbewertungen: ein Beispiel für eine Binärklassifizierung | 96 | ||
3.4.1 Die IMDb-Datensammlung | 96 | ||
3.4.2 Daten vorbereiten | 98 | ||
3.4.3 NN erzeugen | 99 | ||
3.4.4 Validierung des Ansatzes | 103 | ||
3.4.5 Vorhersagen über neue Daten mit einem trainierten NN treffen | 107 | ||
3.4.6 Weitere Experimente | 108 | ||
3.4.7 Zusammenfassung | 108 | ||
3.5 Ein Beispiel für eine Mehrfachklassifizierung: Klassifizierung von Nachrichtenmeldungen | 109 | ||
3.5.1 Die Reuters-Datensammlung | 109 | ||
3.5.2 Daten vorbereiten | 110 | ||
3.5.3 NN erzeugen | 111 | ||
3.5.4 Validierung des Ansatzes | 113 | ||
3.5.5 Vorhersagen über neue Daten treffen | 116 | ||
3.5.6 Eine weitere Möglichkeit zur Handhabung der Klassenbezeichnungen und der Verlustfunktion | 116 | ||
3.5.7 Hinreichend große zwischenliegende Layer sind wichtig | 117 | ||
3.5.8 Weitere Experimente | 117 | ||
3.5.9 Zusammenfassung | 118 | ||
3.6 Ein Beispiel für eine Regression: Vorhersage der Kaufpreise von Häusern | 118 | ||
3.6.1 Die Boston-Housing-Price-Datensammlung | 119 | ||
3.6.2 Daten vorbereiten | 120 | ||
3.6.3 NN erzeugen | 120 | ||
3.6.4 K-fache Kreuzvalidierungen des Ansatzes | 121 | ||
3.6.5 Zusammenfassung | 127 | ||
3.7 Zusammenfassung Kapitel 3 | 127 | ||
Kapitel 4: Grundlagen des Machine Learnings | 129 | ||
4.1 Vier Teilgebiete des Machine Learnings | 129 | ||
4.1.1 Überwachtes Lernen | 129 | ||
4.1.2 Unüberwachtes Lernen | 130 | ||
4.1.3 Selbstüberwachtes Lernen | 130 | ||
4.1.4 Verstärkendes Lernen | 131 | ||
4.1.5 Glossar: Klassifizierung und Regression | 132 | ||
4.2 Bewertung von Machine-Learning-Modellen | 133 | ||
4.2.1 Trainings-, Validierungs- und Testmengen | 133 | ||
4.2.2 Worauf zu achten ist | 137 | ||
4.3 Datenvorverarbeitung, Merkmalserstellung und Erlernen von Merkmalen | 138 | ||
4.3.1 Datenvorverarbeitung für NNs | 138 | ||
4.3.2 Merkmalserstellung | 140 | ||
4.4 Überanpassung und Unteranpassung | 142 | ||
4.4.1 Das NN verkleinern | 143 | ||
4.4.2 Regularisierung der Gewichtungen | 147 | ||
4.4.3 Dropout-Regularisierung | 149 | ||
4.5 Ein allgemeiner Machine-Learning-Workflow | 151 | ||
4.5.1 Definition der Aufgabe und Zusammenstellen einer Datenmenge | 152 | ||
4.5.2 Auswahl eines Erfolgskriteriums | 153 | ||
4.5.3 Auswahl einer Bewertungsmethode | 153 | ||
4.5.4 Daten vorbereiten | 154 | ||
4.5.5 Entwicklung eines Modells, das besser funktioniert als zufälliges Raten | 154 | ||
4.5.6 Hochskalieren: Entwicklung eines Modells mit Überanpassung | 156 | ||
4.5.7 Regularisierung des Modells und Abstimmung der Hyperparameter | 156 | ||
4.6 Zusammenfassung Kapitel 4 | 157 | ||
Teil II: Deep Learning in der Praxis | 159 | ||
Kapitel 5: Deep Learning und maschinelles Sehen | 161 | ||
5.1 Einführung in CNNs | 161 | ||
5.1.1 Die Faltungsoperation | 164 | ||
5.1.2 Die Max-Pooling-Operation | 170 | ||
5.2 Ein CNN von Grund auf mit einer kleinen Datenmenge trainieren | 172 | ||
5.2.1 Die Bedeutung des Deep Learnings für Aufgaben mit kleinen Datenmengen | 173 | ||
5.2.2 Daten herunterladen | 173 | ||
5.2.3 NN erzeugen | 177 | ||
5.2.4 Datenvorverarbeitung | 179 | ||
5.2.5 Datenaugmentation | 184 | ||
5.3 Verwendung eines vortrainierten CNNs | 189 | ||
5.3.1 Merkmalsextraktion | 190 | ||
5.3.2 Feinabstimmung | 202 | ||
5.3.3 Zusammenfassung | 210 | ||
5.4 Visualisierung: Was CNNs erlernen können | 210 | ||
5.4.1 Visualisierung zwischenliegender Aktivierungen | 211 | ||
5.4.2 Visualisierung von CNN-Filtern | 219 | ||
5.4.3 Visualisierung der Heatmaps der Klassenaktivierung | 224 | ||
5.5 Zusammenfassung Kapitel 5 | 230 | ||
Kapitel 6: Deep Learning, Text und sequenzielle Daten | 231 | ||
6.1 Textdaten | 232 | ||
6.1.1 One-hot-Codierung von Wörtern und Zeichen | 234 | ||
6.1.2 Worteinbettung | 237 | ||
6.1.3 Zusammengefasst: von reinem Text zu Worteinbettungen | 243 | ||
6.1.4 Zusammenfassung | 251 | ||
6.2 Rekurrente neuronale Netze | 252 | ||
6.2.1 Ein rekurrenter Layer in Keras | 255 | ||
6.2.2 LSTM- und GRU-Layer | 260 | ||
6.2.3 Ein konkretes LSTM-Beispiel in Keras | 263 | ||
6.2.4 Zusammenfassung | 265 | ||
6.3 Erweiterte Nutzung rekurrenter neuronaler Netze | 265 | ||
6.3.1 Temperaturvorhersage | 266 | ||
6.3.2 Daten vorbereiten | 269 | ||
6.3.3 Eine vernünftige Abschätzung ohne Machine Learning | 272 | ||
6.3.4 Ein elementarer Machine-Learning-Ansatz | 274 | ||
6.3.5 Ein erstes RNN | 276 | ||
6.3.6 Rekurrentes Dropout-Verfahren zum Verhindern einer Überanpassung | 277 | ||
6.3.7 Hintereinanderschaltung rekurrenter Layer | 279 | ||
6.3.8 Bidirektionale RNNs | 281 | ||
6.3.9 Noch einen Schritt weiter gehen | 286 | ||
6.3.10 Zusammenfassung | 286 | ||
6.4 Verarbeitung von Sequenzen mit CNNs | 288 | ||
6.4.1 Eindimensionale Faltung sequenzieller Daten | 288 | ||
6.4.2 Eindimensionales Pooling sequenzieller Daten | 289 | ||
6.4.3 Implementierung eines eindimensionalen CNNs | 290 | ||
6.4.4 Lange Sequenzen mit einer Kombination aus CNNs und RNNs verarbeiten | 293 | ||
6.4.5 Zusammenfassung | 297 | ||
6.5 Zusammenfassung Kapitel 6 | 298 | ||
Kapitel 7: Bewährte Verfahren des Deep Learnings | 299 | ||
7.1 Jenseits des Sequential-Modells: die funktionale Keras-API | 299 | ||
7.1.1 Einführung in die funktionale API | 303 | ||
7.1.2 Modelle mit mehreren Eingaben | 305 | ||
7.1.3 Modelle mit mehreren Ausgaben | 308 | ||
7.1.4 Gerichtete azyklische Graphen von Layern | 311 | ||
7.1.5 Gemeinsam genutzte Gewichtungen von Layern | 316 | ||
7.1.6 Modelle als Layer | 318 | ||
7.1.7 Zusammenfassung | 319 | ||
7.2 Deep-Learning-Modelle mit Callbacks und TensorBoard untersuchen und überwachen | 319 | ||
7.2.1 Beeinflussung eines Modells während des Trainings durch Callbacks | 320 | ||
7.2.2 Einführung in das Visualisierungs-Framework TensorBoard | 325 | ||
7.2.3 Zusammenfassung | 332 | ||
7.3 Modelle richtig ausreizen | 332 | ||
7.3.1 Erweiterte Architekturmuster | 333 | ||
7.3.2 Hyperparameteroptimierung | 336 | ||
7.3.3 Ensemblemodelle | 339 | ||
7.3.4 Zusammenfassung | 341 | ||
7.4 Zusammenfassung Kapitel 7 | 342 | ||
Kapitel 8: Generatives Deep Learning | 343 | ||
8.1 Texterzeugung mit LSTM-Modellen | 345 | ||
8.1.1 Eine kurze Geschichte generativer RNNs | 345 | ||
8.1.2 Wie erzeugt man sequenzielle Daten? | 346 | ||
8.1.3 Die Bedeutung der Sampling-Strategie | 347 | ||
8.1.4 Implementierung der LSTM-Texterzeugung für Zeichen | 349 | ||
8.1.5 Zusammenfassung | 356 | ||
8.2 DeepDream | 356 | ||
8.2.1 DeepDream in Keras implementieren | 357 | ||
8.2.2 Zusammenfassung | 364 | ||
8.3 Stilübertragung mit dem Neural-Style-Algorithmus | 365 | ||
8.3.1 Verlustfunktion für den Inhalt | 366 | ||
8.3.2 Verlustfunktion für den Stil | 366 | ||
8.3.3 Stilübertragung in Keras | 367 | ||
8.3.4 Zusammenfassung | 376 | ||
8.4 Bilderzeugung mit Variational Autoencoders | 376 | ||
8.4.1 Sampling eines latenten Bilderraums | 376 | ||
8.4.2 Konzeptvektoren für das Bearbeiten von Bildern | 377 | ||
8.4.3 Variational Autoencoders | 378 | ||
8.4.4 Zusammenfassung | 385 | ||
8.5 Einführung in Generative Adversarial Networks | 386 | ||
8.5.1 Eine schematische GAN-Implementierung | 388 | ||
8.5.2 Einige nützliche Tricks | 389 | ||
8.5.3 Der Generator | 390 | ||
8.5.4 Der Diskriminator | 391 | ||
8.5.5 Das gegnerische Netz | 392 | ||
8.5.6 Training des DCGAN | 393 | ||
8.5.7 Zusammenfassung | 396 | ||
8.6 Zusammenfassung Kapitel 8 | 396 | ||
Kapitel 9: Schlussfolgerungen | 397 | ||
9.1 Kernkonzepte im Überblick | 397 | ||
9.1.1 Verschiedene Ansätze der KI | 398 | ||
9.1.2 Die Besonderheiten des Deep Learnings | 398 | ||
9.1.3 Was ist vom Deep Learning zu halten? | 399 | ||
9.1.4 Wichtige zugrunde liegende Technologien | 401 | ||
9.1.5 Der allgemeine Machine-Learning-Workflow | 402 | ||
9.1.6 Wichtige Netzarchitekturen | 403 | ||
9.1.7 Der Raum der Möglichkeiten | 407 | ||
9.2 Grenzen des Deep Learnings | 409 | ||
9.2.1 Das Risiko der Vermenschlichung von Deep-Learning-Modellen | 410 | ||
9.2.2 Lokale und extreme Verallgemeinerung | 413 | ||
9.2.3 Zusammenfassung | 414 | ||
9.3 Die Zukunft des Deep Learnings | 415 | ||
9.3.1 Modelle als Programme | 416 | ||
9.3.2 Jenseits von Backpropagation und differenzierbaren Layern | 418 | ||
9.3.3 Automatisiertes Machine Learning | 418 | ||
9.3.4 Beständiges Lernen und Wiederverwendung modularer Subroutinen | 419 | ||
9.3.5 Langfristige Aussichten | 421 | ||
9.4 Auf dem Laufenden bleiben | 422 | ||
9.4.1 Praktische Erfahrungen sammeln mit Kaggle | 423 | ||
9.4.2 Aktuelle Entwicklungen auf der arXiv-Website nachlesen | 423 | ||
9.4.3 Erkundung des Keras-Ökosystems | 424 | ||
9.5 Schlusswort | 424 | ||
Anhang A: Installation von Keras und der Erweiterungen unter Ubuntu | 425 | ||
A.1 Installation der wissenschaftlichen Pakete | 426 | ||
A.2 Einrichtung der GPU-Unterstützung | 427 | ||
A.3 Theano installieren (optional) | 428 | ||
A.4 Keras installieren | 429 | ||
Anhang B: Jupyter-Notebooks auf einer EC2-GPU-Instanz ausführen | 431 | ||
B.1 Was sind Jupyter-Notebooks? – Gründe, sie auf AWS-GPUs ausführen | 431 | ||
B.2 Gründe, auf AWS-Jupyter-Notebooks zu verzichten | 431 | ||
B.3 Einrichtung einer AWS-GPU-Instanz | 432 | ||
B.4 Keras installieren | 436 | ||
B.5 Lokale Portweiterleitung einrichten | 437 | ||
B.6 Jupyter mit dem lokalen Browser verwenden | 437 | ||
Stichwortverzeichnis | 439 |