Читать книгу Machine Learning für Softwareentwickler - Paolo Perrotta - Страница 8

Оглавление

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 sein, kurze Programme zu schreiben. Wenn Sie Python kennen, dann umso besser, denn das ist die Sprache, die ich hier durchgängig verwende. Wenn nicht, ist das jedoch auch kein Beinbruch. Die Sprache ist sehr benutzerfreundlich, und der Code in diesem Buch ist nicht kompliziert. Zur Einführung können Sie Anhang A, »Grundlagen von Python«, lesen, und wenn Sie nicht mehr weiterwissen, finden Sie im Internet weitere Informationen.

Mit Machine Learning ist eine Menge Mathematik verbunden. Ich werde sie nicht vereinfachen, aber so anschaulich darstellen wie möglich. Für das Verständnis dieses Buchs brauchen Sie schon etwas Oberstufenmathematik. Ich gehe davon aus, dass Sie mit kartesischen Koordinatensystemen vertraut sind, wissen, was Achsen und ein Ursprung sind, und etwas mit einem Funktionsgraphen anfangen können. Darüber hinaus brauchen Sie nicht viel mathematisches Fachwissen. Sie können auch versuchen, das Buch zu lesen, wenn Sie glauben, ganz furchtbar schlecht in Mathe zu sein – aber bereiten Sie sich in diesem Fall schon einmal darauf vor, dass es vielleicht doch nicht möglich ist.

Wenn Sie sich dagegen mit linearer Algebra und Analysis gut auskennen, werden Ihnen einige der mathematischen Aspekte wahrscheinlich selbstverständlich erscheinen. In diesem Fall können Sie die Erklärungen, die Sie nicht brauchen, natürlich auch gern überspringen.

Mathematischer Hintergrund

Eine anschauliche Darstellung von mathematischen Dingen ist immer sehr hilfreich, aber manchmal sind auch formalere Erklärungen sinnvoll. Wenn Sie bei der einen oder anderen Formel den Faden verlieren oder wenn Ihnen Mathematik liegt und Sie gern mehr über ein Thema erfahren wollen, dann schauen Sie sich die Kästen mit dem Titel »Mathematischer Hintergrund« an. Darin weise ich Sie auf die Mathematiklektionen der hervorragenden Khan Academy1 hin. Dort werden Sie etwas Passendes für sich finden, wie gut oder schlecht Ihre Vorkenntnisse in Mathematik auch immer sein mögen.

Um es ganz klar zu sagen: Diese zusätzlichen Lektionen sind optional. Es ist nicht erforderlich, sie sich anzusehen, um dieses Buch verstehen zu können. Sie dienen lediglich dazu, Ihre Kenntnisse über die Mathematik des Machine Learning zu vertiefen.

Machine Learning bringt seine eigene umfangreiche und besondere Terminologie mit. Sie werden daher wahrscheinlich auf neue Wörter und auf neue Bedeutungen bekannter Wörter stoßen. Gehen Sie es ruhig an. Sie müssen sich nicht sofort alles merken. Im Zweifelsfall können Sie immer in Anhang B, »Wörterbuch des Machine Learning«, nachschlagen.

Viele der Datenmengen, die ich als Beispiele verwende, bestehen aus Bildern. Mit Machine Learning können Sie jedoch mehr tun, als nur Bilder zu erkennen: Sie können Text analysieren, Musik generieren und sogar Unterhaltungen führen. Allerdings eignet sich gerade die Bilderkennung für anschauliche Beispiele, weshalb ich diese Disziplin im ganzen Buch als Standardanwendung benutze.

Es gibt auch einige Onlineressourcen, die Sie kennen sollten. Eine davon ist die offizielle Webseite2 zur Originalausgabe dieses Buchs auf Pragmatic Bookshelf. Von dort können Sie auch den Quellcode der Beispiele herunterladen.

Verweise auf ProgML sind auf diese Weise gestaltet.

Des Weiteren gibt es zu diesem Buch eine Begleitwebsite namens ProgML3. Sie enthält (in englischer Sprache) einige zusätzliche Erklärungen und Einzelheiten, die nicht mehr in dieses Buch passten. An den entsprechenden Stellen im Text habe ich Verweise darauf angegeben.

Genug der Vorrede – legen wir nun los mit Teil I!

Machine Learning für Softwareentwickler

Подняться наверх