Interview mit Adam Geitgey

„Python ist heute die populärste Programmiersprache für maschinelles Lernen“

Redaktion JAXenter

Maschinelles Lernen mag futuristisch klingen, ist es aber gar nicht. Durch Spracherkennungssysteme wie Cortana oder die Suche in E-Commerce-Systemen wissen wir, welche Vorteile und Herausforderungen es in diesem Bereich gibt. In unserer Serie zum Maschinellen Lernen haben wir bereits einige Tools vorgestellt, die das Tor zum Machine Learning öffnen. Nun ist es an der Zeit, die Thematik aus Perspektive eines Software-Entwicklers zu beleuchten: Wir haben uns mit Adam Geitgey über die Grundlagen und die praktische Nutzung von Maschinellem Lernen unterhalten.

Unser Interview mit Adam Geitgey, dem Leiter der Software-Engineering-Abteilung bei Groupon, ist Teil unseres Themen-Dossiers zu Machine Learning. Das Dossier besteht aus Fachartikeln, Expertenmeinungen und aktuellen Berichten aus der Szene. In Steckbriefen stellen wir zudem kontinuierlich einzelne Projekte- und Tools vor.

JAXenter: Hallo Adam und danke, dass du dir die Zeit für unser Interview genommen hast. Wie genau bist du denn in die Welt des Maschinellen Lernens hineingeraten?

Adam Geitgey: Rein beruflich bin ich vorrangig in der traditionellen Software-Entwicklung beheimatet und nicht im Maschinellen Lernen. Ich war zum Beispiel unter anderem für die Skalierung großer Web-Seiten verantwortlich, habe Backend-Systeme erstellt und mobile Apps geschrieben. Ich war allerdings schon immer von der Idee fasziniert, Computer für die Lösung komplexer Probleme zu verwenden, die nicht wirklich linear und eindeutig sind.

Vor etwa zehn Jahren kam ich dann über einen Artikel von Peter Norvig das erste Mal mit probablistischer Programmierung in Kontakt. Darin ging es um die Verwendung der Probablistik für sprachliche Korrekturen in Texten, also zum Beispiel für die Korrektur der Rechtschreibung. Das fand ich so faszinierend, dass ich mich gleich nach weiteren Artikeln zu dem Thema umsah – so landete ich schließlich beim Maschinellen Lernen. Und als ich dessen Themenspektrum ein wenig gesichtet hatte, war es um mich geschehen. Ich begann damit, Artikel zu schreiben und an Projekten mitzuarbeiten.

JAXenter: Künstliche Intelligenz (KI) ist kein neues Konzept. Bereits in den 1960er Jahren wurde darüber diskutiert und spekuliert. Die Erwartungen für die Zukunft waren damals noch recht hoch, doch wirklich erfüllt haben sie sich nicht. Erst jetzt mit Machine Learning und Deep Learning scheint es in diesem Bereich ein wenig voranzugehen. Wieso ist dieser neue Ansatz vielversprechender als der alte?

Adam Geitgey: Moderne neuronale Netzwerke (Deep Neural Networks) sind dazu in der Lage, selbst herauszufinden, wie Rohdaten auszuwerten sind. Sie brauchen dafür mittlerweile keine Menschen mehr, um ihnen das Format der Daten zu erklären. Dadurch können sie sich sehr leicht eigenständig mit verschiedensten Problemen auseinandersetzen. Ich denke, dass dies ein Schlüsselfaktor ist und auch den größten Unterschied zum alten Ansatz darstellt. Das gleiche neuronale Netzwerk kann heute nach dem richtigen „Training“ Sprache oder Bilder erkennen.

Die Künstliche Intelligenz hat so leider nicht funktioniert: Ein Team hätte etwa an der Spracherkennung gearbeitet, ein anderes an der Bilderkennung und so weiter. Jede individuelle Gruppe hätte sehr viel Zeit aufgewendet, um den besten Weg zur Erkennung und Verarbeitung der Rohdaten herauszufinden.

Es ist unglaublich, was im Bereich des Maschinellen Übersetzens – also der Technik, auf der etwa Google Translate basiert – heute schon möglich ist.

Vor der Verfügbarkeit neuronaler Netzwerke musste jemand, der z.B. ein System zur Erkennung von Äpfeln erstellen wollte, eine ganze Reihe von Komponenten entwickeln: Zuerst ein System, dass die Ränder von Objekten erkennt. Dieses hätte er dann genutzt, um ein Detektionssystem für die Erkennung ganzer Formen zu erstellen und dieses Detektionssystem hätte er dann verwendet, um wiederum ein solches für die Erkennung von apfelförmigen Objekten zu entwickeln.

Mit Deep Neural Networks sind diese vielen Arbeitsschritte unnötig geworden, denn der Computer übernimmt alle Zwischenschritte. Der Forscher muss dem neuronalen Netzwerk dann lediglich Bilder von Äpfeln zeigen; wie diese zu identifizieren sind, findet es dann ganz von allein heraus. Gibt man dem Netzwerk stattdessen eine Audio-Datei, in der jemand „Apfel“ sagt, kann es stattdessen lernen, das gesprochene Wort zu identifizieren.

Lesen Sie auch: Künstliche neuronale Netze: Ein Machine-Learning-Beispiel mit Neuroph

Das bedeutet unterm Strich, dass man nach einer erfolgreichen Problemlösung den gleichen Lösungsansatz für andere Bereiche nutzen kann. Durch die Möglichkeit, seine Ergebnisse mit anderen Branchen und Forschungsabteilungen zu teilen, hat sich die Entwicklung von Innovationen deutlich beschleunigt.

JAXenter: In welchem Bereich von ML wird derzeit der größte Fortschritt gemacht?

Adam Geitgey: Es ist unglaublich, was im Bereich des Maschinellen Übersetzens heute schon möglich ist (damit ist die Technik gemeint, auf der etwa Google Translate basiert). Es gibt allerdings so viele Durchbrüche in letzter Zeit, dass es schwer ist, auf dem neuesten Stand zu bleiben. In den kommenden Jahren werden diese Übersetzungssysteme immer mehr Kontext verstehen lernen und Dokumente gesamtheitlicher übersetzen können, als lediglich Wort für Wort oder Satz für Satz.

Es wird noch Jahre dauern, bis man endlich eine wirkliche Unterhaltung mit dem Bot in einem Smartphone führen kann.

Sehr viel Entwicklung findet auch bei den sogenannten GANs, also Generative Adversarial Networks statt: Diese werden zukünftig dazu fähig sein, neue Daten auf Basis vorhandenen Materials selbstständig zu generieren. Es wäre vorstellbar, dass man mit ihnen ein System zur Bilderkennung schreibt, bei dem Bilder mit einigen wenigen Wörtern erklärt werden können. Der Computer erstellt daraufhin ein echtes Bild, basierend auf der eingegebenen Beschreibung. Für diese Art der Anwendung gibt es praktisch unendliche Möglichkeiten.

JAXenter: Ein Bereich des Maschinellen Lernens ist die natürliche Spracherkennung. Bots wie Siri, Google Now oder Cortana sorgen dafür, dass Machine Learning in unserem täglichen Leben immer mehr Fuß fasst. Trotzdem ist es nach wie vor nicht möglich, eine „echte“ Unterhaltung mit einer Maschine zu führen. Was ist der Grund dafür, dass eine natürliche Konversation noch immer nicht funktioniert?

Adam Geitgey: Deep Neural Networks haben die Genauigkeit der Spracherkennung, im Vergleich zu älteren Methoden, deutlich erhöht. Das ist auch der Grund dafür, warum die genannten Systeme immer mehr in den Alltag integriert werden können. Erst jetzt, da die Genauigkeit mehr als 95 Prozent beträgt, sind sie auch wirklich angenehm zu benutzen.

Es gibt allerdings einen großen Unterschied zwischen einfacher Erkennung der gesprochenen oder eingegebenen Wörter und dem tatsächlichen Verständnis, was diese Wörter bedeuten. Die Forschung fängt gerade erst damit an, winzige Schritte in diese Richtung zu machen und es wird noch Jahre dauern, bis man endlich eine wirkliche Unterhaltung mit dem Bot in einem Smartphone führen kann.

JAXenter: In deinem ersten Beitrag über ML auf Medium hast du erwähnt, dass Maschinelles Lernen nur dann funktioniert, wenn die gestellte Aufgabe anhand der vorhandenen Daten auch wirklich lösbar ist. Was passiert, wenn es nicht genug Daten zur Aufgabenbewältigung gibt?

Adam Geitgey: Wenn es nicht genug Übungsdaten gibt, wird das Machine-Learning-System sehr ungenau. Da das System nicht genug Daten zur Verfügung hat, um wirklich zu lernen, das Problem zu lösen, wird es aller Voraussicht nach falsche Antworten liefern. Manchmal lässt sich das durch ein paar Tricks umgehen: Beispielsweise indem man verschwommene oder gespiegelte Versionen der Übungsbilder anfertigt, um die schiere Menge an Daten zu erhöhen. Das klappt allerdings nur begrenzt und oft genug ist die einzige Möglichkeit zur Verbesserung, mehr Daten zu sammeln.

JAXenter: Wieviel theoretisches Wissen über Statistik, Algorithmen und neuronale Netzwerke brauchen Entwickler, um sich mit Maschinellem Lernen wirklich auseinandersetzen zu können?

Adam Geitgey: Keine Sorge. Jeder, der Programmieren kann, kann Machine Learning nutzen, um Probleme zu lösen. In fünf Jahren wird ML keiner mehr als Magie ansehen, im Gegenteil: Es wird bald als ein ziemlich normales Werkzeug wahrgenommen werden, das vermutlich nahezu alle Entwickler zur Problemlösung nutzen. Programmierer werden die ie Nutzung von Maschinellem Lernen dann in etwa so betrachten, wie die Nutzung von Datenbanken heute.

Wer sich mit Machine Learning auseinandersetzen möchte, braucht definitiv kein tiefgreifendes mathematisches Wissen.

Wer sich mit Machine Learning auseinandersetzen möchte, braucht definitiv kein tiefgreifendes mathematisches Wissen. Nur, wer ganz neue Algorithmen für das Maschinelle Lernen entwickeln will, muss sich mit den neuesten Forschungsarbeiten befassen und sehr tief in die Algebra und die Statistik eintauchen.

JAXenter: Es gibt eine Menge Projekte, Bibliotheken und Frameworks, die dabei helfen, ML-Anwendungen zu schreiben. Ein Beispiel ist TensorFlow, dass Google seit Kurzem quelloffen anbietet. Welche Technologien würdest du persönlich empfehlen?

Adam Geitgey: Der erste Schritt sollte das Erlernen von Python sein, das derzeit die am weitesten verbreitete Programmiersprache für Maschinelles Lernen ist. Für die meisten einfachen Anwendungsfälle (solche, die kein Deep Learning benötigen) reichen drei Python-Bibliotheken: scikit-learn, NumPy und pandas. Diese kostenlosen Tools sind für die Zusammenarbeit miteinander konzipiert. Im Falle großer Klassifizierungsprobleme kann es sein, dass die Arbeit mit scikit-learn auf einem einzigen Prozessorkern zu langsam abläuft. Dann empfiehlt sich die Verwendung der Bibliothek xgboost, um die Arbeit auf mehrere Kerne zu verteilen.

Lesen Sie auch: TensorFlow: Der Weg des maschinellen Lernens

Für Deep Learning gibt es noch keinen klaren Gewinner: Hier nutzt jeder sein Lieblings-Tool und wenn man die Arbeit anderer nachvollziehen oder adaptieren möchte, wird die Installation einiger unterschiedlicher Toolkits nötig. TensorFlow ist dabei vermutlich das bekannteste, aber es gibt auch andere bekannte Frameworks wie Theano und Torch.

TensorFlow, Theano und Torch sind alle drei Low-Level-Frameworks. Es gibt auch höherstufigere Frameworks wie Keras oder tflearn, die auf diesen aufsetzen und einfachere Programmieroberflächen haben. Diese eignen sich hervorragend für die Implementierung eigener Deep-Learning-Lösungen.

JAXenter: Künstliche Intelligenz hat die Vorstellungskraft der Menschen – oder zumindest der Science-Fiction-Autoren 😉 – beflügelt. Was hältst du persönlich von dem Potential, das ML bzw. KI innehat? Was wird die Zukunft wirklich für das Maschinelle Lernen in petto haben?

Adam Geitgey: Ich denke, dass Maschinelles Lernen uns irgendwann erlauben wird, Arbeiten zu automatisieren, die derzeit noch von Menschen erledigt werden. Das heißt im Umkehrschluß, dass wir sehr viel weniger menschliche Arbeitskraft brauchen, um die Gesellschaft am Laufen zu halten. Es wird sicher interessant zu beobachten, wie sich dies auf die Gesellschaft auswirkt und wie wir mit diesen Veränderungen umgehen. Meine Hoffnung ist, dass wir Mittel und Wege finden, damit jeder von der Künstlichen Intelligenz profitieren kann.

Wir haben Adam Geitgey gebeten, folgende Sätze zu vervollständigen:

In 50 Jahren wird Maschinelles Lernen Teil der Produktionskette oder der Funktionalität jedes einzelnen Produktes auf dem Markt sein.

Wenn Maschinen intelligenter als Menschen werden können wir diese unvorstellbaren Fähigkeiten hoffentlich dazu nutzen, eine bessere Gesellschaft für alle zu erschaffen.

Im Vergleich zum Menschen wird eine Maschine niemals… Ich habe keine Ahnung, ob es wirklich eine Antwort auf diese Frage gibt!

Ohne die Hilfe Maschinellen Lernens wird die Menschheit niemals fähig sein, sämtliche langweiligen Arbeiten der Welt zu automatisieren. Das könnte gut oder schlecht sein.

 

Screen-Shot-2016-09-06-at-11.37.54-AMAdam Geitgey ist Softwaree-Entwickler. Er arbeitet bei Groupon und ist Leiter der Abteilung für Software-Engineering. Er und sein Team erstellen und warten Groupons Web-Plattform.
 
 
Geschrieben von
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.