Machine Learning ist das Teilgebiet der künstlichen Intelligenz, das sich mit der Gestaltung und Entwicklung von Algorithmen befasst, die es Computern ermöglichen, ihre Leistung im Laufe der Zeit auf der Grundlage von Daten, wie z.B. Sensordaten oder Datenbanken, zu verbessern. Wikipedia

Vor zehn Jahren waren Machine Learning Unternehmen praktisch nicht vorhanden oder sagen wir, höchstens marginal. Der Hauptgrund für diese Situation war einfach, dass es zu dieser Zeit nicht viele tatsächlich funktionierende Algorithmen gab, die einen Geschäftswert lieferten. Automatische Übersetzungen zum Beispiel funktionieren immer noch kaum und sind in den meisten Unternehmen kaum nutzbar.

Lokad passt in das breite Feld des Machine Learning, mit einem speziellen Interesse an statistischem Lernen. Persönlich arbeite ich seit fast einem Jahrzehnt im Bereich des Machine Learning, und es ist immer noch erstaunlich zu sehen, wie sich die Dinge in diesem Bereich im Vergleich zur typischen Shrinkwrap-Software-Welt grundlegend unterscheiden. Machine Learning ist eine eigene Softwarewelt.

Der wissenschaftliche Fortschritt in Bereichen, die wie künstliche Intelligenz aussahen, war langsam, sehr langsam im Vergleich zu den meisten anderen Softwarebereichen. Aber eine Tatsache, die zu wenig bekannt ist, ist auch, dass der wissenschaftliche Fortschritt stetig war; und heute gibt es ziemlich viele erfolgreiche Machine Learning Unternehmen:

  • Intelligenter Spamfilter: Verdammt, Akismet hat mehr als 71.000 Blog-Spam-Kommentare auf meinem Blog erwischt, mit praktisch null Fehlalarmen, soweit ich das beurteilen kann.
  • Spracherkennung: Dragon Dictate macht jetzt nach nur wenigen Minuten Benutzereinstellung einen beeindruckenden Job.
  • Handschrifterkennung und sogar Gleichungserkennung sind in Windows 7 integriert.

Machine Learning ist zum Mainstream geworden.

1. Das Produkt ändert sich, aber die Benutzeroberfläche bleibt gleich

Für die meisten Softwareunternehmen ist es DER Weg, wiederkehrende Einnahmen zu erzielen, etwas Neues für die Kunden zu bieten. SaaS verändert dieses finanzielle Aspekt langsam, aber dennoch geht mit den meisten SaaS-Produkten eine Entwicklung mit sehr konkreten Änderungen an der Benutzeroberfläche einher.

Im Gegensatz dazu bedeutet Entwicklung im Machine Learning in der Regel nicht, neue Funktionen hinzuzufügen. Die meiste Entwicklung findet tief im Inneren statt, mit sehr wenigen oder gar keinen sichtbaren Veränderungen. Die Google-Suche - wahrscheinlich das erfolgreichste aller Machine Learning-Produkte - ist bekanntermaßen einfach und ist seit einem Jahrzehnt so geblieben. In letzter Zeit wurde die Anpassung der Rangfolge basierend auf den Benutzervorlieben hinzugefügt, aber diese Änderung erfolgte fast 10 Jahre nach dem Start und wird meiner Meinung nach von den meisten Benutzern immer noch nicht bemerkt.

Dennoch bedeutet das nicht, dass die Leute bei Google in den letzten 10 Jahren untätig waren. Ganz im Gegenteil, die Google-Teams haben ihre Technologie furios verbessert und Schlacht um Schlacht gegen Web-Spammer gewonnen, die jetzt sehr clevere Tricks verwenden.

2. Zehn Größenordnungen in der Leistung

Wenn es um die Leistung von Software geht, erfolgen übliche Shrinkwrap-Operationen innerhalb von 100 ms. Zum Beispiel vermute ich, dass übliche Rechenzeiten auf der Serverseite, die zur Generierung einer Webseitenanwendung benötigt werden, von 5 ms für die am besten optimierten Apps bis zu 500 ms für die langsamsten Apps reichen. Seien Sie langsamer als das, und Ihre Benutzer werden Ihren Website-Besuch abbrechen. Obwohl es kaum überprüfbar ist, vermute ich, dass dieser Leistungsbereich für 99% der Webanwendungen zutrifft.

Aber wenn es um Machine Learning geht, variieren die typischen Berechnungskosten um mehr als 10 Größenordnungen, von Millisekunden bis zu Wochen.

Heutzutage ist der Preis für 1 Monat CPU bei 2 GHz auf 10 $ gesunken, und ich erwarte, dass dieser Preis in den nächsten 5 Jahren unter 1 $ fallen wird. Außerdem kann ein Monat CPU-Zeit durch umfangreiche Parallelisierung innerhalb weniger Stunden Wandzeit komprimiert werden. Bei den meisten Machine Learning-Algorithmen kann die Genauigkeit durch die Zuweisung mehr CPU-Ressourcen zur Aufgabe verbessert werden.

Daher kann es massiv profitabel sein, mit einer 1-monatigen CPU-Investition ($10) eine Genauigkeit von 1% zu gewinnen, aber eine solche Denkweise ist für die meisten, wenn nicht sogar alle, Softwarebereiche außerhalb des Machine Learning einfach nur Wahnsinn.

3. Herausforderungen bei der Skalierbarkeit

Das Skalieren eines Web2.0 wie zum Beispiel Twitter ist sicherlich eine Herausforderung, aber letztendlich liegt 90% der Lösung in einer einzigen Technik: dem In-Memory-Caching der am häufigsten angezeigten Elemente.

Im Gegensatz dazu ist das Skalieren von Machine-Learning-Algorithmen in der Regel eine erschreckend komplizierte Aufgabe. Google hat mehrere Jahre gebraucht, um die diagonalisierung großer, dünn besetzter Matrizen (PageRank) durchzuführen, und die lineare Algebra ist sicherlich nicht das anspruchsvollste Gebiet der Mathematik, wenn es um Machine-Learning-Probleme geht.

Das Kernproblem des Machine Learning besteht darin, dass der effizienteste Weg, die Genauigkeit zu verbessern, darin besteht, mehr Eingabedaten hinzuzufügen. Wenn Sie beispielsweise die Genauigkeit Ihres Spam-Filters verbessern möchten, können Sie versuchen, Ihren Algorithmus zu verbessern, aber Sie können auch eine größere Eingabedatenbank verwenden, in der E-Mails bereits als Spam oder kein Spam gekennzeichnet sind. Tatsächlich ist es häufig viel einfacher, die Genauigkeit durch größere Eingabedaten zu verbessern als durch intelligentere Algorithmen, solange Sie genügend Rechenleistung haben.

Das Handhaben großer Datenmengen im Machine Learning ist jedoch ein kompliziertes Problem, da Sie Ihre Daten nicht naiv partitionieren können. Naive Partitionierung bedeutet, dass Eingabedaten verworfen und lokale Berechnungen durchgeführt werden, die nicht alle verfügbaren Daten nutzen. Kurz gesagt: Machine Learning benötigt sehr clevere Möglichkeiten, um seine Algorithmen zu verteilen.

4. Benutzerfeedback ist in der Regel völlig falsch

Kluge Leute raten dazu, Benutzbarkeitstests im Flur durchzuführen. Dies gilt auch für die Benutzeroberfläche, die Sie für Ihr Machine-Learning-Produkt verwenden, aber wenn es darum geht, den Kern Ihrer Technologie zu verbessern, ist Benutzerfeedback praktisch nutzlos, wenn es nicht sogar schädlich ist, wenn es tatsächlich implementiert wird.

Das Hauptproblem besteht darin, dass im Machine Learning die meisten guten / korrekten / erwarteten Verhaltensweisen leider kontraintuitiv sind. Zum Beispiel ist bei Lokad eine häufige Beschwerde von Kunden, dass wir flache Prognosen liefern, die als falsch wahrgenommen werden. Dabei sind diese flachen Prognosen einfach im besten Interesse dieser Kunden, weil sie genauer sind.

Obwohl ich mich mit Spam-Filterung auskenne, bin ich mir ziemlich sicher, dass 99% der Vorschläge, die ich mache und an die Leute von Akismet schicke, für sie einfach nur Müll wären, einfach weil die Herausforderung bei der Spam-Filterung nicht darin besteht, wie filtere ich Spam, sondern darin besteht, wie filtere ich Spam, ohne legitime E-Mails zu filtern. Und ja, die Leute bei Pfizer haben das Recht, per E-Mail über Sildenafilcitrat-Verbindungen zu diskutieren, ohne dass alle ihre E-Mails gefiltert werden.

5. Aber Benutzerdaten enthalten die Wahrheit

Fiktive Daten und Szenarien machen in Machine Learning meist keinen Sinn. Echte Daten sind oft auf viele unerwartete Arten überraschend. Ich arbeite jetzt seit 10 Jahren in diesem Bereich, und jeder neue Datensatz, den ich je untersucht habe, war auf viele Arten überraschend. Es ist völlig nutzlos, an Ihren eigenen erfundenen Daten zu arbeiten. Ohne echte Kundendaten können Sie in Machine Learning nichts tun.

Dieser spezielle Aspekt führt häufig zu einem Henne-Ei-Problem im Machine Learning: Wenn Sie die Anzeige von kontextbezogener Werbung optimieren möchten, benötigen Sie viele Werbetreibende und Publisher. Ohne viele Werbetreibende und Publisher können Sie Ihre Technologie nicht verbessern und folglich können Sie auch keine vielen Werbetreibenden und Publishern überzeugen, sich anzuschließen.

6. Abstimmung vs. Mathematik, Evolution vs. Revolution

Kluge Leute raten davon ab, von Grund auf neu zu schreiben, da dies der strategische Fehler ist, der Softwareunternehmen häufig das Genick bricht. Im Machine Learning ist jedoch das Neuschreiben häufig der einzige Weg, um Ihr Unternehmen zu retten.

Irgendwo am Ende der neunziger Jahre hat Altavista, die führende Suchmaschine, sich nicht die Zeit genommen, ihre Ranking-Technologie auf der verrückten mathematischen Ideen basierend auf der diagonalen Skalierung im großen Maßstab neu zu schreiben. Als Ergebnis wurden sie von einem kleinen Unternehmen (Google) überwältigt, das von einer Gruppe unerfahrener Leute geleitet wurde.

Abstimmung und inkrementelle Verbesserung sind das Herzstück des klassischen Software-Engineerings, und das gilt auch für das Machine Learning - meistens. Die nächste Prozentgenauigkeit wird häufig durch feine Abstimmung und Verfeinerung eines bestehenden Algorithmus erreicht, wobei im Prozess tonnenweise ad-hoc Berichtsmechanismen entworfen werden, um tiefere Einblicke in das Verhalten des Algorithmus zu erhalten.

Doch jedes neue Prozent an Genauigkeit kostet zehnmal so viel Aufwand wie das vorherige; und nach ein paar Monaten oder Jahren steckt Ihre Technologie einfach in einer Sackgasse fest.

Hier kommen die Hardcore-Mathematik ins Spiel. Mathematik ist entscheidend, um auf die nächste Stufe der Leistung zu springen, die Art von Sprung, bei dem Sie eine 10%ige Verbesserung erzielen, die mit dem vorherigen Ansatz nicht einmal möglich schien. Das Ausprobieren neuer Theorien ist dann wie Roulette spielen: Die meiste Zeit verlieren Sie und die neue Theorie bringt keine zusätzlichen Verbesserungen.

Am Ende bedeutet Fortschritte im Machine Learning sehr oft, Ansätze auszuprobieren, die mit hoher Wahrscheinlichkeit zum Scheitern verurteilt sind. Aber ab und zu passiert tatsächlich etwas und die Technologie macht einen Sprung nach vorne.