Betrieb des maschinellen Lernens in Mail.ru Mail

Betrieb des maschinellen Lernens in Mail.ru Mail

Basierend auf meinen Reden bei Highload++ und DataFest Minsk 2019.

Für viele ist Post heute ein fester Bestandteil des Online-Lebens. Mit seiner Hilfe führen wir Geschäftskorrespondenz, speichern alle wichtigen Informationen rund um Finanzen, Hotelbuchungen, Bestellungen und vieles mehr. Mitte 2018 haben wir eine Produktstrategie für die Mail-Entwicklung formuliert. Wie sollte moderne Post aussehen?

Mail muss sein Clever, das heißt, den Benutzern dabei zu helfen, sich in der zunehmenden Menge an Informationen zurechtzufinden: Sie können sie filtern, strukturieren und auf die bequemste Weise bereitstellen. Sie muss sein nützlich, sodass Sie direkt in Ihrem Postfach verschiedene Aufgaben lösen können, zum Beispiel Bußgelder bezahlen (eine Funktion, die ich leider nutze). Und gleichzeitig muss E-Mail natürlich Informationsschutz bieten, Spam abschneiden und vor Hacking schützen, also sein sicher.

Diese Bereiche definieren eine Reihe von Schlüsselproblemen, von denen viele durch maschinelles Lernen effektiv gelöst werden können. Hier sind Beispiele für bereits vorhandene Funktionen, die im Rahmen der Strategie entwickelt wurden – eines für jede Richtung.

  • Intelligente Antwort. Mail verfügt über eine intelligente Antwortfunktion. Das neuronale Netzwerk analysiert den Text des Briefes, versteht seine Bedeutung und seinen Zweck und bietet als Ergebnis die drei am besten geeigneten Antwortoptionen an: positiv, negativ und neutral. Dies hilft, bei der Beantwortung von Briefen erheblich Zeit zu sparen und reagiert oft auch auf ungewöhnliche und lustige Weise.
  • E-Mails gruppierenim Zusammenhang mit Bestellungen in Online-Shops. Wir kaufen oft online ein und Geschäfte können in der Regel für jede Bestellung mehrere E-Mails senden. Beispielsweise gehen bei AliExpress, dem größten Dienst, viele Briefe für eine Bestellung ein, und wir haben berechnet, dass ihre Anzahl im Endfall bis zu 29 erreichen könnte. Daher extrahieren wir mithilfe des Named Entity Recognition-Modells die Bestellnummer und andere Informationen aus dem Text und gruppieren Sie alle Buchstaben in einem Thread. Darüber hinaus zeigen wir grundlegende Informationen zur Bestellung in einem separaten Feld an, was die Arbeit mit dieser Art von E-Mail erleichtert.

    Betrieb des maschinellen Lernens in Mail.ru Mail

  • Anti Phishing. Phishing ist eine besonders gefährliche betrügerische Form von E-Mails, mit deren Hilfe Angreifer versuchen, an Finanzinformationen (einschließlich der Bankkarten des Benutzers) und Logins zu gelangen. Solche Briefe imitieren echte, vom Dienst gesendete Briefe, auch optisch. Daher erkennen wir mithilfe von Computer Vision Logos und den Designstil von Briefen großer Unternehmen (z. B. Mail.ru, Sber, Alfa) und berücksichtigen diese zusammen mit Text und anderen Merkmalen in unseren Spam- und Phishing-Klassifikatoren .

Maschinelles Lernen

Ein wenig über maschinelles Lernen in E-Mails im Allgemeinen. Mail ist ein hochbelastetes System: Durchschnittlich 1,5 Milliarden Briefe pro Tag passieren unsere Server für 30 Millionen DAU-Benutzer. Rund 30 maschinelle Lernsysteme unterstützen alle notwendigen Funktionen und Features.

Jeder Buchstabe durchläuft eine ganze Klassifizierungspipeline. Zuerst schneiden wir Spam ab und hinterlassen gute E-Mails. Benutzer bemerken die Arbeit von Antispam oft nicht, da 95–99 % des Spams nicht einmal im entsprechenden Ordner landet. Die Spam-Erkennung ist ein sehr wichtiger Teil unseres Systems und der schwierigste, da im Bereich Anti-Spam eine ständige Anpassung zwischen Verteidigungs- und Angriffssystemen stattfindet, was eine kontinuierliche technische Herausforderung für unser Team darstellt.

Als nächstes trennen wir Buchstaben von Menschen und Robotern. E-Mails von Menschen sind das Wichtigste, daher bieten wir ihnen Funktionen wie Smart Reply. Briefe von Robotern sind in zwei Teile unterteilt: Transaktionsbriefe – das sind wichtige Briefe von Dienstleistungen, zum Beispiel Bestätigungen von Käufen oder Hotelreservierungen, Finanzen, und Informationsbriefe – das sind Geschäftswerbung, Rabatte.

Wir glauben, dass Transaktions-E-Mails genauso wichtig sind wie persönliche Korrespondenz. Sie sollten griffbereit sein, denn oft müssen wir schnell Informationen zu einer Bestellung oder Flugticketreservierung finden und verbringen viel Zeit damit, nach diesen Briefen zu suchen. Der Einfachheit halber unterteilen wir sie daher automatisch in sechs Hauptkategorien: Reisen, Bestellungen, Finanzen, Tickets, Registrierungen und schließlich Bußgelder.

Informationsbriefe sind die größte und wahrscheinlich unwichtigere Gruppe, die keiner sofortigen Antwort bedürfen, da sich im Leben des Nutzers nichts Wesentliches ändert, wenn er einen solchen Brief nicht liest. In unserer neuen Benutzeroberfläche fassen wir sie in zwei Threads zusammen: soziale Netzwerke und Newsletter, wodurch der Posteingang optisch aufgeräumt wird und nur wichtige Nachrichten sichtbar bleiben.

Betrieb des maschinellen Lernens in Mail.ru Mail

Ausbeutung

Eine große Anzahl von Systemen verursacht viele Schwierigkeiten im Betrieb. Schließlich verschlechtern sich Modelle wie jede Software mit der Zeit: Funktionen gehen kaputt, Maschinen fallen aus, Code wird schief. Darüber hinaus ändern sich die Daten ständig: Es kommen neue hinzu, Verhaltensmuster der Benutzer werden verändert usw., sodass ein Modell ohne angemessene Unterstützung mit der Zeit immer schlechter funktioniert.

Wir dürfen nicht vergessen, dass je tiefer maschinelles Lernen in das Leben der Benutzer eindringt, desto größer ist der Einfluss, den es auf das Ökosystem hat, und desto mehr finanzielle Verluste oder Gewinne können Marktteilnehmer erleiden. Daher passen sich Akteure in immer mehr Bereichen an die Arbeit von ML-Algorithmen an (klassische Beispiele sind Werbung, Suche und der bereits erwähnte Antispam).

Außerdem weisen Aufgaben des maschinellen Lernens eine Besonderheit auf: Jede, auch nur geringfügige Änderung im System kann viel Arbeit mit dem Modell verursachen: Arbeiten mit Daten, Umschulung, Bereitstellung, was Wochen oder Monate dauern kann. Je schneller sich also die Umgebung ändert, in der Ihre Modelle betrieben werden, desto größer ist der Aufwand für deren Wartung. Ein Team kann viele Systeme erstellen und sich darüber freuen, dann aber fast alle seine Ressourcen für deren Wartung aufwenden, ohne die Möglichkeit zu haben, etwas Neues zu tun. Wir sind einmal auf eine solche Situation im Antispam-Team gestoßen. Und sie kamen zu dem offensichtlichen Schluss, dass der Support automatisiert werden muss.

Automatisierung

Was kann automatisiert werden? Eigentlich fast alles. Ich habe vier Bereiche identifiziert, die die Infrastruktur für maschinelles Lernen definieren:

  • Datensammlung;
  • zusätzliches Training;
  • einsetzen;
  • Prüfung und Überwachung.

Wenn die Umgebung instabil ist und sich ständig verändert, erweist sich die gesamte Infrastruktur rund um das Modell als viel wichtiger als das Modell selbst. Es mag ein guter alter linearer Klassifikator sein, aber wenn man ihn mit den richtigen Funktionen versorgt und gutes Feedback von den Benutzern erhält, funktioniert er viel besser als hochmoderne Modelle mit allem Drum und Dran.

Rückkopplungsschleife

Dieser Zyklus kombiniert Datenerfassung, zusätzliches Training und Bereitstellung – eigentlich den gesamten Modellaktualisierungszyklus. Warum ist es wichtig? Schauen Sie sich den Anmeldeplan in der E-Mail an:

Betrieb des maschinellen Lernens in Mail.ru Mail

Ein Entwickler für maschinelles Lernen hat ein Anti-Bot-Modell implementiert, das verhindert, dass sich Bots in E-Mails registrieren. Die Grafik sinkt auf einen Wert, bei dem nur noch echte Benutzer übrig bleiben. Alles ist ganz toll! Doch vier Stunden vergehen, die Bots optimieren ihre Skripte und alles normalisiert sich wieder. Bei dieser Implementierung verbrachte der Entwickler einen Monat damit, Funktionen hinzuzufügen und das Modell neu zu trainieren, aber der Spammer konnte sich innerhalb von vier Stunden anpassen.

Um nicht so quälend schmerzhaft zu sein und später nicht alles noch einmal machen zu müssen, müssen wir zunächst darüber nachdenken, wie die Rückkopplungsschleife aussehen wird und was wir tun, wenn sich die Umgebung ändert. Beginnen wir mit dem Sammeln von Daten – das ist der Treibstoff für unsere Algorithmen.

Datensammlung

Es ist klar, dass für moderne neuronale Netze gilt: Je mehr Daten, desto besser, und diese werden tatsächlich von den Benutzern des Produkts generiert. Benutzer können uns helfen, indem sie Daten markieren, aber wir können dies nicht missbrauchen, da Benutzer irgendwann keine Lust mehr haben, Ihre Modelle zu vervollständigen, und zu einem anderen Produkt wechseln.

Einer der häufigsten Fehler (hier beziehe ich mich auf Andrew Ng) besteht darin, dass wir uns zu sehr auf die Metriken des Testdatensatzes konzentrieren und nicht auf das Feedback des Benutzers, das eigentlich das Hauptmaß für die Qualität der Arbeit ist, da wir erstellen ein Produkt für den Benutzer. Wenn der Benutzer die Arbeit des Modells nicht versteht oder ihm nicht gefällt, ist alles ruiniert.

Daher sollte der Nutzer jederzeit abstimmen können und ein Tool für Feedback erhalten. Wenn wir glauben, dass ein Brief zum Thema Finanzen im Postfach angekommen ist, müssen wir ihn mit „Finanzen“ markieren und eine Schaltfläche zeichnen, auf die der Benutzer klicken und sagen kann, dass es sich nicht um Finanzen handelt.

Feedbackqualität

Lassen Sie uns über die Qualität des Benutzerfeedbacks sprechen. Erstens können Sie und der Benutzer einem Konzept unterschiedliche Bedeutungen zuordnen. Sie und Ihre Produktmanager denken beispielsweise, dass mit „Finanzen“ Briefe der Bank gemeint sind, und der Benutzer denkt, dass sich ein Brief der Oma über ihre Rente auch auf Finanzen bezieht. Zweitens gibt es Benutzer, die es sinnlos lieben, Tasten ohne jegliche Logik zu drücken. Drittens kann der Benutzer in seinen Schlussfolgerungen zutiefst falsch liegen. Ein markantes Beispiel aus unserer Praxis ist die Implementierung eines Klassifikators Nigerianischer Spam, eine sehr lustige Art von Spam, bei dem der Benutzer aufgefordert wird, mehrere Millionen Dollar von einem plötzlich gefundenen entfernten Verwandten in Afrika zu nehmen. Nachdem wir diesen Klassifikator implementiert hatten, überprüften wir die „Kein Spam“-Klicks auf diese E-Mails und es stellte sich heraus, dass es sich bei 80 % davon um saftigen nigerianischen Spam handelte, was darauf hindeutet, dass Benutzer äußerst leichtgläubig sein können.

Und vergessen wir nicht, dass die Schaltflächen nicht nur von Menschen angeklickt werden können, sondern auch von allen möglichen Bots, die sich als Browser ausgeben. Rohes Feedback ist also nicht gut zum Lernen. Was können Sie mit diesen Informationen machen?

Wir verwenden zwei Ansätze:

  • Feedback von verlinktem ML. Wir haben zum Beispiel ein Online-Anti-Bot-System, das, wie bereits erwähnt, eine schnelle Entscheidung auf der Grundlage einer begrenzten Anzahl von Anzeichen trifft. Und es gibt ein zweites, langsames System, das nachträglich arbeitet. Es enthält mehr Daten über den Benutzer, sein Verhalten usw. Dadurch wird die fundierteste Entscheidung getroffen, die dementsprechend eine höhere Genauigkeit und Vollständigkeit aufweist. Sie können den Unterschied in der Funktionsweise dieser Systeme als Trainingsdaten zum ersten System weiterleiten. Daher wird ein einfacheres System immer versuchen, die Leistung eines komplexeren Systems zu erreichen.
  • Klicken Sie auf Klassifizierung. Sie können einfach jeden Benutzerklick klassifizieren und seine Gültigkeit und Benutzerfreundlichkeit bewerten. Wir tun dies in Antispam-Mails, indem wir Benutzerattribute, seinen Verlauf, Absenderattribute, den Text selbst und das Ergebnis der Klassifikatoren verwenden. Als Ergebnis erhalten wir ein automatisches System, das Benutzerfeedback validiert. Und da es viel seltener umgeschult werden muss, kann seine Arbeit zur Grundlage für alle anderen Systeme werden. Die Hauptpriorität dieses Modells ist die Präzision, da das Trainieren des Modells auf der Grundlage ungenauer Daten mit Konsequenzen verbunden ist.

Während wir die Daten bereinigen und unsere ML-Systeme weiter trainieren, dürfen wir die Benutzer nicht vergessen, denn für uns sind Tausende, Millionen Fehler in der Grafik Statistiken, und für den Benutzer ist jeder Fehler eine Tragödie. Neben der Tatsache, dass der Benutzer irgendwie mit Ihrem Fehler im Produkt leben muss, erwartet er nach Erhalt des Feedbacks, dass eine ähnliche Situation in Zukunft behoben wird. Daher lohnt es sich immer, den Nutzern nicht nur die Möglichkeit zu geben, abzustimmen, sondern auch das Verhalten von ML-Systemen zu korrigieren, indem beispielsweise persönliche Heuristiken für jeden Feedback-Klick erstellt werden; im Fall von E-Mails könnte dies die Möglichkeit zum Filtern sein solche Briefe nach Absender und Titel für diesen Benutzer.

Sie müssen außerdem ein Modell basierend auf einigen Berichten oder Supportanfragen im halbautomatischen oder manuellen Modus erstellen, damit andere Benutzer nicht unter ähnlichen Problemen leiden.

Heuristiken zum Lernen

Bei diesen Heuristiken und Krücken gibt es zwei Probleme. Erstens ist es schwierig, die ständig wachsende Anzahl von Krücken zu warten, ganz zu schweigen von ihrer Qualität und Leistung auf lange Sicht. Das zweite Problem besteht darin, dass der Fehler möglicherweise nicht häufig auftritt und ein paar Klicks zum weiteren Trainieren des Modells nicht ausreichen. Es scheint, dass diese beiden unabhängigen Effekte durch die Anwendung des folgenden Ansatzes erheblich neutralisiert werden können.

  1. Wir erstellen eine provisorische Krücke.
  2. Wir senden Daten von dort an das Modell, es aktualisiert sich regelmäßig, auch anhand der empfangenen Daten. Dabei ist es natürlich wichtig, dass die Heuristiken eine hohe Genauigkeit aufweisen, um die Qualität der Daten im Trainingssatz nicht zu mindern.
  3. Dann stellen wir die Überwachung so ein, dass die Krücke auslöst, und wenn die Krücke nach einiger Zeit nicht mehr funktioniert und vollständig vom Modell verdeckt wird, können Sie sie bedenkenlos entfernen. Nun ist es unwahrscheinlich, dass dieses Problem erneut auftritt.

Eine Armee von Krücken ist also sehr nützlich. Die Hauptsache ist, dass ihr Dienst dringend und nicht dauerhaft ist.

Zusätzliches Training

Bei der Umschulung werden neue Daten hinzugefügt, die als Ergebnis des Feedbacks von Benutzern oder anderen Systemen gewonnen wurden, und ein vorhandenes Modell darauf trainiert. Bei der zusätzlichen Schulung können mehrere Probleme auftreten:

  1. Das Modell unterstützt möglicherweise einfach kein zusätzliches Training, sondern lernt nur von Grund auf.
  2. Nirgendwo im Buch der Natur steht geschrieben, dass zusätzliche Schulungen die Qualität der Arbeit in der Produktion sicherlich verbessern werden. Oft passiert das Gegenteil, das heißt, es ist nur eine Verschlechterung möglich.
  3. Änderungen können unvorhersehbar sein. Dies ist ein eher subtiler Punkt, den wir für uns selbst identifiziert haben. Selbst wenn ein neues Modell in einem A/B-Test ähnliche Ergebnisse wie das aktuelle zeigt, heißt das nicht, dass es auch identisch funktionieren wird. Ihre Arbeit kann sich nur um ein Prozent unterscheiden, was neue Fehler mit sich bringen oder alte, bereits korrigierte Fehler zurückbringen kann. Sowohl wir als auch die Nutzer wissen bereits, wie man mit aktuellen Fehlern umgeht, und wenn eine große Anzahl neuer Fehler auftritt, kann es sein, dass der Nutzer nicht versteht, was passiert, weil er ein vorhersehbares Verhalten erwartet.

Daher ist das Wichtigste bei der zusätzlichen Schulung, sicherzustellen, dass das Modell verbessert oder zumindest nicht verschlechtert wird.

Wenn wir über zusätzliche Schulungen sprechen, fällt uns als Erstes der Ansatz des aktiven Lernens ein. Was bedeutet das? Der Klassifikator bestimmt beispielsweise, ob eine E-Mail einen Bezug zum Finanzwesen hat, und rund um die Entscheidungsgrenze fügen wir eine Stichprobe beschrifteter Beispiele hinzu. Das funktioniert zum Beispiel gut in der Werbung, wo es viel Feedback gibt und man das Model online trainieren kann. Und wenn es wenig Feedback gibt, erhalten wir eine stark verzerrte Stichprobe relativ zur Produktionsdatenverteilung, auf deren Grundlage es unmöglich ist, das Verhalten des Modells im Betrieb zu bewerten.

Betrieb des maschinellen Lernens in Mail.ru Mail

Tatsächlich ist es unser Ziel, alte Muster, bereits bekannte Modelle zu bewahren und neue zu erwerben. Kontinuität ist hier wichtig. Das Modell, dessen Einführung wir oft mit großem Aufwand durchgeführt haben, funktioniert bereits, sodass wir uns auf seine Leistung konzentrieren können.

In der Post kommen unterschiedliche Modelle zum Einsatz: Bäume, lineare, neuronale Netze. Für jeden erstellen wir unseren eigenen zusätzlichen Trainingsalgorithmus. Durch das zusätzliche Training erhalten wir nicht nur neue Daten, sondern oft auch neue Funktionen, die wir im Folgenden in allen Algorithmen berücksichtigen werden.

Lineare Modelle

Nehmen wir an, wir haben eine logistische Regression. Wir erstellen ein Verlustmodell aus folgenden Komponenten:

  • LogLoss bei neuen Daten;
  • Wir regulieren die Gewichtung neuer Funktionen (wir berühren die alten nicht);
  • wir lernen auch aus alten Daten, um alte Muster zu bewahren;
  • Und vielleicht das Wichtigste: Wir fügen eine harmonische Regularisierung hinzu, die garantiert, dass sich die Gewichte im Vergleich zum alten Modell gemäß der Norm nicht wesentlich ändern.

Da jede Verlustkomponente über Koeffizienten verfügt, können wir durch Kreuzvalidierung oder basierend auf Produktanforderungen die optimalen Werte für unsere Aufgabe auswählen.

Betrieb des maschinellen Lernens in Mail.ru Mail

Деревья

Kommen wir zu den Entscheidungsbäumen. Für das zusätzliche Training von Bäumen haben wir den folgenden Algorithmus zusammengestellt:

  1. Die Produktion betreibt einen Wald von 100–300 Bäumen, der auf einem alten Datensatz trainiert wird.
  2. Am Ende entfernen wir M = 5 Teile und fügen 2M = 10 neue hinzu, trainiert auf dem gesamten Datensatz, aber mit einem hohen Gewicht für die neuen Daten, was natürlich eine inkrementelle Änderung im Modell garantiert.

Offensichtlich nimmt die Anzahl der Bäume im Laufe der Zeit stark zu und muss regelmäßig reduziert werden, um die Zeitvorgaben einzuhalten. Dazu nutzen wir die mittlerweile allgegenwärtige Wissensdestillation (KD). Kurz zum Funktionsprinzip.

  1. Wir haben das aktuelle „komplexe“ Modell. Wir führen es auf dem Trainingsdatensatz aus und erhalten am Ausgang die Klassenwahrscheinlichkeitsverteilung.
  2. Als Nächstes trainieren wir das Schülermodell (in diesem Fall das Modell mit weniger Bäumen), um die Ergebnisse des Modells zu wiederholen, wobei wir die Klassenverteilung als Zielvariable verwenden.
  3. Es ist hier wichtig zu beachten, dass wir das Datensatz-Markup in keiner Weise verwenden und daher beliebige Daten verwenden können. Als Trainingsbeispiel für das Studentenmodell verwenden wir natürlich ein Datenbeispiel aus dem Kampfstrom. Somit können wir mit dem Trainingssatz die Genauigkeit des Modells sicherstellen, und die Stream-Stichprobe garantiert eine ähnliche Leistung bei der Produktionsverteilung, wodurch die Verzerrung des Trainingssatzes ausgeglichen wird.

Betrieb des maschinellen Lernens in Mail.ru Mail

Die Kombination dieser beiden Techniken (Hinzufügen von Bäumen und periodisches Reduzieren ihrer Anzahl mithilfe der Wissensdestillation) gewährleistet die Einführung neuer Muster und vollständige Kontinuität.

Mit Hilfe von KD führen wir auch verschiedene Vorgänge an Modellmerkmalen durch, z. B. das Entfernen von Merkmalen und die Bearbeitung von Lücken. In unserem Fall verfügen wir über eine Reihe wichtiger statistischer Merkmale (nach Absendern, Text-Hashes, URLs usw.), die in der Datenbank gespeichert sind und häufig fehlschlagen. Das Modell ist für eine solche Entwicklung der Ereignisse natürlich nicht bereit, da Fehlersituationen im Trainingssatz nicht auftreten. In solchen Fällen kombinieren wir KD- und Erweiterungstechniken: Beim Training für einen Teil der Daten entfernen oder setzen wir die erforderlichen Funktionen zurück, und wir übernehmen die Originalbezeichnungen (Ausgaben des aktuellen Modells) und das Schülermodell lernt, diese Verteilung zu wiederholen .

Betrieb des maschinellen Lernens in Mail.ru Mail

Wir haben festgestellt, dass der Prozentsatz der erforderlichen Thread-Beispiele umso größer ist, je schwerwiegender die Modellmanipulation ist.

Das Entfernen von Features, der einfachste Vorgang, erfordert nur einen kleinen Teil des Ablaufs, da sich nur wenige Features ändern und das aktuelle Modell auf demselben Satz trainiert wurde – der Unterschied ist minimal. Um das Modell zu vereinfachen (die Anzahl der Bäume um ein Vielfaches zu reduzieren), sind bereits 50 bis 50 erforderlich. Und für das Auslassen wichtiger statistischer Merkmale, die die Leistung des Modells ernsthaft beeinträchtigen, ist noch mehr Fluss erforderlich, um die Arbeit des Modells auszugleichen neues auslassungsresistentes Modell für alle Arten von Briefen.

Betrieb des maschinellen Lernens in Mail.ru Mail

FastText

Kommen wir zu FastText. Ich möchte Sie daran erinnern, dass die Darstellung (Einbettung) eines Wortes aus der Summe der Einbettung des Wortes selbst und aller seiner Buchstaben-N-Gramme, normalerweise Trigramme, besteht. Da es eine ganze Reihe von Trigrammen geben kann, wird Bucket Hashing verwendet, also die Umwandlung des gesamten Raums in eine bestimmte feste Hashmap. Als Ergebnis erhält man die Gewichtsmatrix mit der Dimension der inneren Schicht pro Wortanzahl + Buckets.

Mit zusätzlichem Training erscheinen neue Zeichen: Wörter und Trigramme. Bei der Standard-Folgeschulung von Facebook passiert nichts Wesentliches. Nur alte Gewichte mit Kreuzentropie werden auf neue Daten umtrainiert. Somit werden keine neuen Features genutzt; dieser Ansatz hat natürlich alle oben beschriebenen Nachteile, die mit der Unvorhersehbarkeit des Modells in der Produktion verbunden sind. Deshalb haben wir FastText ein wenig modifiziert. Wir fügen alle neuen Gewichte (Wörter und Trigramme) hinzu, erweitern die gesamte Matrix mit Kreuzentropie und fügen analog zum linearen Modell eine harmonische Regularisierung hinzu, die eine unbedeutende Änderung der alten Gewichte garantiert.

Betrieb des maschinellen Lernens in Mail.ru Mail

CNN

Faltungsnetzwerke sind etwas komplizierter. Wenn die letzten Schichten im CNN abgeschlossen sind, können Sie natürlich eine harmonische Regularisierung anwenden und Kontinuität gewährleisten. Wenn jedoch ein zusätzliches Training des gesamten Netzwerks erforderlich ist, kann eine solche Regularisierung nicht mehr auf alle Schichten angewendet werden. Es besteht jedoch die Möglichkeit, komplementäre Einbettungen durch Triplet Loss zu trainieren (Originalartikel).

Dreifacher Verlust

Lassen Sie uns am Beispiel einer Anti-Phishing-Aufgabe einen allgemeinen Blick auf Triplet Loss werfen. Wir übernehmen unser Logo sowie positive und negative Beispiele von Logos anderer Unternehmen. Wir minimieren den Abstand zwischen den ersten und maximieren den Abstand zwischen den zweiten, wir tun dies mit einer kleinen Lücke, um eine größere Kompaktheit der Klassen zu gewährleisten.

Betrieb des maschinellen Lernens in Mail.ru Mail

Wenn wir das Netzwerk weiter trainieren, ändert sich unser metrischer Raum vollständig und wird mit dem vorherigen völlig inkompatibel. Dies ist ein ernstes Problem bei Problemen, die Vektoren verwenden. Um dieses Problem zu umgehen, werden wir während des Trainings alte Einbettungen einmischen.

Wir haben dem Trainingssatz neue Daten hinzugefügt und trainieren die zweite Version des Modells von Grund auf. Im zweiten Schritt trainieren wir unser Netzwerk weiter (Finetuning): Zuerst wird die letzte Schicht fertiggestellt und dann wird das gesamte Netzwerk entfroren. Bei der Zusammenstellung von Tripletts berechnen wir nur einen Teil der Einbettungen mit dem trainierten Modell, den Rest mit dem alten. Daher stellen wir im Zuge der zusätzlichen Schulung die Kompatibilität der metrischen Räume v1 und v2 sicher. Eine einzigartige Version der harmonischen Regularisierung.

Betrieb des maschinellen Lernens in Mail.ru Mail

Gesamte Architektur

Betrachtet man das Gesamtsystem am Beispiel von Antispam, dann sind die Modelle nicht isoliert, sondern ineinander verschachtelt. Wir nehmen Bilder, Texte und andere Features auf, über CNN und Fast Text erhalten wir Einbettungen. Anschließend werden auf die Einbettungen Klassifikatoren angewendet, die Bewertungen für verschiedene Klassen (Briefarten, Spam, Vorhandensein eines Logos) liefern. Die Signale und Zeichen dringen bereits in den Wald der Bäume ein, damit die endgültige Entscheidung getroffen werden kann. Einzelne Klassifikatoren in diesem Schema ermöglichen es, die Ergebnisse des Systems besser zu interpretieren und Komponenten bei Problemen gezielter neu zu trainieren, anstatt alle Daten in Rohform in Entscheidungsbäume einzuspeisen.

Betrieb des maschinellen Lernens in Mail.ru Mail

Dadurch gewährleisten wir Kontinuität auf allen Ebenen. Auf der untersten Ebene verwenden wir in CNN und Fast Text eine harmonische Regularisierung, für die Klassifikatoren in der Mitte verwenden wir außerdem eine harmonische Regularisierung und Ratenkalibrierung für die Konsistenz der Wahrscheinlichkeitsverteilung. Nun, Tree Boosting wird schrittweise oder mithilfe von Wissensdestillation trainiert.

Im Allgemeinen ist die Wartung eines solchen verschachtelten maschinellen Lernsystems meist mühsam, da jede Komponente auf der unteren Ebene zu einer Aktualisierung des gesamten Systems darüber führt. Da sich in unserem Setup jedoch jede Komponente geringfügig ändert und mit der vorherigen kompatibel ist, kann das gesamte System Stück für Stück aktualisiert werden, ohne dass die gesamte Struktur neu trainiert werden muss, was eine Unterstützung ohne großen Mehraufwand ermöglicht.

Einsetzen

Wir haben die Datenerfassung und zusätzliche Schulung verschiedener Modelltypen besprochen und gehen nun zu deren Bereitstellung in der Produktionsumgebung über.

A/B-Tests

Wie ich bereits sagte, erhalten wir im Prozess der Datenerhebung normalerweise eine verzerrte Stichprobe, anhand derer es unmöglich ist, die Produktionsleistung des Modells zu bewerten. Daher muss beim Deployment das Modell mit der Vorgängerversion verglichen werden, um zu verstehen, wie es tatsächlich läuft, also A/B-Tests durchführen. Tatsächlich ist der Prozess des Ausrollens und Analysierens von Diagrammen recht routinemäßig und kann leicht automatisiert werden. Wir führen unsere Modelle schrittweise auf 5 %, 30 %, 50 % und 100 % der Benutzer ein und sammeln dabei alle verfügbaren Metriken zu Modellantworten und Benutzerfeedback. Im Falle schwerwiegender Ausreißer setzen wir das Modell automatisch zurück. In anderen Fällen entscheiden wir uns, den Prozentsatz zu erhöhen, nachdem wir eine ausreichende Anzahl von Benutzerklicks gesammelt haben. Dadurch bringen wir das neue Modell völlig automatisch zu 50 % der Nutzer und der Rollout für das gesamte Publikum wird von einer Person genehmigt, obwohl dieser Schritt automatisiert werden kann.

Allerdings bietet der A/B-Testprozess Raum für Optimierungen. Tatsache ist, dass jeder A/B-Test ziemlich langwierig ist (in unserem Fall dauert er je nach Feedbackmenge zwischen 6 und 24 Stunden), was ihn recht teuer und mit begrenzten Ressourcen macht. Darüber hinaus ist ein ausreichend hoher Flow-Prozentsatz für den Test erforderlich, um die Gesamtzeit des A/B-Tests wesentlich zu beschleunigen (die Rekrutierung einer statistisch signifikanten Stichprobe zur Auswertung von Metriken bei einem kleinen Prozentsatz kann sehr lange dauern). Die Anzahl der A/B-Slots ist äußerst begrenzt. Natürlich müssen wir nur die vielversprechendsten Modelle testen, von denen wir im Rahmen des zusätzlichen Schulungsprozesses eine ganze Reihe erhalten.

Um dieses Problem zu lösen, haben wir einen separaten Klassifikator trainiert, der den Erfolg eines A/B-Tests vorhersagt. Dazu verwenden wir Entscheidungsstatistiken, Präzision, Rückruf und andere Metriken des Trainingssatzes, des verzögerten Satzes und der Stichprobe aus dem Stream als Merkmale. Wir vergleichen das Modell auch mit dem aktuellen Modell in der Produktion mithilfe von Heuristiken und berücksichtigen die Komplexität des Modells. Unter Verwendung all dieser Funktionen bewertet ein auf den Testverlauf trainierter Klassifikator Kandidatenmodelle, in unserem Fall sind dies Baumwälder, und entscheidet, welches Modell im A/B-Test verwendet werden soll.

Betrieb des maschinellen Lernens in Mail.ru Mail

Dieser Ansatz ermöglichte es uns zum Zeitpunkt der Implementierung, die Anzahl erfolgreicher A/B-Tests um ein Vielfaches zu steigern.

Testen und Überwachen

Seltsamerweise schaden Tests und Überwachung unserer Gesundheit nicht, sondern verbessern sie im Gegenteil und entlasten uns von unnötigem Stress. Durch Tests können Sie einen Fehler verhindern, und durch die Überwachung können Sie ihn rechtzeitig erkennen, um die Auswirkungen auf Benutzer zu verringern.

Hier ist es wichtig zu verstehen, dass Ihr System früher oder später immer Fehler machen wird – das liegt am Entwicklungszyklus jeder Software. Zu Beginn der Systementwicklung gibt es immer viele Fehler, bis sich alles beruhigt und die Hauptphase der Innovation abgeschlossen ist. Aber mit der Zeit fordert die Entropie ihren Tribut und es treten erneut Fehler auf – aufgrund der Verschlechterung der Komponenten in der Umgebung und der Datenänderungen, über die ich am Anfang gesprochen habe.

An dieser Stelle möchte ich darauf hinweisen, dass jedes maschinelle Lernsystem während seines gesamten Lebenszyklus unter dem Gesichtspunkt seines Gewinns betrachtet werden sollte. Die folgende Grafik zeigt ein Beispiel dafür, wie das System eine seltene Art von Spam abfängt (die Linie in der Grafik liegt nahe Null). Eines Tages wurde sie aufgrund eines falsch zwischengespeicherten Attributs verrückt. Glücklicherweise gab es keine Überwachung auf ungewöhnliche Auslöser, was zur Folge hatte, dass das System begann, Briefe in großen Mengen im „Spam“-Ordner an der Entscheidungsgrenze zu speichern. Trotz der Korrektur der Folgen hat das System bereits so viele Fehler gemacht, dass es sich auch in fünf Jahren nicht amortisieren wird. Und das ist aus Sicht des Lebenszyklus des Modells ein völliger Misserfolg.

Betrieb des maschinellen Lernens in Mail.ru Mail

Daher kann eine so einfache Sache wie die Überwachung im Leben eines Modells von entscheidender Bedeutung sein. Zusätzlich zu den Standard- und offensichtlichen Metriken berücksichtigen wir die Verteilung der Modellantworten und -bewertungen sowie die Verteilung der Schlüsselmerkmalswerte. Mithilfe der KL-Divergenz können wir die aktuelle Verteilung mit der historischen oder die Werte im A/B-Test mit dem Rest des Streams vergleichen, wodurch wir Anomalien im Modell erkennen und Änderungen rechtzeitig rückgängig machen können.

In den meisten Fällen starten wir unsere ersten Systemversionen mithilfe einfacher Heuristiken oder Modelle, die wir in Zukunft zur Überwachung verwenden. Wir überwachen beispielsweise das NER-Modell im Vergleich zu den regulären Modellen für bestimmte Online-Shops. Wenn die Klassifizierungsabdeckung im Vergleich dazu abnimmt, verstehen wir die Gründe dafür. Ein weiterer nützlicher Einsatz von Heuristiken!

Ergebnisse

Lassen Sie uns die Kerngedanken des Artikels noch einmal durchgehen.

  • Fibdeck. Wir denken immer an den Nutzer: wie er mit unseren Fehlern leben wird, wie er sie melden kann. Vergessen Sie nicht, dass Benutzer keine Quelle für reines Feedback für Trainingsmodelle sind und dass dies mithilfe von Hilfs-ML-Systemen geklärt werden muss. Wenn es nicht möglich ist, ein Signal vom Benutzer zu sammeln, suchen wir nach alternativen Feedbackquellen, beispielsweise angeschlossenen Systemen.
  • Zusätzliches Training. Hier geht es vor allem um Kontinuität, daher setzen wir auf das aktuelle Serienmodell. Wir trainieren neue Modelle so, dass sie sich aufgrund harmonischer Regularisierung und ähnlicher Tricks nicht wesentlich vom vorherigen unterscheiden.
  • Einsetzen. Die auf Metriken basierende automatische Bereitstellung verkürzt die Zeit für die Implementierung von Modellen erheblich. Die Überwachung von Statistiken und die Verteilung der Entscheidungsfindung sowie die Anzahl der Stürze von Benutzern sind für Ihren erholsamen Schlaf und ein produktives Wochenende unerlässlich.

Nun, ich hoffe, dass Ihnen dies dabei hilft, Ihre ML-Systeme schneller zu verbessern, sie schneller auf den Markt zu bringen und sie zuverlässiger und weniger stressig zu machen.

Source: habr.com

Kommentar hinzufügen