Einsatz von maschinellem Lernen bei Mail.ru

Einsatz von maschinellem Lernen bei Mail.ru

Inspiriert von meinen Vorträgen auf der Highload++ und DataFest Minsk 2019.

Für viele ist E-Mail heute ein unverzichtbarer Bestandteil des Lebens im Internet. Damit führen wir geschäftliche Korrespondenz, speichern allerlei wichtige Informationen zu Finanzen, Hotelbuchungen, Bestellungen und vielem mehr. Mitte 2018 haben wir eine Produktstrategie für die Weiterentwicklung von E-Mail formuliert. Wie sollte moderne E-Mail aussehen?

E-Mail muss intelligent, also den Nutzern helfen, sich im wachsenden Informationsvolumen zurechtzufinden: filtern, strukturieren und auf die bequemste Art bereitstellen. Sie sollte nützlich nennt,, sodass man direkt im Posteingang verschiedene Aufgaben erledigen kann, wie zum Beispiel Bußgelder zu bezahlen (eine Funktion, die ich leider oft nutze). Zudem muss E-Mail natürlich Informationsschutz bieten, Spam abhalten und vor Hacks schützen, sprich sie muss sichere.

Diese Aspekte bestimmen eine Reihe von Schlüsselfunktionen, von denen viele effektiv mit Hilfe von maschinellem Lernen gelöst werden können. Hier sind Beispiele bereits implementierter Funktionen, die im Rahmen der Strategie entwickelt wurden – jeweils eine für jedes Thema.

  • Smart Reply. In der E-Mail gibt es eine Smart Reply-Funktion. Das neuronale Netzwerk analysiert den Text der E-Mail, versteht dessen Bedeutung und Ziel und schlägt drei passende Antwortmöglichkeiten vor: positiv, negativ und neutral. Dies hilft erheblich, Zeit beim Antworten auf E-Mails zu sparen und ermöglicht es, oft auf unkonventionelle und unterhaltsame Weise zu reagieren.
  • Gruppierung von E-Mails, die sich auf Bestellungen in Online-Shops beziehen. Wir kaufen häufig online ein, und in der Regel senden Shops mehrere E-Mails zu jeder Bestellung. Zum Beispiel erhält man von AliExpress, dem größten Dienst, sehr viele E-Mails zu einer einzigen Bestellung, und wir haben festgestellt, dass deren Anzahl im Extremfall bis zu 29 beträgt. Daher nutzen wir ein Modell zur Erkennung benannter Entitäten, um die Bestellnummer und andere Informationen aus dem Text herauszufiltern und alle E-Mails in einen Thread zu gruppieren. Außerdem zeigen wir die wichtigsten Informationen zur Bestellung in einem separaten Feld an, was die Bearbeitung dieser Art von E-Mails erleichtert.

    Einsatz von maschinellem Lernen bei Mail.ru

  • Anti-Phishing. Phishing ist eine besonders gefährliche Art von Betrugsmails, bei denen Kriminelle versuchen, an finanzielle Informationen (einschließlich der Bankkartendaten der Nutzer) und Zugangsdaten zu gelangen. Diese Mails ahmen echte Nachrichten nach, die von einem Dienst versendet werden, auch visuell. Daher nutzen wir Computer Vision, um die Logos und das Design von E-Mails großer Unternehmen (wie Mail.ru, Sber, Alfa) zu erkennen und berücksichtigen dies zusammen mit dem Text und anderen Merkmalen in unseren Spam- und Phishing-Klassifikatoren.

Maschinelles Lernen

Ein wenig über maschinelles Lernen in der E-Mail insgesamt. E-Mail ist ein hochbelastetes System: Über unsere Server passieren im Durchschnitt täglich 1,5 Milliarden E-Mails für 30 Millionen DAU. Etwa 30 Systeme des maschinellen Lernens übernehmen alle notwendigen Funktionen und Features.

Jede E-Mail durchläuft einen umfassenden Klassifizierungsprozess. Zunächst filtern wir Spam heraus und lassen nur legitime E-Mails zu. Benutzer bemerken oft nicht, wie effektiv der Spam-Schutz arbeitet, da 95–99 % des Spams nicht einmal den entsprechenden Ordner erreichen. Die Spam-Erkennung ist ein sehr wichtiger Teil unseres Systems und auch der komplizierteste, da im Bereich des Anti-Spams eine ständige Anpassung zwischen Schutzsystemen und Angriffen stattfindet, was eine kontinuierliche ingenieurtechnische Herausforderung für unser Team darstellt.

Anschließend unterscheiden wir zwischen E-Mails von Menschen und von Bots. E-Mails von Menschen sind am wichtigsten, daher bieten wir Funktionen wie Smart Reply dafür an. E-Mails von Bots werden in zwei Kategorien unterteilt: transaktionale E-Mails – das sind wichtige E-Mails von Diensten, wie z. B. Kaufbestätigungen oder Hotelbuchungen, Finanzen, und informative E-Mails – das sind geschäftliche Werbung und Rabatte.

Wir sind der Meinung, dass Transaktions-E-Mails ebenso wichtig sind wie persönliche Korrespondenz. Sie sollten jederzeit griffbereit sein, da es häufig notwendig ist, schnell Informationen über eine Bestellung oder eine Flugbuchung zu finden, während wir Zeit mit der Suche nach diesen E-Mails verbringen. Daher teilen wir sie zur besseren Übersicht automatisch in sechs Hauptkategorien ein: Reisen, Bestellungen, Finanzen, Tickets, Registrierungen und schließlich Bußgelder.

Informations-E-Mails sind die größte Gruppe und wahrscheinlich die am wenigsten wichtigen, da sie keine sofortige Reaktion erfordern; es ändert sich nichts Wesentliches im Leben des Nutzers, wenn er solche E-Mails nicht liest. In unserer neuen Benutzeroberfläche fassen wir sie in zwei Threads zusammen: Soziale Netzwerke und Newsletter, wodurch wir das Postfach visuell aufräumen und nur wichtige E-Mails im Blick behalten.

Einsatz von maschinellem Lernen bei Mail.ru

Betrieb

Eine große Anzahl von Systemen bringt erhebliche Herausforderungen in der Nutzung mit sich. Denn Modelle degradieren im Laufe der Zeit wie jede Software: Anzeichen brechen zusammen, Maschinen versagen, der Code wird fehlerhaft. Zudem ändern sich die Daten ständig: Neue werden hinzugefügt, das Nutzungsverhalten der Verbraucher transformiert sich usw. Daher wird ein Modell ohne angemessene Unterstützung im Laufe der Zeit immer schlechter arbeiten.

Es ist auch wichtig zu beachten, dass je tiefer das maschinelle Lernen in das Leben der Benutzer eindringt, desto größer der Einfluss auf das Ökosystem wird. Folglich können die Marktteilnehmer sowohl finanzielle Verluste als auch Gewinne dadurch erzielen. Daher passen sich in immer mehr Bereichen die Akteure an die Arbeit mit ML-Algorithmen an (klassische Beispiele sind Werbung, Suche und der bereits erwähnte Spam-Schutz).

Maschinenlernen birgt eine Besonderheit: Jede noch so kleine Änderung im System kann eine Menge Arbeit mit dem Modell nach sich ziehen: Datenverarbeitung, Neutrainierung, Deployment, was sich Wochen oder Monate hinziehen kann. Daher erfordert ein schneller Wandel in der Umgebung, in der Ihre Modelle operieren, umso mehr Aufwand für deren Wartung. Das Team kann viele Systeme aufbauen und sich darüber freuen, dann jedoch fast alle Ressourcen für deren Unterstützung aufwenden, ohne Gelegenheit für Neues zu haben. Mit einer solchen Situation hatten wir einmal im Antispam-Team zu kämpfen. Wir kamen zu dem klaren Schluss, dass die Wartung automatisiert werden muss.

Automatisierung

Was kann automatisiert werden? Eigentlich fast alles. Ich habe vier Bereiche identifiziert, die die Infrastruktur des maschinellen Lernens bestimmen:

  • Datensammlung;
  • Nachtraining;
  • Deployment;
  • Tests & Überwachung.

Wenn die Umgebung instabil und ständig im Wandel ist, ist die gesamte Infrastruktur um das Modell wichtiger als das Modell selbst. Das kann ein bewährter linearer Klassifikator sein, aber wenn die Merkmale richtig eingegeben und gutes Benutzer-Feedback eingerichtet wird, wird er viel besser funktionieren als State-Of-The-Art-Modelle mit all ihren Details.

Feedback-Zyklus

Dieser Zyklus umfasst die Datensammlung, Nachtraining und Deployment – im Wesentlichen den gesamten Aktualisierungsprozess des Modells. Warum ist das wichtig? Schauen Sie sich das Diagramm zur E-Mail-Registrierung an:

Einsatz von maschinellem Lernen bei Mail.ru

Ein Machine Learning-Entwickler hat ein Anti-Bot-Modell implementiert, das verhindert, dass Bots sich für E-Mail-Registrierungen anmelden. Das Diagramm fällt auf einen Wert, bei dem nur reale Benutzer übrig bleiben. Alles wunderbar! Aber nach vier Stunden optimieren die Bot-Betreiber ihre Skripte, und alles kehrt zum Alten zurück. Bei dieser Implementierung hat der Entwickler einen Monat damit verbracht, Merkmale hinzuzufügen und das Modell nachzutrainieren, aber der Spammer konnte sich in vier Stunden anpassen.

Um zu vermeiden, dass es schmerzhaft wird und wir alles später neu machen müssen, sollten wir von Anfang an darüber nachdenken, wie der Feedback-Zyklus aussehen wird und was wir tun, wenn sich die Umgebung ändert. Lassen Sie uns mit der Datensammlung beginnen – das ist der Treibstoff für unsere Algorithmen.

Daten sammeln

Es ist klar, dass moderne neuronale Netze mit mehr Daten besser arbeiten, und diese werden im Wesentlichen von den Nutzern des Produkts generiert. Nutzer können uns helfen, indem sie Daten kennzeichnen, aber wir dürfen dies nicht überstrapazieren, denn irgendwann werden die Nutzer das Interesse verlieren, Ihre Modelle zu trainieren und zu einem anderen Produkt wechseln.

Einer der häufigsten Fehler (hier beziehe ich mich auf Andrew Ng) ist eine zu starke Orientierung an Metriken auf dem Testdatensatz und nicht am Feedback des Nutzers, welches tatsächlich das wichtigste Qualitätsmaß ist, da wir ein Produkt für den Nutzer erstellen. Wenn der Nutzer die Funktionsweise des Modells nicht versteht oder nicht mag, ist alles umsonst.

Deshalb sollte der Nutzer immer die Möglichkeit haben, abzustimmen; er benötigt ein Werkzeug für Feedback. Wenn wir glauben, dass eine E-Mail, die im Posteingang angekommen ist, mit Finanzen zu tun hat, sollten wir sie mit "Finanzen" kennzeichnen und eine Schaltfläche erstellen, auf die der Nutzer klicken kann, um zu sagen, dass das nicht Finanzen sind.

Qualität des Feedbacks

Lassen Sie uns über die Qualität des Nutzerfeedbacks sprechen. Erstens kann es sein, dass Sie und die Produktmanager unterschiedliche Bedeutungen mit einem Begriff verbinden. Zum Beispiel denken Sie, dass "Finanzen" E-Mails von Banken sind, während der Nutzer der Meinung ist, dass auch eine E-Mail von der Großmutter zur Rente dazugehört. Zweitens gibt es Nutzer, die gedankenlos auf Schaltflächen klicken, ohne irgendeine Logik. Drittens kann der Nutzer in seinen Schlussfolgerungen stark irren. Ein auffälliges Beispiel aus unserer Praxis ist die Implementierung eines Klassifizierers nigerianischer Spam, eine ganz amüsante Art von Spam, bei der dem Nutzer angeboten wird, ein paar Millionen Dollar von einem plötzlich entdeckten entfernten Verwandten in Afrika zu erhalten. Nachdem wir diesen Klassifizierer implementiert haben, überprüften wir die Klicks auf „Nicht Spam“ bei diesen E-Mails, und es stellte sich heraus, dass 80 % davon saftiger nigerianischer Spam sind, was darauf hindeutet, dass die Nutzer extrem vertrauensvoll sein können.

Und wir dürfen nicht vergessen, dass nicht nur Menschen auf die Schaltflächen klicken können, sondern auch verschiedene Bots, die sich als Browser ausgeben. Daher ist rohes Feedback nicht geeignet für das Training. Was kann man mit diesen Informationen machen?

Wir verwenden zwei Ansätze:

  • Feedback von verwandtem ML. Zum Beispiel haben wir ein Online-Anti-Bot-System, das, wie ich bereits erwähnt habe, schnelle Entscheidungen auf der Grundlage einer begrenzten Anzahl von Merkmalen trifft. Es gibt auch ein zweites, langsameres System, das im Nachhinein arbeitet. Es verfügt über mehr Daten zum Nutzer, seinem Verhalten usw. Infolgedessen wird eine überlegte Entscheidung getroffen, was zu einer höheren Genauigkeit und Vollständigkeit führt. Die Unterschiede in der Funktionsweise dieser Systeme können als Lernmaterial für das erste System verwendet werden. So wird das einfachere System stets versuchen, die Leistung des komplexeren Systems zu erreichen.
  • Klickklassifizierung. Man kann jeden Klick des Nutzers einfach klassifizieren, seine Validität und Verwendbarkeit bewerten. Dies geschieht im E-Mail-Antispam, indem wir Benutzerdaten, dessen Geschichte, Merkmale des Absenders, den Text selbst und die Ergebnisse der Klassifikatoren verwenden. So entsteht ein automatisches System, das das Benutzerfeedback validiert. Da es seltener nachtrainiert werden muss, kann es die Grundlage für alle anderen Systeme bilden. In diesem Modell hat die Präzision die höchste Priorität, da das Trainieren des Modells mit ungenauen Daten schwerwiegende Folgen haben kann.

Während wir die Daten bereinigen und unsere ML-Systeme weiter trainieren, dürfen wir die Nutzer nicht aus den Augen verlieren. Für uns sind Tausende und Millionen von Fehlern in den Statistiken lediglich Zahlen, doch für den Nutzer ist jeder Fehler eine Tragödie. Der Nutzer muss nicht nur mit Ihrem Fehler im Produkt leben, sondern erwartet auch, dass ähnliche Situationen auf Grundlage seines Feedbacks in Zukunft vermieden werden. Daher ist es wichtig, den Nutzern nicht nur die Möglichkeit zu geben, abzustimmen, sondern auch, das Verhalten der ML-Systeme zu korrigieren. Beispielsweise könnte man persönliche Heuristiken für jeden Klick im Feedback implementieren; im Fall von E-Mails könnte dies die Möglichkeit umfassen, ähnliche Nachrichten nach Absender und Betreff für diesen Nutzer zu filtern.

Zusätzlich sollte man basierend auf bestimmten Berichten oder Anfragen an den Support im halbautomatischen oder manuellen Modus Modelle anpassen, damit auch andere Nutzer nicht unter ähnlichen Problemen leiden.

Heuristiken für das Training

Es gibt zwei Probleme mit diesen Heuristiken und Workarounds. Erstens ist es schwierig, die ständig wachsende Anzahl von Workarounds zu pflegen, ganz zu schweigen von ihrer Qualität und ihrer langfristigen Funktionsfähigkeit. Das zweite Problem besteht darin, dass ein Fehler nicht häufig auftreten kann und einige Klicks nicht ausreichen, um das Modell nachzulernen. Es scheint, dass diese beiden unabhängig wirkenden Effekte erheblich gemildert werden können, wenn man folgenden Ansatz verfolgt.

  1. Wir erstellen einen temporären Workaround.
  2. Wir leiten die Daten von ihm in das Modell, das regelmäßig nachlernt, auch auf Grundlage der erhaltenen Daten. Hier ist es natürlich wichtig, dass die Heuristik eine hohe Genauigkeit hat, um die Qualität der Daten im Trainingssatz nicht zu beeinträchtigen.
  3. Anschließend richten wir eine Überwachung für die Auslösung des Workarounds ein. Wenn dieser nach einiger Zeit nicht mehr ausgelöst wird und vollständig durch das Modell abgedeckt ist, kann er ohne Bedenken entfernt werden. Dieses Problem wird dann voraussichtlich nicht wieder auftreten.

Eine Armee von Workarounds ist also sehr nützlich. Wichtig ist, dass ihr Einsatz vorübergehend und nicht dauerhaft ist.

Nachlernen

Das Fine-Tuning ist der Prozess, bei dem neue Daten, die aus dem Feedback von Nutzern oder anderen Systemen gewonnen werden, hinzugefügt und das bestehende Modell darauf trainiert wird. Beim Fine-Tuning können mehrere Probleme auftreten:

  1. Das Modell unterstützt möglicherweise einfach kein Fine-Tuning und kann nur von Grund auf neu lernen.
  2. In den Gesetzen der Natur steht nirgendwo geschrieben, dass Fine-Tuning zwangsläufig die Qualität der Arbeit im Produktionsbetrieb verbessert. Oft ist es genau umgekehrt, was bedeutet, dass es auch zu einer Verschlechterung kommen kann.
  3. Änderungen können unvorhersehbar sein. Dies ist ein ziemlich feiner Punkt, den wir für uns herausgefunden haben. Selbst wenn das neue Modell im A/B-Test ähnliche Ergebnisse im Vergleich zum aktuellen zeigt, bedeutet das nicht, dass es identisch arbeiten wird. Ihre Leistung kann sich in einem Prozent unterscheiden, was neue Fehler verursachen oder bereits behobene alte zurückbringen kann. Mit den aktuellen Fehlern haben wir und die Nutzer bereits gelernt zu leben, und wenn eine große Anzahl neuer Fehler auftritt, kann der Nutzer ebenfalls verwirrt sein, da er ein vorhersehbares Verhalten erwartet.

Deshalb ist das Wichtigste beim Fine-Tuning, das Modell garantiert zu verbessern oder es zumindest nicht zu verschlechtern.

Das erste, was einem in den Sinn kommt, wenn wir über Fine-Tuning sprechen, ist der Ansatz des aktiven Lernens. Was bedeutet das? Beispielsweise klassifiziert ein Klassifikator, ob eine E-Mail zu Finanzangelegenheiten gehört, und um seine Entscheidungsgrenze fügen wir eine Auswahl gekennzeichneter Beispiele hinzu. Dies funktioniert gut, beispielsweise in der Werbung, wo es viel Feedback gibt und das Modell in Echtzeit trainiert werden kann. Wenn es jedoch wenig Feedback gibt, erhalten wir eine stark verzerrte Auswahl im Vergleich zur Produktionsverteilung der Daten, mit der wir das Verhalten des Modells im Betrieb nicht bewerten können.

Einsatz von maschinellem Lernen bei Mail.ru

Tatsächlich ist unser Ziel, alte Muster, die dem Modell bereits bekannt sind, zu bewahren und neue zu erlernen. Hierbei ist Kontinuität wichtig. Das Modell, das wir oft mit großer Mühe bereitgestellt haben, funktioniert bereits, weshalb wir uns auf seine Leistung beziehen können.

In der E-Mail kommen verschiedene Modelle zum Einsatz: Bäume, lineare Modelle und neuronale Netze. Für jedes dieser Modelle entwickeln wir unseren eigenen Algorithmus für das Fine-Tuning. Im Verlauf des Feinabgleichs erhalten wir nicht nur neue Daten, sondern oft auch neue Merkmale, die wir in allen nachfolgenden Algorithmen berücksichtigen werden.

Lineare Modelle

Nehmen wir an, wir haben eine logistische Regression. Wir stellen die Verlustfunktion aus den folgenden Komponenten zusammen:

  • LogLoss auf neuen Daten;
  • Regularisierung der Gewichte neuer Merkmale (alte Gewichte bleiben unberührt);
  • Wir lernen auch von alten Daten, um bestehende Muster zu bewahren;
  • und vielleicht das Wichtigste: Wir fügen die harmonische Regularisierung hinzu, die gewährleistet, dass die Gewichte im Vergleich zum alten Modell nicht stark verändert werden.

Da jeder Bestandteil des Verlusts Koeffizienten hat, können wir die optimalen Werte für unsere Aufgabe durch Kreuzvalidierung oder basierend auf den Produktanforderungen anpassen.

Einsatz von maschinellem Lernen bei Mail.ru

Bäume

Kommen wir zu Entscheidungsbäumen. Wir haben den folgenden Algorithmus für das Fein-Tuning der Bäume entwickelt:

  1. In der Produktion kommt ein Wald aus 100–300 Bäumen zum Einsatz, der auf dem alten Datensatz trainiert wurde.
  2. Am Ende entfernen wir M = 5 Stück und fügen 2M = 10 neue hinzu, die auf dem gesamten Datensatz trainiert sind, jedoch mit hohem Gewicht bei den neuen Daten, was natürlich eine inkrementelle Veränderung des Modells garantiert.

Es ist offensichtlich, dass die Anzahl der Bäume im Laufe der Zeit stark zunimmt und sie regelmäßig reduziert werden müssen, um im Zeitrahmen zu bleiben. Dazu nutzen wir das allgegenwärtige Knowledge Distillation (KD). Kurz zum Prinzip seiner Funktionsweise.

  1. Wir haben unser aktuelles "komplexes" Modell. Wir führen es mit dem Training-Datensatz aus und erhalten die Wahrscheinlichkeitsverteilung der Klassen als Ausgabe.
  2. Anschließend trainieren wir das Schüler-Modell (in diesem Fall ein Modell mit weniger Bäumen), um die Ergebnisse des Modells zu wiederholen, wobei wir die Klassenverteilung als Zielvariable verwenden.
  3. Hier ist es wichtig zu beachten, dass wir keine Datensatzmarkierung verwenden und daher beliebige Daten nutzen können. Selbstverständlich verwenden wir ein Datenbeispiel aus dem Produktionsfluss als Trainingsdatensatz für das Modell des Schülers. So ermöglicht uns der Trainingssatz, die Genauigkeit des Modells sicherzustellen, während das Flussbeispiel eine ähnliche Leistung in der Produktionsverteilung garantiert und die Verzerrung des Trainingsdatensatzes ausgleicht.

Einsatz von maschinellem Lernen bei Mail.ru

Die Kombination dieser beiden Methoden (Hinzufügen von Bäumen und periodisches Reduzieren ihrer Anzahl durch Knowledge Distillation) ermöglicht die Einführung neuer Muster und eine vollständige Kontinuität.

Mit KD unterscheiden wir auch Operationen mit Merkmalsmodellen, wie z. B. das Entfernen von Merkmalen und den Umgang mit fehlenden Werten. In unserem Fall haben wir eine Reihe wichtiger statistischer Merkmale (nach Absendern, Text-Hashes, URLs usw.), die in einer Datenbank gespeichert sind und die Neigung zum Ausfall aufweisen. Auf eine solche Entwicklung ist das Modell natürlich nicht vorbereitet, da es im Trainingssatz keine Ausfallsituationen gibt. In solchen Fällen kombinieren wir KD-Techniken mit Augmentierung: Während des Trainings entfernen oder nullen wir für einen Teil der Daten die erforderlichen Merkmale, während die Labels (Ausgaben des aktuellen Modells) die ursprünglichen bleiben; das Schüler-Modell lernt, diese Verteilung zu reproduzieren.

Einsatz von maschinellem Lernen bei Mail.ru

Wir haben festgestellt, dass je schwerwiegender die Manipulation der Modelle ist, desto mehr steigt der prozentuale Bedarf an Sampling des Flusses.

Um Zeichen zu entfernen, ist nur ein kleiner Teil des Datenstroms erforderlich, da nur einige Zeichen geändert werden, und das aktuelle Modell wurde mit demselben Datensatz trainiert – der Unterschied ist minimal. Für die Vereinfachung des Modells (Reduzierung der Anzahl der Bäume um mehrere Faktoren) sind bereits 50 zu 50 erforderlich. Um wichtige statistische Merkmale zu kompensieren, die die Leistung des Modells erheblich beeinflussen, wird noch mehr Datenstrom benötigt, um die Leistung des neuen, fehlertoleranten Modells über alle Arten von E-Mails hinweg auszugleichen.

Einsatz von maschinellem Lernen bei Mail.ru

FastText

Kommen wir zu FastText. Ich erinnere daran, dass die Darstellung (Embedding) eines Wortes aus der Summe des Embeddings des Wortes selbst und aller seiner Buchstaben-N-Gramme besteht, normalerweise Trigramme. Da es relativ viele Trigramme geben kann, wird Bucket Hashing verwendet, also die Umwandlung des gesamten Raums in eine feste Hashmap. Infolgedessen hat die Gewichtsmatrix die Dimension des internen Schichtgewichts multipliziert mit der Anzahl der Wörter plus Buckets.

Beim Feintuning treten neue Merkmale auf: Wörter und Trigramme. Im Standard-Finetuning von Facebook passiert nichts Wesentliches. Nur die alten Gewichte werden mit Kreuzentropie auf neuen Daten angepasst. So werden neue Merkmale natürlich nicht verwendet, und dieser Ansatz weist alle oben beschriebenen Nachteile hinsichtlich der Unvorhersehbarkeit des Modells in der Produktion auf. Daher haben wir FastText etwas weiterentwickelt. Wir fügen alle neuen Gewichte (Wörter und Trigramme) hinzu, trainieren die gesamte Matrix mit Kreuzentropie weiter und fügen harmonische Regularisierung nach dem Vorbild des linearen Modells hinzu, das eine wesentliche Änderung der alten Gewichte garantiert.

Einsatz von maschinellem Lernen bei Mail.ru

CNN

Bei Convolutional Networks ist es etwas komplizierter. Wenn bei CNN die letzten Schichten weiter trainiert werden, kann man natürliche Regelungen anwenden und die Kontinuität gewährleisten. Doch wenn das gesamte Netzwerk weiter trainiert werden muss, lässt sich eine solche Regularisierung nicht auf alle Schichten anwenden. Es gibt jedoch eine Möglichkeit, komplementäre Einbettungen über Triplet Loss zu trainieren (Originalartikel).

Triplet Loss

Am Beispiel der Antifishing-Aufgabe werden wir Triplet Loss im Allgemeinen betrachten. Wir nehmen 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, wobei wir einen kleinen Puffer einhalten, um eine höhere Kompaktheit der Klassen zu gewährleisten.

Einsatz von maschinellem Lernen bei Mail.ru

Wenn wir das Netzwerk weiter trainieren, ändert sich unser metrischer Raum vollständig und wird absolut inkompatibel mit dem vorherigen. Das ist ein ernsthaftes Problem bei Aufgaben, die Vektoren verwenden. Um dieses Problem zu umgehen, werden wir während des Trainings alte Embeddings mischen.

Wir haben neue Daten in den Trainingssatz aufgenommen und trainieren die zweite Version des Modells von Grund auf neu. In einem zweiten Schritt verfeinern wir unser Netzwerk (Finetuning): Zuerst wird die letzte Schicht weiter trainiert, danach wird das gesamte Netzwerk wieder freigegeben. Bei der Erstellung der Triplets berechnen wir nur einen Teil der Embeddings mit dem trainierbaren Modell, die anderen mit dem alten. Auf diese Weise stellen wir während des Feintunings die Kompatibilität der metrischen Räume v1 und v2 sicher. Eine Art harmonische Regularisierung.

Einsatz von maschinellem Lernen bei Mail.ru

Die Architektur insgesamt

Betrachtet man das gesamte System am Beispiel von Antispam, sind die Modelle nicht isoliert, sondern ineinander verschachtelt. Wir nehmen Bilder, Texte und andere Merkmale und erhalten mithilfe von CNN und Fast Text Embeddings. Anschließend werden auf die Embeddings Klassifikatoren angewendet, die Scores für verschiedene Klassen (E-Mail-Typen, Spam, Vorhandensein eines Logos) ausgeben. Die Scores und Merkmale gelangen schließlich in einen Entscheidungsbaum zur finalen Entscheidung. Einzelne Klassifikatoren in diesem Schema ermöglichen eine bessere Interpretation der Ergebnisse des Systems und eine gezieltere Nachschulung der Komponenten im Falle von Problemen, anstatt alle Daten unverarbeitet in die Entscheidungsbäume einzuspeisen.

Einsatz von maschinellem Lernen bei Mail.ru

Wir garantieren somit Kontinuität auf jeder Ebene. Auf der untersten Ebene verwenden wir in CNN und Fast Text harmonische Regularisierung, für die Klassifikatoren in der Mitte ebenfalls harmonische Regularisierung und Kalibrierung der Scores zur Kompatibilität der Wahrscheinlichkeitsverteilung. Der Boosting-Baum wird inkrementell oder durch Knowledge Distillation trainiert.

Insgesamt stellt die Unterstützung eines solchen verschachtelten maschinellen Lernsystems oft eine Herausforderung dar, da jede Komponente auf der unteren Ebene ein Update des gesamten Systems darüber nach sich ziehen kann. Da jedoch in unserem Setup jede Komponente nur geringfügige Änderungen erfährt und mit vorherigen Versionen kompatibel ist, kann das gesamte System stückweise aktualisiert werden, ohne dass eine vollständige Neutrainierung der Struktur erforderlich ist. Das ermöglicht es, es ohne erhebliche Überlastung zu betreiben.

Deployment

Wir haben die Datensammlung und das Feintuning verschiedener Modelltypen behandelt, daher wenden wir uns nun deren Deployment in die Produktionsumgebung zu.

A/B-Tests

Wie ich bereits erwähnt habe, erhalten wir im Prozess der Datensammlung in der Regel eine verzerrte Stichprobe, mit der die Produktionsleistung des Modells nicht bewertet werden kann. Daher muss das Modell beim Rollout unbedingt mit der vorherigen Version verglichen werden, um zu verstehen, wie die tatsächliche Performance ist, das heißt, A/B-Tests durchzuführen. Tatsächlich ist der Prozess des Rollouts und der Analyse der Grafiken recht routiniert und lässt sich hervorragend automatisieren. Wir führen unsere Modelle schrittweise für 5 %, 30 %, 50 % und schließlich 100 % der Nutzer ein, während wir alle verfügbaren Metriken der Modellantworten und das Feedback der Nutzer erfassen. Bei schwerwiegenden Ausreißern rollen wir das Modell automatisch zurück, während wir in anderen Fällen, nach ausreichender Anzahl an Nutzerklicks, eine Entscheidung über die Erhöhung des Anteils treffen. Am Ende bringen wir das neue Modell vollständig automatisiert auf 50 % der Nutzer, während die Freigabe für das gesamte Publikum von einem Menschen genehmigt wird, obwohl auch dieser Schritt automatisiert werden kann.

Der A/B-Testprozess bietet jedoch Spielraum für Optimierung. Es ist wichtig zu beachten, dass jeder A/B-Test in der Regel langwierig ist (in unserem Fall dauert er zwischen 6 und 24 Stunden, abhängig von der Anzahl der Rückmeldungen), was ihn recht kostspielig und ressourcenintensiv macht. Darüber hinaus ist ein ausreichend hoher Traffic-Prozentsatz erforderlich, um den Test effizient zu gestalten und die Gesamtdauer des A/B-Tests zu beschleunigen (es kann sehr lange dauern, eine statistisch signifikante Stichprobe zur Bewertung von Metriken bei niedrigem Prozentsatz zu sammeln), was die Anzahl der A/B-Slots stark begrenzt. Offensichtlich müssen wir nur die vielversprechendsten Modelle in den Test einbringen, von denen wir im Prozess des Nachtrainings eine beträchtliche Anzahl erhalten.

Um diese Aufgabe zu lösen, haben wir einen speziellen Klassifikator trainiert, der die Erfolgswahrscheinlichkeit von A/B-Tests vorhersagt. Dazu verwenden wir Entscheidungsstatistiken, Precision, Recall und andere Metriken aus dem Trainingsdatensatz, dem Testdatensatz und einer Stichprobe aus dem laufenden Betrieb. Wir vergleichen das Modell auch mit dem aktuellen Produktionsmodell, mit Heuristiken und berücksichtigen die Komplexität des Modells. Anhand all dieser Merkmale bewertet der auf der Testhistorie trainierte Klassifikator die Kandidatenmodelle, in unserem Fall handelt es sich dabei um Entscheidungsbäume, und entscheidet, welches Modell in den A/B-Test einfließen soll.

Einsatz von maschinellem Lernen bei Mail.ru

Bei der Einführung dieses Ansatzes konnte die Anzahl erfolgreicher A/B-Tests mehrfach erhöht werden.

Testen & Überwachen

Testen und Überwachen schaden überraschenderweise nicht unserer Gesundheit, sondern verbessern sie eher und befreien uns von unnötigem Stress. Testen hilft, Ausfälle vorzubeugen, während Überwachen es ermöglicht, Probleme rechtzeitig zu erkennen, um die Auswirkungen auf die Benutzer zu verringern.

Es ist wichtig zu verstehen, dass Ihre System früher oder später immer Fehler machen wird – das liegt an dem Entwicklungszyklus jeder Software. Zu Beginn der Systementwicklung gibt es viele Bugs, bis alles stabil ist und die Hauptphase der Neuerungen abgeschlossen ist. Doch mit der Zeit nimmt die Entropie zu und es treten wieder Fehler auf – aufgrund der Degeneration der Komponenten und der Veränderung der Daten, wie ich zu Beginn erwähnte.

Ich möchte hier betonen, dass jedes maschinelle Lernsystem aus der Perspektive seines Nutzens über den gesamten Lebenszyklus hinweg betrachtet werden muss. Im Folgenden zeigt das Diagramm ein Beispiel für das Funktionieren eines Systems zur Erkennung seltener Spam-Arten (im Diagramm ist die Linie um Null). Einmal geriet es aufgrund eines falsch zwischengespeicherten Merkmals außer Kontrolle. Unglücklicherweise gab es keine Überwachung auf anomale Auslösungen, wodurch das System begann, eine große Anzahl von E-Mails in den Spam-Ordner zu verschieben, an der Entscheidungsgrenze. Trotz der Behebung der Folgen hat das System bereits so oft versagt, dass es sich nicht einmal innerhalb von fünf Jahren amortisieren wird. Das ist ein kompletter Misserfolg aus der Sicht des Lebenszyklusmodells.

Einsatz von maschinellem Lernen bei Mail.ru

Deshalb kann eine so einfache Sache wie die Überwachung entscheidend für die Lebensdauer eines Modells sein. Neben den standardmäßigen und offensichtlichen Metriken berücksichtigen wir die Verteilung der Antworten und Scores des Modells sowie die Verteilung der Werte der Schlüsselmerkmale. Mit Hilfe der KL-Divergenz können wir die aktuelle Verteilung mit historischen Werten oder den Werten aus A/B-Tests vergleichen, was es uns ermöglicht, Anomalien im Modell zu erkennen und Änderungen rechtzeitig zurückzunehmen.

In den meisten Fällen starten wir unsere ersten Versionen der Systeme mit einfachen Heuristiken oder Modellen, die wir in Zukunft zur Überwachung verwenden. Zum Beispiel überwachen wir ein NER-Modell im Vergleich zu regulären Ausdrücken für spezifische Online-Shops, und wenn die Abdeckung des Klassifikators im Vergleich dazu zurückgeht, untersuchen wir die Ursachen. Eine weitere nützliche Anwendung von Heuristiken!

Ergebnisse

Lassen Sie uns noch einmal die wichtigsten Gedanken des Artikels durchgehen.

  • Fibdэк. Wir denken immer an den Nutzer: Wie wird er mit unseren Fehlern leben, wie kann er darüber berichten? Wir dürfen nicht vergessen, dass Nutzer keine reine Feedbackquelle zur Schulung von Modellen sind und es notwendig ist, dies mit Hilfe unterstützender ML-Systeme zu bereinigen. Wenn es keine Möglichkeit gibt, ein Signal vom Nutzer zu sammeln, suchen wir nach alternativen Feedbackquellen, wie zum Beispiel verwandte Systeme.
  • Nachlernen. Hier ist Kontinuität das Hauptaugenmerk, deshalb stützen wir uns auf das aktuelle Produktionsmodell. Neue Modelle trainieren wir so, dass sie sich nicht stark vom vorherigen unterscheiden, mithilfe von harmonischer Regularisierung und ähnlichen Tricks.
  • Deployment. Die automatische Bereitstellung basierend auf Metriken verkürzt erheblich die Zeit für die Implementierung von Modellen. Die Überwachung der Statistiken und der Verteilung von Entscheidungen, die Anzahl der Rückmeldungen von Nutzern, ist unerlässlich für Ihren ruhigen Schlaf und produktive Wochenenden.

Nun, ich hoffe, dass das Gelesene Ihnen hilft, Ihre ML-Systeme schneller zu verbessern, deren Markteinführung zu beschleunigen und sie zuverlässiger zu machen, wodurch der Stress bei der Arbeit reduziert wird.

Quelle: habr.com

Erwerben Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster