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 |
Maschinen das Malen, Schreiben
und Komponieren beibringen
Deutsche Übersetzung von
Marcus Fraaß und Konstantin Mack
David Foster
Lektorat: Alexandra Follenius
Übersetzung: Marcus Fraaß, Konstantin Mack
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: |
|
978-3-96009-128-8 |
|
978-3-96010-356-1 |
|
ePub |
978-3-96010-354-7 |
mobi |
978-3-96010-355-4 |
1. 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 Generative Deep Learning, ISBN 9781492041948 © 2019 Applied Data Science Partners Ltd. 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 IEinführung ins Generative Deep Learning
1Generative Modellierung
Was ist generative Modellierung?
Vergleich der generativen und diskriminativen Modellierung
Fortschritte im maschinellen Lernen
Der Vormarsch der generativen Modellierung
Das generative Modellierungskonzept
Wahrscheinlichkeitsbasierte generative Modelle
Hallo Wrodl!
Ihr erstes wahrscheinlichkeitsbasiertes generatives Modell
Das naive Bayes-Modell
Hallo Wrodl! – Fortsetzung
Die Herausforderungen der generativen Modellierung
Representation Learning
Einrichten Ihrer Arbeitsumgebung
Zusammenfassung
2Deep Learning
Strukturierte und unstrukturierte Daten
Tiefe neuronale Netzwerke
Keras und TensorFlow
Ihr erstes tiefes neuronales Netzwerk
Einlesen der Daten
Erstellen des Modells
Kompilierung des Modells
Trainieren des Modells
Bewertung des Modells
Verbesserung des Modells
Konvolutionsschichten
Batch-Normalisierung
Drop-out-Schichten
Zusammenführen aller Teilelemente
Zusammenfassung
3Variational Autoencoder
Die Kunstausstellung
Autoencoder
Ihr erster Autoencoder
Der Encoder
Der Decoder
Verbinden von Encoder und Decoder
Analyse des Autoencoders
Die »Variationale« Kunstausstellung
Erstellen eines Variational Autoencoders
Der Encoder
Die Verlustfunktion
Analyse des Variational Autoencoders
Erzeugen von Gesichtern mithilfe von VAEs
Trainieren des VAE
Analyse des VAE
Erzeugen neuer Gesichter
Arithmetik im latenten Raum
Verschmelzen von Gesichtern
Zusammenfassung
4Generative Adversarial Networks
Ganimals
Einführung in GANs
Ihr erstes GAN
Der Diskriminator
Der Generator
Trainieren des GAN
GAN-Herausforderungen
Oszillierender Verlust
Mode-Collapse
Uninformativer Verlust
Hyperparameter
Bewältigung der GAN-Herausforderungen
Wasserstein-GAN
Wasserstein-Verlust
Die Lipschitz-Bedingung
Gewichte beschränken
Training des WGAN
Analyse des WGAN
WGAN-GP
Der Gradient-Penalty-Verlust
Analyse des WGAN-GP
Zusammenfassung
Teil IIMaschinen das Malen, Schreiben, Komponieren und Spielen beibringen
5Malen
Äpfel und Orangen
CycleGAN
Ihr erstes CycleGAN
Überblick
Die Generatoren (U-Net)
Die Diskriminatoren
Kompilieren des CycleGAN
Trainieren des CycleGAN
Analyse des CycleGAN
Erstellen eines CycleGAN, das wie Monet malt
Die Generatoren (ResNet)
Analyse des CycleGAN
Neuronaler Stiltransfer
Inhaltsverlust
Stilverlust
Gesamt-Varianz-Verlust
Ausführen des neuronalen Stiltransfers
Analyse des neuronalen Stiltransfer-Modells
Zusammenfassung
6Schreiben
Die literarische Gesellschaft für lästige Bösewichte e. V.
Long-Short-Term-Memory-Netzwerk
Ihr erstes LSTM-Netzwerk
Tokenisierung
Erstellen des Datensatzes
Die Architektur des LSTM-Netzwerks
Die Embedding-Schicht
Die LSTM-Schicht
Die Zelle eines LSTM-Netzwerks
Einen neuen Text erzeugen
Erweiterungen von RNNs
Hintereinandergeschaltete rekurrente Netzwerke
Gated Recurrent Units
Bidirektionale Zellen
Encoder-Decoder-Modelle
Ein Frage-Antwort-Generator
Ein Frage-Antwort-Datensatz
Die Modellarchitektur
Inferenz
Modellergebnisse
Zusammenfassung
7Komponieren
Vorabklärungen
Musiknotation
Ihr erstes Musik erzeugendes RNN
Der Aufmerksamkeitsmechanismus
Erstellen eines Aufmerksamkeitsmechanismus in Keras
Analyse des RNN mit Aufmerksamkeitsmechanismus
Aufmerksamkeit in Encoder-Decoder-Netzwerken
Erzeugen mehrstimmiger Musiktitel
Das »Musikorgan«
Ihr erstes MuseGAN
Der Generator des MuseGAN
Akkorde, Stil, Melodie und Groove
Der Taktgenerator
Zusammenführen aller Elemente
Der Kritiker
Analyse des MuseGAN
Zusammenfassung
8Spielen
Reinforcement Learning
OpenAI Gym
Architektur von World Models
Der Variational Autoencoder
Das MDN-RNN
Der Controller
Setup
Überblick über den Trainingsprozess
Sammeln zufälliger Roll-out-Daten
Trainieren des VAE
Die Architektur des VAE
Untersuchung des VAE
Sammeln von Daten zum Trainieren des RNN
Trainieren des MDN-RNN
Die Architektur des MDN-RNN
Ziehen des nächsten z und der Belohnung aus dem MDN-RNN
Die MDN-RNN-Verlustfunktion
Trainieren des Controllers
Die Architektur des Controllers
CMA-ES
Parallelisierung von CMA-ES
Ausgabe des Controller-Trainings
In-Traum-Training
In-Traum-Training des Controllers
Herausforderungen des In-Traum-Trainings
Zusammenfassung
9Die Zukunft der generativen Modellierung
Fünf Jahre Fortschritt
Der Transformer
Positionscodierung
Mehrköpfige Aufmerksamkeit
Der Decoder
Analyse des Transformers
BERT
GPT-2
MuseNet
Fortschritte bei der Bilderzeugung
ProGAN
GAN mit Selbstaufmerksamkeitsmechanismus (SAGAN)
BigGAN
StyleGAN
Anwendungen der generativen Modellierung
Durch KI geschaffene Kunst
Durch KI geschaffene Musik
10Schlussbemerkung
Index
Das, was ich nicht erschaffen kann, verstehe ich nicht.
– Richard Feynman
Ein essenzieller Teil des menschlichen Wesens ist unsere Fähigkeit, Dinge zu erschaffen. Seit unseren frühesten Tagen als Höhlenbewohner haben wir nach Möglichkeiten gesucht, originelle und schöne Kreationen zu schaffen. Die Urmenschen taten dies in Form von Höhlenmalereien von wilden Tieren und abstrakten Mustern, die sie mit Pigmenten sorgfältig und methodisch auf Felsen anbrachten. Der Zeit der Romantik entstammen die meisterhaften Tschaikowsky-Symphonien, die Triumph- und Tragödiengefühle mithilfe von Klangwellen wecken, die zu schönen Melodien und Harmonien verschmelzen. Heutzutage laufen wir um Mitternacht in die Buchhandlungen, um Geschichten über einen fiktiven Zauberer zu kaufen. Denn die Kombination von Buchstaben bringt eine Geschichte hervor, die uns so sehr fesselt, dass wir unbedingt die nächsten Abenteuer unseres Helden erfahren möchten.
Daher ist es nicht verwunderlich, dass die Menschheit nun beginnt, die ultimative Frage nach der Kreativität zu stellen: Können wir etwas erzeugen, das selbst über Kreativität verfügt?
Genau diese Frage soll die generative Modellierung beantworten. Dank neuester Fortschritte in Methodik und Technologie sind wir heute dazu in der Lage, Maschinen zu bauen, die originelle Kunstwerke in einem vorgegebenen Stil malen, zusammenhängende Absätze mit übergreifender Struktur schreiben, angenehm klingende Musik komponieren und Siegerstrategien für komplexe Spiele entwickeln können, indem sie imaginäre Zukunftsszenarien generieren. Dies ist nur der Beginn einer generativen Revolution, die uns keine andere Wahl lässt, als Antworten auf einige der größten Fragen zur Wirkungsweise von Kreativität zu finden und dadurch letztlich auch zu beleuchten, was es bedeutet, ein Mensch zu sein.
Kurz gesagt, nie war die Zeit besser als jetzt, um mehr über generative Modellierung zu lernen – also lassen Sie uns loslegen!
Dieses Buch behandelt die wichtigsten Methoden, die die generative Modellierungslandschaft in den letzten Jahren geprägt haben und durch die wir beeindruckende Fortschritte bei kreativen Aufgaben erzielen konnten. Zusätzlich zur Behandlung der Grundlagen der generativen Modellierung werden wir funktionsfähige Beispiele einiger der Schlüsselmodelle der Fachliteratur erstellen und bei jedem Modell Schritt für Schritt zusammen durch die Codebasis gehen.
Im gesamten Buch finden Sie kurze, sinnbildliche Geschichten, die dabei helfen sollen, die Funktionsweise einiger der Modelle zu erklären. Meiner Meinung nach besteht eine der besten Möglichkeiten, eine neue abstrakte Theorie zu lehren, darin, sie zuerst in etwas nicht ganz so Abstraktes umzuwandeln, etwa in eine Geschichte, bevor man in die technischen Details eintaucht. Dadurch wird die Theorie in diesem Zusammenhang klarer, da sie Menschen, Handlungen und Emotionen einbezieht, die alle gut nachvollziehbar sind, statt neuronaler Netze, Backpropagation und Verlustfunktionen, die allesamt abstrakte Konstrukte darstellen.
Die fiktive Geschichte und die Erklärung der Modelltheorie beschreiben beide die gleiche Funktionsweise, aber auf zwei verschiedene Arten. Sie werden es daher vielleicht nützlich finden, beim Lernen der Modelltheorie auf die jeweilige Geschichte zurückzugreifen. Sollten Sie bereits mit einer bestimmten Methode vertraut sein, werden Sie bestimmt Spaß daran finden, die Parallelen der einzelnen Modellelemente innerhalb der Geschichte zu finden!
Im ersten Teil dieses Buchs werde ich Ihnen die wichtigsten Methoden vorstellen, die wir bei der Erstellung generativer Modelle verwenden, einschließlich eines Überblicks über Deep Learning, Variational Autoencoder und Generative Adversarial Networks. Im zweiten Teil werden wir diese Methoden verwenden, um verschiedene kreative Aufgaben wie Malen, Schreiben und Komponieren von Musik mithilfe von Modellen wie CycleGAN, Encoder-Decoder-Modellen und MuseGAN zu bewältigen. Darüber hinaus werden wir sehen, wie die generative Modellierung zur Optimierung der Spielstrategie für ein Spiel eingesetzt werden kann (World Models). Außerdem werfen wir einen Blick auf topaktuelle generative Architekturen wie StyleGAN, BigGAN, BERT, GPT-2 und MuseNet.
Dieses Buch setzt voraus, dass Sie eine gewisse Erfahrung in der Programmierung mit Python mitbringen. Wenn Sie mit Python nicht vertraut sind, gelingt der Einstieg über LearnPython.org (https://www.learnpython.org) am besten. Darüber hinaus gibt es unzählige kostenlose Onlineressourcen, die es Ihnen ermöglichen, sich genügend Python-Wissen anzueignen, um mit den Beispielen in diesem Buch arbeiten zu können.
Da einige der Modelle in mathematischer Notation beschrieben werden, ist es sinnvoll, grundlegende Kenntnisse in linearer Algebra (z. B. Matrixmultiplikation etc.) und der Wahrscheinlichkeitstheorie zu haben.
Schließlich benötigen Sie noch eine Rechenumgebung, in der Sie die Codebeispiele aus dem GitHub-Repository (https://github.com/davidADSP/GDL_code) des Buchs ausführen können. Ich habe bewusst darauf geachtet, dass alle Beispiele in diesem Buch eine nicht zu große Menge an Rechenressourcen für das Trainieren der Modelle benötigen. Es gibt den Mythos, dass Sie eine GPU benötigen, um Deep-Learning-Modelle zu trainieren – dies ist natürlich hilfreich und beschleunigt das Trainieren, aber es ist keineswegs unbedingt notwendig. Wenn Sie noch neu im Deep Learning unterwegs sind, ermutige ich Sie, sich zunächst mit den Grundlagen zu befassen, indem Sie mit kleinen Beispielen auf Ihrem Laptop experimentieren, bevor Sie Geld und Zeit für die Recherche von Hardware ausgeben, um das Trainieren der Modelle zu beschleunigen.
Die folgenden zwei Bücher kann ich Ihnen wärmstens empfehlen als allgemeine Einführung in Machine Learning und Deep Learning:
Die meisten der Forschungsartikel in diesem Buch kommen von arXiv (https://arxiv.org), einem kostenlosen Archiv für wissenschaftliche Forschungsarbeiten. Es ist heutzutage üblich, dass Autoren ihre Forschungsarbeiten in arXiv posten, bevor sie vollständig begutachtet werden. Indem Sie dort die jüngsten Veröffentlichungen verfolgen, können Sie sich hervorragend über die neuesten Entwicklungen in diesem Bereich informieren.
Darüber hinaus kann ich Ihnen auch die Webseite Papers with Code (https://paperswithcode.com) empfehlen, auf der Sie die neuesten Ergebnisse in einer Vielzahl von Aufgaben des maschinellen Lernens finden können, sowie Links zu den Forschungspapieren und offiziellen GitHub-Repositories. Dies ist eine ausgezeichnete Ressource, um herauszufinden, welche Methoden derzeit die besten Ergebnisse in einer Reihe von Aufgaben erzielen, und sie hat mir bei der Entscheidung geholfen, welche Methoden in diesem Buch behandelt werden sollen.
Zu guter Letzt ist Google Colaboratory (https://colab.research.google.com) eine nützliche Ressource für das Trainieren von Deep-Learning-Modellen auf schnellerer Hardware. Dies ist eine kostenlose Jupyter-Notebook-Umgebung, die keine Einrichtung erfordert und vollständig in der Cloud läuft. Sie können dem Notebook sagen, dass es auf einer kostenlos zur Verfügung gestellten GPU laufen soll, und das für bis zu zwölf Stunden Laufzeit. Es ist zwar nicht unbedingt notwendig, die Beispiele in diesem Buch auf einem Grafikprozessor auszuführen, es kann aber helfen, den Trainingsprozess zu beschleunigen. So oder so, Colab bietet Ihnen die großartige Möglichkeit, kostenlos auf GPU-Ressourcen zuzugreifen.
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 und Umgebungsvariablen sowie für 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 allgemeinen Hinweis. |
Zusätzliche Materialien (Codebeispiele, Übungen und so weiter) können Sie von der Adresse https://github.com/davidADSP/GDL_code herunterladen. Der Repository-Branch master beruht auf der TensorFlow-Backendversion 1.14. Es gibt einen zusätzlichen Branch namens tensorflow_2, in dem der Code mit der Ende September 2019 erschienenen TensorFlow-Version 2.0 kompatibel ist.
Dieses Buch dient dazu, 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, beispielsweise: »Generatives Deep Learning von David Foster (O’Reilly). Copyright 2019 Applied Data Science Partners Ltd., ISBN 978-3-96009-128-8«.
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.
Es gibt so viele Menschen, denen ich für ihre Hilfe beim Schreiben dieses Buchs danken möchte.
Zunächst möchte ich allen danken, die sich die Zeit genommen haben, das Buch fachlich zu begutachten – insbesondere Luba Elliott, Darren Richardson, Eric George, Chris Schon, Sigurður Skúli Sigurgeirsson, Hao-Wen Dong, David Ha und Lorna Barclay.
Ein großes Dankeschön geht auch an meine Kollegen bei Applied Data Science Partners, Ross Witeszczak, Chris Schon, Daniel Sharp und Amy Bull. Ihre Geduld mit mir, während ich mir die Zeit genommen habe, das Buch fertigzustellen, habe ich sehr geschätzt, und ich freue mich sehr auf all die Machine-Learning-Projekte, die wir in Zukunft gemeinsam angehen werden! Besonderer Dank gilt Ross – hätten wir uns nicht entschieden, zusammen ein Unternehmen zu gründen, wäre dieses Buch vielleicht nie entstanden. Danke also, dass du an mich als deinen Geschäftspartner geglaubt hast!
Ich möchte auch jedem danken, der mir jemals etwas Mathematisches beigebracht hat – ich hatte das große Glück, fantastische Mathematiklehrer in der Schule zu haben, die mein Interesse an diesem Fach geweckt und mich dazu ermutigt haben, es an der Universität weiterzuverfolgen. Ich möchte Ihnen für Ihr großes Engagement danken und dafür, Ihr Wissen über das Thema mit mir geteilt zu haben.
Ein großes Dankeschön geht auch an die Mitarbeiter von O’Reilly, die mich durch den Prozess des Schreibens dieses Buchs geführt haben. Ein besonderer Dank geht an Michele Cronin, die bei jedem Schritt dabei war, nützliches Feedback gab und mich freundlich daran erinnerte, die Kapitel weiter zu vervollständigen! Außerdem möchte ich Katie Tozer, Rachel Head und Melanie Yarbrough danken, weil sie das Buch in Produktion gebracht haben, und Mike Loukides, weil er sich als Erstes an mich gewandt hatte, um mich zu fragen, ob ich nicht ein Buch schreiben wolle. Sie alle haben dieses Projekt von Anfang an so toll unterstützt, und ich möchte Ihnen dafür danken, dass Sie mir eine Plattform zur Verfügung gestellt haben, auf der ich über etwas schreiben kann, das ich liebe.
Während des gesamten Schreibprozesses war meine Familie eine ständige Quelle der Ermutigung und Unterstützung. Ein großes Dankeschön geht an meine Mutter, Gillian Foster, für die Überprüfung jeder einzelnen Textzeile auf Tippfehler und dafür, dass sie mir damals überhaupt erst das Addieren beigebracht hatte! Deine Liebe zum Detail war sehr hilfreich beim Korrekturlesen dieses Buchs, und ich bin überaus dankbar für all die Möglichkeiten, die du und Dad mir gegeben haben. Mein Vater, Clive Foster, hat mir erst mal überhaupt gezeigt, wie man einen Computer programmiert – dieses Buch ist voller praktischer Beispiele, und das dank seiner Geduld damals, während ich in BASIC herumfummelte und versuchte, als Teenager Fußballspiele zu programmieren. Mein Bruder Rob Foster ist das bescheidenste Genie, das Sie je finden werden, besonders in der Linguistik – Gespräche mit ihm über KI und die Zukunft des textbasierten maschinellen Lernens waren extrem hilfreich für mich. Zum Schluss möchte ich meiner Oma danken, die eine ständige Quelle der Inspiration und des Spaßes für uns alle ist. Ihre Liebe zur Literatur ist einer der Gründe dafür, dass ich mich überhaupt dafür entschieden habe, dieses Buch zu schreiben.
Abschließend möchte ich meiner Verlobten (und bald Frau) Lorna Barclay danken. Neben der fachlichen Überprüfung jedes Worts in diesem Buch hat sie mich während des gesamten Schreibprozesses endlos unterstützt, sei es, dass sie mir Tee zubereitet oder verschiedene Snacks gebracht hat oder mir generell dabei half, dieses Buch durch ihre akribische Liebe zum Detail und ihr unglaubliches Expertenwissen über Statistik und maschinelles Lernen zu einem besseren Leitfaden für die generative Modellierung zu machen. Ohne dich hätte ich dieses Projekt mit Sicherheit nicht fertigstellen können, und ich bin dir sehr dankbar für die Zeit, die du investiert hast, um mir bei der Umstrukturierung und Erweiterung der Teile des Buchs zu helfen, die noch das gewisse Etwas benötigten. Ich verspreche dir, dass ich mindestens für ein paar Wochen nach der Veröffentlichung am Esstisch nicht mehr über generative Modellierung sprechen werde.
Die ersten vier Kapitel dieses Buchs stellen Ihnen die wichtigsten Grundtechniken vor, die Sie benötigen, um generative Deep-Learning-Modelle zu erzeugen.
In Kapitel 1 werfen wir zunächst einen detaillierten Blick auf das Themenfeld der generativen Modellierung und erfassen die Problemstellung aus wahrscheinlichkeitstheoretischer Sicht. Wir werden dann unser erstes Beispiel eines einfachen probabilistischen generativen Modells untersuchen und analysieren, warum wir Deep-Learning-Techniken einsetzen müssen, wenn die Komplexität der generativen Aufgabe steigt.
Kapitel 2 bietet einen Leitfaden zu den Werkzeugen und Methoden des Deep Learning, die Sie für komplexere generative Modelle benötigen. Dies soll mehr ein praktischer Deep-Learning-Leitfaden sein als eine theoretische Analyse des Fachgebiets. Im Besonderen werde ich Ihnen hier Keras vorstellen, ein Framework zu Erzeugung neuronaler Netze, mit dem einige der modernsten neuronalen Netzwerkarchitekturen aus der Literatur konstruiert und trainiert werden können.
In Kapitel 3 werfen wir einen Blick auf unser erstes generatives Deep-Learning-Modell, den Variational Autoencoder. Diese effektive Methode ermöglicht es uns, nicht nur realistische Gesichter zu erzeugen, sondern auch bestehende Bilder zu verändern – zum Beispiel durch das Hinzufügen eines Lächelns oder die Änderung der Haarfarbe.
Kapitel 4 untersucht eine der erfolgreichsten generativen Modellierungstechniken der letzten Jahre, das Generative Adversarial Network. Dieses elegante Framework für eine Modellierungsaufgabe ist der Motor für die meisten modernen generativen Modelle. Wir werden sehen, wie es verfeinert und angepasst wurde, um die Grenzen der generativen Modellierung kontinuierlich zu erweitern.
Dieses Kapitel bietet eine allgemeine Einführung in die generative Modellierung. Zunächst verdeutlichen wir, was es bedeutet, wenn ein Modell generativ ist, und stellen die Unterschiede zu den weiter verbreiteten diskriminativen Modellen heraus. Im Anschluss werden der Rahmen und die mathematischen Kernideen vorgestellt, mit denen wir unseren allgemeinen Ansatz für Fragestellungen, die eine generative Lösung erfordern, strukturieren können.
Auf dieser Grundlage entwickeln wir anschließend unser erstes Beispiel für ein wahrscheinlichkeitsbasiertes generatives Modell (Naive Bayes). Wir werden feststellen, dass dadurch neue Beispiele erzeugt werden, die nicht unserem Trainingsdatensatz angehören. Zugleich untersuchen wir die Gründe dafür, dass diese Art von Modellierung mit zunehmender Größe und Komplexität möglicher Gestaltungsvarianten fehlschlagen kann.
Ein generatives Modell kann im Wesentlichen wie folgt definiert werden:
Ein generatives Modell beschreibt, wie ein Datensatz im Rahmen eines Wahrscheinlichkeitsmodells erzeugt wird. Die aus diesem Modell gewonnenen Stichproben ermöglichen uns, neue Daten zu generieren.
Angenommen, wir hätten einen Datensatz mit Bildern von Pferden. Wir möchten ein Modell entwickeln, das ein neues Bild von einem Pferd erzeugen kann, das nie existiert hat, aber trotzdem echt aussieht, weil das Modell die allgemeinen Prinzipien gelernt hat, die das Aussehen eines Pferdes bestimmen. Exakt das ist die Art von Aufgabenstellung, die sich mithilfe der generativen Modellierung lösen lässt. Abbildung 1-1 veranschaulicht den generativen Modellierungsprozess an unserem Beispiel.
Zuerst benötigen wir einen Datensatz, der aus zahlreichen Beispielen der zu erzeugenden Entität besteht. Wir sprechen in diesem Zusammenhang vom Trainingsdatensatz, bei dem jeder dieser Datenpunkte als Beobachtung bezeichnet wird.
Jede Beobachtung besteht aus vielen Merkmalen – bei einer Bilderzeugungsaufgabe sind die Merkmale üblicherweise die jeweiligen Werte der einzelnen Pixel. Unser Ziel ist es, ein Modell zu erstellen, das neue Merkmale erzeugen kann, die so aussehen, als wären sie nach den gleichen Regeln wie die Originaldaten erstellt worden. Rein konzeptionell ist dies für die Bilderzeugung eine unglaublich schwierige Aufgabe – bedenkt man, wie vielfältig die einzelnen Pixelwerte zugeordnet werden können und wie vergleichsweise gering dagegen die Anzahl der Anordnungen ist, die ein Bild der Entität erzeugen, die wir reproduzieren wollen.
Ein generatives Modell sollte zudem probabilistisch und nicht deterministisch sein. Wenn unser Modell nur eine fest vorgegebene Berechnung umfasst, wie z. B. die Berechnung des Durchschnittswerts jedes Pixels im Datensatz, ist es nicht generativ, da das Modell jedes Mal die gleiche Ausgabe erzeugt. Folglich muss das Modell ein stochastisches (zufälliges) Element beinhalten, das die von ihm erzeugten Ausgaben beeinflusst.
Wir können uns das so vorstellen: Es gibt eine unbekannte Wahrscheinlichkeitsverteilung, die erklärt, warum einige Bilder wahrscheinlich im Trainingsdatensatz zu finden sind und andere Bilder hingegen nicht. Unsere Aufgabe ist es, ein Modell zu entwickeln, das diese Verteilung so genau wie möglich nachahmt, um daraus neue, einzigartige Beobachtungen zu generieren, die so aussehen, als würden sie dem ursprünglichen Trainingsdatensatz entstammen.
Um genau zu verstehen, was generative Modellierung leisten soll und warum sie wichtig ist, ergibt es Sinn, sie mit ihrem Gegenstück, der diskriminativen Modellierung, zu vergleichen. Wenn Sie sich in Ihrem Studium mit maschinellem Lernen befasst haben, werden die meisten Fragestellungen, mit denen Sie konfrontiert wurden, höchstwahrscheinlich diskriminativer Natur gewesen sein. Um den Unterschied zu verstehen, schauen wir uns ein Beispiel an.
Angenommen, wir hätten einen Datensatz von mehreren Gemälden. Einige sind von van Gogh und einige von anderen Künstlern. Mit genügend Daten könnten wir ein diskriminatives Modell trainieren, um vorherzusagen, ob ein bestimmtes Bild tatsächlich von van Gogh gemalt wurde. Unser Modell würde lernen, dass bestimmte Farben, Formen und Texturen eher darauf hinweisen, dass ein Gemälde von diesem niederländischen Meister stammt. Für Gemälde mit diesen Merkmalen würde das Modell seine Vorhersage entsprechend höher bewerten. Abbildung 1-2 zeigt den diskriminativen Modellierungsprozess – achten Sie insbesondere darauf, wie er sich von dem in Abbildung 1-1 dargestellten generativen Modellierungsprozess unterscheidet.
Ein wesentlicher Unterschied besteht darin, dass bei der diskriminativen Modellierung jede Beobachtung in den Trainingsdaten mit einem Label versehen ist. Im Fall unserer binären Klassifikationsaufgabe wären Gemälde von van Gogh mit einer 1 und alle anderen mit einer 0 gekennzeichnet. Unser Modell lernt dann, beide Gruppen zu unterscheiden, und gibt die Wahrscheinlichkeit aus, dass eine neue Beobachtung das Label 1 trägt – d.h., dass sie von van Gogh gemalt wurde.
Deshalb ist diskriminative Modellierung gleichbedeutend mit überwachtem Lernen beziehungsweise dem Erlernen einer Funktion, die eine Eingabe mithilfe eines mit Labeln versehenen Datensatzes auf eine Ausgabe abbildet. Für die generative Modellierung bedarf es für gewöhnlich nur ungelabelter Datensätze (als Form des unüberwachten Lernens). Sie kann jedoch auch auf einen mit Labeln versehenen Datensatz angewendet werden, um zu lernen, wie man Beobachtungen aus den einzelnen Kategorien erzeugt.
Werfen wir einen Blick auf einige mathematische Notationen, um den Unterschied zwischen generativer und diskriminativer Modellierung zu verdeutlichen.
Diskriminative Modellierung schätzt p(y|x) – die Wahrscheinlichkeit des Labels y, gegeben der Beobachtung x.
Generative Modellierung schätzt p(x) – die Wahrscheinlichkeit, Beobachtung x zu beobachten.
Sofern der Datensatz mit Labeln versehen ist, können wir auch ein generatives Modell entwickeln, das die Verteilung p(x|y) schätzt.
Anders ausgedrückt, versucht die diskriminative Modellierung, die Wahrscheinlichkeit abzuschätzen, dass eine Beobachtung x der Kategorie y angehört. In der generativen Modellierung ist es nicht von Bedeutung, Beobachtungen mit Labeln zu versehen. Stattdessen zielt sie darauf ab, die Wahrscheinlichkeit abzuschätzen, dass die Beobachtung überhaupt auftritt.
Der entscheidende Punkt ist: Selbst wenn wir in der Lage wären, ein perfektes diskriminatives Modell zur Identifizierung von Gemälden von van Gogh zu entwickeln, hätte das Modell immer noch keine Ahnung, wie es ein Gemälde erstellt, das wie eines von van Gogh aussieht. Es kann nur Wahrscheinlichkeiten für bereits existente Bilder ausgeben, da es ausschließlich dazu trainiert wurde. Stattdessen müssten wir ein generatives Modell trainieren, das Pixelgruppen ermitteln kann, die eine hohe Wahrscheinlichkeit besitzen, zum ursprünglichen Trainingsdatensatz zu gehören.
Um zu verstehen, warum die generative Modellierung als die kommende Herausforderung für das maschinelle Lernen angesehen werden kann, gilt es zu ergründen, warum die diskriminative Modellierung in den letzten zwei Jahrzehnten die treibende Kraft für die meisten Fortschritte in der Methodik des maschinellen Lernens war, sowohl in der Wissenschaft als auch in der Industrie.
Aus akademischer Sicht ist der Fortschritt der diskriminativen Modellierung sicherlich leichter zu überblicken. Mithilfe von Leistungsmetriken können wir für eine Reihe anspruchsvoller Klassifikationsaufgaben messen, welche Methode derzeit am besten abschneidet. Generative Modelle sind oft schwieriger zu bewerten, insbesondere wenn die Qualität der Ergebnisse weitgehend subjektiv ist. Daher wurde in den letzten Jahren vermehrt Wert auf die Entwicklung diskriminativer Modelle gelegt, um menschliche oder gar übermenschliche Leistungen bei einer Vielzahl von Bild- oder Textklassifikationsaufgaben zu erreichen.
Im Jahr 2012 gelang beispielsweise in der Klassifikation von Bildern der entscheidende Durchbruch, als ein Team um Geoff Hinton von der Universität Toronto mit einem tiefen neuronalen Konvolutionsnetz die ImageNet Large Scale Visual Recognition Challenge (ILSVRC) gewann. Der Wettbewerb umfasst die Klassifikation von Bildern in eine von 1.000 Kategorien und dient als Benchmark für den Vergleich neuester Methoden. Das Deep-Learning-Modell hatte eine Fehlerquote von 16% – eine massive Verbesserung gegenüber dem nächstbesten Modell, das lediglich eine Fehlerquote von 26,2% erreichte. Dies löste einen Deep-Learning-Boom aus, der dazu führte, dass die Fehlerquote Jahr für Jahr noch weiter zurückging. Der Gewinner des Jahres 2015 erreichte mit einer Fehlerquote von 4% erstmals eine übermenschliche Leistung, und das aktuell modernste Modell weist eine Fehlerquote von nur 2% auf. Für viele erscheint die Aufgabenstellung nun als gelöst.
Abgesehen von der Tatsache, dass es einfacher ist, messbare Ergebnisse in einem akademischen Umfeld zu veröffentlichen, war die diskriminative im Vergleich zur generativen Modellierung in der Vergangenheit leichter auf Geschäftsprobleme anzuwenden. Im Regelfall interessiert es uns in einem Geschäftsumfeld nicht, wie die Daten generiert wurden. Stattdessen wollen wir wissen, wie ein neues Beispiel kategorisiert oder bewertet werden kann, zum Beispiel:
Da die meisten von Unternehmen benötigten Lösungen dem Gebiet der diskriminativen Modellierung entstammen, ist die Anzahl der Machine-Learning-as-a-Service-Tools (MLaaS) gestiegen. Sie zielen darauf ab, den Einsatz diskriminativer Modellierung in der Industrie zu kommerzialisieren, indem sie die Erstellungs-, Validierungs- und Überwachungsprozesse, die in fast allen diskriminativen Modellierungsaufgaben vorkommen, weitgehend automatisieren.
Obwohl die diskriminative Modellierung bisher der größte Impulsgeber für Entwicklungen auf dem Gebiet des maschinellen Lernens war, sind in den letzten drei bis fünf Jahren viele der bedeutendsten Fortschritte durch neue Anwendungen des Deep Learning in generativen Modellierungsaufgaben erzielt worden.
Die mediale Aufmerksamkeit stieg insbesondere durch generative Modellierungsprojekte wie StyleGAN von NVIDIA,1 das in der Lage ist, hyperrealistische Bilder von menschlichen Gesichtern zu erzeugen, und durch das Sprachmodell GPT-2 von OpenAI2, das eine Textpassage auf Basis eines kurzen einleitenden Absatzes vervollständigen kann.
Abbildung 1-3 zeigt die bemerkenswerten Fortschritte, die seit dem Jahr 2014 bei der Erzeugung von Gesichtsbildern bereits erzielt wurden.3 Hier gibt es sicherlich nützliche Anwendungen für Branchen wie etwa die Spielegestaltung oder die Filmproduktion. Verbesserungen in der automatischen Erzeugung von Musik werden sicherlich auch in diesen Bereichen immer mehr Beachtung finden. Es wird sich zeigen, ob wir eines Tages Nachrichtenartikel oder Romane lesen werden, die von einem generativen Modell geschrieben wurden. Die jüngsten Fortschritte in diesem Bereich sind enorm. Deshalb ist es sicherlich nicht vermessen, zu behaupten, dass dies eines Tages durchaus der Fall sein könnte. Aber auch wenn es reizvoll erscheint, so wirft es durchaus ethische Fragen rund um die Verbreitung von gefälschten Inhalten im Internet auf, und es könnte immer schwieriger werden, dem zu vertrauen, was wir in den öffentlichen Kommunikationskanälen wahrnehmen und lesen.
Neben den praktischen Einsatzmöglichkeiten der generativen Modellierung (von denen viele noch unentdeckt sind) gibt es drei wesentliche Gründe dafür, dass sie als Schlüssel zur Erschließung einer weitaus anspruchsvolleren Form der künstlichen Intelligenz angesehen werden kann, die über das hinausgeht, was die diskriminative Modellierung zu leisten vermag.
Erstens sollten wir uns rein theoretisch nicht damit zufriedengeben, dass wir uns lediglich bei der Kategorisierung von Daten auszeichnen können, sondern auch ein umfassenderes Verständnis dafür anstreben, wie die Daten überhaupt generiert wurden. Das ist zweifelsohne ein schwerer zu lösendes Problem, da etliche Ausgaben denkbar sind, jedoch nur wenige davon als zum Datensatz gehörend eingestuft werden würden. Wie wir sehen werden, können viele der Methoden, die bereits die Entwicklung in der diskriminativen Modellierung vorangetrieben haben, wie z. B. Deep Learning, auch von generativen Modellen genutzt werden.
Zweitens ist es sehr wahrscheinlich, dass die generative Modellierung künftig auch bei Entwicklungen in anderen Bereichen des maschinellen Lernens von zentraler Bedeutung sein wird, wie z. B. beim Reinforcement Learning (der Analyse von Agenten, die in einer bestimmten Umgebung mittels Trial-and-Error ihr Ziel optimieren). Beispielsweise könnten wir das Reinforcement Learning nutzen, um einen Roboter so zu trainieren, dass er über ein bestimmtes Gelände läuft. Der Grundansatz besteht darin, eine Computersimulation des Geländes zu erstellen und dann viele Experimente durchzuführen, bei denen der Agent verschiedene Strategien ausprobiert. Im Laufe der Zeit würde der Agent lernen, welche Strategien erfolgreicher als andere sind, und sich sukzessiv verbessern. Ein typisches Problem bei diesem Ansatz ist, dass die physikalischen Gegebenheiten der Umgebung oft sehr komplex sind und bei jedem Teilschritt berechnet werden müssten, um die Informationen an den Agenten zurückzugeben, auf deren Basis er dann über seinen nächsten Zug entscheiden kann. Wenn der Agent jedoch in der Lage wäre, seine Umgebung durch ein generatives Modell zu simulieren, müsste er die Strategie nicht in der Computersimulation oder in der realen Welt testen, sondern könnte stattdessen in seiner eigenen imaginären Umgebung lernen. In Kapitel 8 setzen wir diese Idee in die Praxis um. Wir trainieren ein Auto darauf, so schnell wie möglich auf einer Strecke zu fahren, indem es selbst aus seiner eigenen halluzinierten Umgebung lernen kann.
Nicht zuletzt muss die generative Modellierung sicherlich Teil der Lösung sein, um eine Maschine bauen zu können, die eine Form der Intelligenz erlangt, die der eines Menschen gleicht. Eines der besten Beispiele für ein real existierendes generatives Modell ist die Person, die dieses Buch liest – Sie! Nehmen Sie sich einen Moment Zeit, um zu überlegen, was für ein unglaubliches generatives Modell Sie sind. Sie vermögen die Augen zu schließen und sich vorzustellen, wie ein Elefant aus jedem möglichen Blickwinkel aussehen würde. Sie können sich eine Reihe von unterschiedlichen plausiblen Ausgängen Ihrer Lieblingsserie vorstellen. Und Sie können Ihre Woche im Voraus planen, indem Sie verschiedene Zukunftsszenarien vor Ihrem geistigen Auge durcharbeiten und sich für entsprechende Handlungen entscheiden. Die aktuelle neurowissenschaftliche Theorie legt nahe, dass unsere Wahrnehmung der Realität kein hochkomplexes, auf unseren Sinneseindrücken basierendes diskriminatives Modell ist, um Vorhersagen über das, was wir erleben, zu treffen. Vielmehr gleicht sie einem generativen Modell, das von Geburt an trainiert wird, um Simulationen unserer Umgebung zu liefern, die der Zukunft entsprechen. Einige Theorien legen sogar nahe, dass die Ergebnisse dieses generativen Modells das sind, was wir direkt als Realität wahrnehmen. Offensichtlich ist ein umfassendes Verständnis dafür, wie wir Maschinen bauen können, die diese Fähigkeit erwerben, von zentraler Bedeutung für unser weiteres Verständnis der Funktionsweise des Gehirns und der allgemeinen künstlichen Intelligenz.
Beginnen wir vor diesem Hintergrund unsere Reise in die spannende Welt der generativen Modellierung. Zunächst schauen wir uns die einfachsten Beispiele für generative Modelle und einige der Ideen an, die uns dabei helfen, die komplexeren Architekturen, denen wir später im Buch begegnen werden, durchleuchten zu können.
Spielen wir als Erstes ein kleines Spiel mit einem generativen Modell, das nur zwei Dimensionen besitzt. Hierzu habe ich eine Regel gewählt, mit der die Punkte X in Abbildung 1-4 erzeugt wurden. Nennen wir diese Regel pdata. Ihre Aufgabe besteht darin, einen anderen Punkt x = (x1, x2) in diesem Raum zu wählen, der so erscheint, als wäre er von der gleichen Regel erzeugt worden.
Für welchen Punkt haben Sie sich entschieden? Wahrscheinlich haben Sie Ihre Kenntnisse über die vorhandenen Datenpunkte genutzt, um vor Ihrem geistigen Auge ein Modell, pmodel, zu konstruieren, mit dem Sie abschätzen, an welchen Stellen die Punkte eher zu finden sind. In diesem Zusammenhang stellt pmodel eine Schätzung von pdata dar. Vielleicht haben Sie entschieden, dass pmodel wie Abbildung 1-5 aussehen sollte – eine rechteckige Fläche, in der Punkte aufzufinden sind, und ein Bereich außerhalb dieser Fläche, in dem keine Wahrscheinlichkeit besteht, einen Punkt zu finden. Um eine neue Beobachtung zu erzeugen, können Sie einfach einen zufälligen Punkt innerhalb der Fläche wählen – oder, formeller ausgedrückt, aus der Verteilung pmodel eine Stichprobe ziehen beziehungsweise samplen. Herzlichen Glückwunsch, Sie haben gerade Ihr erstes generatives Modell entwickelt!
Wenn dies auch nicht das komplexeste Beispiel gewesen sein mag, so haben wir dennoch einen ersten Einblick darin gewinnen können, worauf generative Modellierung abzielt. Fassen wir die Grundprinzipien noch einmal zusammen.
Ergründen wir nun die wahre datengenerierende Verteilung pdata und übertragen wir darauf die Grundprinzipien.
Wie wir in Abbildung 1-6 sehen können, ist der zugrunde liegende Datengenerierungsprozess schlicht eine Gleichverteilung der Punkte über die Kontinente hinweg, wobei kein Punkt im Meer zu finden ist.
Offensichtlich ist unser Modell pmodel eine zu starke Vereinfachung von pdata. Die Punkte A, B und C heben drei Beobachtungen hervor, die von pmodel mit unterschiedlichem Erfolg erzeugt wurden:
Das Anwendungsfeld der generativen Modellierung ist vielfältig, und es sind unterschiedlichste Aufgabenstellungen denkbar. In den meisten Anwendungsfällen bieten die Grundprinzipien der generativen Modellierung jedoch einen Leitfaden dazu, wie wir im Großen und Ganzen über die Lösung der Aufgabe nachdenken sollten.
Befassen wir uns nun mit einem weniger trivialen Beispiel für ein generatives Modell.