April 2019

Band 34, Nummer 4

[Machine Learning]

Closed-Loop-Intelligenz: Ein Entwurfsmuster für Machine Learning

Von Geoff Hulten | April 2019

Es gibt viele hervorragende Artikel zur Verwendung von Machine Learning zum Erstellen von Modellen und deren Bereitstellung. Diese Artikel ähneln Artikeln, die Programmiertechniken vermitteln: Sie beschreiben wichtige Grundfertigkeiten bis ins Detail. Aber um über das Erstellen von Spielzeugbeispielen hinauszugehen, benötigen Sie andere Fähigkeiten. In traditionellen Systemen werden diese Fähigkeiten z.B. als Software Engineering, Softwarearchitektur oder Entwurfsmuster bezeichnet – Ansätze zur Organisation großer Softwaresysteme und der Teams von Menschen, die sie entwickeln, um Ihre gewünschte Wirkung zu erzielen.

Dieser Artikel stellt einige der Dinge vor, an die Sie denken müssen, wenn Sie dem traditionellen Software Engineering-Prozess Machine Learning hinzufügen:

Verbinden von Machine Learning mit Benutzern: Was es bedeutet, die Lücke zwischen Benutzern und Machine Learning zu schließen.

Auswählen des richtigen Ziels: Wissen, auf welchen Teil Ihres Systems Machine Learning angewendet werden soll und wie dies im Lauf der Zeit weiterentwickelt werden kann.

Implementierung mit Machine Learning: Die Systeme, die Sie erstellen müssen, um eine langlebige Lösung auf Basis von Machine Learning zu unterstützen, die Sie für ein herkömmliches System nicht benötigen würden.

Betreiben von Machine Learning-Systemen: Was Sie erwarten sollten, wenn Sie ein Machine Learning-System langfristig ausführen.

Natürlich lautet die erste Frage, wann Sie Machine Learning einsetzen sollten. Ein wichtiger Faktor bei der Entscheidung ist die Häufigkeit der Aktualisierung einer Anwendung, bis sie ordnungsgemäß funktioniert. Wenn diese Häufigkeit gering ist (beispielsweise fünf oder zehn Mal), dann ist Machine Learning wahrscheinlich nicht geeignet. Aber wenn diese Häufigkeit groß ist (etwa stündlich, solange das System genutzt wird), dann benötigen Sie möglicherweise Machine Learning.

Es gibt vier Szenarien, die ohne Zweifel eine Reihe von Updates erfordern, um richtig zu funktionieren:

  • Umfangreiche Probleme: Einige Probleme sind umfangreich. Sie weisen so viele Variablen und Bedingungen auf, die es zu berücksichtigen gilt, dass sie nicht in einem einzigen Durchgang abgeschlossen werden können.
  • Probleme mit offenem Ende: Viele Probleme haben keine einheitliche, feste Lösung und erfordern Dienste, die über einen langen Zeitraum aktiv sind und wachsen.
  • Probleme, die sich im Lauf der Zeit ändern: Wenn sich Ihre Domäne auf unvorhersehbare, drastische oder häufige Weise ändert, könnte es sich lohnen, über Machine Learning nachzudenken.
  • Intrinsisch schwierige Probleme: Schwierige Probleme wie Spracherkennung, Wettersimulation und -vorhersage können von Machine Learning profitieren. Dies ist aber häufig erst nach jahrelangem Aufwand beim Erfassen von Trainingsdaten, beim Verstehen der Probleme und bei der Entwicklung von Erkenntnissen der Fall.

Wenn Ihr Problem eines dieser Merkmale aufweist, könnte Machine Learning die richtige Lösung sein. Wenn dies nicht der Fall ist, ist es vielleicht besser, mit einem eher traditionellen Ansatz zu beginnen. Wenn Sie Ihr Ziel mit einem traditionellen Ansatz erreichen können, wird dies oft kostengünstiger und einfacher sein.

Verbinden von Machine Learning mit Benutzern

Beim Schließen der Lücke geht es darum, einen virtuosen Zyklus zwischen der Intelligenz eines Systems und der Nutzung des Systems zu schaffen. Wenn die Intelligenz besser wird, ziehen Benutzer einen größeren Nutzen aus dem System (und verwenden es vermutlich auch häufiger), und wenn mehr Benutzer das System verwenden, generieren sie mehr Daten, um die Intelligenz zu verbessern.

Nehmen wird als Beispiel eine Suchmaschine. Ein Benutzer gibt eine Abfrage ein und erhält einige Antworten. Wenn eine Antwort sinnvoll erscheint, klickt er darauf und ist zufrieden. Aber auch die Suchmaschine erhält durch diese Interaktion einen Mehrwert. Wenn Benutzer auf Antworten klicken, erkennt die Suchmaschine, welche Seiten als Antwort auf welche Abfragen angeklickt werden. Sie kann diese Informationen nutzen, um Ergebnisse anzupassen und zu verbessern. Je mehr Benutzer das System nutzen, desto mehr Möglichkeiten gibt es zur Verbesserung.

Aber ein erfolgreicher geschlossener Kreislauf (Closed-Loop) kommt nicht von ungefähr. Damit er funktioniert, müssen Sie eine UX entwerfen, die die Interaktionen zwischen Ihren Benutzern und Ihrer Intelligenz so gestaltet, dass sie sinnvolle Trainingsdaten generieren. Gute Interaktionen weisen die folgenden Eigenschaften auf:

Die Komponenten der Interaktion sind klar und einfach zu verbinden . Gute Interaktionen ermöglichen es, den Kontext, in dem sich der Benutzer und die Anwendung zum Zeitpunkt der Interaktion befanden, die Aktion des Benutzers und das Ergebnis der Interaktion zu erfassen. Beispielsweise muss ein Buchempfehlungsmodul wissen, welche Bücher der Benutzer besitzt und wie sehr er sie mag (der Kontext), welche Bücher dem Benutzer empfohlen wurden und ob er eines von ihnen gekauft hat (die Aktion) und ob der Benutzer mit dem Kauf zufrieden war oder nicht (das Ergebnis).

Das Ergebnis sollte implizit und direkt sein. Eine gute Benutzeroberfläche ermöglicht es Ihnen, das Ergebnis von Interaktionen implizit zu interpretieren, indem Sie beobachten, wie der Benutzer Ihr System auf natürliche Weise verwendet (anstatt von ihm Bewertungen oder Feedback zu verlangen). Außerdem sollte es nicht zu viel Zeit oder zu viele unerwünschte Interaktionen zwischen dem Ausführen der Aktion durch den Benutzer und dem Erhalten des Ergebnisses geben.

Keine (oder nur wenige) Bias. Eine gute Benutzeroberfläche wird bewusst machen, wie Benutzer die verschiedenen möglichen Ergebnisse erleben, und wird die Benutzer nicht systematisch oder unbewusst dazu bringen, Kategorien von Ergebnissen zu viel oder zu wenig zu melden. Beispielsweise wird jeder Benutzer seinen Posteingang in einem E-Mail-Programm überprüfen, aber viele werden sich nie ihren Ordner „Junk-E-Mail“ ansehen. So wird das schlechte Ergebnis einer Spamnachricht im Posteingang mit einer viel höheren Rate gemeldet als das schlechte Ergebnis einer legitimen Nachricht im Ordner „Junk-E-Mail“.

Keine Feedbackschleifen. Ein geschlossener Kreislauf kann durch Feedback beeinträchtigt werden, das Fehler verschlimmert. Wenn das Modell beispielsweise einen Fehler macht, der eine beliebte Aktion unterdrückt, hören die Benutzer auf, die Aktion auszuwählen (weil sie unterdrückt ist), und das Modell kann feststellen, dass es richtig war, die Aktion zu unterdrücken (weil die Benutzer aufgehört haben, sie zu verwenden). Um Feedbackschleifen zu behandeln, sollte eine Benutzeroberfläche alternative Möglichkeiten bieten, um zu unterdrückten Aktionen zu gelangen und ein wenig Randomisierung in Betracht ziehen, um die Ausgabe zu modellieren.

Dies sind einige der Grundlagen beim Verbinden von Machine Learning mit Benutzern. Machine Learning wird fast immer effektiver sein, wenn die UX und das maschinelle Lernen so konzipiert sind, dass sie sich gegenseitig unterstützen. Wenn Sie dies gut implementieren, können Sie alle Arten von Systemen ermöglichen, die unerschwinglich teuer wären, wenn Sie sie auf andere Weise erstellen würden.

Auswählen des richtigen Ziels

Eine interessante Eigenschaft von Systemen, die mit Machine Learning erstellt werden, sollte hervorgehoben werden: Ihre Leistung ist an dem Tag am schlechtesten, an dem Sie sie ausliefern. Sobald Sie die Lücke zwischen Benutzern und Modellen geschlossen haben, wird Ihr System im Lauf der Zeit immer besser. Das bedeutet, dass Sie vielleicht mit einem einfachen Ziel beginnen und sich mit der Verbesserung Ihres Systems auf schwierigere Ziele konzentrieren möchten.

Stellen Sie sich vor, Sie entwerfen ein autonomes Auto. Sie könnten daran arbeiten, bis es vollkommen perfekt ist, und es dann ausliefern. Oder Sie könnten mit einem einfacheren Teilproblem beginnen: der Vermeidung von Frontalzusammenstößen. Sie könnten tatsächlich genau das gleiche Auto zur Vermeidung von Frontalzusammenstößen bauen, das Sie für völlig autonomes Fahren bauen würden – mit allen Bedienelementen, allen Sensoren und allen anderen Merkmalen. Aber anstatt sich das Ziel der vollständigen Automatisierung zu setzen, was äußerst schwierig ist, setzen Sie sich das Ziel, Auffahrunfälle zu reduzieren, was besser beherrschbar ist.

Weil die Vermeidung von Zusammenstößen an sich schon wertvoll ist, werden einige Leute Ihr Auto kaufen und es nutzen – und Daten generieren, die Sie mit Machine Learning nutzen können, um immer bessere Modelle zu bauen. Wenn Sie dazu bereit sind, können Sie ein etwas anspruchsvolleres Ziel festlegen, z.B. die Spurhaltung, das Benutzern noch mehr Wert bietet und einen wertvollen Zyklus etabliert, während Sie letztendlich auf ein autonomes Fahrzeug hinarbeiten.

Dieser Vorgang kann Monate dauern. Oder auch Jahre. Aber es wird mit ziemlicher Sicherheit kostengünstiger sein, als zu versuchen, ein autonomes Auto ohne einen geschlossenen Kreislauf zwischen den Benutzern und Ihrem Machine Learning-Modell zu bauen.

Sie können in der Regel Wege finden, Ihre Ziele zu skalieren, wenn Ihre Modelle besser werden. So könnte beispielsweise ein Spamfilter, der Spamnachrichten zunächst in einen Ordner „Junk-E-Mail“ verschiebt, später verbessert werden, um Spamnachrichten vollständig zu löschen. Und ein System zur Erkennung von Fertigungsfehlern könnte Objekte für eine weitere Untersuchung als erstes Ziel markieren und später fehlerhafte Objekte automatisch entsorgen, wenn sich die Modelle verbessern.

Es ist wichtig, sich ein Ziel zu setzen, das Sie mit den Modellen erreichen können, die Sie heute erstellen können – und es ist großartig, wenn Sie Ihren Machine Learning-Prozess erweitern können, um im Lauf der Zeit immer interessantere Ziele zu erreichen.

Implementierung mit Machine Learning

Systeme, die für umfangreiche, offene, sich im Lauf der Zeit verändernde oder intrinsisch schwierige Probleme entwickelt wurden, erfordern viele Updates während ihrer Lebensdauer. Die Implementierung des Systems kann diese Updates kostengünstig und sicher machen – oder sie können teuer und riskant werden. Es gibt viele Möglichkeiten, ein System, das auf Machine Learning basiert, im Lauf der Zeit flexibler und effizienter zu gestalten. Zu den allgemeinen Investitionen gehören:

Die Intelligenzruntime: Um Machine Learning zu nutzen, müssen Sie die Grundlagen beherrschen, z.B. eine Runtime implementieren, die Modelle lädt und ausführt, den Anwendungskontext optimiert und den Benutzern die richtigen Erfahrungen auf der Grundlage der Aussagen der Modelle bietet. Eine Runtime kann einfach sein, wie das Einbinden einer Bibliothek in Ihren Client, oder sie kann komplex sein und Dinge wie die folgenden unterstützen:

  • Änderungen an den Arten von Modellen, die im Lauf der Zeit verwendet werden: von einfachen Regeln bis hin zu komplexeren Machine Learning-Ansätzen, wenn Sie mehr über Ihr Problem erfahren.
  • Kombinieren von Modellen, die auf dem Client, im Dienst und im Back-End ausgeführt werden und es Modellen ermöglichen, im Lauf der Zeit basierend auf Kosten- und Leistungsanforderungen zwischen diesen Einsatzorten migriert zu werden.
  • Unterstützung der Reversion, wenn Implementierungen fehlschlagen, und Möglichkeiten, bestimmte kostspielige Fehler, die Machine Learning mit ziemlicher Sicherheit mit sich bringt, schnell zu korrigieren.

Intelligenzverwaltung: Sobald neue Modelle verfügbar werden, müssen sie erfasst und dort bereitgestellt werden, wo sie benötigt werden. Beispielsweise können Modelle in einem Lab in der Konzernzentrale erstellt werden, müssen aber auf Clients auf der ganzen Welt ausgeführt werden. Oder die Modelle werden teilweise in einem Back-End und teilweise in einem Dienst ausgeführt. Sie können sich darauf verlassen, dass die Mitarbeiter, die die Modelle erstellen, alle Implementierungen, die Verifizierung und die Synchronisierung durchführen, oder Sie können Systeme erstellen, die dies unterstützen.

Intelligenztelemetrie: Ein effektives Telemetriesystem für Machine Learning erfasst Daten, um im Lauf der Zeit immer bessere Modelle zu erstellen. Die Intelligenzimplementierung muss entscheiden, was zu beobachten ist, welche Stichproben erfolgen sollen und wie die Informationen verarbeitet und zusammengefasst werden, um die Erstellung von Intelligenz zu ermöglichen. Bei diesem Vorgang ist außerdem der Datenschutz zu berücksichtigen. Telemetrie kann sehr kostspielig sein, und die Anforderungen an Telemetrie ändern sich während der Lebensdauer eines auf Machine Learning basierenden Systems. Daher ist es oft sinnvoll, Tools zu implementieren, die Anpassungsfähigkeit bei gleichzeitiger Kostenkontrolle ermöglichen.

Die Umgebung für die Intelligenzerstellung: Damit auf Machine Learning basierende Systeme erfolgreich sind, muss eine umfassende Koordination zwischen Runtime, Auslieferung, Überwachung und Erstellung Ihrer Modelle stattfinden. Um beispielsweise genaue Modelle zu erstellen, muss der Modellersteller in der Lage sein, genau das nachzuvollziehen, was zur Laufzeit passiert, obwohl die Daten des Modellerstellers aus der Telemetrie stammen und in einem Lab ausgeführt werden, während die Laufzeitdaten aus der Anwendung stammen und im Kontext der Anwendung ausgeführt werden.

Unstimmigkeiten zwischen Modellerstellung und Runtime sind eine häufige Fehlerquelle, und Experten für Machine Learning sind häufig nicht die besten Personen, um diese Probleme aufzuspüren. Aus diesem Grund kann eine Implementierung die Produktivität von Experten für Machine Learning deutlich steigern, indem sie eine konsistente Benutzeroberfläche für die Intelligenzerstellung bereitstellt.

Für alle diese Komponenten (Runtime, Intelligenzverwaltung, Intelligenztelemetrie und Intelligenzerstellung) können Sie ein Gerüst implementieren, das die Grundlagen schafft und sich auf laufende technische Investitionen stützt, um sich im Lauf der Zeit anzupassen. Oder Sie können mit ausgefeilten Tools für Nicht-Engineers eine flexible Lösung schaffen, damit diese kostengünstig, schnell und mit der Gewissheit, dass sie keinen Schaden anrichten, neue Ziele angehen können.

Intelligenzorchestrierung

Intelligenzorchestrierung gleicht ein wenig einem Autorennen. Ein ganzes Team von Spezialisten baut einen Rennwagen, setzt dabei die neueste Technologie ein und bringt jedem aerodynamischen Flügel und Ballast, jeder Getriebeübersetzung und jedem Einlassventil perfekte Aufmerksamkeit entgegen. Das Team kreiert einen fantastischen Rennwagen, der Dinge tun kann, die kein anderer Rennwagen kann.

Und dann muss sich jemand hinter das Steuer setzen, den Rennwagen auf die Strecke bringen und gewinnen!

Intelligenzorchestratoren sind wie diese Rennfahrer. Sie übernehmen die Kontrolle über das intelligente System und führen alle Aktionen aus, die erforderlich sind, damit es seine Ziele erreicht. Sie nutzen die Systeme zur Erstellung und Verwaltung von Intelligenz, um die richtige Intelligenz zur richtigen Zeit zu produzieren und sie auf die sinnvollste Weise zu kombinieren. Sie steuern das Telemetriesystem und erfassen die Daten, die erforderlich sind, um ihre Modelle zu verbessern. Und sie kümmern sich um alle Fehler und Probleme, indem sie alles so aufeinander abstimmen, dass die Anwendung den größtmöglichen Wert für die Benutzer und Ihr Unternehmen liefert.

Nun könnten Sie sagen: „Warten Sie, ich dachte, dass Machine Learning das System während seines gesamten Lebenszyklus optimieren sollte. Was heißt das jetzt? Ist das ein Scherz?“ Leider nicht. Künstliche Intelligenz und Machine Learning werden Sie nur genau so weit bringen. Bei der Orchestrierung geht es darum, diese Tools zu nutzen und sie in den besten Szenarien einzusetzen, damit sie einen Mehrwert schaffen können – indem sie ihre Stärken hervorheben und ihre Schwächen ausgleichen – und gleichzeitig auf die Veränderungen im Lauf der Zeit reagieren. Orchestrierung kann aus den folgenden Gründen erforderlich sein:

Ihr Ziel ändert sich: Wenn Sie an etwas arbeiten, verstehen Sie es besser. Sie stellen vielleicht fest, dass Sie sich am Anfang das falsche Ziel gesetzt haben und es nun anpassen möchten. Vielleicht erweist sich der geschlossene Kreislauf zwischen Ihren Benutzern und Ihren Modellen als so erfolgreich, dass Sie ein höheres Ziel anstreben.

Ihre Benutzer ändern sich: Neue Benutzer werden kommen (und Sie werden jubeln), und alte Benutzer werden gehen (und Sie könnten heulen), aber diese Benutzer werden neue Kontexte, neues Verhalten und neue Möglichkeiten zur Anpassung Ihrer Modelle mitbringen.

Das Problem ändert sich: Die Ansätze und Entscheidungen, die Sie in der Vergangenheit getroffen haben, sind vielleicht für die Zukunft nicht richtig. Manchmal kann ein Problem einfach sein (z.B. wenn alle Spammer im Urlaub sind). Zu anderen Zeiten kann es sehr hart werden (wie rund um die Feiertage). Wenn sich ein Problem ändert, gibt es fast immer die Möglichkeit, sich anzupassen und durch Orchestrierung bessere Ergebnisse zu erzielen.

Die Qualität der Modelle ändert sich: Daten erschließen Möglichkeiten. Einige der leistungsfähigsten Techniken von Machine Learning sind mit „kleinen“ Datenvolumen nicht effektiv, sondern werden erst realisierbar, wenn Benutzer Ihr System nutzen und Sie Unmengen an Daten erhalten. Diese Art von Veränderungen kann alle möglichen Potenziale freisetzen, um neue Benutzererfahrungen auszuprobieren oder aggressivere Ziele zu verfolgen.

Die Kosten der Ausführung Ihres Systems ändern sich: Große Systeme müssen ständig zwischen Kosten und Wert abwägen. Möglicherweise können Sie Ihre Benutzererfahrungen oder Modelle auf eine Weise ändern, die viel Geld spart, während der Wert für die Benutzer oder Ihr Unternehmen nur geringfügig verringert wird.

Jemand versucht, Ihr System zu missbrauchen: Leider ist das Internet von zahlreichen Trollen bevölkert. Einige von ihnen möchten Ihren Dienst missbrauchen, weil sie glauben, dass das Spaß macht. Die meisten werden Ihren Dienst (und Ihre Benutzer) missbrauchen wollen, um Geld zu verdienen – oder um es Ihnen schwerer zu machen, Geld zu verdienen. Wenn der Missbrauch nicht aufgehalten wird, kann er Ihr System ruinieren, weil es zu viel Spam enthält und zu hohe Risiken birgt, sodass Benutzer es aufgeben.

Mindestens eines dieser Probleme wird mit ziemlicher Sicherheit während des Lebenszyklus Ihres auf Machine Learning basierenden Systems auftreten. Indem Sie lernen, sie zu identifizieren und anzupassen, können Sie diese potenziellen Probleme in Chancen verwandeln.

Die Implementierung von auf Machine Learning basierenden Systemen und deren Orchestrierung sind sehr unterschiedliche Aktivitäten. Sie erfordern ganz verschiedene Denkweisen. Und beide Aufgaben sind absolut entscheidend für den Erfolg. Für gute Orchestratoren gilt Folgendes:

  • Sie sind Domänenexperten im Geschäftszweig Ihres Systems, daher verstehen sie die Ziele Ihrer Benutzer instinktiv.
  • Sie verstehen die Benutzeroberfläche und besitzen die Fähigkeit, Interaktionen zu untersuchen und effektive Anpassungen daran vorzunehmen, wie Benutzern Modellausgaben präsentiert werden.
  • Sie verstehen die Implementierung und wissen daher, wie Probleme nachverfolgt und kleine Verbesserungen vorgenommen werden können.
  • Sie sind in der Lage, Fragen zu Daten zu stellen und die Ergebnisse zu verstehen und zu kommunizieren.
  • Sie kennen angewandtes Machine Learning und können Ihre Modellerstellungsprozesse steuern und neue Modelle in das System einfügen.
  • Sie erlangen Zufriedenheit durch die tagtägliche effektive Ausführung eines Systems.

Zusammenfassung

Machine Learning ist ein fantastisches Tool. Aber das Beste daraus zu machen, erfordert weitaus mehr, als ein Modell zu erstellen und einige Vorhersagen zu treffen. Es erfordert das Hinzufügen der Machine Learning-Fähigkeiten zu den anderen Techniken, die Sie für die Organisation großer Softwaresysteme und der Teams von Menschen, die diese entwickeln, verwenden.

Dieser Artikel hat einen sehr kurzen Überblick über ein Entwurfsmuster für die Verwendung von Machine Learning im Maßstab gegeben: das Closed-Loop Intelligence System-Muster. Dazu gehören die folgenden Überlegungen: zu wissen, wann Sie Machine Learning benötigen, was es bedeutet, die Lücke zwischen Benutzern und Machine Learning zu schließen, wie Sie das System neu ausrichten können, um im Lauf der Zeit sinnvollere Ziele zu erreichen, welche Implementierungen es effizienter und sicherer machen können und einige der Dinge, die passieren können, wenn Sie das System im Lauf der Zeit ausführen.

Künstliche Intelligenz und Machine Learning verändern die Welt, und es ist aufregend, daran teilzuhaben.


Geoff Hultenist der Autor von „Building Intelligent Systems“ (intelligentsystem.io/book/). Er leitet seit mehr als einem Jahrzehnt Projekte im Bereich des angewandten maschinellen Lernens und hat den Masterkurs für Machine Learning an der University of Washington gehalten. Seine Forschungsarbeiten wurden auf internationalen Spitzenkonferenzen vorgestellt, in Tausenden von Zitaten erwähnt und mit dem SIGKDD Test of Time Award für einflussreiche Beiträge zur Data Mining-Forschungscommunity ausgezeichnet, die sich in der Praxis bewährt haben.

Unser Dank gilt dem folgenden technischen Experten bei Microsoft für die Durchsicht dieses Artikels: Dr. James McCaffrey