Machine Learning mit Python und Keras, TensorFlow 2 und Scikit-learn - Das umfassende Praxis-Handbuch für Data Science, Deep Learning und Predictive Analytics

Machine Learning mit Python und Keras, TensorFlow 2 und Scikit-learn - Das umfassende Praxis-Handbuch für Data Science, Deep Learning und Predictive Analytics

von: Sebastian Raschka, Vahid Mirjalili

mitp Verlags GmbH & Co. KG, 2021

ISBN: 9783747502143 , 770 Seiten

3. Auflage

Format: PDF, OL

Kopierschutz: Wasserzeichen

Windows PC,Mac OSX geeignet für alle DRM-fähigen eReader Apple iPad, Android Tablet PC's Online-Lesen für: Windows PC,Mac OSX,Linux

Preis: 49,99 EUR

Mehr zum Inhalt

Machine Learning mit Python und Keras, TensorFlow 2 und Scikit-learn - Das umfassende Praxis-Handbuch für Data Science, Deep Learning und Predictive Analytics


 

Cover

1

Unbenannt

5

Impressum

6

Inhaltsverzeichnis

7

Über die Autoren

19

Über die Korrektoren

21

Über den Fachkorrektor der deutschen Ausgabe

22

Einleitung

23

Kapitel 1: Wie Computer aus Daten lernen können

31

1.1 Intelligente Maschinen, die Daten in Wissen verwandeln

31

1.2 Die drei Arten des Machine Learnings

32

1.2.1 Mit überwachtem Lernen Vorhersagen treffen

33

1.2.2 Interaktive Aufgaben durch Reinforcement Learning lösen

36

1.2.3 Durch unüberwachtes Lernen verborgene Strukturen erkennen

37

1.3 Grundlegende Terminologie und Notation

38

1.3.1 Im Buch verwendete Notation und Konventionen

39

1.3.2 Terminologie

40

1.4 Entwicklung eines Systems für das Machine Learning

41

1.4.1 Vorverarbeitung: Daten in Form bringen

42

1.4.2 Trainieren und Auswählen eines Vorhersagemodells

42

1.4.3 Bewertung von Modellen und Vorhersage anhand unbekannter Dateninstanzen

43

1.5 Machine Learning mit Python

44

1.5.1 Python und Python-Pakete installieren

44

1.5.2 Verwendung der Python-Distribution Anaconda

45

1.5.3 Pakete für wissenschaftliches Rechnen, Data Science und Machine Learning

45

1.6 Zusammenfassung

46

Kapitel 2: Lernalgorithmen für die Klassifikation trainieren

47

2.1 Künstliche Neuronen: Ein kurzer Blick auf die Anfänge des Machine Learnings

47

2.1.1 Formale Definition eines künstlichen Neurons

48

2.1.2 Die Perzeptron-Lernregel

50

2.2 Implementierung eines Perzeptron-Lernalgorithmus in Python

53

2.2.1 Eine objektorientierte Perzeptron-API

53

2.2.2 Trainieren eines Perzeptron-Modells mit der Iris-Datensammlung

57

2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens

63

2.3.1 Straffunktionen mit dem Gradientenabstiegsverfahren minimieren

64

2.3.2 Implementierung eines adaptiven linearen Neurons in Python

66

2.3.3 Verbesserung des Gradientenabstiegsverfahrens durch Merkmalstandardisierung

71

2.3.4 Large Scale Machine Learning und stochastisches Gradientenabstiegsverfahren

73

2.4 Zusammenfassung

79

Kapitel 3: Machine-Learning-Klassifikatoren mit scikit-learn verwenden

81

3.1 Auswahl eines Klassifikationsalgorithmus

81

3.2 Erste Schritte mit scikit-learn: Trainieren eines Perzeptrons

82

3.3 Klassenwahrscheinlichkeiten durch logistische Regression modellieren

88

3.3.1 Logistische Regression und bedingte Wahrscheinlichkeiten

89

3.3.2 Gewichte der logistischen Straffunktion ermitteln

93

3.3.3 Konvertieren einer Adaline-Implementierung in einen Algorithmus für eine logistische Regression

95

3.3.4 Trainieren eines logistischen Regressionsmodells mit scikit-learn

100

3.3.5 Überanpassung durch Regularisierung verhindern

103

3.4 Maximum-Margin-Klassifikation mit Support Vector Machines

106

3.4.1 Maximierung des Randbereichs

107

3.4.2 Handhabung des nicht linear trennbaren Falls mit Schlupfvariablen

108

3.4.3 Alternative Implementierungen in scikit-learn

110

3.5 Nichtlineare Aufgaben mit einer Kernel-SVM lösen

111

3.5.1 Kernel-Methoden für linear nicht trennbare Daten

111

3.5.2 Mit dem Kernel-Trick Hyperebenen in höherdimensionalen Räumen finden

113

3.6 Lernen mit Entscheidungsbäumen

117

3.6.1 Maximierung des Informationsgewinns: Daten ausreizen

118

3.6.2 Konstruktion eines Entscheidungsbaums

122

3.6.3 Mehrere Entscheidungsbäume zu einem Random Forest kombinieren

126

3.7 k-Nearest-Neighbors: Ein Lazy-Learning-Algorithmus

129

3.8 Zusammenfassung

132

Kapitel 4: Gut geeignete Trainingsdatenmengen: Datenvorverarbeitung

135

4.1 Umgang mit fehlenden Daten

135

4.1.1 Fehlende Werte in Tabellendaten

136

4.1.2 Instanzen oder Merkmale mit fehlenden Daten entfernen

137

4.1.3 Fehlende Werte ergänzen

138

4.1.4 Die Schätzer-API von scikit-learn

139

4.2 Handhabung kategorialer Daten

140

4.2.1 Codierung kategorialer Daten mit pandas

141

4.2.2 Zuweisung von ordinalen Merkmalen

141

4.2.3 Codierung der Klassenbezeichnungen

142

4.2.4 One-hot-Codierung der nominalen Merkmale

143

4.3 Aufteilung einer Datensammlung in Trainings- und Testdaten

147

4.4 Anpassung der Merkmale

150

4.5 Auswahl aussagekräftiger Merkmale

152

4.5.1 L1- und L2-Regularisierung als Straffunktionen

153

4.5.2 Geometrische Interpretation der L2-Regularisierung

153

4.5.3 Dünn besetzte Lösungen mit L1-Regularisierung

155

4.5.4 Algorithmen zur sequenziellen Auswahl von Merkmalen

159

4.6 Beurteilung der Bedeutung von Merkmalen mit Random Forests

166

4.7 Zusammenfassung

169

Kapitel 5: Datenkomprimierung durch Dimensionsreduktion

171

5.1 Unüberwachte Dimensionsreduktion durch Hauptkomponentenanalyse

171

5.1.1 Schritte bei der Hauptkomponentenanalyse

172

5.1.2 Schrittweise Extraktion der Hauptkomponenten

173

5.1.3 Totale Varianz und erklärte Varianz

176

5.1.4 Merkmalstransformation

178

5.1.5 Hauptkomponentenanalyse mit scikit-learn

181

5.2 Überwachte Datenkomprimierung durch lineare Diskriminanzanalyse

185

5.2.1 Hauptkomponentenanalyse kontra lineare Diskriminanzanalyse

185

5.2.2 Die interne Funktionsweise der linearen Diskriminanzanalyse

186

5.2.3 Berechnung der Streumatrizen

187

5.2.4 Auswahl linearer Diskriminanten für den neuen Merkmalsunterraum

189

5.2.5 Projektion in den neuen Merkmalsraum

192

5.2.6 LDA mit scikit-learn

193

5.3 Kernel-Hauptkomponentenanalyse für nichtlineare Zuordnungen verwenden

195

5.3.1 Kernel-Funktionen und der Kernel-Trick

196

5.3.2 Implementierung einer Kernel-Hauptkomponentenanalyse in Python

200

5.3.3 Projizieren neuer Datenpunkte

208

5.3.4 Kernel-Hauptkomponentenanalyse mit scikit-learn

212

5.4 Zusammenfassung

213

Kapitel 6: Bewährte Verfahren zur Modellbewertung und Hyperparameter-Optimierung

215

6.1 Arbeitsabläufe mit Pipelines optimieren

215

6.1.1 Die Wisconsin-Brustkrebs-Datensammlung

215

6.1.2 Transformer und Schätzer in einer Pipeline kombinieren

217

6.2 Beurteilung des Modells durch k-fache Kreuzvalidierung

219

6.2.1 Holdout-Methode

220

6.2.2 k-fache Kreuzvalidierung

221

6.3 Algorithmen mit Lern- und Validierungskurven debuggen

225

6.3.1 Probleme mit Bias und Varianz anhand von Lernkurven erkennen

226

6.3.2 Überanpassung und Unteranpassung anhand von Validierungskurven erkennen

229

6.4 Feinabstimmung eines Lernmodells durch Grid Search

231

6.4.1 Optimierung der Hyperparameter durch Grid Search

232

6.4.2 Algorithmenauswahl durch verschachtelte Kreuzvalidierung

234

6.5 Verschiedene Kriterien zur Leistungsbewertung

236

6.5.1 Interpretation einer Verwechslungsmatrix

236

6.5.2 Optimierung der Genauigkeit und der Trefferquote eines Klassifikationsmodells

238

6.5.3 Receiver-Operating-Characteristic-Diagramme

240

6.5.4 Bewertungskriterien für Mehrklassen-Klassifikationen

243

6.6 Handhabung unausgewogener Klassenverteilung

244

6.7 Zusammenfassung

247

Kapitel 7: Kombination verschiedener Modelle für das Ensemble Learning

249

7.1 Ensemble Learning

249

7.2 Klassifikatoren durch Mehrheitsentscheidung kombinieren

253

7.2.1 Implementierung eines einfachen Mehrheitsentscheidungs- Klassifikators

253

7.2.2 Vorhersagen nach dem Mehrheitsentscheidungsprinzip treffen

260

7.3 Bewertung und Abstimmung des Klassifikator-Ensembles

263

7.4 Bagging: Klassifikator-Ensembles anhand von Bootstrap-Stichproben entwickeln

270

7.4.1 Bagging kurz zusammengefasst

271

7.4.2 Klassifikation der Wein-Datensammlung durch Bagging

272

7.5 Schwache Klassifikatoren durch adaptives Boosting verbessern

276

7.5.1 Funktionsweise des Boostings

276

7.5.2 AdaBoost mit scikit-learn anwenden

280

7.6 Zusammenfassung

284

Kapitel 8: Machine Learning zur Analyse von Stimmungslagen nutzen

285

8.1 Die IMDb-Filmdatenbank

285

8.1.1 Herunterladen der Datensammlung

286

8.1.2 Vorverarbeiten der Filmbewertungsdaten

286

8.2 Das Bag-of-words-Modell

288

8.2.1 Wörter in Merkmalsvektoren umwandeln

289

8.2.2 Beurteilung der Wortrelevanz durch das Tf-idf-Maß

291

8.2.3 Textdaten bereinigen

293

8.2.4 Dokumente in Tokens zerlegen

295

8.3 Ein logistisches Regressionsmodell für die Dokumentklassifikation trainieren

297

8.4 Verarbeitung großer Datenmengen: Online-Algorithmen und Out-of-Core Learning

300

8.5 Topic Modeling mit latenter Dirichlet-Allokation

304

8.5.1 Aufteilung von Texten mit der LDA

305

8.5.2 LDA mit scikit-learn

305

8.6 Zusammenfassung

309

Kapitel 9: Einbettung eines Machine-Learning- Modells in eine Webanwendung

311

9.1 Serialisierung angepasster Schätzer mit scikit-learn

311

9.2 Einrichtung einer SQLite-Datenbank zum Speichern von Daten

315

9.3 Entwicklung einer Webanwendung mit Flask

317

9.3.1 Die erste Webanwendung mit Flask

318

9.3.2 Formularvalidierung und -ausgabe

320

9.4 Der Filmbewertungsklassifikator als Webanwendung

326

9.4.1 Dateien und Ordner – die Verzeichnisstruktur

328

9.4.2 Implementierung der Hauptanwendung app.py

328

9.4.3 Einrichtung des Bewertungsformulars

331

9.4.4 Eine Vorlage für die Ergebnisseite erstellen

332

9.5 Einrichtung der Webanwendung auf einem öffentlich zugänglichen Webserver

335

9.5.1 Erstellen eines Benutzerkontos bei PythonAnywhere

335

9.5.2 Hochladen der Filmbewertungsanwendung

336

9.5.3 Updaten des Filmbewertungsklassifikators

337

9.6 Zusammenfassung

340

Kapitel 10: Vorhersage stetiger Zielvariablen durch Regressionsanalyse

341

10.1 Lineare Regression

341

10.1.1 Ein einfaches lineares Regressionsmodell

342

10.1.2 Multiple lineare Regression

343

10.2 Die Boston-Housing-Datensammlung

344

10.2.1 Einlesen der Datenmenge in einen DataFrame

344

10.2.2 Visualisierung der wichtigen Eigenschaften einer Datenmenge

346

10.2.3 Zusammenhänge anhand der Korrelationsmatrix erkennen

348

10.3 Implementierung eines linearen Regressionsmodells mit der Methode der kleinsten Quadrate

350

10.3.1 Berechnung der Regressionsparameter mit dem Gradientenabstiegsverfahren

351

10.3.2 Schätzung der Koeffizienten eines Regressionsmodells mit scikit-learn

355

10.4 Anpassung eines robusten Regressionsmodells mit dem RANSAC-Algorithmus

357

10.5 Bewertung der Leistung linearer Regressionsmodelle

360

10.6 Regularisierungsverfahren für die Regression einsetzen

363

10.7 Polynomiale Regression: Umwandeln einer linearen Regression in eine Kurve

365

10.7.1 Hinzufügen polynomialer Terme mit scikit-learn

366

10.7.2 Modellierung nichtlinearer Zusammenhänge in der Boston-Housing-Datensammlung

368

10.8 Handhabung nichtlinearer Beziehungen mit Random Forests

371

10.8.1 Entscheidungsbaum-Regression

372

10.8.2 Random-Forest-Regression

373

10.9 Zusammenfassung

377

Kapitel 11: Verwendung von Daten ohne Label: Clusteranalyse

379

11.1 Gruppierung von Objekten nach Ähnlichkeit mit dem k-Means-Algorithmus

379

11.1.1 k-Means-Clustering mit scikit-learn

380

11.1.2 Der k-Means++-Algorithmus

385

11.1.3 »Crisp« und »soft« Clustering

386

11.1.4 Die optimale Anzahl der Cluster mit dem Ellenbogenkriterium ermitteln

388

11.1.5 Quantifizierung der Clustering-Güte mit Silhouettendiagrammen

390

11.2 Cluster als hierarchischen Baum organisieren

395

11.2.1 Gruppierung von Clustern

395

11.2.2 Hierarchisches Clustering mittels einer Distanzmatrix

397

11.2.3 Dendrogramme und Heatmaps verknüpfen

401

11.2.4 Agglomeratives Clustering mit scikit-learn

403

11.3 Bereiche hoher Dichte mit DBSCAN ermitteln

404

11.4 Zusammenfassung

409

Kapitel 12: Implementierung eines künstlichen neuronalen Netzes

411

12.1 Modellierung komplexer Funktionen mit künstlichen neuronalen Netzen

411

12.1.1 Einschichtige neuronale Netze

413

12.1.2 Mehrschichtige neuronale Netzarchitektur

415

12.1.3 Aktivierung eines neuronalen Netzes durch Vorwärtspropagation

418

12.2 Klassifikation handgeschriebener Ziffern

420

12.2.1 Die MNIST-Datensammlung

421

12.2.2 Implementierung eines mehrschichtigen Perzeptrons

428

12.3 Trainieren eines künstlichen neuronalen Netzes

440

12.3.1 Berechnung der logistischen Straffunktion

441

12.3.2 Ein Gespür für die Backpropagation entwickeln

443

12.3.3 Trainieren neuronaler Netze durch Backpropagation

445

12.4 Konvergenz in neuronalen Netzen

449

12.5 Abschließende Bemerkungen zur Implementierung neuronaler Netze

450

12.6 Zusammenfassung

450

Kapitel 13: Parallelisierung des Trainings neuronaler Netze mit TensorFlow

453

13.1 TensorFlow und Trainingsleistung

453

13.1.1 Herausforderungen

453

13.1.2 Was genau ist TensorFlow?

455

13.1.3 TensorFlow erlernen

456

13.2 Erste Schritte mit TensorFlow

457

13.2.1 TensorFlow installieren

457

13.2.2 Tensoren in TensorFlow erstellen

458

13.2.3 Datentyp und Format eines Tensors ändern

459

13.2.4 Anwendung mathematischer Operationen auf Tensoren

460

13.2.5 Tensoren aufteilen, stapeln und verknüpfen

462

13.3 Eingabe-Pipelines mit tf.data erstellen – die Dataset-API von TensorFlow

464

13.3.1 Ein TensorFlow-Dataset anhand vorhandener Tensoren erstellen

464

13.3.2 Zwei Tensoren zu einer Datenmenge vereinen

465

13.3.3 Durchmischen, Batch erstellen und wiederholen

467

13.3.4 Erstellen einer Datenmenge anhand lokal gespeicherter Dateien

470

13.3.5 Zugriff auf die Datenmengen der tensorflow_datasets-Bibliothek

474

13.4 Entwicklung eines NN-Modells mit TensorFlow

480

13.4.1 Die Keras-API (tf.keras) von TensorFlow

480

13.4.2 Entwicklung eines linearen Regressionsmodells

481

13.4.3 Trainieren des Modells mit den Methoden .compile() und .fit()

486

13.4.4 Entwicklung eines mehrschichtigen Perzeptrons zur Klassifikation der Iris-Datensammlung

487

13.4.5 Bewertung des trainierten Modells mit der Testdatenmenge

492

13.4.6 Das trainierte Modell speichern und einlesen

492

13.5 Auswahl der Aktivierungsfunktionen mehrschichtiger neuronaler Netze

493

13.5.1 Die logistische Funktion kurz zusammengefasst

494

13.5.2 Wahrscheinlichkeiten bei der Mehrklassen-Klassifikation mit der softmax-Funktion schätzen

496

13.5.3 Verbreiterung des Ausgabespektrums mittels Tangens hyperbolicus

497

13.5.4 Aktivierung mittels ReLU

500

13.6 Zusammenfassung

501

Kapitel 14: Die Funktionsweise von TensorFlow im Detail

503

14.1 Grundlegende Merkmale von TensorFlow

504

14.2 TensorFlows Berechnungsgraphen: Migration nach TensorFlow v2

505

14.2.1 Funktionsweise von Berechnungsgraphen

505

14.2.2 Erstellen eines Graphen in TensorFlow v1.x

506

14.2.3 Migration eines Graphen nach TensorFlow v2

507

14.2.4 Eingabedaten einlesen mit TensorFlow v1.x

508

14.2.5 Eingabedaten einlesen mit TensorFlow v2

508

14.2.6 Beschleunigung von Berechnungen mit Funktionsdekoratoren

509

14.3 TensorFlows Variablenobjekte zum Speichern und Aktualisieren von Modellparametern

511

14.4 Gradientenberechnung durch automatisches Differenzieren und GradientTape

516

14.4.1 Berechnung der Gradienten der Verlustfunktion bezüglich trainierbarer Variablen

516

14.4.2 Berechnung der Gradienten bezüglich nicht trainierbarer Tensoren

518

14.4.3 Ressourcen für mehrfache Gradientenberechnung erhalten

518

14.5 Vereinfachung der Implementierung gebräuchlicher Architekturen mit der Keras-API

519

14.5.1 Lösen einer XOR-Klassifikationsaufgabe

523

14.5.2 Flexiblere Modellerstellung mit Keras’ funktionaler API

528

14.5.3 Modelle mit Keras’ »Model«-Klasse implementieren

530

14.5.4 Benutzerdefinierte Keras-Schichten

531

14.6 TensorFlows Schätzer

535

14.6.1 Merkmalsspalten

536

14.6.2 Machine Learning mit vorgefertigten Schätzern

540

14.6.3 Klassifikation handgeschriebener Ziffern mit Schätzern

545

14.6.4 Benutzerdefinierte Schätzer anhand eines Keras-Modells erstellen

547

14.7 Zusammenfassung

550

Kapitel 15: Bildklassifikation mit Deep Convolutional Neural Networks

551

15.1 Bausteine von Convolutional Neural Networks

551

15.1.1 CNNs und Merkmalshierarchie

552

15.1.2 Diskrete Faltungen

554

15.1.3 Subsampling

563

15.2 Implementierung eines CNNs

565

15.2.1 Verwendung mehrerer Eingabe- oder Farbkanäle

565

15.2.2 Regularisierung eines neuronalen Netzes mit Dropout

568

15.2.3 Verlustfunktionen für Klassifikationen

572

15.3 Implementierung eines tiefen CNNs mit TensorFlow

574

15.3.1 Die mehrschichtige CNN-Architektur

575

15.3.2 Einlesen und Vorverarbeiten der Daten

576

15.3.3 Implementierung eines CNNs mit TensorFlows Keras-API

577

15.4 Klassifikation des Geschlechts anhand von Porträtfotos mit einem CNN

584

15.4.1 Einlesen der CelebA-Datenmenge

584

15.4.2 Bildtransformation und Datenaugmentation

585

15.4.3 Training eines CNN-Klassifikators

592

15.5 Zusammenfassung

598

Kapitel 16: Modellierung sequenzieller Daten durch rekurrente neuronale Netze

599

16.1 Sequenzielle Daten

599

16.1.1 Modellierung sequenzieller Daten: Die Reihenfolge ist von Bedeutung

600

16.1.2 Repräsentierung von Sequenzen

600

16.1.3 Verschiedene Kategorien der Sequenzmodellierung

601

16.2 Sequenzmodellierung mit RNNs

603

16.2.1 Struktur und Ablauf eines RNNs

603

16.2.2 Aktivierungen eines RNNs berechnen

605

16.2.3 Rückkopplung mit der verdeckten Schicht oder der Ausgabeschicht

608

16.2.4 Probleme bei der Erkennung weitreichender Interaktionen

611

16.2.5 LSTM-Speicherzellen

612

16.3 Implementierung von RNNs zur Sequenzmodellierung mit TensorFlow

614

16.3.1 Projekt 1: Vorhersage der Stimmungslage von IMDb-Filmbewertungen

614

16.3.2 Projekt 2: Sprachmodellierung durch Zeichen mit TensorFlow

631

16.4 Sprache mit dem Transformer-Modell verstehen

644

16.4.1 Der Mechanismus der Selbst-Aufmerksamkeit

645

16.4.2 Multi-Head-Attention und Transformer-Block

648

16.5 Zusammenfassung

649

Kapitel 17: Synthetisieren neuer Daten mit Generative Adversarial Networks

651

17.1 Einführung in GANs

651

17.1.1 Autoencoder

652

17.1.2 Generative Modelle zum Synthetisieren neuer Daten

654

17.1.3 Mit GANs neue Beispiele erzeugen

656

17.1.4 Die Verlustfunktion des Generator- und Diskriminator-Netzes in einem GAN-Modell

657

17.2 Ein GAN von Grund auf implementieren

660

17.2.1 GAN-Modelle mit Google Colab trainieren

660

17.2.2 Implementierung der Generator- und Diskriminator-Netze

663

17.2.3 Definition der Trainingsdatenmenge

667

17.2.4 Trainieren des GAN-Modells

669

17.3 Verbesserung der Qualität synthetisierter Bilder durch Convolutional GAN und Wasserstein-GAN

678

17.3.1 Transponierte Faltung

679

17.3.2 Batchnormierung

680

17.3.3 Implementierung des Generators und des Diskriminators

683

17.3.4 Maße für den Unterschied zwischen zwei Verteilungen

690

17.3.5 Verwendung der EM-Distanz in der Praxis

693

17.3.6 Strafterm

694

17.3.7 Implementierung von WGAN-GP zum Trainieren des DCGAN-Modells

695

17.3.8 Zusammenbrechen des Verfahrens

699

17.4 Weitere GAN-Anwendungen

701

17.5 Zusammenfassung

702

Kapitel 18: Entscheidungsfindung in komplexen Umgebungen per Reinforcement Learning

703

18.1 Einführung: Aus Erfahrung lernen

704

18.1.1 Reinforcement Learning

704

18.1.2 Definition der Agent-Umgebung-Schnittstelle für ein Reinforcement-Learning-System

706

18.2 Theoretische Grundlagen des RLs

707

18.2.1 Markov-Entscheidungsprozesse

707

18.2.2 Mathematische Formulierung von Markov-Entscheidungsprozessen

708

18.2.3 RL-Terminologie: Return, Policy und Wertfunktion

712

18.2.4 Dynamische Programmierung und Bellman-Gleichung

716

18.3 Reinforcement-Learning-Algorithmen

717

18.3.1 Dynamische Programmierung

717

18.3.2 Reinforcement Learning mit Monte-Carlo-Algorithmen

720

18.3.3 Temporal Difference Learning

722

18.4 Implementierung eines RL-Algorithmus

725

18.4.1 OpenAI Gym

725

18.4.2 Lösung der Grid-World-Aufgabe mit Q-Learning

736

18.4.3 Ein Blick auf Deep Q-Learning

741

18.5 Zusammenfassung und Schlusswort

749

Stichwortverzeichnis

753