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.
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.
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.
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 |
Eine anschauliche Einführung in Machine Vision, Natural Language Processing und Bilderzeugung für Programmierer und Datenanalysten
Aus dem Englischen von Kathrin Lichtenberg
Jon Krohn · Grant Beyleveld · Aglaé Bassens
Lektorat: Gabriel Neumann
Übersetzung: Kathrin Lichtenberg, Ilmenau
Copy-Editing: Friederike Daenecke, Zülpich
Terminologie-Beratung: Marcus Fraaß
Satz: Birgit Bäuerlein
Herstellung: Stefanie Weidner
Umschlaggestaltung: Helmut Kraus, www.exclam.de
Druck und Bindung: mediaprint solutions GmbH, 33100 Paderborn
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-86490-663-3 |
|
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
Wieblinger Weg 17 · 69123 Heidelberg
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
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc.
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: hallo@dpunkt.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
Für Gigi
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
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.
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:
Ü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.
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:
Kapitel 1 und Kapitel 5 bis 10
Kapitel 2 und 11
Kapitel 3, 4, 12 und 13
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.
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
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
1Biologisches und maschinelles Sehen
2Menschen- und Maschinensprache
3Maschinenkunst
4Spielende Maschinen
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.
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.
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.
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.
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).
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.
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:
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.