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
Konzepte, Tools und Techniken
für intelligente Systeme
Deutsche Übersetzung von
Kristian Rother & Thomas Demmig
Aurélien Géron
Lektorat: Alexandra Follenius
Übersetzung: Kristian Rother, Thomas Demmig
Korrektorat: Sibylle Feldmann, www.richtiger-text.de
Satz: III-satz, www.drei-satz.de
Herstellung: Stefanie Weidner
Umschlaggestaltung: Karen Montgomery, Michael Oréal, www.oreal.de
Bibliografische Information der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.
ISBN:
Print 978-3-96009-124-0
PDF 978-3-96010-339-4
ePub 978-3-96010-340-0
mobi 978-3-96010-341-7
2. Auflage
Translation Copyright für die deutschsprachige Ausgabe © 2020 dpunkt.verlag GmbH
Wieblinger Weg 17
69123 Heidelberg
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:
Dieses Buch wurde auf PEFC-zertifiziertem Papier aus nachhaltiger Waldwirtschaft gedruckt. Der Umwelt zuliebe verzichten wir zusätzlich auf die Einschweißfolie.
Schreiben Sie uns:
Falls Sie Anregungen, Wünsche und Kommentare haben, lassen Sie es uns wissen: kommentar@oreilly.de.
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
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
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.
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!
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.
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.
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. |
Diese zweite Auflage hat sechs zentrale Ziele:
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.
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.
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. |
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
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.
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!