In diesem Blog wird die Lernerfahrung beschrieben aus dem Online-Kurs „Machine Learning A-Z™: Hands-On Python & R In Data Science”. Ich gehe in diesem Blog der Frage nach, inwieweit sich dieser Kurs für IT Projektleiter und Product Owner eignet, um ein besseres Verständnis für Maschinenlernen / Künstliche Intelligenz zu bekommen – und zwar ohne tiefere Vorkenntnisse. Denn: Maschinenlernen bzw. Künstliche Intelligenz wird in der Softwareentwicklung eine wachsende Bedeutung einnehmen; in absehbarer Zeit dürfte es nur noch wenige Softwareprojekte geben, die gänzlich ohne Maschinenlernen auskommen. In den Worten von Google-Chef Sundar Pichai: „Wir werden uns von einer Mobile-first-Welt in eine KI-first-Welt bewegen“, wo der Computer ein mit Künstlicher Intelligenz (KI) ausgestatteter Sprachassistent sein wird.

In dieser Artikelserie zum udemy Academy-Kurs vermittele ich einige ausgewählte, wesentliche Knowledge Nuggets, die ein gutes Verständnis von der inhaltlichen Ausrichtung des Online-Kurses und gleichzeitig einige wesentliche Lerninhalte vermitteln. Dieser Überblick ist ein Appetizer und soll den Online-Kurs selbstverständlich nicht ersetzen.

Hier geht’s zu den ersten fünf Teilen der Serie:

Maschinenlernen / Künstliche Intelligenz – Upper Confidence Bound als Methode des Reinforcement Learning

Der sechste Teil des Online-Kurses zum Maschinenlernen widmet sich der Methode des Reinforcement Learning, deren Grundprinzip auch eingesetzt wird, um etwa Roboterhunden das Laufen beizubringen. Das Grundprinzip besteht darin, ein statistisches Modell mit jedem Feedback weiterzuentwickeln bzw. zu verbessern.

Der Maschinenlernenkurs der udemy Academy nutzt folgendes leicht nachvollziehbares Beispiel aus der Praxis: Es soll eine Werbekampagne geschaltet werden, wobei unbekannt ist, welche Anzeige (von insgesamt 5 Anzeigen) am wirkungsvollsten ist. Man könnte nun 1.000 Anzeigenschaltungen machen, und DANACH eine statistische Auswertung zur Wirksamkeit von Anzeigen machen. Bei einem solchen Vorgehen wäre jedoch das Budget für die Anzeigenschaltung für 4 der 5 Anzeigen verschwendet, da eine der 5 Anzeigeoptionen einen besseren Wirkungsgrad hat (also: öfter geklickt wird). Die Methode des Reinforcement Learning erlaubt es, die Erkenntnisse über die Wirksamkeit der Anzeigen sofort in das statistische Modell zurück zu speisen und die Schaltung der Anzeigen dementsprechend zu optimieren. Das Budget wird optimal ausgeschöpft.

Die erste der vorgestellten Maschinenlernmethoden ist der Upper Confidence Bound. Wir gehen von Verteilungskurven für die Wirksamkeit der 5 Anzeigen aus, die sich wie folgt darstellen lässt (die rechte, gelbe Verteilungskurve ist hierbei die wirkungsvollste Anzeige):

Maschinenlernen. Reinforcement Learning. Upper Confidence Bound – Schritt 1Abbildung: Der Upper Confidence Bound Algorithmus als Methode des Reinforcement Learning – Die Ausgangssituation

Die Verteilung lässt sich je Anzeige auch noch anders darstellen, nämlich als mittlerer Erwartungswert (vgl. nachfolgende Abbildung). Da zu Beginn diese Verteilungskurven nicht bekannt sind, nimmt man als Hypothese zu Beginn des Upper Confidence Bound zunächst einmal einen gleichen Startwert für alle 5 Anzeigen an (gestrichelte Linie):

Maschinenlernen. Reinforcement Learning. Upper Confidence Bound – Schritt 2Abbildung: Der Upper Confidence Bound Algorithmus als Methode des Reinforcement Learning – Die Initialisierung des Algorithmus

Da dieser Startwert noch mit hoher Unsicherheit behaftet ist (wir kennen die tatsächliche Verteilung ja VOR dem Beginn der Anzeigenschaltungen ja nicht), nehmen wir ein sehr großes Konfidenzintervall an (auch: Vertrauensintervall): Dies entspricht den grauen Balken. Denn: Je größer das Konfidenzintervall, desto höher die Wahrscheinlichkeit, dass der wahre Wert der Verteilung innerhalb dieses Vertrauensintervalls liegt. Das ist in der Stochastik üblich: Je kleiner der Stichprobenumfang, desto größer das Konfidenzintervall – und umgekehrt.

Sobald wir nun starten, Anzeigen zu schalten, können wir mit den Stichproben (also Ergebnisse aus der Anzeigenschaltung: Anzeige wurde geklickt vs Anzeige wurde nicht geklickt) die Starthypothese an den tatsächlichen Wert der Verteilung annähern. Und gleichzeitig wird auch das Vertrauensintervall kleiner. Genau auf diesem Prinzip basiert auch die Methode des Upper Confidence Bound. Wir schalten etwa die dritte Anzeige (vgl. nachfolgende Abbildung), die Anzeige wird NICHT geklickt.

Maschinenlernen. Reinforcement Learning. Upper Confidence Bound – Schritt 3Abbildung: Der Upper Confidence Bound Algorithmus als Methode des Reinforcement Learning – Die Anpassung der Starthypothese

Wir passen nun die Starthypothese nach unten an, gleichzeitig wird das Vertrauensintervall kleiner (enger). Als nächstes wählen wir die Anzeige, wo der obere Wert (graphisch: obere Kante des grauen Balkens) den höchsten Wert aufweist (darum auch: Upper Confidence Bound Algorithmus). Wenn mehrere Anzeigen den gleichen Wert aufweisen, dann eine dieser Anzeigen. Der Algorithmus ist so formuliert, dass die weniger wirkungsvollen Anzeigen (hier: Anzeige 3) sehr früh im Verlauf des Algorithmus nicht mehr geschaltet werden, da die ersten Stichproben den niedrigen Wert der Verteilung deutlich machen; Das Vertrauensintervall bleibt für diese Anzeigen sehr groß (vgl. nachfolgende Abbildung), eine präzise Bestimmung des tatsächlichen Wertes der Verteilung ist ja nicht erforderlich. Es reicht als Ergebnis, dass der Wert (innerhalb des Vertrauensintervalls) niedriger liegt als die Werte der übrigen Anzeigen.

Betrachtet man das Ergebnis des Algorithmus nach einigen Durchläufen, ergibt sich etwa folgendes Bild. Die fünfte (5), also wirksamste Anzeige, wurde gerade ausgewählt, das Vertrauensintervall verkleinert.

Maschinenlernen. Reinforcement Learning. Upper Confidence Bound – Schritt 4Abbildung: Der Upper Confidence Bound Algorithmus als Methode des Reinforcement Learning – Die Anpassung der Starthypothese

Durch die Verkleinerung des Vertrauensintervalls sinkt der obere Wert des Vertrauensintervalls (Upper Confidence Bound) der fünften Anzeige unter den oberen Wert des Vertrauensintervalls für die Anzeigen 4 und 1; zu diesem Zeitpunkt ist ja noch nicht klar, wo der Wert der Verteilung für diese beiden Anzeigen D1 und D4 liegt; nach den nächsten Anzeigenschaltungen für diese beiden Anzeigen wird dieser Wert erneut angepasst, das Konfidenzintervall wird verkleinert – und es lässt sich erkennen, dass sich ab einer bestimmten Anzahl von Durchläufen die fünfte Anzeige (D5) durchsetzen wird. Es wird schließlich nur doch diese fünfte Anzeige geschaltet, und damit das Anzeigenbudget optimal ausgeschöpft.

Die mathematische Ermittlung der für diesen Algorithmus relevanten stochastischen Werte (Erwartungswert, Konfidenzintervall) basiert auf folgenden Formeln:

Maschinenlernen. Reinforcement Learning. Upper Confidence Bound – Die BerechnungsformelAbbildung: Der Upper Confidence Bound Algorithmus als Methode des Reinforcement Learning – Die mathematische Umsetzung des Algorithmus

Bezüglich der Umsetzung dieses Upper Confidence Bound Algorithmus als Methode des Maschinenlernens in Python gilt nun: Es wird keine Bibliothek verwendet! In dem Kurs wird nun Codezeile für Codezeile erläutert, wie dieser Algorithmus mithilfe von zwei Schleifen-Konstruktionen und der Kodierung der mathematischen Formeln vollständig in Python umgesetzt wird. Das lässt sich sehr gut nachvollziehen, keine Rocket Science. Hier ist das Ergebnis:

Maschinenlernen. Reinforcement Learning. Upper Confidence Bound – Die Umsetzung in PythonAbbildung: Der Upper Confidence Bound Algorithmus als Methode des Reinforcement Learning – Die Umsetzung des Algorithmus in Python

Maschinenlernen / Künstliche Intelligenz – Thompson Sampling Algorithmus als Methode des Reinforcement Learning

Der Thompson Sampling Algorithmus als Verfahren des Reinforcement Learning hat einen anderen methodischen Ansatz. Die Ausgangssituation ist zunächst die gleiche: Es gibt 3 unterschiedliche Anzeigenoptionen, die Verteilungsfunktion jeder Anzeige ist zu Beginn der Anzeigenschaltung unbekannt. Graphisch wird dies (zwecks Differenzierung von dem gerade vorgestellten Verfahren des Upper Confidence Bound) wie folgt dargestellt: Der Erwartungswert je Anzeige wird auf der X-Achse abgetragen (X-Achse: Return), dies sind die drei Linien: blau, grün, gelb – gelb wieder jene Anzeige mit dem höchsten Erwartungswert (heißt: höchste Anzahl von Klicks bei Schaltung der Anzeige).

Maschinenlernen. Reinforcement Learning. Thompson Sampling Algorithmus. Funktionsweise – Schritt 1Abbildung: Der Thompson Sampling Algorithmus als Methode des Reinforcement Learning – Die Funktionsweise

Beim Durchlauf des Thompson Sampling Algorithmus werden nun 4 Stichproben für die erste (blaue) Anzeige generiert. Hieraus generiert der Algorithmus eine hypothetische Verteilungsfunktion. Für alle drei Anzeigen sieht dies etwa wie folgt aus:

Maschinenlernen. Reinforcement Learning. Thompson Sampling Algorithmus. Funktionsweise – Schritt 2Abbildung: Der Thompson Sampling Algorithmus als Methode des Reinforcement Learning – Die Funktionsweise

Ausgehend von der ersten Generierung einer solchen Verteilungsfunktion kommt nun der spezifische Mechanismus des Thompson Sampling Algorithmus zur Anwendung: Die Verteilungsfunktion (Anzeige 1), die eine Art „Hilfsmechanismus“ bildet, generiert einen Zufallswert. Ebenso die Verteilungsfunktionen von Anzeige 2 und 3. (Mathematisch basiert der Thompson Sampling Algorithmus auf der Bernoulli-Verteilung). Eben diese Zufallswerte werden miteinander verglichen, es wird die Anzeige ausgespielt, deren Verteilungsfunktion in diesem Durchlauf den höchsten Wert generiert hat. In folgender Abbildung die grüne (zweite) Anzeige:

Maschinenlernen. Reinforcement Learning. Thompson Sampling Algorithmus. Funktionsweise – Schritt 3Abbildung: Der Thompson Sampling Algorithmus als Methode des Reinforcement Learning – Die Funktionsweise

Dieses Verfahren wird als probabilistische Methode bezeichnet (im Gegensatz zur Methode der Upper Confidence Bound, die als deterministische Methode gilt). Der dann tatsächliche Wert aus dem Durchlauf (hier: die grüne Anzeige wurde geklickt oder auch nicht) fließt wieder in die Weiterentwicklung der Verteilungsfunktion zurück. Der Vorteil dieser Thompson Sampling Algorithmus (im Vergleich zu Upper Confidence Bound) besteht darin, dass das Ergebnis einer Stichprobe nicht sofort zurückgespeist werden muss, bevor der nächste Durchlauf erfolgen kann (bei der Upper Confidence Bound ist dies erforderlich). Es können auch hunderte von Stichprobenergebnissen auf einmal eingespeist werden, was in der Praxis (z.B. Tausende von Anzeigenschaltungen in engen Zeitfenstern bei hochfrequentierten Seiten wie otto.de oder zalando.de) ein entscheidender Vorteil ist. Es kommt hinzu, dass der empirische Nachweis diesem Algorithmus ein besseres Zeugnis ausstellt.

Auch dieser Algorithmus wird Schritt für Schritt in Python umgesetzt; für die Berechnung der generierten „Zufallsvariable“ wird hierbei die Funktion random.betavariate() aus der Python-Bibliothek random herangezogen. Auch hier wird jeder Schritt bei der Python-Programmierung verständlich erläutert.
Hier geht’s zum Teil 7 des Kurses. Hierin geht es um Natural Language Processing – also jene Maschinenlernmethode, die für die Spracherkennung und Sprachverarbeitung in Siri oder Alexa angewandt wird.

Sebastian Zang
Author

Der Autor ist Manager in der Softwareindustrie mit internationaler Expertise: Prokurist bei einem der großen Beratungshäuser - Verantwortung für den Aufbau eines IT Entwicklungszentrums am Offshore-Standort Bangalore - Director M&A bei einem Softwarehaus in Berlin.