image
image

Jon Krohn ist Chief Data Scientist beim Machine-Learning-Unternehmen untapt. Er präsentiert eine viel gerühmte Serie aus Tutorials, die von Addison-Wesley herausgebracht wurden, darunter Deep Learning with TensorFlow LiveLessons und Deep Learning for Natural Language Processing LiveLessons. Jon unterrichtet Deep Learning an der New York City Data Science Academy und als Gastdozent an der Columbia University. Er besitzt einen Doktortitel in Neurowissenschaften von der Universität Oxford und veröffentlicht seit 2010 Artikel zum Thema Machine Learning in führenden Fachzeitschriften, darunter Advances in Neural Information Processing Systems.

image

Grant Beyleveld ist Data Scientist bei untapt, wo er auf dem Gebiet der Verarbeitung natürlicher Sprache mittels Deep Learning arbeitet. Er besitzt einen Doktortitel in biomedizinischer Wissenschaft von der Icahn School of Medicine am Mount Sinai Hospital in New York City, wo er die Beziehung zwischen Viren und ihren Wirten untersuchte. Er ist Gründungsmitglied von deeplearningstudygroup.org.

image

Aglaé Bassens ist eine in Paris lebende belgische Künstlerin. Sie studierte bildende Kunst an The Ruskin School of Drawing and Fine Art der Universität Oxford und an der Slade School of Fine Arts des University College London. Neben ihrer Arbeit als Illustratorin malt sie Stillleben und Wandbilder.

image

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

www.dpunkt.plus

Jon Krohn · Grant Beyleveld · Aglaé Bassens

Deep Learning
illustriert

Eine anschauliche Einführung in Machine Vision, Natural Language Processing und Bilderzeugung für Programmierer und Datenanalysten

Aus dem Englischen von Kathrin Lichtenberg

image

Jon Krohn · Grant Beyleveld · Aglaé Bassens

Lektorat: Gabriel Neumann

Bibliografische Information der Deutschen Nationalbibliothek

ISBN:

Print

978-3-86490-663-3

PDF

978-3-96088-751-5

ePub

978-3-96088-752-2

mobi

978-3-96088-753-9

Translation Copyright für die deutschsprachige Ausgabe © 2020 dpunkt.verlag GmbH

Authorized German translation of the English original »Deep Learning Illustrated«. 1st edition by Jon Krohn, Beyleveld Grant, Bassens Aglae, published by Pearson Education, Inc, publishing as Addison-Wesley Professional, Copyright © 2019 Pearson Education, Inc

Hinweis:

image

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.

5 4 3 2 1 0

imageFür Gigiimage

Vorwort

Machine Learning gilt vielen Menschen als die Zukunft der Statistik und Computertechnik, da es völlig neue Akzente in Kundendienst, Design, Bankwesen, Medizin, Produktion und in vielen anderen Bereichen und Branchen setzt. Es ist kaum möglich, seinen Einfluss auf die Welt und jene Veränderungen, die Machine Learning in den kommenden Jahren und Jahrzehnten bringen wird, überzubewerten. Von der Vielzahl an Machine-Learning-Methoden, die von Experten eingesetzt werden, etwa Penalized Regression, Random Forest und Boosted Trees, ist Deep Learning vermutlich die aufregendste.

Deep Learning hat die Gebiete Computer Vision (maschinelles Sehen) und Natural Language Processing (Verarbeitung natürlicher Sprache) revolutioniert, und Forscher finden immer neue Bereiche, die sie mit der Macht neuronaler Netze verwandeln wollen. Seine größte und beeindruckendste Wirkung zeigt Deep Learning oft bei den Versuchen, das menschliche Erleben nachzuahmen, wie bei der erwähnten Seh- und Sprachverarbeitung sowie bei der Audiosynthese und bei Übersetzungen. Die Berechnungen und Konzepte, die dem Deep Learning zugrunde liegen, wirken möglicherweise abschreckend und hindern Menschen unnötigerweise daran, sich damit zu befassen.

Die Autoren von Deep Learning illustriert gehen diese traditionell wahrgenommenen Hürden an und vermitteln ihr Wissen ruhig und gelassen – und das entstandene Buch ist eine wahre Freude. Wie die anderen Bücher aus dieser Reihe – R for Everyone, Pandas for Everyone, Programming Skills for Data Science und Machine Learning with Python for Everyone – wendet sich dieses Buch an ein breites Publikum mit ganz unterschiedlichem Wissen und Können. Die mathematischen Notationen sind auf ein Minimum beschränkt, und falls dennoch Gleichungen erforderlich sind, werden sie von verständlichem Text begleitet. Die meisten Erkenntnisse werden durch Grafiken, Illustrationen und Keras-Code ergänzt, der in Form leicht nachzuvollziehender Jupyter-Notebooks zur Verfügung steht.

Jon Krohn unterrichtet schon seit vielen Jahren Deep Learning. Besonders denkwürdig war eine Präsentation beim Open Statistical Programming Meetup in New York – bei derselben Vereinigung, in der er seine Deep Learning Study Group startete. Seine Brillanz in diesem Thema zeigt sich an seinen Texten, die Lesern Bildung vermitteln und ihnen gleichzeitig zeigen, wie spannend und aufregend das Material ist. Für dieses Buch arbeitet er mit Grant Beyleveld und Aglaé Bassens zusammen, die ihr Wissen bei der Anwendung von Deep-Learning-Algorithmen und ihre gekonnten und witzigen Zeichnungen beisteuern.

Deep Learning illustriert kombiniert Theorie, Mathematik (dort, wo es nötig ist), Code und Visualisierungen zu einer umfassenden Behandlung des Themas Deep Learning. Das Buch behandelt die volle Breite des Themas, einschließlich vollständig verbundener Netzwerke, Convolutional Neural Networks, Recurrent Neural Networks, Generative Adversarial Networks und Reinforcement Learning sowie deren Anwendungen. Dadurch ist dieses Buch die ideale Wahl für jemanden, der neuronale Netze kennenlernen und gleichzeitig praktische Hinweise für deren Implementierung haben möchte. Jeder kann und sollte davon profitieren und außerdem seine Zeit beim Lesen mit Jon, Grant und Aglaé genießen.

Jared Lander

Herausgeber der Reihe

Einführung

Milliarden miteinander verbundener Neuronen, gemeinhin als Gehirn bezeichnet, bilden Ihr Nervensystem und erlauben es Ihnen, zu spüren, zu denken und zu handeln. Durch akribisches Einfärben und Untersuchen dünner Scheiben von Gehirnmasse konnte der spanische Arzt Santiago Cajal (Abbildung 1) als erster1 Neuronen identifizieren (Abbildung 2). In der ersten Hälfte des 20. Jahrhunderts begannen Forscher zu verstehen, wie diese Zellen arbeiten. In den 1950er-Jahren experimentierten Wissenschaftler, die von unserem zunehmenden Verständnis für das Gehirn inspiriert waren, mit computerbasierten künstlichen Neuronen und verknüpften diese zu künstlichen neuronalen Netzen, die versuchten, die Funktionsweise ihres natürlichen Namensvetters nachzuahmen.

Gewappnet mit dieser kurzen Geschichte der Neuronen, können wir den Begriff Deep Learning täuschend leicht definieren: Deep Learning beinhaltet ein Netzwerk, in dem künstliche Neuronen – üblicherweise Tausende, Millionen oder noch mehr davon – wenigstens mehrere Schichten tief gestapelt sind. Die künstlichen Neuronen in der ersten Schicht übergeben Informationen an die zweite, die zweite Schicht reicht sie an die dritte und so weiter, bis die letzte Schicht irgendwelche Werte ausgibt. Wie wir allerdings im Laufe dieses Buches zeigen werden, kann diese simple Definition die bemerkenswerte Breite der Funktionalität des Deep Learning sowie seine außerordentlichen Zwischentöne nicht annähernd erfassen.

Wie wir in Kapitel 1 genauer ausführen werden, war die erste Welle des Deep-Learning-Tsunami, die metaphorisch gesprochen ans Ufer brandete, eine herausragende Leistung in einem wichtigen Machine-Vision-Wettbewerb im Jahre 2012. Sie wurde getrieben und unterstützt durch das Vorhandensein einigermaßen preiswerter Rechenleistung, ausreichend großer Datensätze und einer Handvoll wesentlicher theoretischer Fortschritte. Akademiker und Techniker merkten auf, und in den turbulenten Jahren seither hat das Deep Learning zahlreiche, mittlerweile alltägliche Anwendungen gefunden. Von Teslas Autopilot bis zur Stimmerkennung von Alexa, von Echtzeitübersetzungen zwischen Sprachen bis hin zu seiner Integration in Hunderte von Google-Produkten hat Deep Learning die Genauigkeit vieler durch Computer erledigter Aufgaben von 95 Prozent auf teils mehr als 99 Prozent verbessert – die entscheidenden Prozentpunkte, die dafür sorgen, dass ein automatisierter Dienst sich tatsächlich anfühlt, als würde er von Zauberhand ausgeführt werden. Auch wenn die in diesem Buch gelieferten interaktiven Codebeispiele die vorgebliche Magie entzaubern, verschafft das Deep Learning den Maschinen eine übermenschliche Fähigkeit bei komplexen Aufgaben, die so verschieden sind wie das Erkennen von Gesichtern, das Zusammenfassen von Texten und das Spielen schwieriger Brettspiele.2 Angesichts dieser markanten Fortschritte überrascht es kaum, dass »Deep Learning« gleichgesetzt wird mit »künstlicher Intelligenz« – in der Presse, am Arbeitsplatz und zu Hause. Es sind aufregende Zeiten, weil – wie Sie in diesem Buch entdecken werden – vermutlich nur einmal im Leben ein einziges Konzept in so kurzer Zeit so umfassende Umstürze mit sich bringt. Wir sind hocherfreut, dass auch Sie Interesse an Deep Learning gefunden haben, und können es kaum erwarten, unseren Enthusiasmus für diese beispiellose Technik mit Ihnen zu teilen.

image

Abb. 1Santiago Cajal (1852–1934)

image

Abb. 2Ein handgezeichnetes Diagramm aus Cajals Veröffentlichung (1894) zeigt das Wachstum eines Neurons (a–e) und verschiedenartige Neuronen eines Frosches (A), einer Eidechse (B), einer Ratte (C) und eines Menschen (D)

Wie Sie dieses Buch lesen sollten

Dieses Buch besteht aus vier Teilen. Teil I, »Deep Learning vorgestellt«, eignet sich für alle interessierten Leserinnen und Leser. Es ist ein allgemeiner Überblick, der uns verrät, was Deep Learning eigentlich ist, wie es sich entwickelt hat und wie es mit Konzepten wie KI, Machine Learning und Reinforcement Learning verwandt ist. Voller eigens geschaffener Illustrationen, eingängiger Analogien und auf das Wesentliche konzentrierter Beschreibungen, sollte Teil I für alle erhellend sein, also auch für diejenigen, die keine besondere Programmiererfahrung mitbringen.

Die Teile II bis IV wenden sich hingegen an Softwareentwickler, Data Scientists, Forscher, Analysten und andere, die gern lernen möchten, wie sich Deep-Learning-Techniken auf ihrem Gebiet einsetzen lassen. In diesen Teilen unseres Buches wird die wesentliche zugrunde liegende Theorie behandelt. Hierbei wird der Einsatz mathematischer Formeln auf das Mindestmaß reduziert und stattdessen auf intuitive visuelle Darstellungen und praktische Beispiele in Python gesetzt. Neben dieser Theorie vermitteln funktionierende Codeausschnitte, die in den begleitenden Jupyter-Notebooks3 zur Verfügung stehen, ein praktisches Verständnis für die wichtigsten Familien der Deep-Learning-Ansätze und -Anwendungen: Maschinelles Sehen (Machine Vision) (Kapitel 10), Verarbeitung natürlicher Sprache (Natural Language Processing) (Kapitel 11), Bildherstellung (Kapitel 12) und Spiele (Kapitel 13). Damit er besser zu erkennen ist, geben wir Code immer in einer solchen Nichtproportionalschrift (also in einer Schrift mit fester Breite) an. Außerdem verwenden wir in den Codeausschnitten den üblichen Jupyter-Stil (Zahlen in Grün, Strings in Rot usw.).

Falls Sie sich nach detaillierteren Erklärungen der mathematischen und statistischen Grundlagen des Deep Learning sehnen, als wir in diesem Buch anbieten, könnten Sie sich unsere Tipps für weitere Studien anschauen:

  1. Michael Nielsens E-Book Neural Networks and Deep Learning4, das kurz ist, Konzepte mithilfe netter interaktiver Applets demonstriert und eine ähnliche mathematische Notation verwendet wie wir
  2. Das Buch Deep Learning5 von Ian Goodfellow (vorgestellt in Kapitel 3), Yoshua Bengio (Abbildung 1–10) und Aaron Courville, das ausführlich die mathematischen Grundlagen neuronaler Netzwerktechniken behandelt

Überall im Buch finden Sie freundliche Trilobiten, die Ihnen gern kleine Schnipsel nicht ganz so notwendiger Informationen anbieten möchten, die für Sie vielleicht dennoch interessant oder hilfreich sein könnten. Der lesende Trilobit (wie in Abbildung 3) ist ein Bücherwurm, der Freude daran hat, Ihr Wissen zu erweitern. Der Trilobit, der um Ihre Aufmerksamkeit bittet (wie in Abbildung 4), hat eine Textpassage bemerkt, die möglicherweise problematisch für Sie ist, und würde in dieser Situation gern helfen. Zusätzlich zu den Trilobiten, die die Kästen bevölkern, haben wir reichlich Gebrauch von Fußnoten gemacht. Diese müssen Sie nicht unbedingt lesen, aber sie enthalten kurze Erklärungen neuer Begriffe und Abkürzungen sowie Quellenangaben zu wichtigen Artikeln, Büchern und anderen Referenzen, die Sie bei Interesse bemühen können.

image

Abb. 3Der lesende Trilobit hat Freude daran, Ihr Wissen zu erweitern.

image

Abb. 4Dieser Trilobit möchte Ihre Aufmerksamkeit auf eine schwierige Textpassage lenken. Achten Sie auf ihn!

Für einen Großteil des Inhalts dieses Buches gibt es begleitende Video-Tutorials in englischer Sprache. Dieses Buch bot uns die Möglichkeit, die theoretischen Konzepte gründlicher darzustellen, und die Videos erlauben es Ihnen, sich aus einer anderen Perspektive mit den Jupyter-Notebooks vertraut zu machen: Hier wird die Bedeutung der einzelnen Codezeilen bereits beim Eintippen beschrieben.6 Die Serie der Video-Tutorials verteilt sich über drei Titel, die jeweils bestimmte Kapitel dieses Buches begleiten:

  1. Deep Learning with TensorFlow LiveLessons:7

    Kapitel 1 und Kapitel 5 bis 10

  2. Deep Learning for Natural Language Processing LiveLessons:8

    Kapitel 2 und 11

  3. Deep Reinforcement Learning and GANs LiveLessons:9

    Kapitel 3, 4, 12 und 13

Danksagungen

Wir danken dem Team bei untapt, vor allem Andrew Vlahutin, Sam Kenny und Vince Petaccio II, die uns unterstützten, während wir dieses Buch schrieben. Besonders erwähnen wollen wir Ed Donner, der neuronale Netze liebt und uns pausenlos ermutigte, unserer Leidenschaft auf dem Gebiet des Deep Learning zu folgen.

Außerdem danken wir den Mitgliedern der Deep Learning Study Group1, die regelmäßig unsere stimulierenden und lebhaften Treffen im New Yorker Büro von untapt besuchen. Da dieses Buch aufgrund der Diskussionen unserer Study Group entstand, kann man sich kaum vorstellen, wie es ohne diese Treffen zustande gekommen wäre.

Dank geht an unsere technischen Gutachter für ihre wertvollen Ratschläge, die den Inhalt des Buches deutlich verbessert haben: Alex Lipatov, Andrew Vlahutin, Claudia Perlich, Dmitri Nesterenko, Jason Baik, Laura Graesser, Michael Griffiths, Paul Dix und Wah Loon Keng. Danke auch an die Lektoren und Hersteller des Buches – Chris Zahn, Betsy Hardinger, Anna Popick und Julie Nahil –, deren Sorgfalt und Aufmerksamkeit die Qualität, Klarheit und Gestaltung dieses Buches sicherstellten. Dank an Jared Lander, der die New Yorker Open-Statistical-Programming-Gemeinschaft leitet, die sowohl unsere Deep Learning Study Group begründete als auch ein Treffen mit Debra Williams Cauley in die Wege leitete. Ein besonderer Dank gilt Debra selbst, die unsere fantasievollen Publikationsideen von dem Tag an unterstützt hat, an dem wir sie kennenlernten, und die entscheidend an ihrer Umsetzung beteiligt war. Wir danken auch den Wissenschaftlern und Machine-Learning-Experten, die uns akademisch geleitet haben und uns weiterhin inspirieren, vor allem Jonathan Flint, Felix Agakov und Will Valdar.

Und schließlich geht ein unendlicher Dank an unsere Familien und Freunde, die nicht nur ertragen haben, dass wir auch im Urlaub und an den Wochenenden gearbeitet haben, sondern uns auch selbstlos motiviert haben, es zu tun.

Inhaltsübersicht

Teil IDeep Learning vorgestellt

1Biologisches und maschinelles Sehen

2Menschen- und Maschinensprache

3Maschinenkunst

4Spielende Maschinen

Teil IIDie nötige Theorie

5Der (Code-)Karren vor dem (Theorie-)Pferd

6Künstliche Neuronen, die Hotdogs erkennen

7Künstliche neuronale Netze

8Deep Networks trainieren

9Deep Networks verbessern

Teil IIIInteraktive Anwendungen des Deep Learning

10Maschinelles Sehen

11Natural Language Processing

12Generative Adversarial Networks

13Deep Reinforcement Learning

Teil IVKI und Sie

14Mit Ihren eigenen Deep-Learning-Projekten beginnen

Anhang

ADie formale Notation neuronaler Netze

BBackpropagation

CPyTorch

DBildnachweise

Abbildungsverzeichnis

Tabellenverzeichnis

Beispielverzeichnis

Index

Inhaltsverzeichnis

Teil IDeep Learning vorgestellt

1Biologisches und maschinelles Sehen

1.1Das biologische Sehen

1.2Maschinelles Sehen

1.2.1Das Neocognitron

1.2.2LeNet-5

1.2.3Der traditionelle Machine-Learning-Ansatz

1.2.4ImageNet und die ILSVRC

1.2.5AlexNet

1.3TensorFlow Playground

1.4Quick, Draw!

1.5Zusammenfassung

2Menschen- und Maschinensprache

2.1Deep Learning für Natural Language Processing

2.1.1Deep-Learning-Netze lernen Repräsentationen automatisch

2.1.2Natural Language Processing

2.1.3Eine kurze Geschichte des Deep Learning für NLP

2.2Repräsentationen von Sprache im Computer

2.2.11-aus-n-Repräsentationen von Wörtern

2.2.2Wortvektoren

2.2.3Wortvektor-Arithmetik

2.2.4word2viz

2.2.5Lokalistische versus verteilte Repräsentationen

2.3Elemente der natürlichen menschlichen Sprache

2.4Google Duplex

2.5Zusammenfassung

3Maschinenkunst

3.1Eine feuchtfröhliche Nacht

3.2Berechnungen auf nachgemachten menschlichen Gesichtern

3.3Stiltransfer: Fotos in einen Monet verwandeln (und umgekehrt)

3.4Machen Sie Ihre eigenen Skizzen fotorealistisch

3.5Fotorealistische Bilder aus Text erzeugen

3.6Bildverarbeitung mittels Deep Learning

3.7Zusammenfassung

4Spielende Maschinen

4.1Deep Learning, KI und andere Monster

4.1.1Künstliche Intelligenz

4.1.2Machine Learning

4.1.3Representation Learning

4.1.4Künstliche neuronale Netze

4.1.5Deep Learning

4.1.6Maschinelles Sehen

4.1.7Natural Language Processing

4.2Drei Arten von Machine-Learning-Problemen

4.2.1Supervised Learning

4.2.2Unsupervised Learning

4.2.3Reinforcement Learning

4.3Deep Reinforcement Learning

4.4Videospiele

4.5Brettspiele

4.5.1AlphaGo

4.5.2AlphaGo Zero

4.5.3AlphaZero

4.6Manipulation von Objekten

4.7Populäre Umgebungen für das Deep-Reinforcement-Learning

4.7.1OpenAI Gym

4.7.2DeepMind Lab

4.7.3UnityML-Agents

4.8Drei Arten von KI

4.8.1Artificial Narrow Intelligence

4.8.2Artificial General Intelligence

4.8.3Artificial Super Intelligence

4.8.4Zusammenfassung

Teil IIDie nötige Theorie

5Der (Code-)Karren vor dem (Theorie-)Pferd

5.1Voraussetzungen

5.2Installation

5.3Ein flaches Netzwerk in Keras

5.3.1Der MNIST-Datensatz handgeschriebener Ziffern

5.3.2Ein schematisches Diagramm des Netzwerks

5.3.3Die Daten laden

5.3.4Die Daten umformatieren

5.3.5Die Architektur eines neuronalen Netzes entwerfen

5.3.6Trainieren eines Deep-Learning-Modells

5.4Zusammenfassung

6Künstliche Neuronen, die Hotdogs erkennen

6.1Das Einmaleins der biologischen Neuroanatomie

6.2Das Perzeptron

6.2.1Der Hotdog/Nicht-Hotdog-Detektor

6.2.2Die wichtigste Gleichung in diesem Buch

6.3Moderne Neuronen und Aktivierungsfunktionen

6.3.1Das Sigmoid-Neuron

6.3.2Das Tanh-Neuron

6.3.3ReLU: Rectified Linear Units

6.4Ein Neuron auswählen

6.5Zusammenfassung

Schlüsselkonzepte

7Künstliche neuronale Netze

7.1Die Eingabeschicht

7.2Vollständig verbundene Schichten

7.3Ein vollständig verbundenes Netzwerk zum Erkennen von Hotdogs

7.3.1Forwardpropagation durch die erste verborgene Schicht

7.3.2Forwardpropagation durch nachfolgende Schichten

7.4Die Softmax-Schicht eines Netzwerks zum Klassifizieren von Fastfood

7.5Zurück zu unserem flachen Netzwerk

7.6Zusammenfassung

Schlüsselkonzepte

8Deep Networks trainieren

8.1Kostenfunktionen

8.1.1Quadratische Kosten

8.1.2Gesättigte Neuronen

8.1.3Kreuzentropie-Kosten

8.2Optimierung: Lernen, um die Kosten zu minimieren

8.2.1Der Gradientenabstieg

8.2.2Die Lernrate

8.2.3Batch-Größe und stochastischer Gradientenabstieg

8.2.4Dem lokalen Minimum entkommen

8.3Backpropagation

8.4Die Anzahl der verborgenen Schichten und der Neuronen anpassen

8.5Ein mittleres Netz in Keras

8.6Zusammenfassung

Schlüsselkonzepte

9Deep Networks verbessern

9.1Die Initialisierung der Gewichte

9.1.1Xavier-Glorot-Verteilungen

9.2Instabile Gradienten

9.2.1Verschwindende Gradienten

9.2.2Explodierende Gradienten

9.2.3Batch-Normalisierung

9.3Modellgeneralisierung (Überanpassung vermeiden)

9.3.1L1- und L2-Regularisierung

9.3.2Dropout

9.3.3Datenaugmentation

9.4Intelligente Optimierer

9.4.1Momentum

9.4.2Nesterov-Momentum

9.4.3AdaGrad

9.4.4AdaDelta und RMSProp

9.4.5Adam

9.5Ein tiefes neuronales Netz in Keras

9.6Regression

9.7TensorBoard

9.8Zusammenfassung

Schlüsselkonzepte

Teil IIIInteraktive Anwendungen des Deep Learning

10Maschinelles Sehen

10.1Convolutional Neural Networks

10.1.1Die zweidimensionale Struktur der visuellen Bilddarstellung

10.1.2Berechnungskomplexität

10.1.3Konvolutionsschichten

10.1.4Mehrere Filter

10.1.5Ein Beispiel für Konvolutionsschichten

10.2Hyperparameter von Konvolutionsfiltern

10.2.1Kernel-Größe

10.2.2Schrittlänge

10.2.3Padding

10.3Pooling-Schichten

10.4LeNet-5 in Keras

10.5AlexNet und VGGNet in Keras

10.6Residualnetzwerke

10.6.1Schwindende Gradienten: Das Grauen der tiefen CNN

10.6.2Residualverbindungen

10.6.3ResNet

10.7Anwendungen des maschinellen Sehens

10.7.1Objekterkennung

10.7.2Bildsegmentierung

10.7.3Transfer-Lernen

10.7.4Capsule Networks

10.8Zusammenfassung

Schlüsselkonzepte

11Natural Language Processing

11.1Natürliche Sprachdaten vorverarbeiten

11.1.1Tokenisierung

11.1.2Alle Zeichen in Kleinbuchstaben umwandeln

11.1.3Stoppwörter und Interpunktionszeichen entfernen

11.1.4Stemming

11.1.5N-Gramme verarbeiten

11.1.6Vorverarbeitung des kompletten Textkorpus

11.2Worteinbettungen mit word2vec erzeugen

11.2.1Die prinzipielle Theorie hinter word2vec

11.2.2Wortvektoren evaluieren

11.2.3word2vec ausführen

11.2.4Wortvektoren plotten

11.3Der Bereich unter der ROC-Kurve

11.3.1Die Wahrheitsmatrix

11.3.2Die ROC-AUC-Metrik berechnen

11.4Klassifikation natürlicher Sprache mit vertrauten Netzwerken

11.4.1Die IMDb-Filmkritiken laden

11.4.2Die IMDb-Daten untersuchen

11.4.3Die Länge der Filmkritiken standardisieren

11.4.4Vollständig verbundenes Netzwerk

11.4.5Convolutional Networks

11.5Netzwerke für die Verarbeitung sequenzieller Daten

11.5.1Recurrent Neural Networks

11.5.2Ein RNN in Keras implementieren

11.5.3Long Short-Term Memory Units

11.5.4Bidirektionale LSTMs

11.5.5Gestapelte rekurrente Modelle

11.5.6Seq2seq und Attention

11.5.7Transfer-Lernen in NLP

11.6Nichtsequenzielle Architekturen: Die funktionale API in Keras

11.7Zusammenfassung

Schlüsselkonzepte

12Generative Adversarial Networks

12.1Die grundlegende GAN-Theorie

12.2Der Quick, Draw!-Datensatz

12.3Das Diskriminator-Netzwerk

12.4Das Generator-Netzwerk

12.5Das Adversarial-Netzwerk

12.6Das GAN-Training

12.7Zusammenfassung

Schlüsselkonzepte

13Deep Reinforcement Learning

13.1Die grundlegende Theorie des Reinforcement Learning

13.1.1Das Cart-Pole-Spiel

13.1.2Markow-Entscheidungsprozesse

13.1.3Die optimale Strategie

13.2Die grundlegende Theorie von Deep-Q-Learning-Netzwerken

13.2.1Value-Funktionen

13.2.2Q-Value-Funktionen

13.2.3Einen optimalen Q-Value schätzen

13.3Einen DQN-Agenten definieren

13.3.1Initialisierungsparameter

13.3.2Das neuronale-Netze-Modell des Agenten bauen

13.3.3Sich an das Spiel erinnern

13.3.4Training über Memory Replay

13.3.5Eine Aktion auswählen

13.3.6Speichern und Laden der Modellparameter

13.4Mit einer OpenAI-Gym-Umgebung interagieren

13.4.1Hyperparameter-Optimierung mit SLM Lab

13.5Agenten jenseits von DQN

13.5.1Policy-Gradienten und der REINFORCE-Algorithmus

13.5.2Der Actor-Critic-Algorithmus

13.6Zusammenfassung

Schlüsselkonzepte

Teil IVKI und Sie

14Mit Ihren eigenen Deep-Learning-Projekten beginnen

14.1Ideen für Deep-Learning-Projekte

14.1.1Machine Vision und GANs

14.1.2Natural Language Processing

14.1.3Deep Reinforcement Learning

14.1.4Ein vorhandenes Machine-Learning-Projekt überführen

14.2Ressourcen für weitere Projekte

14.2.1Gesellschaftlich nützliche Projekte

14.3Der Modellierungsprozess einschließlich der Anpassung der Hyperparameter

14.3.1Automatisierung der Hyperparameter-Suche

14.4Deep-Learning-Bibliotheken

14.4.1Keras und TensorFlow

14.4.2PyTorch

14.4.3MXNet, CNTK, Caffe und so weiter

14.5Software 2.0

14.6Die kommende Artificial General Intelligence

14.7Zusammenfassung

Anhang

ADie formale Notation neuronaler Netze

BBackpropagation

CPyTorch

C.1PyTorch-Eigenschaften

C.1.1Das Autograd System

C.1.2Das Define-by-Run-Framework

C.1.3PyTorch im Vergleich mit TensorFlow

C.2PyTorch in der Praxis

C.2.1Die PyTorch-Installation

C.2.2Die grundlegenden Bausteine in PyTorch

C.2.3Ein tiefes neuronales Netz in PyTorch bauen

DBildnachweise

Abbildungsverzeichnis

Tabellenverzeichnis

Beispielverzeichnis

Index

Teil I

Deep Learning vorgestellt

1Biologisches und maschinelles Sehen

2Menschen- und Maschinensprache

3Maschinenkunst

4Spielende Maschinen

1Biologisches und maschinelles Sehen

In diesem Kapitel und auch im Laufe dieses Buches dient uns das visuelle System biologischer Organismen als Analogie, um das Deep Learning »zum Leben zu erwecken«. Diese Analogie vermittelt nicht nur ein tiefgreifendes Verständnis für das, was Deep Learning ausmacht, sondern verdeutlicht auch, weshalb Deep-Learning-Ansätze so machtvoll und so überaus vielfältig einsetzbar sind.

1.1Das biologische Sehen

Vor 550 Millionen Jahren, in der prähistorischen Periode des Kambrium, stieg die Anzahl der Arten auf unserem Planeten schlagartig an (Abbildung 1–1). Aus den Fossilienfunden lässt sich ablesen,1 dass diese explosionsartige Zunahme (die auch tatsächlich als Kambrische Explosion bezeichnet wird) durch die Entwicklung von Lichtdetektoren bei Trilobiten gefördert wurde, einem kleinen Meereslebewesen, das mit den heutigen Krebsen verwandt ist (Abbildung 1–2). Ein visuelles System, selbst wenn es nur primitiv ausgebildet ist, bringt eine wunderbare Vielfalt neuer Fähigkeiten mit sich. Man kann beispielsweise bereits aus einiger Entfernung Nahrung, Feinde und freundlich aussehende Gefährten ausmachen. Auch andere Sinne, wie der Geruchssinn, erlauben es Tieren, diese Dinge wahrzunehmen, allerdings nicht mit der Genauigkeit und Schnelligkeit des Sehvermögens. Die Hypothese besagt, dass mit dem Sehvermögen der Trilobiten ein Wettrüsten einsetzte, dessen Ergebnis die Kambrische Explosion war: Die Beutetiere und auch die Feinde der Trilobiten mussten sich weiterentwickeln, um zu überleben.

image

Abb. 1–1Die Anzahl der Arten auf unserem Planeten begann vor 550 Millionen Jahren, während der Periode des Kambrium, schlagartig anzusteigen. »Gattungen« sind Kategorien miteinander verwandter Arten.

image

Abb. 1–2Ein Trilobit mit Brille

In den mehr als eine halbe Milliarde Jahren, seit die Trilobiten das Sehen entwickelten, hat die Komplexität dieses Sinnes ungemein zugenommen. So ist bei heutigen Säugetieren ein Großteil der Großhirnrinde – das ist die äußere graue Masse des Gehirns – der visuellen Wahrnehmung vorbehalten.2 Ende der 1950er-Jahre begannen die Physiologen David Hubel und Torsten Wiesel (Abbildung 1–3) an der John Hopkins University mit ihren bahnbrechenden Forschungen darüber, wie visuelle Informationen in der Großhirnrinde von Säugetieren verarbeitet werden,3 für die sie später mit dem Nobelpreis4 ausgezeichnet wurden. Wie in Abbildung 1–4 dargestellt wird, führten Hubel und Wiesel ihre Forschungen durch, indem sie narkotisierten Katzen Bilder zeigten, während sie gleichzeitig die Aktivität einzelner Neuronen aus dem primären visuellen Cortex aufzeichneten, also dem ersten Teil der Großhirnrinde, der visuellen Input von den Augen erhält.

Hubel und Wiesel zeigten den Katzen mithilfe von Dias, die sie auf eine Leinwand projizierten, einfache Formen, wie den Punkt aus Abbildung 1–4. Ihre ersten Ergebnisse waren entmutigend: Ihre Bemühungen lösten keine Reaktion der Neuronen des primären visuellen Cortex aus. Sie waren frustriert, weil diese Zellen, die anatomisch das Eingangstor für die visuellen Informationen in die restliche Großhirnrinde zu sein schienen, nicht auf visuelle Stimuli reagierten. Verzweifelt versuchten Hubel und Wiesel vergeblich, die Neuronen anzuregen, indem sie vor der Katze auf und ab sprangen und mit den Armen fuchtelten. Nichts. Und dann, wie bei vielen der großen Entdeckungen, von Röntgen-Strahlen über das Penicillin bis zum Mikrowellenofen, machten Hubel und Wiesel eine unverhoffte Beobachtung: Als sie eines der Dias aus dem Projektor entfernten, löste dessen gerader Rahmen das unverkennbare Knistern ihres Aufzeichnungsgerätes aus, das damit signalisierte, dass ein Neuron des primären visuellen Cortex feuerte. Voller Freude feierten sie dies auf den Korridoren der Labors ihrer Universität.

image

Abb. 1–3Die Neurophysiologen und Nobelpreis-Gewinner Torsten Wiesel (links) und David Hubel

image

Abb. 1–4Hubel und Wiesel nutzten einen Lichtprojektor, um narkotisierten Katzen Dias zu zeigen, während sie die Aktivitäten im primären visuellen Cortex aufzeichneten. Für diese Experimente waren den Katzen elektrische Aufzeichnungsvorrichtungen in den Schädel implantiert worden. Wir schätzen, dass es angenehmer ist, die Aktivierung der Neuronen durch eine Glühlampe zu versinnbildlichen, statt die eigentliche Versuchsanordnung darzustellen. Gezeigt wird in diesem Bild ein Neuron aus dem primären visuellen Cortex, das zum Glück durch die gerade Kante eines Dias aktiviert wurde.

Die glückliche Zufallsentdeckung des feuernden Neurons zeigte keine Anomalie. Durch weitere Experimente entdeckten Hubel und Wiesel, dass die Neuronen, die einen visuellen Input vom Auge empfingen, im Allgemeinen am empfänglichsten für einfache, gerade Kanten waren. Passenderweise nannten sie diese Zellen einfache Neuronen.

Wie Abbildung 1–5 zeigt, stellten Hubel und Wiesel fest, dass ein bestimmtes einfaches Neuron optimal auf eine Kante mit einer jeweils speziellen Ausrichtung reagiert. Eine große Gruppe aus Neuronen, die jeweils darauf spezialisiert sind, eine bestimmte Kantenausrichtung zu entdecken, kann gemeinsam die insgesamt möglichen 360 Grad an Ausrichtung darstellen. Diese einfachen Zellen für die Erkennung der Kantenausrichtung übergeben die Informationen dann weiter an eine große Zahl sogenannter komplexer Neuronen. Ein bestimmtes komplexes Neuron empfängt visuelle Informationen, die bereits durch mehrere einfache Zellen verarbeitet wurden, sodass es in der Lage ist, mehrere Linienausrichtungen zu einer komplexeren Form zu kombinieren, wie etwa zu einer Ecke oder einer Kurve.

image

Abb. 1–5Eine einfache Zelle im primären visuellen Cortex einer Katze feuert in unterschiedlichen Raten, die von der Ausrichtung einer Linie abhängig sind, die der Katze gezeigt wird. Die Ausrichtung der Linie ist in der linken Spalte zu sehen, während die rechte Spalte das Feuern (die elektrische Aktivität) der Zelle über eine bestimmte Zeitspanne (eine Sekunde) zeigt. Eine senkrechte Linie (in der fünften Zeile von oben) verursacht die stärkste elektrische Aktivität für diese spezielle einfache Zelle. Linien, die nicht ganz senkrecht stehen (in den Zwischenzeilen) verursachen eine geringere Aktivität in der Zelle, während Linien, die nahezu waagerecht sind (in der obersten und untersten Zeile) kaum bis gar keine Aktivität auslösen.

image

Abb. 1–6Diese Zeichnung zeigt, wie aufeinanderfolgende Ebenen aus biologischen Neuronen visuelle Informationen im Gehirn etwa einer Katze oder eines Menschen darstellen.

Abbildung 1–6 illustriert, wie über viele hierarchisch organisierte Ebenen aus Neuronen, die Informationen an zunehmend übergeordnete Neuronen weiterreichen, schrittweise immer komplexere visuelle Stimuli durch das Gehirn dargestellt werden können. Die Augen sind auf das Bild eines Mäusekopfes gerichtet. Lichtphotonen stimulieren Neuronen in der Retina der einzelnen Augen. Diese visuellen Rohinformationen werden von den Augen in den primären visuellen Cortex des Gehirns übertragen. Die erste Schicht der Neuronen des primären visuellen Cortex, die diesen Input empfangen – Hubel und Wiesels einfache Zellen –, ist darauf spezialisiert, Kanten (gerade Linien) mit bestimmten Ausrichtungen zu erkennen. Es gibt viele Tausend solcher Neuronen; aus Gründen der Einfachheit zeigen wir in Abbildung 1–6 nur vier von ihnen. Diese einfachen Neuronen übermitteln Informationen über das Vorhandensein oder Fehlen von Linien einer bestimmten Ausrichtung an eine nachfolgende Ebene komplexer Zellen, die die Informationen aufnehmen und neu kombinieren, um auf diese Weise die Darstellung komplexerer visueller Stimuli, wie etwa der Wölbung des Mäusekopfes, zu ermöglichen. Während die Informationen mehrere aufeinanderfolgende Schichten durchlaufen, können die Darstellungen visueller Stimuli schrittweise immer komplexer und abstrakter werden. Wie durch die ganz rechte Schicht der Neuronen gezeigt wird, ist das Gehirn nach vielen Schichten dieser hierarchischen Verarbeitung (der gestrichelte Pfeil soll andeuten, dass viele weitere Verarbeitungsschichten vorhanden sind, aber nicht gezeigt werden) schließlich in der Lage, visuelle Konzepte darzustellen, die so komplex sind wie eine Maus, eine Katze, ein Vogel oder ein Hund.

Heute haben Neurowissenschaftler mithilfe zahlloser weiterer Aufzeichnungen aus den kortikalen Neuronen von Gehirnchirurgie-Patienten sowie aus nichtinvasiven Techniken wie der Magnetresonanztomographie (MRT)5 eine ziemlich hoch aufgelöste Karte der Regionen zusammengestellt, die sich auf die Verarbeitung bestimmter visueller Stimuli spezialisiert haben, wie etwa Farbe, Bewegung und Gesichter (siehe Abbildung 1–7).

image

Abb. 1–7Regionen des visuellen Cortex. Die Region V1 empfängt Input von den Augen und enthält die einfachen Zellen, die die Kantenausrichtung erkennen. Durch die Neukombination von Informationen über eine Vielzahl nachfolgender Schichten aus Neuronen (unter anderem in den Regionen V2, V3 und V3a) werden zunehmend abstrakter werdende visuelle Stimuli dargestellt. Im menschlichen Gehirn (hier zu sehen) gibt es Regionen, die besonders viele Neuronen mit bestimmten Spezialisierungen enthalten, zum Beispiel für die Erkennung von Farbe (V4), Bewegung (V5) oder Gesichtern von Menschen (die »Fusiform Face Area« oder FFA).

1.2Maschinelles Sehen

Wir haben das biologische visuelle System nicht nur deswegen diskutiert, weil es interessant ist (obwohl Sie hoffentlich den vorangegangenen Abschnitt absolut faszinierend fanden), sondern weil es als Inspiration für die Deep-Learning-Ansätze des maschinellen Sehens (Machine Vision) dient, wie in diesem Abschnitt deutlich werden soll.

Abbildung 1–8 bietet einen kurzgefassten historischen Zeitstrahl des Sehens in biologischen Organismen sowie in Maschinen. Der obere, blaue Zeitstrahl hebt die Entwicklung des Sehens bei den Trilobiten sowie die Veröffentlichung von Hubel und Wiesel aus dem Jahre 1959 über das hierarchische Wesen des primären visuellen Cortex hervor, von dem im vorangegangenen Abschnitt die Rede war. Der Zeitstrahl zum maschinellen Sehen ist in zwei parallele Strömungen aufgeteilt, die zwei alternative Ansätze verkörpern. Der mittlere, rosa Zeitstrahl stellt den Deep-Learning-Ansatz dar, der in diesem Buch behandelt wird. Der untere, lila Zeitstrahl repräsentiert derweil den traditionellen Machine-Learning-Weg (ML) zum Sehen. Der Vergleich der beiden Vorgehensweisen verdeutlicht, wieso das Deep Learning so leistungsfähig und revolutionär ist.

image

Abb. 1–8Verkürzte Zeitlinie für das biologische und maschinelle Sehen. Darin haben wir hervorgehoben, wann welche Ansätze für das Deep Learning sowie für das traditionelle Machine Learning aufkamen, auf die in diesem Abschnitt eingegangen wird.

1.2.1Das Neocognitron

Inspiriert durch Hubel und Wiesels Entdeckung der einfachen und komplexen Zellen, die die Hierarchie des primären visuellen Cortex bilden, schlug der japanische Elektroingenieur Kunihiko Fukushima Ende der 1970er-Jahre eine analoge Architektur für das maschinelle Sehen vor, die er als Neocognitron6 bezeichnete. Zwei Dinge sind besonders bemerkenswert:

  1. Fukushima bezog sich in seinen Schriften explizit auf die Arbeit von Hubel und Wiesel. Im Speziellen verweist sein Artikel auf ihre entscheidenden Artikel zur Organisation des primären visuellen Cortex und nutzt ebenfalls die Terminologie der »einfachen« und »komplexen« Zellen, um die erste bzw. zweite Schicht seines Neocognitron zu beschreiben.
  2. Wenn man künstliche Neuronen7 auf diese hierarchische Weise anordnet, repräsentieren diese Neuronen – genau wie ihre biologische Inspiration aus Abbildung 1–6 – im Allgemeinen die Zeilenausrichtungen in den Zellen, die dem visuellen Rohbild am nächsten liegen, während die tiefer gelegenen Schichten zunehmend komplexer und abstrakter werdende Objekte darstellen. Um diese mächtige Eigenschaft des Neocognitron und seiner Deep-Learning-Abkömmlinge zu verdeutlichen, werden wir am Ende dieses Kapitels ein interaktives Beispiel zeigen, das sie demonstriert.8
1.2.2LeNet-5
image

Abb. 1–9Der in Paris geborene Yann LeCun gehört zu den bedeutendsten Gestalten in der Forschung zu künstlichen neuronalen Netzen und Deep Learning. LeCun ist Gründungsdirektor des New Yorker »University Center for Data Science« sowie Leiter der KI-Forschung des sozialen Netzwerks Facebook.

image

Abb. 1–10Yoshua Bengio ist eine weitere führende Person auf dem Gebiet der künstlichen neuronalen Netze und des Deep Learning. Geboren in Frankreich, arbeitet er jetzt als Informatikprofessor an der University of Montreal und gehört zu den Leitern des renommierten »Machines and Brains«-Programms am kanadischen »Institute for Advanced Research«.

Während das Neocognitron zum Beispiel in der Lage war, handgeschriebene Zeichen zu identifizieren9, stellte die Genauigkeit und Effizienz des LeNet-5-Modells10 von Yann LeCun (Abbildung 1–9) und Yoshua Bengio (Abbildung 1–10) eine beeindruckende Weiterentwicklung dar. Die hierarchische Architektur von LeNet-5 (Abbildung 1–11) baute auf dem Modell von Fukushima und dessen biologischer Inspiration durch Hubel und Wiesel11 auf. Darüber hinaus genossen LeCun und seine Kollegen den Vorteil besserer Daten zum Trainieren ihres Modells12, einer schnelleren Verarbeitungsleistung und – was entscheidend war – des Backpropagation-Algorithmus.

Backpropagation (auch Rückpropagierung oder Rückführung genannt) ermöglicht ein effizientes Lernen durch die Schichten künstlicher Neuronen in einem Deep-Learning-Modell.13 Die Daten der Forscher und die Verarbeitungsleistung sorgten dafür, dass LeNet-5 ausreichend zuverlässig für eine frühe kommerzielle Anwendung des Deep Learning wurde: Der United States Postal Service (USPS) nutzte es, um das Lesen der ZIP-Codes14 auf Briefumschlägen zu automatisieren. In Kapitel 10, wenn es um das maschinelle Sehen geht, werden Sie LeNet-5 aus erster Hand erleben, wenn Sie es selbst entwerfen und auf die Erkennung handgeschriebener Ziffern trainieren.

image

Abb. 1–11grün