Machine Learning für Softwareentwickler. Paolo Perrotta
Чтение книги онлайн.
Читать онлайн книгу Machine Learning für Softwareentwickler - Paolo Perrotta страница 5
Danke auch an Annamaria Di Sebastiano, die mir die Geschichte vom Anfang des ersten Kapitels erzählt hat. Lange nicht mehr gesehen!
Des Weiteren danke ich Marc Schnierle für seine hervorragende Web-App LaTeX4technics1, mit der ich die Formeln erstellt habe; Kimberly Geswein für die Gestaltung der Schriftart Indie Flower, die ich in den Diagrammen verwendet habe; den Designern der in der Originalausgabe ausgiebig verwendeten Schriftarten DejaVu Sans und DejaVu Sans Mono; und dem Stadtrat von Brisbane für die Veröffentlichung des Fotos mit dem Ameisenigel2, das in leicht veränderter Form in einem der späteren Kapitel auftaucht.
Dieses Buch ging durch die Hände von drei hervorragenden Lektorinnen. Vielen Dank an Meghan Blanchette und Susan Conant, die mich von den ersten Entwürfen bis zur Mitte des Buchs brachten. Entschuldigt bitte, wenn ich hier noch Unterschiede mache, aber mein besonderer Dank gilt Katherine Dvorak für die unglaubliche Arbeit, die sie in dieses Buch investiert hat, und ihre feste, aber immer geduldige Führung. Du bist eine erstaunliche Lektorin, Katie.
Vielen Dank auch an Dad, Mom, Anna und Susanna sowie an meine erweiterte Familie von Freunden und Verwandten, die weit verstreut rund um die Welt leben. Es ist mir immer eine große Freude, euch um mich zu haben.
Und schließlich danke ich meiner Frau Irene: Du warst da, als ich mit dem Schreiben begann, und hast mich in diesem rauen Sommer sehr unterstützt. Jetzt, da das Buch in den Druck geht, bist du immer noch da, unerschütterlich und unbeirrbar. Ich verdanke dir alles. Dieses Buch ist dir gewidmet.
Wie um alles in der Welt ist so etwas möglich?
Machine Learning kann wie Zauberei wirken. Wie kann ein Computer die Objekte in einem Bild erkennen? Wie kann ein Auto selbstständig fahren?
Diese Leistungen sind nicht nur für Laien verblüffend, sondern auch für viele Softwareentwickler wie Sie und mich. Obwohl ich schon viele Jahre lang Code schrieb, war es mir völlig unklar, wie Machine Learning überhaupt funktionieren konnte. Während ich ein bisschen mit den neuesten Web-Frameworks herumbastelte, schrieben andere Leute faszinierende Software, die wie Science-Fiction wirkte und die ich einfach nicht fassen konnte.
Ich wollte mitmachen. Ich wollte selbst in der Lage sein, solche Dinge zu tun.
Da ich schon wusste, wie man Software schreibt, glaubte ich, ich könnte Machine Learning schnell begreifen. Wie schwer konnte das auch schon sein? Also setzte ich ein zuversichtliches Lächeln auf und widmete mich dem Studium dieses Themas. Mein zuversichtliches Lächeln gefror, als ich gegen ganze Batterien von Wänden anrannte.
Für Entwickler wie mich fühlt sich Machine Learning fremdartig an. Diese Disziplin quillt über von mathematischer Terminologie, akademischen Konventionen und, mal ganz ehrlich gesagt, schlechtem Code. Anstatt auf Tutorials werden Sie auf Vorträge und Forschungsberichte verwiesen. Für viele von uns ist Machine Learning ebenso einschüchternd wie faszinierend.
Dieses Buch ist das, was ich selbst gut hätte gebrauchen können, als ich mich mit Machine Learning zu befassen begann: eine Einführung, die sich an Entwickler richtet und in unserer Sprache geschrieben ist. Nach der Lektüre werden Sie mit den Grundlagen vertraut und in der Lage sein, Machine-Learning-Programme zu schreiben. Höchstwahrscheinlich werden Sie dann zwar immer noch nicht ihr eigenes selbstfahrendes Auto konstruieren können, aber zumindest werden Sie wissen, wie um alles in der Welt so etwas möglich ist.
Über dieses Buch
Dies ist ein Buch für Entwicklerinnen und Programmierer, die Machine Learning von der Pike auf lernen wollen.
Machine Learning ist ein sehr breit gefächertes Gebiet, das sich in einem einzelnen Buch nicht vollständig abhandeln lässt. Der Schwerpunkt liegt hier daher auf den drei Aspekten des Machine Learning, die heutzutage als die wichtigsten gelten: auf überwachtem Lernen, neuronalen Netzen und Deep Learning. Was es mit diesen Begriffen auf sich hat, werden wir uns im Verlauf dieses Buchs noch ansehen, aber für den Anfang finden Sie hier schon einmal eine Skizze sowie einige Definitionen in Kurzfassung:
Überwachtes Lernen ist die heutzutage am weitesten verbreitete Spielart des Machine Learning. Teil I dieses Buchs, »Von null auf Bilderkennung«, gibt eine praktische Einführung in überwachtes Lernen. Schon im zweiten Kapitel werden wir ein minimales ML-Programm schreiben, das wir anschließend Schritt für Schritt erweitern und in ein als Perzeptron bezeichnetes Machine-Learning-System verwandeln. Unser Perzeptron ist dabei ein echtes Programm für maschinelles Sehen, das leistungsfähig genug ist, um handgeschriebene Zeichen zu erkennen. Wir gestalten es komplett selbst, ohne dazu ML-Bibliotheken zu Hilfe zu nehmen, damit Sie jede einzelne Zeile des Codes genau verstehen.
Es gibt viele verschiedene Möglichkeiten, um ein System für überwachtes Lernen zu implementieren. Am häufigsten werden dazu neuronale Netze verwendet. Dabei handelt es sich um einen brillanten Algorithmus, der sich an die Verknüpfung der Neuronen in unserem Gehirn anlehnt. Teil II dieses Buchs ist diesen Netzen gewidmet. Hier bauen wir das Programm aus Teil I zu einem richtiggehenden neuronalen Netz aus. Dazu müssen wir einige Probleme überwinden, aber die Mühe zahlt sich aus: Am Ende haben wir ein neuronales Netz, das weit leistungsfähiger ist als unser ursprüngliches Programm. Auch hier schreiben wir den Code wieder Zeile für Zeile selbst, sodass Sie selbst mit den internen Mechanismen experimentieren können.
In den letzten Jahren wurden bei neuronalen Netzen erhebliche Fortschritte erzielt, als Forscher bahnbrechende Techniken zu ihrer Konstruktion und Verwendung erfanden. Diese moderne Technologie ist weit leistungsfähiger als die früheren einfachen neuronalen Netze, weshalb sie auch einen eigenen Namen erhalten hat: Deep Learning. Das ist auch der Titel von Teil III. Darin schreiben wir unser neuronales Netz mithilfe einer modernen ML-Bibliothek um. Der resultierende Code dient uns dann als Ausgangspunkt zur weiteren Erörterung von Deep Learning. Am Ende schauen wir uns noch einige anspruchsvolle Deep-Learning-Techniken an, womit wir auch die Grundlagen für Ihre weitere Beschäftigung mit diesem Thema legen.
Die Wirklichkeit ist natürlich nicht so sauber geordnet, wie unser Bild anzudeuten scheint. Beispielsweise kommen neuronale Netze nicht nur beim überwachten Lernen, sondern auch auf anderen Gebieten des Machine Learning zum Einsatz. Allerdings bildet dieses Diagramm einen guten Ausgangspunkt, um ein Gefühl für die einzelnen Themen in diesem Buch und ihre Beziehungen zueinander zu gewinnen.
Bevor wir beginnen
Dieses Buch macht Sie nicht über Nacht zu einem Machine-Learning-Profi, aber es kann Ihnen ein anschauliches, praktisches Verständnis dafür vermitteln, wie Machine Learning funktioniert. Ich will Ihnen einen Blick hinter die Kulissen dieser Disziplin gewähren, Ihnen die verborgenen Mechanismen zeigen und den Schleier des Geheimnisvollen lüften. Wenn Sie erst einmal die Grundprinzipien des Machine Learning kennen, ist es für Sie einfacher, selbst weiter nachzuforschen, diese Techniken in Ihre Berufspraxis einfließen zu ließen und vielleicht sogar eine Karriere als ML-Ingenieur einzuschlagen.
Sie müssen kein erfahrener Entwickler sein, um dieses Buch verstehen zu können. Allerdings sollten Sie schon damit vertraut