ebsco publishing : ebook collection (ebscohost) - printed on...

20
Copyright © 2017. O'Reilly. All rights reserved. May not be reproduced in any form without permission from the publisher, except fair uses permitted under U.S. or applicable copyright law. EBSCO Publishing : eBook Collection (EBSCOhost) - printed on 5/12/2019 1:11 PM via TECHNISCHE HOCHSCHULE BINGEN AN: 1620168 ; Rashid, Tariq, Langenau, Frank.; Neuronale Netze selbst programmieren : Ein verständlicher Einstieg mit Python Account: ns261556

Upload: others

Post on 11-Mar-2021

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: EBSCO Publishing : eBook Collection (EBSCOhost) - printed on …team.fh-kl.de/uploads/media/NeuronaleNetze1.pdf · 2019. 6. 2. · Neuronale Netze haben sich aus diesem Drang nach

Copyright © 2017. O'Reilly. All rights reserved. May not be reproduced in any form without permission from the publisher, except fair uses permitted under U.S. or

applicable copyright law.

EBSCO Publishing : eBook Collection (EBSCOhost) - printed on 5/12/2019 1:11 PM via TECHNISCHE HOCHSCHULEBINGENAN: 1620168 ; Rashid, Tariq, Langenau, Frank.; Neuronale Netze selbst programmieren : Ein verständlicherEinstieg mit PythonAccount: ns261556

Page 2: EBSCO Publishing : eBook Collection (EBSCOhost) - printed on …team.fh-kl.de/uploads/media/NeuronaleNetze1.pdf · 2019. 6. 2. · Neuronale Netze haben sich aus diesem Drang nach

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.plusPDF.

Papier

Copyright © 2017. O'Reilly. All rights reserved. May not be reproduced in any form without permission from the publisher, except fair uses permitted under U.S. or

applicable copyright law.

EBSCO Publishing : eBook Collection (EBSCOhost) - printed on 5/12/2019 1:11 PM via TECHNISCHE HOCHSCHULEBINGENAN: 1620168 ; Rashid, Tariq, Langenau, Frank.; Neuronale Netze selbst programmieren : Ein verständlicherEinstieg mit PythonAccount: ns261556

Page 3: EBSCO Publishing : eBook Collection (EBSCOhost) - printed on …team.fh-kl.de/uploads/media/NeuronaleNetze1.pdf · 2019. 6. 2. · Neuronale Netze haben sich aus diesem Drang nach

Neuronale Netze selbstprogrammieren

Ein verständlicher Einstieg mit Python

Tariq Rashid

Deutsche Übersetzung vonFrank Langenau

Copyright © 2017. O'Reilly. All rights reserved. May not be reproduced in any form without permission from the publisher, except fair uses permitted under U.S. or

applicable copyright law.

EBSCO Publishing : eBook Collection (EBSCOhost) - printed on 5/12/2019 1:11 PM via TECHNISCHE HOCHSCHULEBINGENAN: 1620168 ; Rashid, Tariq, Langenau, Frank.; Neuronale Netze selbst programmieren : Ein verständlicherEinstieg mit PythonAccount: ns261556

Page 4: EBSCO Publishing : eBook Collection (EBSCOhost) - printed on …team.fh-kl.de/uploads/media/NeuronaleNetze1.pdf · 2019. 6. 2. · Neuronale Netze haben sich aus diesem Drang nach

Tariq Rashid

Lektorat: Alexandra FolleniusÜbersetzung: Frank LangenauKorrektorat: Sibylle FeldmannHerstellung: Susanne BröckelmannUmschlaggestaltung: Michael Oréal, www.oreal.deSatz: III-satz, www.drei-satz.deDruck und Bindung: M.P. Media-Print Informationstechnologie GmbH, 33100 Paderborn

Bibliografische Information der Deutschen NationalbibliothekDie Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

ISBN: Print 978-3-96009-043-4PDF 978-3-96010-102-4ePub 978-3-96010-103-1mobi 978-3-96010-104-8

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.

1. Auflage 2017

Copyright © 2016 by Tariq Rashid Title of the English original: Make Your Own Neural Network ISBN 978-1530826605

Translation Copyright © 2017 by dpunkt.verlag GmbH. All rights reserved.Wieblinger Weg 17 69123 Heidelberg

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 urheber-rechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Ver-wendung in elektronischen Systemen.

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

Die Informationen in diesem Buch wurden mit größter Sorgfalt erarbeitet. Dennoch können Fehler nicht vollständig ausgeschlossen werden. Verlag, Autoren und Übersetzer übernehmen keine juristische Verant-wortung oder irgendeine Haftung für eventuell verbliebene Fehler und deren Folgen.

5 4 3 2 1 0

Copyright © 2017. O'Reilly. All rights reserved. May not be reproduced in any form without permission from the publisher, except fair uses permitted under U.S. or

applicable copyright law.

EBSCO Publishing : eBook Collection (EBSCOhost) - printed on 5/12/2019 1:11 PM via TECHNISCHE HOCHSCHULEBINGENAN: 1620168 ; Rashid, Tariq, Langenau, Frank.; Neuronale Netze selbst programmieren : Ein verständlicherEinstieg mit PythonAccount: ns261556

Page 5: EBSCO Publishing : eBook Collection (EBSCOhost) - printed on …team.fh-kl.de/uploads/media/NeuronaleNetze1.pdf · 2019. 6. 2. · Neuronale Netze haben sich aus diesem Drang nach

Inhalt | V

Inhalt

Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IX

1 Wie neuronale Netze arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1Leicht für mich – schwer für dich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1Eine einfache Vorhersagemaschine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3Klassifizieren unterscheidet sich nicht sehr vom Vorhersagen . . . . . . . 8Einen einfachen Klassifizierer trainieren . . . . . . . . . . . . . . . . . . . . . . . . . 14Manchmal ist ein Klassifizierer nicht genug . . . . . . . . . . . . . . . . . . . . . . 24Neuronen – die Rechenmaschinen der Natur . . . . . . . . . . . . . . . . . . . . 30Signalen durch ein neuronales Netz folgen . . . . . . . . . . . . . . . . . . . . . . . 39Matrizenmultiplikation ist nützlich – ehrlich! . . . . . . . . . . . . . . . . . . . . 44Beispiel: Ein dreischichtiges Netz mit Matrizenmultiplikation . . . . . . . 51Gewichte von mehr als einem Knoten lernen . . . . . . . . . . . . . . . . . . . . . 59Fehler von mehreren Ausgabeknoten zurückführen . . . . . . . . . . . . . . . . 61Fehler auf mehrere Schichten zurückführen . . . . . . . . . . . . . . . . . . . . . . 63Backpropagierung von Fehlern mit Matrizenmultiplikation . . . . . . . . . 67Wie aktualisieren wir eigentlich die Gewichte? . . . . . . . . . . . . . . . . . . . 70Gewichtsaktualisierung am konkreten Beispiel . . . . . . . . . . . . . . . . . . . 88Die Daten vorbereiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

Eingaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90Ausgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91Zufällige Anfangswerte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

2 Do it yourself mit Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95Interaktives Python = IPython . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96Ein sehr sanfter Start mit Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

Notebooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97Einfaches Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

Copyright © 2017. O'Reilly. All rights reserved. May not be reproduced in any form without permission from the publisher, except fair uses permitted under U.S. or

applicable copyright law.

EBSCO Publishing : eBook Collection (EBSCOhost) - printed on 5/12/2019 1:11 PM via TECHNISCHE HOCHSCHULEBINGENAN: 1620168 ; Rashid, Tariq, Langenau, Frank.; Neuronale Netze selbst programmieren : Ein verständlicherEinstieg mit PythonAccount: ns261556

Page 6: EBSCO Publishing : eBook Collection (EBSCOhost) - printed on …team.fh-kl.de/uploads/media/NeuronaleNetze1.pdf · 2019. 6. 2. · Neuronale Netze haben sich aus diesem Drang nach

VI | Inhalt

Arbeiten automatisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101Kommentare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107Arrays grafisch darstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

Neuronales Netz mit Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118Der Gerüstcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118Das Netz initialisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119Gewichte – das Herz des Netzes . . . . . . . . . . . . . . . . . . . . . . . . . . . 121Optional: differenzierte Initialisierung der Gewichte . . . . . . . . . . . 123Das Netz abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124Der aktuelle Stand des Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126Das Netz trainieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129Der vollständige Code für das neuronale Netz . . . . . . . . . . . . . . . . 132

Die MNIST-Datenbank mit handgeschriebenen Ziffern . . . . . . . . . . . . 133Die MNIST-Trainingsdaten vorbereiten . . . . . . . . . . . . . . . . . . . . . 141Das Netz testen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148Mit sämtlichen Datensätzen trainieren und testen . . . . . . . . . . . . . 152Verbesserungen: Optimieren der Lernrate . . . . . . . . . . . . . . . . . . . 153Verbesserungen: Mehrere Läufe . . . . . . . . . . . . . . . . . . . . . . . . . . . 155Die Gestalt des Netzes ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157Gute Arbeit! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159Der endgültige Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

3 Just for fun: Das neuronale Netz tunen . . . . . . . . . . . . . . . . . . . . . . . . . . . 165Ihre eigene Handschrift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165Das Gedächtnis eines neuronalen Netzes . . . . . . . . . . . . . . . . . . . . . . . 168

Geheimnisvolle Blackbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168Rückwärtsabfrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169Die Kennung »0« . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170Weitere Hirnscans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

Neue Trainingsdaten erzeugen: Drehungen . . . . . . . . . . . . . . . . . . . . . 173

Epilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

A Eine leicht verständliche Einführung in die Analysis . . . . . . . . . . . . . . . . . . 179Eine Gerade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180Eine schräg verlaufende Gerade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182Eine gekrümmte Kurve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184Analysis per Hand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186Analysis nicht per Hand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

Copyright © 2017. O'Reilly. All rights reserved. May not be reproduced in any form without permission from the publisher, except fair uses permitted under U.S. or

applicable copyright law.

EBSCO Publishing : eBook Collection (EBSCOhost) - printed on 5/12/2019 1:11 PM via TECHNISCHE HOCHSCHULEBINGENAN: 1620168 ; Rashid, Tariq, Langenau, Frank.; Neuronale Netze selbst programmieren : Ein verständlicherEinstieg mit PythonAccount: ns261556

Page 7: EBSCO Publishing : eBook Collection (EBSCOhost) - printed on …team.fh-kl.de/uploads/media/NeuronaleNetze1.pdf · 2019. 6. 2. · Neuronale Netze haben sich aus diesem Drang nach

Inhalt | VII

Analysis, ohne Graphen zu zeichnen . . . . . . . . . . . . . . . . . . . . . . . . . . . 191Muster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194Funktionen von Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196Sie können Analysis betreiben! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

B Das Ganze mit einem Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201IPython installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202Vergewissern, dass alles funktioniert . . . . . . . . . . . . . . . . . . . . . . . . . . . 209Ein neuronales Netz trainieren und testen . . . . . . . . . . . . . . . . . . . . . . . 210Erfolg für Raspberry Pi! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

Copyright © 2017. O'Reilly. All rights reserved. May not be reproduced in any form without permission from the publisher, except fair uses permitted under U.S. or

applicable copyright law.

EBSCO Publishing : eBook Collection (EBSCOhost) - printed on 5/12/2019 1:11 PM via TECHNISCHE HOCHSCHULEBINGENAN: 1620168 ; Rashid, Tariq, Langenau, Frank.; Neuronale Netze selbst programmieren : Ein verständlicherEinstieg mit PythonAccount: ns261556

Page 8: EBSCO Publishing : eBook Collection (EBSCOhost) - printed on …team.fh-kl.de/uploads/media/NeuronaleNetze1.pdf · 2019. 6. 2. · Neuronale Netze haben sich aus diesem Drang nach

Copyright © 2017. O'Reilly. All rights reserved. May not be reproduced in any form without permission from the publisher, except fair uses permitted under U.S. or

applicable copyright law.

EBSCO Publishing : eBook Collection (EBSCOhost) - printed on 5/12/2019 1:11 PM via TECHNISCHE HOCHSCHULEBINGENAN: 1620168 ; Rashid, Tariq, Langenau, Frank.; Neuronale Netze selbst programmieren : Ein verständlicherEinstieg mit PythonAccount: ns261556

Page 9: EBSCO Publishing : eBook Collection (EBSCOhost) - printed on …team.fh-kl.de/uploads/media/NeuronaleNetze1.pdf · 2019. 6. 2. · Neuronale Netze haben sich aus diesem Drang nach

| IX

Einführung

Die Suche nach intelligenten MaschinenSeit Tausenden von Jahren versuchen Menschen zu verstehen, wie Denkprozessefunktionieren und wie sie sich mit irgendwelchen Maschinen nachbilden lassen –als Denkmaschinen.

Wir geben uns nicht zufrieden mit mechanischen oder elektronischen Maschinen,die uns bei einfachen Arbeiten unter die Arme greifen – Feuersteine, die Feueranzünden, Flaschenzüge, die schwere Steine heben, und Taschenrechner, die vor-gegebene Rechenaufgaben lösen.

Stattdessen möchten wir anspruchsvollere und komplexere Aufgaben automatisie-ren, beispielsweise ähnliche Fotografien klassifizieren, kranke von gesunden Zel-len unterscheiden oder sogar ein gepflegtes Schachspiel erleben. Solche Aufgabenverlangen anscheinend nach menschlicher Intelligenz oder zumindest nach einergeheimnisvollen, tiefer verborgenen Fähigkeit des menschlichen Gehirns, die manin einfachen Maschinen wie Taschenrechnern nicht findet.

Die Idee einer Maschine mit dieser menschenähnlichen Intelligenz ist so verlockendund übermächtig, dass unsere Kultur viele Fantasien und Ängste dazu entwickelthat – man denke an den äußerst leistungsstarken, doch letztendlich bedrohlichenHAL 9000 aus dem Film 2001: Odyssee im Weltraum von Stanley Kubrick, die ver-rückten Terminator-Roboter und das sprechende KITT-Auto mit cooler Persönlich-keit aus der klassischen TV-Serie Knight Rider.

Als Gary Kasparov, der damals amtierende Schachweltmeister und Großmeister,1997 durch den IBM-Computer Deep Blue geschlagen wurde, fürchteten wir dasPotenzial der Maschinenintelligenz genau so, wie wir diese historische Errungen-schaft gefeiert hatten.

Unser Verlangen nach intelligenten Maschinen ist so stark, dass schon so mancherder Versuchung erlegen war, eine solche Maschine vorzutäuschen. Im berüchtig-ten Schachtürken, einer mechanischen Schachmaschine, war lediglich eine Personim Inneren eines Schranks versteckt!

Copyright © 2017. O'Reilly. All rights reserved. May not be reproduced in any form without permission from the publisher, except fair uses permitted under U.S. or

applicable copyright law.

EBSCO Publishing : eBook Collection (EBSCOhost) - printed on 5/12/2019 1:11 PM via TECHNISCHE HOCHSCHULEBINGENAN: 1620168 ; Rashid, Tariq, Langenau, Frank.; Neuronale Netze selbst programmieren : Ein verständlicherEinstieg mit PythonAccount: ns261556

Page 10: EBSCO Publishing : eBook Collection (EBSCOhost) - printed on …team.fh-kl.de/uploads/media/NeuronaleNetze1.pdf · 2019. 6. 2. · Neuronale Netze haben sich aus diesem Drang nach

X | Einführung

Abbildung E-1: Der Schachtürke – eine »Maschine«, die Schach spielen konnte

Ein neues goldenes Zeitalter – von der Natur inspiriertOptimismus und Ambitionen in Bezug auf künstliche Intelligenz hatten in den1950er-Jahren einen Höhenflug, als das Thema formalisiert wurde. Erste Erfolgezeigten sich bei Computern, die einfache Spiele beherrschten und Lehrsätze bewei-sen konnten. Manche waren davon überzeugt, dass innerhalb eines JahrzehntsMaschinen erscheinen würden, die das Niveau menschlicher Intelligenz erreichten.

Doch die künstliche Intelligenz erwies sich als harter Brocken, und der Fortschrittstagnierte. Die 1970er-Jahre standen unter schlechten Vorzeichen in Bezug aufkünstliche Intelligenz, begleitet von Mittelkürzungen und zurückgehendem Inte-resse.

Es schien so, als würden Maschinen aus kalter, fest verdrahteter Logik, die mitabsoluten Einsen und Nullen arbeiten, niemals in der Lage sein, die nuancenrei-chen organischen, manchmal unscharfen Denkprozesse von biologischen Gehir-nen zu erreichen.

Nach einer Periode ohne wesentliche Fortschritte tauchte eine sehr vielverspre-chende Idee auf, um die Suche nach Maschinenintelligenz aus ihrer Starre zu be-freien. Warum versucht man nicht, künstliche Gehirne zu bauen, indem mankopiert, wie reale biologische Gehirne arbeiten? Reale Gehirne mit Neuronen an-

Copyright © 2017. O'Reilly. All rights reserved. May not be reproduced in any form without permission from the publisher, except fair uses permitted under U.S. or

applicable copyright law.

EBSCO Publishing : eBook Collection (EBSCOhost) - printed on 5/12/2019 1:11 PM via TECHNISCHE HOCHSCHULEBINGENAN: 1620168 ; Rashid, Tariq, Langenau, Frank.; Neuronale Netze selbst programmieren : Ein verständlicherEinstieg mit PythonAccount: ns261556

Page 11: EBSCO Publishing : eBook Collection (EBSCOhost) - printed on …team.fh-kl.de/uploads/media/NeuronaleNetze1.pdf · 2019. 6. 2. · Neuronale Netze haben sich aus diesem Drang nach

Ein neues goldenes Zeitalter – von der Natur inspiriert | XI

stelle von Logikgattern, weichere biodynamische Schlussfolgerungen anstelle vonkalten, harten, schwarz-weißen, absolutistischen herkömmlichen Algorithmen.

Die Wissenschaftler wurden inspiriert von der scheinbaren Einfachheit eines Bie-nen- oder Taubengehirns verglichen mit den komplexen Aufgaben, die sie bewälti-gen konnten. Gehirne, die nur einen Bruchteil eines Gramms wiegen, sind offenbarzu komplizierten Aktionen fähig, zum Beispiel zur Flugsteuerung und Anpassungan den Wind, dazu, Nahrung und Beutetiere zu identifizieren und schnell zu ent-scheiden, ob gekämpft oder geflüchtet werden muss. Könnten Computer, die jetztüber massive billige Ressourcen verfügten, diese Gehirne nachbilden und verbes-sern? Eine Biene hat etwa 950.000 Neuronen – könnten heutige Computer mitSpeicherkapazitäten im Gigabyte- und Terabyte-Bereich die Bienen übertreffen?

Doch mit den herkömmlichen Konzepten zur Problemlösung können diese Com-puter trotz der massiven Speicherkapazitäten und superschnellen Prozessorennicht das erreichen, wozu die relativ winzigen Gehirne von Vögeln und Bienen inder Lage sind.

Neuronale Netze haben sich aus diesem Drang nach biologisch inspiriertem intel-ligentem Computing herausgebildet – und sind in der Folge zu den leistungsfä-higsten und nützlichsten Methoden auf dem Gebiet der künstlichen Intelligenzgeworden. Heute ist Google DeepMind zu fantastischen Dingen fähig, beispiels-weise von sich aus zu lernen, wie Videospiele gespielt werden, und zum erstenMal wurde der Weltmeister im unglaublich komplexen Spiel Go geschlagen. Alswesentlicher Bestandteil der Architektur dienen neuronale Netze. NeuronaleNetze bilden bereits den Kern vieler Alltagstechnologien – wie der automatischenNummernschilderkennung und der Decodierung von handschriftlichen Postleit-zahlen auf handgeschriebenen Briefen.

Dieses Buch erläutert, was neuronale Netze sind, wie sie funktionieren und wie Sieeigene neuronale Netze erstellen können, die sich für die Erkennung von handge-schriebenen Zeichen trainieren lassen. Eine solche Aufgabe ist mit herkömmlichenAnsätzen der Rechentechnik äußerst schwer zu realisieren.

Abbildung E-2: Handgeschriebene Ziffern, die automatisch erkannt werden sollen

05

10152025

0 5 10 15 20 25

Kennung ist 705

10152025

0 5 10 15 20 25

Kennung ist 205

10152025

0 5 10 15 20 25

Kennung ist 105

10152025

0 5 10 15 20 25

Kennung ist 005

10152025

0 5 10 15 20 25

Kennung ist 4

05

10152025

0 5 10 15 20 25

Kennung ist 105

10152025

0 5 10 15 20 25

Kennung ist 405

10152025

0 5 10 15 20 25

Kennung ist 905

10152025

0 5 10 15 20 25

Kennung ist 505

10152025

0 5 10 15 20 25

Kennung ist 9

05

10152025

0 5 10 15 20 25

Kennung ist 705

10152025

0 5 10 15 20 25

Kennung ist 205

10152025

0 5 10 15 20 25

Kennung ist 105

10152025

0 5 10 15 20 25

Kennung ist 005

10152025

0 5 10 15 20 25

Kennung ist 4

05

10152025

0 5 10 15 20 25

Kennung ist 105

10152025

0 5 10 15 20 25

Kennung ist 405

10152025

0 5 10 15 20 25

Kennung ist 905

10152025

0 5 10 15 20 25

Kennung ist 505

10152025

0 5 10 15 20 25

Kennung ist 9

Copyright © 2017. O'Reilly. All rights reserved. May not be reproduced in any form without permission from the publisher, except fair uses permitted under U.S. or

applicable copyright law.

EBSCO Publishing : eBook Collection (EBSCOhost) - printed on 5/12/2019 1:11 PM via TECHNISCHE HOCHSCHULEBINGENAN: 1620168 ; Rashid, Tariq, Langenau, Frank.; Neuronale Netze selbst programmieren : Ein verständlicherEinstieg mit PythonAccount: ns261556

Page 12: EBSCO Publishing : eBook Collection (EBSCOhost) - printed on …team.fh-kl.de/uploads/media/NeuronaleNetze1.pdf · 2019. 6. 2. · Neuronale Netze haben sich aus diesem Drang nach

XII | Einführung

An wen richtet sich dieses Buch?Dieses Buch ist für jeden gedacht, der an neuronalen Netzen interessiert ist, fürjeden, der seine eigenen Netze erstellen und einsetzen möchte. Es richtet sich analle, die sich mit den ziemlich einfachen, aber doch spannenden mathematischenIdeen, die den Kern der Arbeitsweise von neuronalen Netzen bilden, auseinander-setzen wollen.

Der Leser muss kein Experte der Mathematik oder Informatik sein. SpezielleKenntnisse oder mathematische Fähigkeiten, die über die Schulmathematik hin-ausgehen, sind nicht erforderlich. Um Ihre eigenen neuronalen Netze zu erstellen,kommen Sie mit den vier Grundrechenarten aus. Die schwierigste Operation istdie Gradientenanalyse – doch selbst dieses Konzept wird erläutert, sodass es diemeisten Leser verstehen können.

Interessierten Lesern oder Studenten kann dieses Buch als Ausgangspunkt dienen,um spannende Exkursionen in die Welt der künstlichen Intelligenz zu unterneh-men. Hat man einmal die Grundprinzipien neuronaler Netze verinnerlicht, kannman die Kernideen auf viele unterschiedliche Probleme anwenden.

Dozenten können dieses Buch als leicht verständliche Erläuterung neuronalerNetze und ihrer Implementierung nutzen, um Studenten zu begeistern und anzu-regen, künstliche Intelligenz mit nur wenigen Codezeilen einer Programmierspra-che selbst zu erkunden. Die Funktionsfähigkeit des Codes wurde getestet miteinem Raspberry Pi, einem kleinen und preiswerten Computer, der in Schulen undbei Studenten sehr beliebt ist.

Schön wäre es gewesen, wenn es zu meiner Zeit ein solches Buch gegeben hätte,als ich als Teenager mühevoll herausfinden wollte, wie diese leistungsfähigen unddennoch geheimnisvollen neuronalen Netze funktionieren. Zwar konnte manihnen in Büchern, Filmen und Zeitschriften begegnen, doch zu jener Zeit konnteich nur schwierige akademische Artikel finden, die sich an Leute richteten, dieschon Mathematiker waren oder sich zumindest in der mathematischen Aus-drucksweise auskannten.

Wenn mir doch nur jemand das Thema hätte so erläutern können, dass es ein eini-germaßen neugieriger Schüler verstehen kann! Dieses Buch soll das jetzt nach-holen.

Was werden wir tun?In diesem Buch begeben wir uns auf Tour, um ein neuronales Netz zu erstellen,das handschriftliche Ziffern erkennen kann.

Wir beginnen mit sehr einfachen Vorhersageneuronen und verbessern sie sukzes-sive, wenn wir an ihre Grenzen stoßen. Dabei legen wir kurze Pausen ein, wenn

Copyright © 2017. O'Reilly. All rights reserved. May not be reproduced in any form without permission from the publisher, except fair uses permitted under U.S. or

applicable copyright law.

EBSCO Publishing : eBook Collection (EBSCOhost) - printed on 5/12/2019 1:11 PM via TECHNISCHE HOCHSCHULEBINGENAN: 1620168 ; Rashid, Tariq, Langenau, Frank.; Neuronale Netze selbst programmieren : Ein verständlicherEinstieg mit PythonAccount: ns261556

Page 13: EBSCO Publishing : eBook Collection (EBSCOhost) - printed on …team.fh-kl.de/uploads/media/NeuronaleNetze1.pdf · 2019. 6. 2. · Neuronale Netze haben sich aus diesem Drang nach

Wie gehen wir vor? | XIII

erforderliche mathematische Konzepte eingeführt werden, um zu verstehen, wieneuronale Netze lernen und Problemlösungen vorhersagen können.

Auf unserer Tour begegnen wir vielen mathematischen Konzepten. Dazu gehörenzum Beispiel Funktionen, einfache lineare Klassifizierer, iterative Verfeinerung,Matrixmultiplikation, Gradientenrechnung, Optimierung nach dem Gradienten-verfahren und sogar geometrische Drehungen. Alle diese Konzepte werden aberwirklich leicht verständlich erläutert, und über einfache Schulmathematik hinaussind weder Vorkenntnisse noch fachliche Erfahrungen erforderlich.

Nach dem erfolgreichen Aufbau unseres ersten neuronalen Netzes entwickeln wir esin verschiedene Richtungen weiter. So verwenden wir Bildverarbeitung, um unsermaschinelles Lernen zu verbessern, ohne auf zusätzliche Trainingsdaten zurück-zugreifen. Wir werfen sogar einen kurzen Blick in das Gedächtnis unseres neuro-nalen Netzes, um zu erfahren, ob es etwas von seinen inneren Lernmechanismenpreisgibt – etwas, das viele Bücher nicht zeigen!

Außerdem werden wir Python, eine einfache, nützliche und beliebte Programmier-sprache, kennenlernen, wenn wir unser neuronales Netz schrittweise aufbauen.Auch hierfür werden keine vorhandenen Programmierkenntnisse vorausgesetztoder benötigt.

Wie gehen wir vor?Dieses Buch hat vor allem das Ziel, die Konzepte hinter neuronalen Netzen mög-lichst vielen Menschen zugänglich zu machen. Das bedeutet, dass wir bei einemneuen Gedanken immer von etwas Bekanntem ausgehen und es in kleinen, einfa-chen Schritten weiterentwickeln. Auf diese Weise gelangen wie zu einem Punkt,an dem wir interessante und spannende Erkenntnisse über die neuronalen Netzemitnehmen können.

Um den Faden nicht zu verlieren, widerstehen wir der Versuchung, alles zu disku-tieren, was nicht unbedingt erforderlich ist, um ein eigenes neuronales Netz zuerstellen. Es wird aber auf interessante Zusammenhänge und Berührungspunktehingewiesen. Wenn Sie sich näher damit befassen möchten, nur zu!

Dieses Buch betrachtet nicht alle möglichen Optimierungen und Verfeinerungenan neuronalen Netzen. Es gibt viele davon, doch sie würden hier vom eigentlichenZweck ablenken – nämlich die wesentlichen Ideen in möglichst einfacher undüberschaubarer Weise vorzustellen.

Gegliedert ist dieses Buch in drei Kapitel:

• In Kapitel 1 gehen wir behutsam die mathematischen Konzepte durch, die ineinfachen neuronalen Netzen wirken. Wir verzichten zunächst bewusst aufComputerprogramme, um nicht von den Kerngedanken abzulenken.

Copyright © 2017. O'Reilly. All rights reserved. May not be reproduced in any form without permission from the publisher, except fair uses permitted under U.S. or

applicable copyright law.

EBSCO Publishing : eBook Collection (EBSCOhost) - printed on 5/12/2019 1:11 PM via TECHNISCHE HOCHSCHULEBINGENAN: 1620168 ; Rashid, Tariq, Langenau, Frank.; Neuronale Netze selbst programmieren : Ein verständlicherEinstieg mit PythonAccount: ns261556

Page 14: EBSCO Publishing : eBook Collection (EBSCOhost) - printed on …team.fh-kl.de/uploads/media/NeuronaleNetze1.pdf · 2019. 6. 2. · Neuronale Netze haben sich aus diesem Drang nach

XIV | Einführung

• In Kapitel 2 lernen wir gerade so viel Python, um unser eigenes neuronalesNetz implementieren zu können. Wir trainieren es darauf, handgeschriebeneZiffern zu erkennen, und wir testen seine Erkennungsleistung.

• In Kapitel 3 gehen wir weiter, als es für das Verständnis einfacher neuronalerNetze erforderlich ist – just for fun. Wir probieren Ideen aus, um die Leistungunseres neuronalen Netzes weiter zu steigern, und wir werfen auch einen Blickin das Innere eines trainierten Netzes, um zu erkunden, wie das Netz internlernt und Entscheidungen für die Ausgabe trifft.

Und keine Angst: Alle hier verwendeten Softwaretools sind kostenlos und OpenSource, sodass Sie dafür nichts bezahlen müssen. Zudem brauchen Sie keinen teu-ren Computer, um eigene neuronale Netze zu erstellen. Der gesamte Code in die-sem Buch ist auf einem sehr preiswerten (ca. 5 Euro teuren) Raspberry Pi Zerogetestet worden, und am Ende erläutert ein spezieller Abschnitt, wie Sie einen Rasp-berry Pi einsatzbereit machen.

Anmerkung des AutorsIch hätte mein Ziel verfehlt, wenn ich Ihnen keinen Eindruck davon vermittelthätte, wie spannend und überraschend Mathematik und Informatik sein können.

Ich hätte versagt, wenn ich Ihnen nicht gezeigt hätte, wie unglaublich leistungs-stark Schulmathematik und einfache Computerrezepte sein können – indem manmit eigener künstlicher Intelligenz die Lernfähigkeiten menschlicher Gehirnenachbildet.

Ich hätte versagt, wenn ich Ihnen nicht die Zuversicht und den Wunsch mitgege-ben hätte, das unglaublich umfangreiche Gebiet der künstlichen Intelligenz weiterzu erkunden.

Ihr Feedback zu diesem Buch ist mir sehr willkommen. Sie erreichen mich [email protected] oder auf Twitter unter @myoneuralnet.Den Verlag O’REILLY können Sie unter [email protected] anschreiben.

Außerdem finden Sie Diskussionen zu den hier behandelten Themen unter http://makeyourownneuralnetwork.blogspot.co.uk. Dort wird auch eine Errata-Liste mitKorrekturen zum Buch veröffentlicht.

Den im Buch verwendeten Code finden Sie auf GitHub unter:

• https://github.com/makeyourownneuralnetwork/makeyourownneuralnetwork

Copyright © 2017. O'Reilly. All rights reserved. May not be reproduced in any form without permission from the publisher, except fair uses permitted under U.S. or

applicable copyright law.

EBSCO Publishing : eBook Collection (EBSCOhost) - printed on 5/12/2019 1:11 PM via TECHNISCHE HOCHSCHULEBINGENAN: 1620168 ; Rashid, Tariq, Langenau, Frank.; Neuronale Netze selbst programmieren : Ein verständlicherEinstieg mit PythonAccount: ns261556

Page 15: EBSCO Publishing : eBook Collection (EBSCOhost) - printed on …team.fh-kl.de/uploads/media/NeuronaleNetze1.pdf · 2019. 6. 2. · Neuronale Netze haben sich aus diesem Drang nach

| 1

Kapitel 1 KAPITEL 1

Wie neuronale Netze arbeiten

»Lass dich von all den kleinen Dingen um dich herum inspirieren.«

Leicht für mich – schwer für dichComputer sind im Grunde nichts weiter als Rechenmaschinen. Arithmetische Auf-gaben können sie äußerst schnell ausführen.

Damit sind sie prädestiniert für Aufgaben, die vor allem mit Rechnen zu tunhaben – Zahlen addieren, um den Umsatz zu ermitteln, Prozentwerte bilden, umdie Umsatzsteuer zu berechnen, Diagramme vorhandener Daten zeichnen usw.

Selbst beim Ansehen von Catch-up-TV oder beim Streamen von Musik hat derComputer nicht viel mehr zu tun, als immer und immer wieder einfache arithmeti-sche Anweisungen auszuführen. Es mag Sie überraschen, doch auch die über dasInternet übertragenen Videos, die aus Einsen und Nullen bestehen, werden mit arith-metischen Operationen rekonstruiert, die nicht komplexer sind als die Grundre-chenarten, die wir in der Schule gelernt haben.

Zahlen wirklich schnell zu addieren – Tausende oder sogar Millionen pro Se-kunde –, ist sicherlich eindrucksvoll, doch das hat nichts mit künstlicher Intelligenzzu tun. Einem Menschen erscheint es vielleicht schwer, schnell große Summen zubilden, doch ist hierzu kaum Intelligenz erforderlich. Es genügt vollauf, die ein-fachsten Anweisungen zu befolgen, und genau das ist es, was die Elektronik ineinem Computer realisiert.

Drehen wir nun den Spieß um und tauschen wir die Rolle mit dem Computer!

Sehen Sie sich die folgenden Bilder an und versuchen Sie, zu erkennen, was sie ent-halten:

Copyright © 2017. O'Reilly. All rights reserved. May not be reproduced in any form without permission from the publisher, except fair uses permitted under U.S. or

applicable copyright law.

EBSCO Publishing : eBook Collection (EBSCOhost) - printed on 5/12/2019 1:11 PM via TECHNISCHE HOCHSCHULEBINGENAN: 1620168 ; Rashid, Tariq, Langenau, Frank.; Neuronale Netze selbst programmieren : Ein verständlicherEinstieg mit PythonAccount: ns261556

Page 16: EBSCO Publishing : eBook Collection (EBSCOhost) - printed on …team.fh-kl.de/uploads/media/NeuronaleNetze1.pdf · 2019. 6. 2. · Neuronale Netze haben sich aus diesem Drang nach

2 | Kapitel 1: Wie neuronale Netze arbeiten

. . Abbildung 1-1: Bilderkennung – einfacher für den Computer oder für den Menschen?

Wir können ein Bild mit menschlichen Gesichtern, einer Katze und einem Baumsehen und erkennen. Praktisch sind wir dazu sehr schnell in der Lage und nochdazu mit einer ziemlich hohen Genauigkeit. Nur in wenigen Fällen liegen wir falsch.

Die recht großen Informationsmengen, die die Bilder enthalten, können wir sehrerfolgreich verarbeiten, um den Bildinhalt zu erfassen. Derartige Aufgaben sind fürComputer nicht so einfach lösbar – es ist sogar unglaublich schwierig.

Wir ahnen, dass für die Bilderkennung menschliche Intelligenz erforderlich ist –etwas, das Maschinen fehlt, egal wie komplex und leistungsfähig wir sie gebauthaben, weil es eben keine Menschen sind.

Doch es sind genau solche Probleme, die wir dem Computer übertragen möchten –denn Computer arbeiten schnell und werden nicht müde. Um derartige Problemegeht es bei der künstlichen Intelligenz.

Da Computer immer auf Elektronik basieren, besteht die Aufgabe der künstlichenIntelligenz darin, neue Rezepte bzw. Algorithmen zu finden, die auf neuartigeWeise versuchen, derart schwierigere Probleme zu lösen. Selbst wenn das nichtperfekt gelingt, dann immerhin noch gut genug, um einen Eindruck von einermenschenähnlichen Intelligenz in der Praxis zu geben.

Tabelle 1-1: Wer kann was besonders gut verarbeiten?

Problem Computer Mensch

Tausende großer Zahlen schnell multiplizieren Leicht Schwer

Gesichter auf einem Foto mit einer Menschenmenge heraussuchen Schwer Leicht

Kernideen• Manche Aufgaben sind für herkömmliche Computer leicht, für Menschen

aber schwer, beispielsweise das Multiplizieren von Millionen Zahlenpaaren.

• Andererseits sind manche Aufgaben für herkömmliche Computer schwer, fürMenschen jedoch leicht, beispielsweise das Erkennen von Gesichtern aufeinem Foto einer Menschenmenge.

Copyright © 2017. O'Reilly. All rights reserved. May not be reproduced in any form without permission from the publisher, except fair uses permitted under U.S. or

applicable copyright law.

EBSCO Publishing : eBook Collection (EBSCOhost) - printed on 5/12/2019 1:11 PM via TECHNISCHE HOCHSCHULEBINGENAN: 1620168 ; Rashid, Tariq, Langenau, Frank.; Neuronale Netze selbst programmieren : Ein verständlicherEinstieg mit PythonAccount: ns261556

Page 17: EBSCO Publishing : eBook Collection (EBSCOhost) - printed on …team.fh-kl.de/uploads/media/NeuronaleNetze1.pdf · 2019. 6. 2. · Neuronale Netze haben sich aus diesem Drang nach

Eine einfache Vorhersagemaschine | 3

Eine einfache VorhersagemaschineWir beginnen supereinfach und bauen Schritt für Schritt darauf auf.

Stellen Sie sich eine simple Maschine vor, die eine Frage entgegennimmt, etwas»nachdenkt« und eine Antwort ausgibt. Das läuft genau wie im obigen Beispiel ab,in dem wir selbst die Eingaben über die Augen aufnehmen, mit unserem Gehirndie Szene analysieren und daraus ableiten, was die Objekte in dieser Szene bedeu-ten. Abbildung 1-2 stellt dies schematisch dar.

Abbildung 1-2: Schema einer einfachen Vorhersagemaschine

Computer denken nicht wirklich, sie sind lediglich bessere Taschenrechner. Des-halb wollen wir die Vorgänge mit treffenderen Worten beschreiben (siehe Abbil-dung 1-3).

Abbildung 1-3: Alternative Beschreibung der Vorhersagemaschine

Ein Computer nimmt eine Eingabe entgegen, führt bestimmte Berechnungen ausund liefert dann eine Ausgabe. Das folgende Beispiel soll das veranschaulichen. Eswird eine Eingabe von »3 x 4« verarbeitet. Das geschieht möglicherweise dadurch,dass die Multiplikation in einen einfacheren Satz von Additionen überführt wird.Die ausgegebene Antwort lautet »12«.

Abbildung 1-4: Beispiel für die Verarbeitung einer Multiplikation

NachdenkenFrage Antwort

Verarbeitung

(Berechnen)Eingabe Ausgabe

BerechnenEingabe Ausgabe3 x 4 124 + 4 + 4

Copyright © 2017. O'Reilly. All rights reserved. May not be reproduced in any form without permission from the publisher, except fair uses permitted under U.S. or

applicable copyright law.

EBSCO Publishing : eBook Collection (EBSCOhost) - printed on 5/12/2019 1:11 PM via TECHNISCHE HOCHSCHULEBINGENAN: 1620168 ; Rashid, Tariq, Langenau, Frank.; Neuronale Netze selbst programmieren : Ein verständlicherEinstieg mit PythonAccount: ns261556

Page 18: EBSCO Publishing : eBook Collection (EBSCOhost) - printed on …team.fh-kl.de/uploads/media/NeuronaleNetze1.pdf · 2019. 6. 2. · Neuronale Netze haben sich aus diesem Drang nach

4 | Kapitel 1: Wie neuronale Netze arbeiten

Vielleicht denken Sie jetzt: »Was soll daran beeindruckend sein?« Das stimmtschon. Wir verwenden hier einfache und vertraute Beispiele. Damit veranschau-lichen wir die Konzepte, die auf die interessanteren neuronalen Netze angewendetwerden, die wir uns später ansehen.

Fahren wir die Komplexität jetzt eine winzige Stufe höher.

Stellen Sie sich eine Maschine vor, die Kilometer in Meilen umrechnet (siehe Ab-bildung 1-5).

Abbildung 1-5: Umrechnung von Kilometern in Meilen

Nun nehmen wir an, dass wir die Formel für die Umrechnung zwischen Kilome-tern und Meilen nicht kennen. Wir wissen lediglich, dass die Beziehung zwischenbeiden linear ist. Wenn man also die Anzahl der Meilen verdoppelt, wird die glei-che Entfernung in Kilometern ebenfalls verdoppelt. Das ist intuitiv verständlich.Das Universum wäre ein seltsamer Ort, sollte dies nicht gelten!

Diese lineare Beziehung zwischen Kilometern und Meilen liefert uns einen An-haltspunkt über diese geheimnisvolle Berechnung – sie muss die Form haben:Meilen = Kilometer c, wobei c eine Konstante ist. Den Wert dieser Konstanten ckennen wir aber noch nicht.

Die einzigen anderen Anhaltspunkte liefern einige Beispiele, die Kilometer undMeilen paarweise angeben. Diese sind wie Beobachtungen der Wirklichkeit, mitdenen man wissenschaftliche Theorien überprüft – sie sind Beispiele für die Wahr-heit der echten Welt.

Was sollten wir tun, um die fehlende Konstante c zu ermitteln? Setzen wir einfacheinmal einen zufälligen Wert ein und probieren wir es aus! Versuchen wir es mitc = 0,5 und schauen wir, was passiert.

Tabelle 1-2: Wertepaare für die Umrechnung zwischen Kilometern und Meilen

Wahrheitsbeispiel Kilometer Meilen

1 0 0

2 100 62,137

BerechnenKilometer Meilen???

Copyright © 2017. O'Reilly. All rights reserved. May not be reproduced in any form without permission from the publisher, except fair uses permitted under U.S. or

applicable copyright law.

EBSCO Publishing : eBook Collection (EBSCOhost) - printed on 5/12/2019 1:11 PM via TECHNISCHE HOCHSCHULEBINGENAN: 1620168 ; Rashid, Tariq, Langenau, Frank.; Neuronale Netze selbst programmieren : Ein verständlicherEinstieg mit PythonAccount: ns261556

Page 19: EBSCO Publishing : eBook Collection (EBSCOhost) - printed on …team.fh-kl.de/uploads/media/NeuronaleNetze1.pdf · 2019. 6. 2. · Neuronale Netze haben sich aus diesem Drang nach

Eine einfache Vorhersagemaschine | 5

Abbildung 1-6: Zufällig gewählte Konstante c

Hier haben wir Meilen = Kilometer c, wobei Kilometer gleich 100 und c unserederzeitige Schätzung 0,5 sind. Damit erhalten wir 50 Meilen.

Nun gut. Das ist gar nicht mal so schlecht unter dem Aspekt, dass wir c = 0,5 zu-fällig ausgewählt haben! Doch wir wissen, dass das Ergebnis nicht genau ist, weildas Wahrheitsbeispiel Nummer 2 uns sagt, dass die Antwort 62,137 sein sollte.

Wir liegen um 12,137 daneben. Das ist der Fehler, die Differenz zwischen unsererberechneten Antwort und der tatsächlichen Wahrheit aus unserer Beispielliste.Das heißt,

Fehler = wahr - berechnet= 62,137 - 50= 12,137

Abbildung 1-7: Der Fehler bei unserer ersten Schätzung

Was kommt als Nächstes? Wir wissen, dass wir falsch liegen und wie groß dieAbweichung ist. Anstatt nun aufgrund dieses Fehlers zu verzweifeln, nutzen wirihn, um zu einer zweiten, besseren Schätzung für c zu gelangen.

Sehen Sie sich diesen Fehler noch einmal an. Wir haben 12,137 zu wenig ge-schätzt. Da die Formel für die Umrechnung von Kilometern in Meilen eine lineare

Kilometer Meilen100 50

Meilen =Kilometer x

0,5

berechnete Meilen100 500,5

korrekte Meilen62,137

Fehler12,137

KilometerMeilen =

Kilometer x

Copyright © 2017. O'Reilly. All rights reserved. May not be reproduced in any form without permission from the publisher, except fair uses permitted under U.S. or

applicable copyright law.

EBSCO Publishing : eBook Collection (EBSCOhost) - printed on 5/12/2019 1:11 PM via TECHNISCHE HOCHSCHULEBINGENAN: 1620168 ; Rashid, Tariq, Langenau, Frank.; Neuronale Netze selbst programmieren : Ein verständlicherEinstieg mit PythonAccount: ns261556

Page 20: EBSCO Publishing : eBook Collection (EBSCOhost) - printed on …team.fh-kl.de/uploads/media/NeuronaleNetze1.pdf · 2019. 6. 2. · Neuronale Netze haben sich aus diesem Drang nach

6 | Kapitel 1: Wie neuronale Netze arbeiten

Beziehung darstellt (Meilen = Kilometer c), wissen wir, dass bei einer Erhöhungvon c auch der Ausgabewert größer wird.

Wir erhöhen c von 0,5 auf 0,6 und sehen uns das neue Ergebnis an. Wenn c alsoauf 0,6 gesetzt ist, erhalten wir Meilen = Kilometer c = 100 0,6 = 60. Das ist bes-ser als die vorherige Antwort 50. Zweifellos haben wir einen Fortschritt gemacht!

Der Fehler ist nun mit 2,137 viel kleiner. Es könnte sogar ein Fehler sein, mit demwir durchaus leben können.

Abbildung 1-8: Die zweite Schätzung ergibt einen kleineren Fehler.

Wichtig ist hier, dass wir uns bei der Entscheidung, um wie viel der Wert von cangehoben werden soll, am Fehler orientiert haben. Wir wollten die Ausgabe 50vergrößern, also haben wir c ein wenig erhöht.

Anstatt zu versuchen, den genauen Wert zu ermitteln, um den c sich ändern muss,fahren wir mit diesem Verfahren der Verfeinerung von c fort. Wenn Sie davonnicht überzeugt sind und meinen, es sei doch einfach genug, die genaue Antwortzu ermitteln, sollten Sie daran denken, dass vielen der interessanteren Problemekeine so einfache Formel zugrunde liegt, die Ausgabe und Eingabe in Beziehungbringt. Deshalb brauchen wir raffiniertere Methoden – wie zum Beispiel neuronaleNetze.

Fahren wir also fort. Die Ausgabe von 60 ist immer noch zu klein. Wir schraubenden Wert von c ein weiteres Mal nach oben, und zwar von 0,6 auf 0,7.

100 600,6

62,137

2,137

berechnete Meilen

korrekte Meilen

Fehler

KilometerMeilen =

Kilometer x

Copyright © 2017. O'Reilly. All rights reserved. May not be reproduced in any form without permission from the publisher, except fair uses permitted under U.S. or

applicable copyright law.

EBSCO Publishing : eBook Collection (EBSCOhost) - printed on 5/12/2019 1:11 PM via TECHNISCHE HOCHSCHULEBINGENAN: 1620168 ; Rashid, Tariq, Langenau, Frank.; Neuronale Netze selbst programmieren : Ein verständlicherEinstieg mit PythonAccount: ns261556