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 |