Zu diesem Buch – sowie zu vielen weiteren O’Reilly-Büchern – können Sie auch das entsprechende E-Book im PDF-Format herunterladen. Werden Sie dazu einfach Mitglied bei oreilly.plus+:

www.oreilly.plus

2. AUFLAGE

Praxiseinstieg Machine Learning
mit Scikit-Learn, Keras und
TensorFlow

Konzepte, Tools und Techniken
für intelligente Systeme

Aurélien Géron

Deutsche Übersetzung von
Kristian Rother & Thomas Demmig

Aurélien Géron

Lektorat: Alexandra Follenius

Bibliografische Information der Deutschen Nationalbibliothek

ISBN:

2. Auflage

Authorized German translation of the English edition of Hands-on Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition, ISBN 9781492032649 © 2019 Kiwisoft S.A.S. This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same.

Dieses Buch erscheint in Kooperation mit O’Reilly Media, Inc. unter dem Imprint »O’REILLY«. O’REILLY ist ein Markenzeichen und eine eingetragene Marke von O’Reilly Media, Inc. und wird mit Einwilligung des Eigentümers verwendet.

Hinweis:

Schreiben Sie uns:

Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.

Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen.

Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autor noch Verlag noch Übersetzer können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der Verwendung dieses Buches stehen.

5 4 3 2 1 0

Inhalt

Vorwort

 

Teil IDie Grundlagen des Machine Learning

1Die Machine-Learning-Umgebung

Was ist Machine Learning?

Warum wird Machine Learning verwendet?

Anwendungsbeispiel

Unterschiedliche Machine-Learning-Systeme

Überwachtes/unüberwachtes Lernen

Batch- und Online-Learning

Instanzbasiertes versus modellbasiertes Lernen

Die wichtigsten Herausforderungen beim Machine Learning

Unzureichende Menge an Trainingsdaten

Nicht repräsentative Trainingsdaten

Minderwertige Daten

Irrelevante Merkmale

Overfitting der Trainingsdaten

Underfitting der Trainingsdaten

Zusammenfassung

Testen und Validieren

Hyperparameter anpassen und Modellauswahl

Datendiskrepanz

Übungen

2Ein Machine-Learning-Projekt von A bis Z

Der Umgang mit realen Daten

Betrachte das Gesamtbild

Die Aufgabe abstecken

Wähle ein Qualitätsmaß aus

Überprüfe die Annahmen

Beschaffe die Daten

Erstelle eine Arbeitsumgebung

Die Daten herunterladen

Wirf einen kurzen Blick auf die Datenstruktur

Erstelle einen Testdatensatz

Erkunde und visualisiere die Daten, um Erkenntnisse zu gewinnen

Visualisieren geografischer Daten

Suche nach Korrelationen

Experimentieren mit Kombinationen von Merkmalen

Bereite die Daten für Machine-Learning-Algorithmen vor

Aufbereiten der Daten

Bearbeiten von Text und kategorischen Merkmalen

Eigene Transformer

Skalieren von Merkmalen

Pipelines zur Transformation

Wähle ein Modell aus und trainiere es

Trainieren und Auswerten auf dem Trainingsdatensatz

Bessere Auswertung mittels Kreuzvalidierung

Optimiere das Modell

Gittersuche

Zufällige Suche

Ensemble-Methoden

Analysiere die besten Modelle und ihre Fehler

Evaluiere das System auf dem Testdatensatz

Nimm das System in Betrieb, überwache und warte es

Probieren Sie es aus!

Übungen

3Klassifikation

MNIST

Trainieren eines binären Klassifikators

Qualitätsmaße

Messen der Genauigkeit über Kreuzvalidierung

Konfusionsmatrix

Relevanz und Sensitivität

Die Wechselbeziehung zwischen Relevanz und Sensitivität

Die ROC-Kurve

Klassifikatoren mit mehreren Kategorien

Fehleranalyse

Klassifikation mit mehreren Labels

Klassifikation mit mehreren Ausgaben

Übungen

4Trainieren von Modellen

Lineare Regression

Die Normalengleichung

Komplexität der Berechnung

Das Gradientenverfahren

Batch-Gradientenverfahren

Stochastisches Gradientenverfahren

Mini-Batch-Gradientenverfahren

Polynomielle Regression

Lernkurven

Regularisierte lineare Modelle

Ridge-Regression

Lasso-Regression

Elastic Net

Early Stopping

Logistische Regression

Abschätzen von Wahrscheinlichkeiten

Trainieren und Kostenfunktion

Entscheidungsgrenzen

Softmax-Regression

Übungen

5Support Vector Machines

Lineare Klassifikation mit SVMs

Soft-Margin-Klassifikation

Nichtlineare SVM-Klassifikation

Polynomieller Kernel

Ähnlichkeitsbasierte Merkmale

Der gaußsche RBF-Kernel

Komplexität der Berechnung

SVM-Regression

Hinter den Kulissen

Entscheidungsfunktion und Vorhersagen

Zielfunktionen beim Trainieren

Quadratische Programme

Das duale Problem

Kernel-SVM

Online-SVMs

Übungen

6Entscheidungsbäume

Trainieren und Visualisieren eines Entscheidungsbaums

Vorhersagen treffen

Schätzen von Wahrscheinlichkeiten für Kategorien

Der CART-Trainingsalgorithmus

Komplexität der Berechnung

Gini-Unreinheit oder Entropie?

Hyperparameter zur Regularisierung

Regression

Instabilität

Übungen

7Ensemble Learning und Random Forests

Abstimmverfahren unter Klassifikatoren

Bagging und Pasting

Bagging und Pasting in Scikit-Learn

Out-of-Bag-Evaluation

Zufällige Patches und Subräume

Random Forests

Extra-Trees

Wichtigkeit von Merkmalen

Boosting

AdaBoost

Gradient Boosting

Stacking

Übungen

8Dimensionsreduktion

Der Fluch der Dimensionalität

Die wichtigsten Ansätze zur Dimensionsreduktion

Projektion

Manifold Learning

Hauptkomponentenzerlegung (PCA)

Erhalten der Varianz

Hauptkomponenten

Die Projektion auf d Dimensionen

Verwenden von Scikit-Learn

Der Anteil erklärter Varianz

Auswählen der richtigen Anzahl Dimensionen

PCA als Komprimierungsverfahren

Randomisierte PCA

Inkrementelle PCA

Kernel-PCA

Auswahl eines Kernels und Optimierung der Hyperparameter

LLE

Weitere Techniken zur Dimensionsreduktion

Übungen

9Techniken des unüberwachten Lernens

Clustering

K-Means

Grenzen von K-Means

Bildsegmentierung per Clustering

Vorverarbeitung per Clustering

Clustering für teilüberwachtes Lernen einsetzen

DBSCAN

Andere Clustering-Algorithmen

Gaußsche Mischverteilung

Anomalieerkennung mit gaußschen Mischverteilungsmodellen

Die Anzahl an Clustern auswählen

Bayessche gaußsche Mischverteilungsmodelle

Andere Algorithmen zur Anomalie- und Novelty-Erkennung

Übungen

 

Teil IINeuronale Netze und Deep Learning

10Einführung in künstliche neuronale Netze mit Keras

Von biologischen zu künstlichen Neuronen

Biologische Neuronen

Logische Berechnungen mit Neuronen

Das Perzeptron

Mehrschichtiges Perzeptron und Backpropagation

Regressions-MLPs

Klassifikations-MLPs

MLPs mit Keras implementieren

TensorFlow 2 installieren

Einen Bildklassifikator mit der Sequential API erstellen

Ein Regressions-MLP mit der Sequential API erstellen

Komplexe Modelle mit der Functional API bauen

Dynamische Modelle mit der Subclassing API bauen

Ein Modell sichern und wiederherstellen

Callbacks

TensorBoard zur Visualisierung verwenden

Feinabstimmung der Hyperparameter eines neuronalen Netzes

Anzahl verborgener Schichten

Anzahl Neuronen pro verborgene Schicht

Lernrate, Batchgröße und andere Hyperparameter

Übungen

11Trainieren von Deep-Learning-Netzen

Das Problem schwindender/explodierender Gradienten

Initialisierung nach Glorot und He

Nicht sättigende Aktivierungsfunktionen

Batchnormalisierung

Gradient Clipping

Wiederverwenden vortrainierter Schichten

Transfer Learning mit Keras

Unüberwachtes Vortrainieren

Vortrainieren anhand einer Hilfsaufgabe

Schnellere Optimierer

Momentum Optimization

Beschleunigter Gradient nach Nesterov

AdaGrad

RMSProp

Adam-Optimierung

Scheduling der Lernrate

Vermeiden von Overfitting durch Regularisierung

1- und 2-Regularisierung

Drop-out

Monte-Carlo-(MC-)-Drop-out

Max-Norm-Regularisierung

Zusammenfassung und praktische Tipps

Übungen

12Eigene Modelle und Training mit TensorFlow

Ein kurzer Überblick über TensorFlow

TensorFlow wie NumPy einsetzen

Tensoren und Operationen

Tensoren und NumPy

Typumwandlung

Variablen

Andere Datenstrukturen

Modelle und Trainingsalgorithmen anpassen

Eigene Verlustfunktion

Modelle mit eigenen Komponenten sichern und laden

Eigene Aktivierungsfunktionen, Initialisierer, Regularisierer und Constraints

Eigene Metriken

Eigene Schichten

Eigene Modelle

Verlustfunktionen und Metriken auf Modell-Interna basieren lassen

Gradienten per Autodiff berechnen

Eigene Trainingsschleifen

Funktionen und Graphen in TensorFlow

AutoGraph und Tracing

Regeln für TF Functions

Übungen

13Daten mit TensorFlow laden und vorverarbeiten

Die Data-API

Transformationen verketten

Daten durchmischen

Daten vorverarbeiten

Alles zusammenbringen

Prefetching

Datasets mit tf.keras verwenden

Das TFRecord-Format

Komprimierte TFRecord-Dateien

Eine kurze Einführung in Protocol Buffer

TensorFlow-Protobufs

Examples laden und parsen

Listen von Listen mit dem SequenceExample-Protobuf verarbeiten

Die Eingabemerkmale vorverarbeiten

Kategorische Merkmale mit One-Hot-Vektoren codieren

Kategorische Merkmale mit Embeddings codieren

Vorverarbeitungsschichten von Keras

TF Transform

Das TensorFlow-Datasets-(TFDS-)Projekt

Übungen

14Deep Computer Vision mit Convolutional Neural Networks

Der Aufbau des visuellen Cortex

Convolutional Layers

Filter

Stapeln mehrerer Feature Maps

Implementierung in TensorFlow

Speicherbedarf

Pooling Layers

Implementierung in TensorFlow

Architekturen von CNNs

LeNet-5

AlexNet

GoogLeNet

VGGNet

ResNet

Xception

SENet

Ein ResNet-34-CNN mit Keras implementieren

Vortrainierte Modelle aus Keras einsetzen

Vortrainierte Modelle für das Transfer Learning

Klassifikation und Lokalisierung

Objekterkennung

Fully Convolutional Networks

You Only Look Once (YOLO)

Semantische Segmentierung

Übungen

15Verarbeiten von Sequenzen mit RNNs und CNNs

Rekurrente Neuronen und Schichten

Gedächtniszellen

Ein- und Ausgabesequenzen

RNNs trainieren

Eine Zeitserie vorhersagen

Grundlegende Metriken

Ein einfaches RNN implementieren

Deep RNNs

Mehrere Zeitschritte vorhersagen

Arbeit mit langen Sequenzen

Gegen instabile Gradienten kämpfen

Das Problem des Kurzzeitgedächtnisses

Übungen

16Natürliche Sprachverarbeitung mit RNNs und Attention

Shakespearesche Texte mit einem Character-RNN erzeugen

Den Trainingsdatensatz erstellen

Wie ein sequenzieller Datensatz aufgeteilt wird

Den sequenziellen Datensatz in mehrere Fenster unterteilen

Das Char-RNN-Modell bauen und trainieren

Das Char-RNN-Modell verwenden

Einen gefälschten Shakespeare-Text erzeugen

Zustandsbehaftetes RNN

Sentimentanalyse

Maskieren

Vortrainierte Embeddings wiederverwenden

Ein Encoder-Decoder-Netzwerk für die neuronale maschinelle Übersetzung

Bidirektionale RNNs

Beam Search

Attention-Mechanismen

Visuelle Attention

Attention Is All You Need: Die Transformer-Architektur

Aktuelle Entwicklungen bei Sprachmodellen

Übungen

17Representation Learning und Generative Learning mit Autoencodern und GANs

Effiziente Repräsentation von Daten

Hauptkomponentenzerlegung mit einem untervollständigen linearen Autoencoder

Stacked Autoencoder

Einen Stacked Autoencoder mit Keras implementieren

Visualisieren der Rekonstruktionen

Den Fashion-MNIST-Datensatz visualisieren

Unüberwachtes Vortrainieren mit Stacked Autoencoder

Kopplung von Gewichten

Trainieren mehrerer Autoencoder nacheinander

Convolutional Autoencoder

Rekurrente Autoencoder

Denoising Autoencoder

Sparse Autoencoder

Variational Autoencoder

Fashion-MNIST-Bilder erzeugen

Generative Adversarial Networks

Schwierigkeiten beim Trainieren von GANs

Deep Convolutional GANs

Progressive wachsende GANs

StyleGANs

Übungen

18Reinforcement Learning

Lernen zum Optimieren von Belohnungen

Suche nach Policies

Einführung in OpenAI Gym

Neuronale Netze als Policies

Auswerten von Aktionen: Das Credit-Assignment-Problem

Policy-Gradienten

Markov-Entscheidungsprozesse

Temporal Difference Learning

Q-Learning

Erkundungspolicies

Approximatives Q-Learning und Deep-Q-Learning

Deep-Q-Learning implementieren

Deep-Q-Learning-Varianten

Feste Q-Wert-Ziele

Double DQN

Priorisiertes Experience Replay

Dueling DQN

Die TF-Agents-Bibliothek

TF-Agents installieren

TF-Agents-Umgebungen

Umgebungsspezifikationen

Umgebungswrapper und Atari-Vorverarbeitung

Trainingsarchitektur

Deep-Q-Netz erstellen

DQN-Agenten erstellen

Replay Buffer und Beobachter erstellen

Trainingsmetriken erstellen

Collect-Fahrer erstellen

Dataset erstellen

Trainingsschleife erstellen

Überblick über beliebte RL-Algorithmen

Übungen

19TensorFlow-Modelle skalierbar trainieren und deployen

Ein TensorFlow-Modell ausführen

TensorFlow Serving verwenden

Einen Vorhersageservice auf der GCP AI Platform erstellen

Den Vorhersageservice verwenden

Ein Modell auf ein Mobile oder Embedded Device deployen

Mit GPUs die Berechnungen beschleunigen

Sich eine eigene GPU zulegen

Eine mit GPU ausgestattete virtuelle Maschine einsetzen

Colaboratory

Das GPU-RAM verwalten

Operationen und Variablen auf Devices verteilen

Paralleles Ausführen auf mehreren Devices

Modelle auf mehreren Devices trainieren

Parallelisierte Modelle

Parallelisierte Daten

Mit der Distribution Strategies API auf mehreren Devices trainieren

Ein Modell in einem TensorFlow-Cluster trainieren

Große Trainingsjobs auf der Google Cloud AI Platform ausführen

Black Box Hyperparameter Tuning auf der AI Platform

Übungen

Vielen Dank!

ALösungen zu den Übungsaufgaben

BCheckliste für Machine-Learning-Projekte

CDas duale Problem bei SVMs

DAutodiff

EWeitere verbreitete Architekturen neuronaler Netze

FSpezielle Datenstrukturen

GTensorFlow-Graphen

Index

Vorwort

Der Machine-Learning-Tsunami

Im Jahr 2006 erschien ein Artikel (https://homl.info/136) von Geoffrey Hinton et al.,1 in dem vorgestellt wurde, wie sich ein neuronales Netz zum Erkennen handgeschriebener Ziffern mit ausgezeichneter Genauigkeit (> 98%) trainieren lässt. Ein Deep Neural Network ist ein (sehr) vereinfachtes Modell unseres zerebralen Kortex, und es besteht aus einer Folge von Schichten mit künstlichen Neuronen. Die Autoren nannten diese Technik »Deep Learning«. Zu dieser Zeit wurde das Trainieren eines Deep-Learning-Netzes im Allgemeinen als unmöglich angesehen,2 und die meisten Forscher hatten die Idee in den 1990ern aufgegeben. Dieser Artikel ließ das Interesse der wissenschaftlichen Gemeinde wieder aufleben, und schon nach kurzer Zeit zeigten weitere Artikel, dass Deep Learning nicht nur möglich war, sondern umwerfende Dinge vollbringen konnte, zu denen kein anderes Machine-Learning-(ML-)Verfahren auch nur annähernd in der Lage war (mithilfe enormer Rechenleistung und riesiger Datenmengen). Dieser Enthusiasmus breitete sich schnell auf weitere Teilgebiete des Machine Learning aus.

Zehn Jahre später hat Machine Learning ganze Industriezweige erobert: Es ist zu einem Herzstück heutiger Spitzentechnologien geworden und dient dem Ranking von Suchergebnissen im Web, kümmert sich um die Spracherkennung Ihres Smartphones, gibt Empfehlungen für Videos und schlägt den Weltmeister im Brettspiel Go. Über kurz oder lang wird ML vermutlich auch Ihr Auto steuern.

Machine Learning in Ihren Projekten

Deshalb interessieren Sie sich natürlich auch für Machine Learning und möchten an der Party teilnehmen!

Womöglich möchten Sie Ihrem selbst gebauten Roboter einen eigenen Denkapparat geben? Ihn Gesichter erkennen lassen? Oder lernen lassen, herumzulaufen?

Oder vielleicht besitzt Ihr Unternehmen Unmengen an Daten (Logdateien, Finanzdaten, Produktionsdaten, Sensordaten, Hotline-Statistiken, Personalstatistiken und so weiter), und Sie könnten vermutlich einige verborgene Schätze heben, wenn Sie nur wüssten, wo Sie danach suchen müssten, beispielsweise:

Was immer der Grund ist, Sie haben beschlossen, Machine Learning zu erlernen und in Ihren Projekten umzusetzen. Eine ausgezeichnete Idee!

Ziel und Ansatz

Dieses Buch geht davon aus, dass Sie noch so gut wie nichts über Machine Learning wissen. Unser Ziel ist es, Ihnen die Grundbegriffe, ein Grundverständnis und die Werkzeuge an die Hand zu geben, mit denen Sie Programme zum Lernen aus Daten entwickeln können.

Wir werden eine Vielzahl von Techniken besprechen, von den einfachsten und am häufigsten eingesetzten (wie der linearen Regression) bis zu einigen Deep-Learning-Verfahren, die regelmäßig Wettbewerbe gewinnen.

Anstatt eigene Übungsversionen jedes Algorithmus zu entwickeln, werden wir dazu für den Produktionsbetrieb geschaffene Python-Frameworks verwenden:

Dieses Buch verfolgt einen praxisorientierten Ansatz, bei dem Sie ein intuitives Verständnis von Machine Learning entwickeln, indem Sie sich mit konkreten Beispielen und ein klein wenig Theorie beschäftigen. Auch wenn Sie dieses Buch lesen können, ohne Ihren Laptop in die Hand zu nehmen, empfehlen wir Ihnen, mit den als Jupyter-Notebooks unter https://github.com/ageron/handson-ml2 verfügbaren Codebeispielen herumzuexperimentieren.

Voraussetzungen

Dieses Buch geht davon aus, dass Sie ein wenig Programmiererfahrung mit Python haben und dass Sie mit den wichtigsten wissenschaftlichen Bibliotheken in Python vertraut sind, insbesondere mit NumPy (http://numpy.org/), pandas (http://pandas.pydata.org/) und Matplotlib (http://matplotlib.org/).

Wenn Sie sich dafür interessieren, was hinter den Kulissen passiert, sollten Sie ein Grundverständnis von Oberstufenmathematik haben (Analysis, lineare Algebra, Wahrscheinlichkeiten und Statistik).

Sollten Sie Python noch nicht kennen, ist http://learnpython.org/ ein ausgezeichneter Ausgangspunkt. Das offizielle Tutorial auf python.org (https://docs.python.org/3/tutorial/) ist ebenfalls recht gut.

Falls Sie Jupyter noch nie verwendet haben, führt Sie Kapitel 2 durch die Installation und die Grundlagen: Es ist ein leistungsfähiges Werkzeug in Ihrem Werkzeugkasten.

Und für den Fall, dass Sie mit den wissenschaftlichen Bibliotheken für Python nicht vertraut sind, beinhalten die mitgelieferten Jupyter-Notebooks einige Tutorials. Es gibt dort auch ein kurzes Mathematiktutorial über lineare Algebra.

Wegweiser durch dieses Buch

Dieses Buch ist in zwei Teile aufgeteilt. Teil I behandelt folgende Themen:

Teil II widmet sich diesen Themen:

Der erste Teil baut vor allem auf Scikit-Learn auf, der zweite Teil verwendet TensorFlow.

Springen Sie nicht zu schnell ins tiefe Wasser: Auch wenn Deep Learning zweifelsohne eines der aufregendsten Teilgebiete des Machine Learning ist, sollten Sie zuerst Erfahrungen mit den Grundlagen sammeln. Außerdem lassen sich die meisten Aufgabenstellungen recht gut mit einfacheren Techniken wie Random Forests und Ensemble-Methoden lösen (die in Teil I besprochen werden). Deep Learning ist am besten für komplexe Aufgaben wie Bilderkennung, Spracherkennung und Sprachverarbeitung geeignet, vorausgesetzt, Sie haben genug Daten und Geduld.

Änderungen in der zweiten Auflage

Diese zweite Auflage hat sechs zentrale Ziele:

  1. Die Behandlung zusätzlicher ML-Themen: weitere Techniken zum unüberwachten Lernen (unter anderem Clustering, Anomalieerkennung, Dichteabschätzung und Mischmodelle), zusätzliche Techniken zum Trainieren von Deep Networks (einschließlich sich selbst normalisierender Netze), weitere Techniken der Bilderkennung (unter anderem Xception, SENet, Objekterkennung mit YOLO und semantische Segmentierung mit R-CNN), das Verarbeiten von Sequenzen mit Convolutional Neural Networks (CNNs, einschließlich WaveNet), Verarbeitung natürlicher Sprache mit rekurrenten neuronalen Netzen (RNNs), CNNs und Transformers, GANs.
  2. Zusätzliche Bibliotheken und APIs (Keras, die Data-API, TF-Agents für das Reinforcement Learning) sowie das Trainieren und Deployen von TF-Modellen im großen Maßstab mithilfe der Distribution Strategies API, TF Serving und Google Cloud AI Platform; zudem eine kurze Vorstellung von TF Transform, TFLite, TF Addons/Seq2Seq und TensorFlow.js.
  3. Vorstellen einiger der neuesten Forschungsergebnisse aus dem Deep Learning.
  4. Migrieren aller TensorFlow-Kapitel nach TensorFlow 2 und Verwenden der TensorFlow-Implementierung der Keras-API (tf.keras), wann immer das möglich ist.
  5. Aktualisieren der Codebeispiele auf die neuesten Versionen von Scikit-Learn, NumPy, pandas, Matplotlib und anderer Bibliotheken.
  6. Anpassen einiger Abschnitte zum besseren Verständnis und Beheben von Fehlern dank sehr vieler Rückmeldungen von Lesern.

Es wurden ein paar Kapitel hinzugefügt, andere wurden umgeschrieben, und ein paar wurden neu angeordnet. Unter https://homl.info/changes2 finden Sie detailliertere Angaben darüber, was sich in der zweiten Auflage geändert hat.

Ressourcen im Netz

Es gibt viele ausgezeichnete Ressourcen, mit deren Hilfe sich Machine Learning erlernen lässt. Der ML-Kurs auf Coursera (https://homl.info/ngcourse) von Andrew Ng ist faszinierend, auch wenn er einen beträchtlichen Zeitaufwand bedeutet (in Monaten).

Darüber hinaus finden Sie viele interessante Webseiten über Machine Learning, darunter natürlich den ausgezeichneten User Guide (https://homl.info/skdoc) von Scikit-Learn. Auch Dataquest (https://www.dataquest.io/), das sehr ansprechende Tutorials und ML-Blogs bietet, sowie die auf Quora (https://homl.info/1) aufgeführten ML-Blogs könnten Ihnen gefallen. Schließlich sind auf der Deep-Learning-Website (http://deeplearning.net/) Ressourcen aufgezählt, mit denen Sie mehr lernen können.

Natürlich bieten auch viele andere Bücher eine Einführung in Machine Learning, insbesondere:

Eine gute Möglichkeit zum Lernen sind schließlich Webseiten mit ML-Wettbewerben wie Kaggle.com (https://www.kaggle.com/). Dort können Sie Ihre Fähigkeiten an echten Aufgaben üben und Hilfe und Tipps von einigen der besten ML-Profis erhalten.

In diesem Buch verwendete Konventionen

Die folgenden typografischen Konventionen werden in diesem Buch verwendet:

Kursiv

Kennzeichnet neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateiendungen.

Konstante Zeichenbreite

Wird für Programmlistings und für Programmelemente in Textabschnitten wie Namen von Variablen und Funktionen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter verwendet.

Konstante Zeichenbreite, fett

Kennzeichnet Befehle oder anderen Text, den der Nutzer wörtlich eingeben sollte.

Konstante Zeichenbreite, kursiv

Kennzeichnet Text, den der Nutzer je nach Kontext durch entsprechende Werte ersetzen sollte.

Dieses Symbol steht für einen Tipp oder eine Empfehlung.

Dieses Symbol steht für einen allgemeinen Hinweis.

Dieses Symbol steht für eine Warnung oder erhöhte Aufmerksamkeit.

Codebeispiele

Es gibt eine Reihe von Jupyter-Notebooks voll mit zusätzlichem Material, wie Codebeispielen und Übungen, die zum Herunterladen unter https://github.com/ageron/handson-ml2 bereitstehen.

Einige der Codebeispiele im Buch lassen sich wiederholende Abschnitte oder Details weg, die offensichtlich sind oder nichts mit Machine Learning zu tun haben. Das sorgt dafür, dass Sie sich auf die wichtigen Teile des Codes konzentrieren können, und spart Platz, um mehr Themen unterzubringen. Wollen Sie sich die vollständigen Codebeispiele betrachten, finden Sie diese in den Jupyter-Notebooks.

Geben die Codebeispiele etwas aus, wird dies mit Python-Prompts (>>> und ...) wie in einer Python-Shell dargestellt, um den Code deutlich von den Ausgaben trennen zu können. So definiert beispielsweise folgender Code die Funktion square(), rechnet dann damit und gibt das Quadrat von 3 aus:

>>> def square(x):

... return x ** 2

...

>>> result = square(3)

>>> result

9

Gibt Code nichts aus, werden keine Prompts verwendet. Aber das Ergebnis wird manchmal als Kommentar angegeben, wie zum Beispiel hier:

def square(x):

return x ** 2

result = square(3) # Ergebnis ist 9

Verwenden von Codebeispielen

Dieses Buch ist dazu da, Ihnen beim Erledigen Ihrer Arbeit zu helfen. Im Allgemeinen dürfen Sie die Codebeispiele aus diesem Buch in Ihren eigenen Programmen und der dazugehörigen Dokumentation verwenden. Sie müssen uns dazu nicht um Erlaubnis fragen, solange Sie nicht einen beträchtlichen Teil des Codes reproduzieren. Beispielsweise benötigen Sie keine Erlaubnis, um ein Programm zu schreiben, in dem mehrere Codefragmente aus diesem Buch vorkommen. Wollen Sie dagegen eine CD-ROM mit Beispielen aus Büchern von O’Reilly verkaufen oder verteilen, benötigen Sie eine Erlaubnis. Eine Frage zu beantworten, indem Sie aus diesem Buch zitieren und ein Codebeispiel wiedergeben, benötigt keine Erlaubnis. Eine beträchtliche Menge Beispielcode aus diesem Buch in die Dokumentation Ihres Produkts aufzunehmen, bedarf hingegen einer Erlaubnis.

Wir freuen uns über Zitate, verlangen diese aber nicht. Ein Zitat enthält Titel, Autor, Verlag und ISBN. Beispiel: »Praxiseinstieg Machine Learning mit Scikit-Learn, Keras und TensorFlow von Aurélien Géron (O’Reilly). Copyright 2020, ISBN 978-3-96009-124-0.«

Wenn Sie glauben, dass Ihre Verwendung von Codebeispielen über die übliche Nutzung hinausgeht oder außerhalb der oben vorgestellten Nutzungsbedingungen liegt, kontaktieren Sie uns bitte unter kommentar@oreilly.de.

Danksagungen

In meinen wildesten Träumen hätte ich mir niemals vorgestellt, dass die erste Auflage dieses Buchs solch eine Verbreitung finden würde. Ich habe so viele Nachrichten von Lesern erhalten – oft mit Fragen, manche mit freundlichen Hinweisen auf Fehler und die meisten mit ermutigenden Worten. Ich kann gar nicht sagen, wie dankbar ich all diesen Lesern für ihre Unterstützung bin. Vielen, vielen Dank! Scheuen Sie sich nicht, sich auf GitHub (https://homl.info/issues2) zu melden, wenn Sie Fehler in den Codebeispielen finden (oder einfach etwas fragen wollen) oder um auf Fehler im Text aufmerksam (https://homl.info/errata2) zu machen. Manche Leser haben mir auch geschrieben, wie dieses Buch ihnen dabei geholfen hat, ihren ersten Job zu bekommen oder ein konkretes Problem zu lösen, an dem sie gearbeitet haben. Ich finde ein solches Feedback unglaublich motivierend. Hat Ihnen dieses Buch geholfen, würde ich mich freuen, wenn Sie mir Ihre Geschichte erzählen würden – entweder privat (zum Beispiel über LinkedIn (https://www.linkedin.com/in/aurelien-geron/)) oder öffentlich (beispielsweise in einem Tweet oder über ein Amazon-Review (https://homl.info/amazon2)).

Ich bin all den fantastischen Menschen unglaublich dankbar, die in ihrem geschäftigen Leben die Zeit gefunden haben, mein Buch im Detail gegenzulesen. Insbesondere möchte ich François Chollet dafür danken, dass er alle Kapitel zu Keras und TensorFlow kontrolliert und mir großartiges und detailliertes Feedback gegeben hat. Da Keras eine meiner wichtigsten Ergänzungen dieser zweiten Auflage ist, war die Review durch den Autor unbezahlbar. Ich empfehle Ihnen François’ Buch Deep Learning mit Python und Keras: Das Praxis-Handbuch vom Entwickler der Keras-Bibliothek (mitp Professional): Es bietet die Präzision, Klarheit und Tiefe, die auch die Keras-Bibliothek selbst besitzt. Besonderer Dank geht ebenfalls an Ankur Patel, der jedes Kapitel dieser zweiten Auflage begutachtet und mir ausgezeichnetes Feedback gegeben hat, insbesondere zu Kapitel 9, das sich um unüberwachtes Lernen dreht. Er könnte glatt ein ganzes Buch zu dem Thema schreiben … Moment mal, das hat er ja! Schauen Sie sich mal Praxisbuch Unsupervised Learning: Machine-Learning-Anwendungen für ungelabelte Daten mit Python programmieren (https://www.oreilly.de/buecher/13534/9783960091271-praxisbuch-unsupervised-learning.html) (O’Reilly) an. Ein großes Dankeschön auch an Olzhas Akpambetov, der alle Kapitel im zweiten Teil des Buchs begutachtet, sehr viel Code getestet und viele großartige Verbesserungsvorschläge gemacht hat. Ich bin dankbar, dass Mark Daoust, Jon Krohn, Dominic Monn und Josh Patterson den zweiten Teil des Buchs so genau begutachtet und ihre Erfahrungen eingebracht haben. Sie ließen keinen Stein auf dem anderen und lieferten ausgezeichnete Hinweise.

Beim Schreiben dieser zweiten Auflage hatte ich das Glück, sehr viel Hilfe von Mitgliedern des TensorFlow-Teams zu bekommen, insbesondere von Martin Wicke, der unermüdlich Dutzende meiner Fragen beantwortet und den Rest an die richtigen Leute weitergeleitet hat, unter anderen an Karmel Allison, Paige Bailey, Eugene Brevdo, William Chargin, Daniel »Wolff« Dobson, Nick Felt, Bruce Fontaine, Goldie Gadde, Sandeep Gupta, Priya Gupta, Kevin Haas, Konstantinos Katsiapis, Viacheslav Kovalevskyi, Allen Lavoie, Clemens Mewald, Dan Moldovan, Sean Morgan, Tom O’Malley, Alexandre Passos, André Susano Pinto, Anthony Platanios, Oscar Ramirez, Anna Revinskaya, Saurabh Saxena, Ryan Sepassi, Jiri Simsa, Xiaodan Song, Christina Sorokin, Dustin Tran, Todd Wang, Pete Warden (der auch die erste Auflage begutachtet hat), Edd Wilder-James und Yuefeng Zhou, die alle außerordentlich hilfreich waren. Ein großer Dank an euch alle und auch an alle anderen Mitglieder des TensorFlow-Teams – nicht nur für eure Hilfe, sondern auch dafür, dass ihr solch eine tolle Bibliothek geschaffen habt. Ein besonderer Dank geht an Irene Giannoumis und Robert Crowe vom TFCX-Team, die die Kapitel 13 und 19 im Detail durchgearbeitet haben.

Ich danke auch den fantastischen Menschen bei O’Reilly, insbesondere Nicole Taché für ihr aufschlussreiches, immer freundliches, ermutigendes und hilfreiches Feedback. Eine bessere Lektorin hätte ich mir nicht vorstellen können. Ein großer Dank geht an Michele Cronin, die zu Beginn dieser zweiten Auflage sehr hilfreich (und geduldig) war, und an Kristen Brown, Production Editor für die zweite Auflage, die sie auf allen Schritten begleitet hat (sie hat auch Korrekturen und Aktualisierungen jedes Nachdrucks der ersten Auflage koordiniert). Ich danke Rachel Monaghan und Amanda Kersey für ihr umfassendes Copyediting (der ersten bzw. zweiten Auflage) und Johnny O’Toole, der die Beziehung zu Amazon gemanagt und viele meiner Fragen beantwortet hat. Dank geht an Marie Beaugureau, Ben Lorica, Mike Loukides und Laurel Ruma dafür, dass sie an dieses Projekt geglaubt und mir geholfen haben, den Rahmen abzustecken. Ich danke Matt Hacker und dem gesamten Atlas-Team für das Beantworten aller meiner technischen Fragen zu Formatierung, AsciiDoc und LaTeX sowie Nick Adams, Rebecca Demarest, Rachel Head, Judith McConville, Helen Monroe, Karen Montgomery, Rachel Roumeliotis und allen bei O’Reilly, die zu diesem Buch beigetragen haben.

Ich möchte auch meinen früheren Kollegen bei Google danken, insbesondere dem Team zur Klassifikation von YouTube-Videos, von denen ich sehr viel über Machine Learning gelernt habe. Ohne sie hätte ich die erste Auflage niemals starten können. Besonderer Dank gebührt meinen persönlichen ML-Gurus: Clément Courbet, Julien Dubois, Mathias Kende, Daniel Kitachewsky, James Pack, Alexander Pak, Anosh Raj, Vitor Sessak, Wiktor Tomczak, Ingrid von Glehn und Rich Washington. Und danke an alle anderen, mit denen ich bei YouTube und in den großartigen Google-Forschungsteams in Mountain View zusammengearbeitet habe. Vielen Dank auch an Martin Andrews, Sam Witteveen und Jason Zaman, dass sie mich in ihre Google-Developer-Experts-Gruppe in Singapur aufgenommen haben – mit freundlicher Unterstützung durch Soonson Kwon – und für all die tollen Diskussionen über Deep Learning und TensorFlow. Jeder, der in Singapur an Deep Learning interessiert ist, sollte auf jeden Fall das Deep Learning Singapore Meetup (https://homl.info/meetupsg) besuchen. Jason verdient besonderen Dank für sein TFLite-Know-how, das in Kapitel 19 eingeflossen ist!