{"id":53143,"date":"2019-11-24T00:00:00","date_gmt":"2019-11-23T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/ekspluatatsiya-mashinnogo-obucheniya-v-pochte-mail-ru"},"modified":"2020-02-18T14:01:00","modified_gmt":"2020-02-18T11:01:00","slug":"ekspluatatsiya-mashinnogo-obucheniya-v-pochte-mail-ru","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/ekspluatatsiya-mashinnogo-obucheniya-v-pochte-mail-ru","title":{"rendered":"Einsatz von maschinellem Lernen bei Mail.ru","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Einsatz von maschinellem Lernen bei Mail.ru\" src=\"\/wp-content\/uploads\/2019\/11\/ee5728dccb94b849ad3bfd9cf84ad74d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Inspiriert von meinen Vortr\u00e4gen auf der Highload++ und DataFest Minsk 2019.<\/i><\/p>\n<p>F\u00fcr viele ist E-Mail heute ein unverzichtbarer Bestandteil des Lebens im Internet. Damit f\u00fchren wir gesch\u00e4ftliche Korrespondenz, speichern allerlei wichtige Informationen zu Finanzen, Hotelbuchungen, Bestellungen und vielem mehr. Mitte 2018 haben wir eine Produktstrategie f\u00fcr die Weiterentwicklung von E-Mail formuliert. Wie sollte moderne E-Mail aussehen?<\/p>\n<p>E-Mail muss <b>intelligent<\/b>, also den Nutzern helfen, sich im wachsenden Informationsvolumen zurechtzufinden: filtern, strukturieren und auf die bequemste Art bereitstellen. Sie sollte <b>n\u00fctzlich nennt,<\/b>, sodass man direkt im Posteingang verschiedene Aufgaben erledigen kann, wie zum Beispiel Bu\u00dfgelder zu bezahlen (eine Funktion, die ich leider oft nutze). Zudem muss E-Mail nat\u00fcrlich Informationsschutz bieten, Spam abhalten und vor Hacks sch\u00fctzen, sprich sie muss <b>sichere<\/b>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nDiese Aspekte bestimmen eine Reihe von Schl\u00fcsselfunktionen, von denen viele effektiv mit Hilfe von maschinellem Lernen gel\u00f6st werden k\u00f6nnen. Hier sind Beispiele bereits implementierter Funktionen, die im Rahmen der Strategie entwickelt wurden \u2013 jeweils eine f\u00fcr jedes Thema.<\/p>\n<ul>\n<li><b>Smart Reply<\/b>. 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\u00e4gt drei passende Antwortm\u00f6glichkeiten vor: positiv, negativ und neutral. Dies hilft erheblich, Zeit beim Antworten auf E-Mails zu sparen und erm\u00f6glicht es, oft auf unkonventionelle und unterhaltsame Weise zu reagieren.\n<\/li>\n<li><b>Gruppierung von E-Mails<\/b>, die sich auf Bestellungen in Online-Shops beziehen. Wir kaufen h\u00e4ufig online ein, und in der Regel senden Shops mehrere E-Mails zu jeder Bestellung. Zum Beispiel erh\u00e4lt man von AliExpress, dem gr\u00f6\u00dften Dienst, sehr viele E-Mails zu einer einzigen Bestellung, und wir haben festgestellt, dass deren Anzahl im Extremfall bis zu 29 betr\u00e4gt. Daher nutzen wir ein Modell zur Erkennung benannter Entit\u00e4ten, um die Bestellnummer und andere Informationen aus dem Text herauszufiltern und alle E-Mails in einen Thread zu gruppieren. Au\u00dferdem zeigen wir die wichtigsten Informationen zur Bestellung in einem separaten Feld an, was die Bearbeitung dieser Art von E-Mails erleichtert.\n<p><img decoding=\"async\" alt=\"Einsatz von maschinellem Lernen bei Mail.ru\" src=\"\/wp-content\/uploads\/2019\/11\/8b37b0bf0c0d152498027bc25d476128.jpg\" style=\"display:block;margin: 0 auto;\" \/>\n<\/li>\n<li><b>Anti-Phishing<\/b>. Phishing ist eine besonders gef\u00e4hrliche Art von Betrugsmails, bei denen Kriminelle versuchen, an finanzielle Informationen (einschlie\u00dflich 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\u00dfer Unternehmen (wie Mail.ru, Sber, Alfa) zu erkennen und ber\u00fccksichtigen dies zusammen mit dem Text und anderen Merkmalen in unseren Spam- und Phishing-Klassifikatoren.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Maschinelles Lernen<\/h2>\n<p>\nEin wenig \u00fcber maschinelles Lernen in der E-Mail insgesamt. E-Mail ist ein hochbelastetes System: \u00dcber unsere Server passieren im Durchschnitt t\u00e4glich 1,5 Milliarden E-Mails f\u00fcr 30 Millionen DAU. Etwa 30 Systeme des maschinellen Lernens \u00fcbernehmen alle notwendigen Funktionen und Features. <\/p>\n<p>Jede E-Mail durchl\u00e4uft einen umfassenden Klassifizierungsprozess. Zun\u00e4chst filtern wir Spam heraus und lassen nur legitime E-Mails zu. Benutzer bemerken oft nicht, wie effektiv der Spam-Schutz arbeitet, da 95\u201399 % 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\u00e4ndige Anpassung zwischen Schutzsystemen und Angriffen stattfindet, was eine kontinuierliche ingenieurtechnische Herausforderung f\u00fcr unser Team darstellt.<\/p>\n<p>Anschlie\u00dfend 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\u00fcr an. E-Mails von Bots werden in zwei Kategorien unterteilt: transaktionale E-Mails \u2013 das sind wichtige E-Mails von Diensten, wie z. B. Kaufbest\u00e4tigungen oder Hotelbuchungen, Finanzen, und informative E-Mails \u2013 das sind gesch\u00e4ftliche Werbung und Rabatte. <\/p>\n<p>Wir sind der Meinung, dass Transaktions-E-Mails ebenso wichtig sind wie pers\u00f6nliche Korrespondenz. Sie sollten jederzeit griffbereit sein, da es h\u00e4ufig notwendig ist, schnell Informationen \u00fcber eine Bestellung oder eine Flugbuchung zu finden, w\u00e4hrend wir Zeit mit der Suche nach diesen E-Mails verbringen. Daher teilen wir sie zur besseren \u00dcbersicht automatisch in sechs Hauptkategorien ein: Reisen, Bestellungen, Finanzen, Tickets, Registrierungen und schlie\u00dflich Bu\u00dfgelder.<\/p>\n<p>Informations-E-Mails sind die gr\u00f6\u00dfte Gruppe und wahrscheinlich die am wenigsten wichtigen, da sie keine sofortige Reaktion erfordern; es \u00e4ndert sich nichts Wesentliches im Leben des Nutzers, wenn er solche E-Mails nicht liest. In unserer neuen Benutzeroberfl\u00e4che fassen wir sie in zwei Threads zusammen: Soziale Netzwerke und Newsletter, wodurch wir das Postfach visuell aufr\u00e4umen und nur wichtige E-Mails im Blick behalten.<\/p>\n<p><img decoding=\"async\" alt=\"Einsatz von maschinellem Lernen bei Mail.ru\" src=\"\/wp-content\/uploads\/2019\/11\/175773879daaa29d1542a98070cb7972.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Betrieb<\/h3>\n<p>\nEine gro\u00dfe 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 \u00e4ndern sich die Daten st\u00e4ndig: Neue werden hinzugef\u00fcgt, das Nutzungsverhalten der Verbraucher transformiert sich usw. Daher wird ein Modell ohne angemessene Unterst\u00fctzung im Laufe der Zeit immer schlechter arbeiten. <\/p>\n<p>Es ist auch wichtig zu beachten, dass je tiefer das maschinelle Lernen in das Leben der Benutzer eindringt, desto gr\u00f6\u00dfer der Einfluss auf das \u00d6kosystem wird. Folglich k\u00f6nnen 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\u00e4hnte Spam-Schutz).<\/p>\n<p>Maschinenlernen birgt eine Besonderheit: Jede noch so kleine \u00c4nderung 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\u00fcr deren Wartung. Das Team kann viele Systeme aufbauen und sich dar\u00fcber freuen, dann jedoch fast alle Ressourcen f\u00fcr deren Unterst\u00fctzung aufwenden, ohne Gelegenheit f\u00fcr Neues zu haben. Mit einer solchen Situation hatten wir einmal im Antispam-Team zu k\u00e4mpfen. Wir kamen zu dem klaren Schluss, dass die Wartung automatisiert werden muss.<\/p>\n<h3>Automatisierung<\/h3>\n<p>\nWas kann automatisiert werden? Eigentlich fast alles. Ich habe vier Bereiche identifiziert, die die Infrastruktur des maschinellen Lernens bestimmen:<\/p>\n<ul>\n<li>Datensammlung;\n<\/li>\n<li>Nachtraining;\n<\/li>\n<li>Deployment;\n<\/li>\n<li>Tests &amp; \u00dcberwachung.\n<\/li>\n<\/ul>\n<p>\nWenn die Umgebung instabil und st\u00e4ndig im Wandel ist, ist die gesamte Infrastruktur um das Modell wichtiger als das Modell selbst. Das kann ein bew\u00e4hrter 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.<\/p>\n<h4>Feedback-Zyklus<\/h4>\n<p>\nDieser Zyklus umfasst die Datensammlung, Nachtraining und Deployment \u2013 im Wesentlichen den gesamten Aktualisierungsprozess des Modells. Warum ist das wichtig? Schauen Sie sich das Diagramm zur E-Mail-Registrierung an:<\/p>\n<p><img decoding=\"async\" alt=\"Einsatz von maschinellem Lernen bei Mail.ru\" src=\"\/wp-content\/uploads\/2019\/11\/f3c98bd49a101754cf299821a40e2b8e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEin Machine Learning-Entwickler hat ein Anti-Bot-Modell implementiert, das verhindert, dass Bots sich f\u00fcr E-Mail-Registrierungen anmelden. Das Diagramm f\u00e4llt auf einen Wert, bei dem nur reale Benutzer \u00fcbrig bleiben. Alles wunderbar! Aber nach vier Stunden optimieren die Bot-Betreiber ihre Skripte, und alles kehrt zum Alten zur\u00fcck. Bei dieser Implementierung hat der Entwickler einen Monat damit verbracht, Merkmale hinzuzuf\u00fcgen und das Modell nachzutrainieren, aber der Spammer konnte sich in vier Stunden anpassen.<\/p>\n<p>Um zu vermeiden, dass es schmerzhaft wird und wir alles sp\u00e4ter neu machen m\u00fcssen, sollten wir von Anfang an dar\u00fcber nachdenken, wie der Feedback-Zyklus aussehen wird und was wir tun, wenn sich die Umgebung \u00e4ndert. Lassen Sie uns mit der Datensammlung beginnen \u2013 das ist der Treibstoff f\u00fcr unsere Algorithmen.<\/p>\n<h2>Daten sammeln<\/h2>\n<p>\nEs ist klar, dass moderne neuronale Netze mit mehr Daten besser arbeiten, und diese werden im Wesentlichen von den Nutzern des Produkts generiert. Nutzer k\u00f6nnen uns helfen, indem sie Daten kennzeichnen, aber wir d\u00fcrfen dies nicht \u00fcberstrapazieren, denn irgendwann werden die Nutzer das Interesse verlieren, Ihre Modelle zu trainieren und zu einem anderen Produkt wechseln. <\/p>\n<p>Einer der h\u00e4ufigsten 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\u00e4chlich das wichtigste Qualit\u00e4tsma\u00df ist, da wir ein Produkt f\u00fcr den Nutzer erstellen. Wenn der Nutzer die Funktionsweise des Modells nicht versteht oder nicht mag, ist alles umsonst. <\/p>\n<p>Deshalb sollte der Nutzer immer die M\u00f6glichkeit haben, abzustimmen; er ben\u00f6tigt ein Werkzeug f\u00fcr 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\u00e4che erstellen, auf die der Nutzer klicken kann, um zu sagen, dass das nicht Finanzen sind.<\/p>\n<h3>Qualit\u00e4t des Feedbacks<\/h3>\n<p>\nLassen Sie uns \u00fcber die Qualit\u00e4t 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\u00e4hrend der Nutzer der Meinung ist, dass auch eine E-Mail von der Gro\u00dfmutter zur Rente dazugeh\u00f6rt. Zweitens gibt es Nutzer, die gedankenlos auf Schaltfl\u00e4chen klicken, ohne irgendeine Logik. Drittens kann der Nutzer in seinen Schlussfolgerungen stark irren. Ein auff\u00e4lliges Beispiel aus unserer Praxis ist die Implementierung eines Klassifizierers <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9D%D0%B8%D0%B3%D0%B5%D1%80%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D0%B5_%D0%BF%D0%B8%D1%81%D1%8C%D0%BC%D0%B0\">nigerianischer Spam<\/a><\/noindex>, eine ganz am\u00fcsante Art von Spam, bei der dem Nutzer angeboten wird, ein paar Millionen Dollar von einem pl\u00f6tzlich entdeckten entfernten Verwandten in Afrika zu erhalten. Nachdem wir diesen Klassifizierer implementiert haben, \u00fcberpr\u00fcften wir die Klicks auf \u201eNicht Spam\u201c 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\u00f6nnen.<\/p>\n<p>Und wir d\u00fcrfen nicht vergessen, dass nicht nur Menschen auf die Schaltfl\u00e4chen klicken k\u00f6nnen, sondern auch verschiedene Bots, die sich als Browser ausgeben. Daher ist rohes Feedback nicht geeignet f\u00fcr das Training. Was kann man mit diesen Informationen machen?<\/p>\n<p>Wir verwenden zwei Ans\u00e4tze: <\/p>\n<ul>\n<li><b>Feedback von verwandtem ML<\/b>. Zum Beispiel haben wir ein Online-Anti-Bot-System, das, wie ich bereits erw\u00e4hnt 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\u00fcgt \u00fcber mehr Daten zum Nutzer, seinem Verhalten usw. Infolgedessen wird eine \u00fcberlegte Entscheidung getroffen, was zu einer h\u00f6heren Genauigkeit und Vollst\u00e4ndigkeit f\u00fchrt. Die Unterschiede in der Funktionsweise dieser Systeme k\u00f6nnen als Lernmaterial f\u00fcr das erste System verwendet werden. So wird das einfachere System stets versuchen, die Leistung des komplexeren Systems zu erreichen.\n<\/li>\n<li><b>Klickklassifizierung<\/b>. Man kann jeden Klick des Nutzers einfach klassifizieren, seine Validit\u00e4t 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\u00fcr alle anderen Systeme bilden. In diesem Modell hat die Pr\u00e4zision die h\u00f6chste Priorit\u00e4t, da das Trainieren des Modells mit ungenauen Daten schwerwiegende Folgen haben kann. \n<\/li>\n<\/ul>\n<p>\nW\u00e4hrend wir die Daten bereinigen und unsere ML-Systeme weiter trainieren, d\u00fcrfen wir die Nutzer nicht aus den Augen verlieren. F\u00fcr uns sind Tausende und Millionen von Fehlern in den Statistiken lediglich Zahlen, doch f\u00fcr den Nutzer ist jeder Fehler eine Trag\u00f6die. Der Nutzer muss nicht nur mit Ihrem Fehler im Produkt leben, sondern erwartet auch, dass \u00e4hnliche Situationen auf Grundlage seines Feedbacks in Zukunft vermieden werden. Daher ist es wichtig, den Nutzern nicht nur die M\u00f6glichkeit zu geben, abzustimmen, sondern auch, das Verhalten der ML-Systeme zu korrigieren. Beispielsweise k\u00f6nnte man pers\u00f6nliche Heuristiken f\u00fcr jeden Klick im Feedback implementieren; im Fall von E-Mails k\u00f6nnte dies die M\u00f6glichkeit umfassen, \u00e4hnliche Nachrichten nach Absender und Betreff f\u00fcr diesen Nutzer zu filtern.<\/p>\n<p>Zus\u00e4tzlich sollte man basierend auf bestimmten Berichten oder Anfragen an den Support im halbautomatischen oder manuellen Modus Modelle anpassen, damit auch andere Nutzer nicht unter \u00e4hnlichen Problemen leiden.<\/p>\n<h3>Heuristiken f\u00fcr das Training<\/h3>\n<p>\nEs gibt zwei Probleme mit diesen Heuristiken und Workarounds. Erstens ist es schwierig, die st\u00e4ndig wachsende Anzahl von Workarounds zu pflegen, ganz zu schweigen von ihrer Qualit\u00e4t und ihrer langfristigen Funktionsf\u00e4higkeit. Das zweite Problem besteht darin, dass ein Fehler nicht h\u00e4ufig auftreten kann und einige Klicks nicht ausreichen, um das Modell nachzulernen. Es scheint, dass diese beiden unabh\u00e4ngig wirkenden Effekte erheblich gemildert werden k\u00f6nnen, wenn man folgenden Ansatz verfolgt.<\/p>\n<ol>\n<li>Wir erstellen einen tempor\u00e4ren Workaround. \n<\/li>\n<li>Wir leiten die Daten von ihm in das Modell, das regelm\u00e4\u00dfig nachlernt, auch auf Grundlage der erhaltenen Daten. Hier ist es nat\u00fcrlich wichtig, dass die Heuristik eine hohe Genauigkeit hat, um die Qualit\u00e4t der Daten im Trainingssatz nicht zu beeintr\u00e4chtigen. \n<\/li>\n<li>Anschlie\u00dfend richten wir eine \u00dcberwachung f\u00fcr die Ausl\u00f6sung des Workarounds ein. Wenn dieser nach einiger Zeit nicht mehr ausgel\u00f6st wird und vollst\u00e4ndig durch das Modell abgedeckt ist, kann er ohne Bedenken entfernt werden. Dieses Problem wird dann voraussichtlich nicht wieder auftreten.\n<\/li>\n<\/ol>\n<p>\nEine Armee von Workarounds ist also sehr n\u00fctzlich. Wichtig ist, dass ihr Einsatz vor\u00fcbergehend und nicht dauerhaft ist. <\/p>\n<h2>Nachlernen<\/h2>\n<p>\nDas Fine-Tuning ist der Prozess, bei dem neue Daten, die aus dem Feedback von Nutzern oder anderen Systemen gewonnen werden, hinzugef\u00fcgt und das bestehende Modell darauf trainiert wird. Beim Fine-Tuning k\u00f6nnen mehrere Probleme auftreten:<\/p>\n<ol>\n<li>Das Modell unterst\u00fctzt m\u00f6glicherweise einfach kein Fine-Tuning und kann nur von Grund auf neu lernen. \n<\/li>\n<li>In den Gesetzen der Natur steht nirgendwo geschrieben, dass Fine-Tuning zwangsl\u00e4ufig die Qualit\u00e4t der Arbeit im Produktionsbetrieb verbessert. Oft ist es genau umgekehrt, was bedeutet, dass es auch zu einer Verschlechterung kommen kann.\n<\/li>\n<li>\u00c4nderungen k\u00f6nnen unvorhersehbar sein. Dies ist ein ziemlich feiner Punkt, den wir f\u00fcr uns herausgefunden haben. Selbst wenn das neue Modell im A\/B-Test \u00e4hnliche 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\u00fcckbringen kann. Mit den aktuellen Fehlern haben wir und die Nutzer bereits gelernt zu leben, und wenn eine gro\u00dfe Anzahl neuer Fehler auftritt, kann der Nutzer ebenfalls verwirrt sein, da er ein vorhersehbares Verhalten erwartet.\n<\/li>\n<\/ol>\n<p>\nDeshalb ist das Wichtigste beim Fine-Tuning, das Modell garantiert zu verbessern oder es zumindest nicht zu verschlechtern. <\/p>\n<p>Das erste, was einem in den Sinn kommt, wenn wir \u00fcber Fine-Tuning sprechen, ist der Ansatz des aktiven Lernens. Was bedeutet das? Beispielsweise klassifiziert ein Klassifikator, ob eine E-Mail zu Finanzangelegenheiten geh\u00f6rt, und um seine Entscheidungsgrenze f\u00fcgen 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\u00f6nnen.<\/p>\n<p><img decoding=\"async\" alt=\"Einsatz von maschinellem Lernen bei Mail.ru\" src=\"\/wp-content\/uploads\/2019\/11\/fd1b3e07bfaf896dde3248e43537f61a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTats\u00e4chlich ist unser Ziel, alte Muster, die dem Modell bereits bekannt sind, zu bewahren und neue zu erlernen. Hierbei ist Kontinuit\u00e4t wichtig. Das Modell, das wir oft mit gro\u00dfer M\u00fche bereitgestellt haben, funktioniert bereits, weshalb wir uns auf seine Leistung beziehen k\u00f6nnen. <\/p>\n<p>In der E-Mail kommen verschiedene Modelle zum Einsatz: B\u00e4ume, lineare Modelle und neuronale Netze. F\u00fcr jedes dieser Modelle entwickeln wir unseren eigenen Algorithmus f\u00fcr 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\u00fccksichtigen werden.<\/p>\n<h3>Lineare Modelle<\/h3>\n<p>\nNehmen wir an, wir haben eine logistische Regression. Wir stellen die Verlustfunktion aus den folgenden Komponenten zusammen:<\/p>\n<ul>\n<li>LogLoss auf neuen Daten;\n<\/li>\n<li>Regularisierung der Gewichte neuer Merkmale (alte Gewichte bleiben unber\u00fchrt);\n<\/li>\n<li>Wir lernen auch von alten Daten, um bestehende Muster zu bewahren;\n<\/li>\n<li>und vielleicht das Wichtigste: Wir f\u00fcgen die harmonische Regularisierung hinzu, die gew\u00e4hrleistet, dass die Gewichte im Vergleich zum alten Modell nicht stark ver\u00e4ndert werden.\n<\/li>\n<\/ul>\n<p>\nDa jeder Bestandteil des Verlusts Koeffizienten hat, k\u00f6nnen wir die optimalen Werte f\u00fcr unsere Aufgabe durch Kreuzvalidierung oder basierend auf den Produktanforderungen anpassen.<\/p>\n<p><img decoding=\"async\" alt=\"Einsatz von maschinellem Lernen bei Mail.ru\" src=\"\/wp-content\/uploads\/2019\/11\/00ae86d23afb780f5e260e61f833d4bd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>B\u00e4ume<\/h3>\n<p>\nKommen wir zu Entscheidungsb\u00e4umen. Wir haben den folgenden Algorithmus f\u00fcr das Fein-Tuning der B\u00e4ume entwickelt:<\/p>\n<ol>\n<li>In der Produktion kommt ein Wald aus 100\u2013300 B\u00e4umen zum Einsatz, der auf dem alten Datensatz trainiert wurde.\n<\/li>\n<li>Am Ende entfernen wir M = 5 St\u00fcck und f\u00fcgen 2M = 10 neue hinzu, die auf dem gesamten Datensatz trainiert sind, jedoch mit hohem Gewicht bei den neuen Daten, was nat\u00fcrlich eine inkrementelle Ver\u00e4nderung des Modells garantiert.\n<\/li>\n<\/ol>\n<p>\nEs ist offensichtlich, dass die Anzahl der B\u00e4ume im Laufe der Zeit stark zunimmt und sie regelm\u00e4\u00dfig reduziert werden m\u00fcssen, um im Zeitrahmen zu bleiben. Dazu nutzen wir das allgegenw\u00e4rtige Knowledge Distillation (KD). Kurz zum Prinzip seiner Funktionsweise.<\/p>\n<ol>\n<li>Wir haben unser aktuelles \"komplexes\" Modell. Wir f\u00fchren es mit dem Training-Datensatz aus und erhalten die Wahrscheinlichkeitsverteilung der Klassen als Ausgabe.\n<\/li>\n<li>Anschlie\u00dfend trainieren wir das Sch\u00fcler-Modell (in diesem Fall ein Modell mit weniger B\u00e4umen), um die Ergebnisse des Modells zu wiederholen, wobei wir die Klassenverteilung als Zielvariable verwenden.\n<\/li>\n<li>Hier ist es wichtig zu beachten, dass wir keine Datensatzmarkierung verwenden und daher beliebige Daten nutzen k\u00f6nnen. Selbstverst\u00e4ndlich verwenden wir ein Datenbeispiel aus dem Produktionsfluss als Trainingsdatensatz f\u00fcr das Modell des Sch\u00fclers. So erm\u00f6glicht uns der Trainingssatz, die Genauigkeit des Modells sicherzustellen, w\u00e4hrend das Flussbeispiel eine \u00e4hnliche Leistung in der Produktionsverteilung garantiert und die Verzerrung des Trainingsdatensatzes ausgleicht.\n<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Einsatz von maschinellem Lernen bei Mail.ru\" src=\"\/wp-content\/uploads\/2019\/11\/3fdfcb9b1e5a6fa824226a429afc475a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDie Kombination dieser beiden Methoden (Hinzuf\u00fcgen von B\u00e4umen und periodisches Reduzieren ihrer Anzahl durch Knowledge Distillation) erm\u00f6glicht die Einf\u00fchrung neuer Muster und eine vollst\u00e4ndige Kontinuit\u00e4t.<\/p>\n<p>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\u00fcrlich nicht vorbereitet, da es im Trainingssatz keine Ausfallsituationen gibt. In solchen F\u00e4llen kombinieren wir KD-Techniken mit Augmentierung: W\u00e4hrend des Trainings entfernen oder nullen wir f\u00fcr einen Teil der Daten die erforderlichen Merkmale, w\u00e4hrend die Labels (Ausgaben des aktuellen Modells) die urspr\u00fcnglichen bleiben; das Sch\u00fcler-Modell lernt, diese Verteilung zu reproduzieren.<\/p>\n<p><img decoding=\"async\" alt=\"Einsatz von maschinellem Lernen bei Mail.ru\" src=\"\/wp-content\/uploads\/2019\/11\/5e1f5af9a359646a49f4fe88ffed1025.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWir haben festgestellt, dass je schwerwiegender die Manipulation der Modelle ist, desto mehr steigt der prozentuale Bedarf an Sampling des Flusses.<\/p>\n<p>Um Zeichen zu entfernen, ist nur ein kleiner Teil des Datenstroms erforderlich, da nur einige Zeichen ge\u00e4ndert werden, und das aktuelle Modell wurde mit demselben Datensatz trainiert \u2013 der Unterschied ist minimal. F\u00fcr die Vereinfachung des Modells (Reduzierung der Anzahl der B\u00e4ume 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\u00f6tigt, um die Leistung des neuen, fehlertoleranten Modells \u00fcber alle Arten von E-Mails hinweg auszugleichen. <\/p>\n<p><img decoding=\"async\" alt=\"Einsatz von maschinellem Lernen bei Mail.ru\" src=\"\/wp-content\/uploads\/2019\/11\/8f3729cfff43be9ecdc47d532daa8d6f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>FastText<\/h3>\n<p>\nKommen 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\u00f6rter plus Buckets. <\/p>\n<p>Beim Feintuning treten neue Merkmale auf: W\u00f6rter 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\u00fcrlich 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\u00fcgen alle neuen Gewichte (W\u00f6rter und Trigramme) hinzu, trainieren die gesamte Matrix mit Kreuzentropie weiter und f\u00fcgen harmonische Regularisierung nach dem Vorbild des linearen Modells hinzu, das eine wesentliche \u00c4nderung der alten Gewichte garantiert.<\/p>\n<p><img decoding=\"async\" alt=\"Einsatz von maschinellem Lernen bei Mail.ru\" src=\"\/wp-content\/uploads\/2019\/11\/4491639587d1c91ac91d77b587ee0111.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>CNN<\/h3>\n<p>\nBei Convolutional Networks ist es etwas komplizierter. Wenn bei CNN die letzten Schichten weiter trainiert werden, kann man nat\u00fcrliche Regelungen anwenden und die Kontinuit\u00e4t gew\u00e4hrleisten. Doch wenn das gesamte Netzwerk weiter trainiert werden muss, l\u00e4sst sich eine solche Regularisierung nicht auf alle Schichten anwenden. Es gibt jedoch eine M\u00f6glichkeit, komplement\u00e4re Einbettungen \u00fcber Triplet Loss zu trainieren (<noindex><a rel=\"nofollow\" href=\"https:\/\/arxiv.org\/abs\/1503.03832\">Originalartikel<\/a><\/noindex>).<\/p>\n<h4>Triplet Loss<\/h4>\n<p>\nAm 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\u00f6here Kompaktheit der Klassen zu gew\u00e4hrleisten. <\/p>\n<p><img decoding=\"async\" alt=\"Einsatz von maschinellem Lernen bei Mail.ru\" src=\"\/wp-content\/uploads\/2019\/11\/dc8547fa042286798eb5c2f0887c4da6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWenn wir das Netzwerk weiter trainieren, \u00e4ndert sich unser metrischer Raum vollst\u00e4ndig 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\u00e4hrend des Trainings alte Embeddings mischen.<\/p>\n<p>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\u00e4hrend des Feintunings die Kompatibilit\u00e4t der metrischen R\u00e4ume v1 und v2 sicher. Eine Art harmonische Regularisierung.<\/p>\n<p><img decoding=\"async\" alt=\"Einsatz von maschinellem Lernen bei Mail.ru\" src=\"\/wp-content\/uploads\/2019\/11\/854d4fcc97775b24e6863cc38743cd27.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Die Architektur insgesamt<\/h3>\n<p>\nBetrachtet 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\u00dfend werden auf die Embeddings Klassifikatoren angewendet, die Scores f\u00fcr verschiedene Klassen (E-Mail-Typen, Spam, Vorhandensein eines Logos) ausgeben. Die Scores und Merkmale gelangen schlie\u00dflich in einen Entscheidungsbaum zur finalen Entscheidung. Einzelne Klassifikatoren in diesem Schema erm\u00f6glichen eine bessere Interpretation der Ergebnisse des Systems und eine gezieltere Nachschulung der Komponenten im Falle von Problemen, anstatt alle Daten unverarbeitet in die Entscheidungsb\u00e4ume einzuspeisen.<\/p>\n<p><img decoding=\"async\" alt=\"Einsatz von maschinellem Lernen bei Mail.ru\" src=\"\/wp-content\/uploads\/2019\/11\/30effc5ef7398db5f085b6dd415647d3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWir garantieren somit Kontinuit\u00e4t auf jeder Ebene. Auf der untersten Ebene verwenden wir in CNN und Fast Text harmonische Regularisierung, f\u00fcr die Klassifikatoren in der Mitte ebenfalls harmonische Regularisierung und Kalibrierung der Scores zur Kompatibilit\u00e4t der Wahrscheinlichkeitsverteilung. Der Boosting-Baum wird inkrementell oder durch Knowledge Distillation trainiert.<\/p>\n<p>Insgesamt stellt die Unterst\u00fctzung eines solchen verschachtelten maschinellen Lernsystems oft eine Herausforderung dar, da jede Komponente auf der unteren Ebene ein Update des gesamten Systems dar\u00fcber nach sich ziehen kann. Da jedoch in unserem Setup jede Komponente nur geringf\u00fcgige \u00c4nderungen erf\u00e4hrt und mit vorherigen Versionen kompatibel ist, kann das gesamte System st\u00fcckweise aktualisiert werden, ohne dass eine vollst\u00e4ndige Neutrainierung der Struktur erforderlich ist. Das erm\u00f6glicht es, es ohne erhebliche \u00dcberlastung zu betreiben. <\/p>\n<h2>Deployment<\/h2>\n<p>\nWir haben die Datensammlung und das Feintuning verschiedener Modelltypen behandelt, daher wenden wir uns nun deren Deployment in die Produktionsumgebung zu.<\/p>\n<h3>A\/B-Tests<\/h3>\n<p>\nWie ich bereits erw\u00e4hnt 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\u00e4chliche Performance ist, das hei\u00dft, A\/B-Tests durchzuf\u00fchren. Tats\u00e4chlich ist der Prozess des Rollouts und der Analyse der Grafiken recht routiniert und l\u00e4sst sich hervorragend automatisieren. Wir f\u00fchren unsere Modelle schrittweise f\u00fcr 5 %, 30 %, 50 % und schlie\u00dflich 100 % der Nutzer ein, w\u00e4hrend wir alle verf\u00fcgbaren Metriken der Modellantworten und das Feedback der Nutzer erfassen. Bei schwerwiegenden Ausrei\u00dfern rollen wir das Modell automatisch zur\u00fcck, w\u00e4hrend wir in anderen F\u00e4llen, nach ausreichender Anzahl an Nutzerklicks, eine Entscheidung \u00fcber die Erh\u00f6hung des Anteils treffen. Am Ende bringen wir das neue Modell vollst\u00e4ndig automatisiert auf 50 % der Nutzer, w\u00e4hrend die Freigabe f\u00fcr das gesamte Publikum von einem Menschen genehmigt wird, obwohl auch dieser Schritt automatisiert werden kann.<\/p>\n<p>Der A\/B-Testprozess bietet jedoch Spielraum f\u00fcr 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\u00e4ngig von der Anzahl der R\u00fcckmeldungen), was ihn recht kostspielig und ressourcenintensiv macht. Dar\u00fcber 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\u00fcssen wir nur die vielversprechendsten Modelle in den Test einbringen, von denen wir im Prozess des Nachtrainings eine betr\u00e4chtliche Anzahl erhalten.<\/p>\n<p>Um diese Aufgabe zu l\u00f6sen, 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\u00fccksichtigen die Komplexit\u00e4t des Modells. Anhand all dieser Merkmale bewertet der auf der Testhistorie trainierte Klassifikator die Kandidatenmodelle, in unserem Fall handelt es sich dabei um Entscheidungsb\u00e4ume, und entscheidet, welches Modell in den A\/B-Test einflie\u00dfen soll. <\/p>\n<p><img decoding=\"async\" alt=\"Einsatz von maschinellem Lernen bei Mail.ru\" src=\"\/wp-content\/uploads\/2019\/11\/41b121987209a663075be399e83f5a50.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBei der Einf\u00fchrung dieses Ansatzes konnte die Anzahl erfolgreicher A\/B-Tests mehrfach erh\u00f6ht werden.<\/p>\n<h3>Testen &amp; \u00dcberwachen<\/h3>\n<p>\nTesten und \u00dcberwachen schaden \u00fcberraschenderweise nicht unserer Gesundheit, sondern verbessern sie eher und befreien uns von unn\u00f6tigem Stress. Testen hilft, Ausf\u00e4lle vorzubeugen, w\u00e4hrend \u00dcberwachen es erm\u00f6glicht, Probleme rechtzeitig zu erkennen, um die Auswirkungen auf die Benutzer zu verringern.<\/p>\n<p>Es ist wichtig zu verstehen, dass Ihre System fr\u00fcher oder sp\u00e4ter immer Fehler machen wird \u2013 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 \u2013 aufgrund der Degeneration der Komponenten und der Ver\u00e4nderung der Daten, wie ich zu Beginn erw\u00e4hnte.<\/p>\n<p>Ich m\u00f6chte hier betonen, dass jedes maschinelle Lernsystem aus der Perspektive seines Nutzens \u00fcber den gesamten Lebenszyklus hinweg betrachtet werden muss. Im Folgenden zeigt das Diagramm ein Beispiel f\u00fcr 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\u00dfer Kontrolle. Ungl\u00fccklicherweise gab es keine \u00dcberwachung auf anomale Ausl\u00f6sungen, wodurch das System begann, eine gro\u00dfe 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\u00fcnf Jahren amortisieren wird. Das ist ein kompletter Misserfolg aus der Sicht des Lebenszyklusmodells. <\/p>\n<p><img decoding=\"async\" alt=\"Einsatz von maschinellem Lernen bei Mail.ru\" src=\"\/wp-content\/uploads\/2019\/11\/65efd799537ceea3761cabc3a764ba90.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDeshalb kann eine so einfache Sache wie die \u00dcberwachung entscheidend f\u00fcr die Lebensdauer eines Modells sein. Neben den standardm\u00e4\u00dfigen und offensichtlichen Metriken ber\u00fccksichtigen wir die Verteilung der Antworten und Scores des Modells sowie die Verteilung der Werte der Schl\u00fcsselmerkmale. Mit Hilfe der KL-Divergenz k\u00f6nnen wir die aktuelle Verteilung mit historischen Werten oder den Werten aus A\/B-Tests vergleichen, was es uns erm\u00f6glicht, Anomalien im Modell zu erkennen und \u00c4nderungen rechtzeitig zur\u00fcckzunehmen.<\/p>\n<p>In den meisten F\u00e4llen starten wir unsere ersten Versionen der Systeme mit einfachen Heuristiken oder Modellen, die wir in Zukunft zur \u00dcberwachung verwenden. Zum Beispiel \u00fcberwachen wir ein NER-Modell im Vergleich zu regul\u00e4ren Ausdr\u00fccken f\u00fcr spezifische Online-Shops, und wenn die Abdeckung des Klassifikators im Vergleich dazu zur\u00fcckgeht, untersuchen wir die Ursachen. Eine weitere n\u00fctzliche Anwendung von Heuristiken!<\/p>\n<h2>Ergebnisse<\/h2>\n<p>\nLassen Sie uns noch einmal die wichtigsten Gedanken des Artikels durchgehen.<\/p>\n<ul>\n<li><b>Fibd\u044d\u043a<\/b>. Wir denken immer an den Nutzer: Wie wird er mit unseren Fehlern leben, wie kann er dar\u00fcber berichten? Wir d\u00fcrfen nicht vergessen, dass Nutzer keine reine Feedbackquelle zur Schulung von Modellen sind und es notwendig ist, dies mit Hilfe unterst\u00fctzender ML-Systeme zu bereinigen. Wenn es keine M\u00f6glichkeit gibt, ein Signal vom Nutzer zu sammeln, suchen wir nach alternativen Feedbackquellen, wie zum Beispiel verwandte Systeme. \n<\/li>\n<li><b>Nachlernen<\/b>. Hier ist Kontinuit\u00e4t das Hauptaugenmerk, deshalb st\u00fctzen wir uns auf das aktuelle Produktionsmodell. Neue Modelle trainieren wir so, dass sie sich nicht stark vom vorherigen unterscheiden, mithilfe von harmonischer Regularisierung und \u00e4hnlichen Tricks.<\/li>\n<li><b>Deployment<\/b>. Die automatische Bereitstellung basierend auf Metriken verk\u00fcrzt erheblich die Zeit f\u00fcr die Implementierung von Modellen. Die \u00dcberwachung der Statistiken und der Verteilung von Entscheidungen, die Anzahl der R\u00fcckmeldungen von Nutzern, ist unerl\u00e4sslich f\u00fcr Ihren ruhigen Schlaf und produktive Wochenenden.\n<\/li>\n<\/ul>\n<p>\nNun, ich hoffe, dass das Gelesene Ihnen hilft, Ihre ML-Systeme schneller zu verbessern, deren Markteinf\u00fchrung zu beschleunigen und sie zuverl\u00e4ssiger zu machen, wodurch der Stress bei der Arbeit reduziert wird.<br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/476714\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u043e \u043c\u043e\u0442\u0438\u0432\u0430\u043c \u043c\u043e\u0438\u0445 \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0439 \u043d\u0430 Highload++ \u0438 DataFest Minsk 2019 \u0433. \u0414\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0447\u0442\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043e\u0442\u044a\u0435\u043c\u043b\u0435\u043c\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u0436\u0438\u0437\u043d\u0438 \u0432 \u0441\u0435\u0442\u0438. \u0421 \u0435\u0435 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u044b \u0432\u0435\u0434\u0435\u043c \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0443, \u0445\u0440\u0430\u043d\u0438\u043c \u0432\u0441\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0443\u044e \u0432\u0430\u0436\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0443\u044e \u0441 \u0444\u0438\u043d\u0430\u043d\u0441\u0430\u043c\u0438, \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043e\u0442\u0435\u043b\u0435\u0439, \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u0435\u043c \u0437\u0430\u043a\u0430\u0437\u043e\u0432 \u0438 \u043c\u043d\u043e\u0433\u0438\u043c \u0434\u0440\u0443\u0433\u0438\u043c. \u0412 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435 2018 \u0433\u043e\u0434\u0430 \u043c\u044b \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043f\u043e\u0447\u0442\u044b. \u041a\u0430\u043a\u043e\u0439 \u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-53143","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u043e \u043c\u043e\u0442\u0438\u0432\u0430\u043c \u043c\u043e\u0438\u0445 \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0439 \u043d\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/ekspluatatsiya-mashinnogo-obucheniya-v-pochte-mail-ru\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u042d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0432 \u041f\u043e\u0447\u0442\u0435 Mail.ru | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u043e \u043c\u043e\u0442\u0438\u0432\u0430\u043c \u043c\u043e\u0438\u0445 \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0439 \u043d\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/ekspluatatsiya-mashinnogo-obucheniya-v-pochte-mail-ru\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-11-23T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:01:00+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47 Einsatz von maschinellem Lernen in der Mail.ru Post | ProHoster","description":"Basierend auf meinen Auftritten bei.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/ekspluatatsiya-mashinnogo-obucheniya-v-pochte-mail-ru","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u042d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0432 \u041f\u043e\u0447\u0442\u0435 Mail.ru | ProHoster","og:description":"\u041f\u043e \u043c\u043e\u0442\u0438\u0432\u0430\u043c \u043c\u043e\u0438\u0445 \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0439 \u043d\u0430.","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/ekspluatatsiya-mashinnogo-obucheniya-v-pochte-mail-ru","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-11-23T21:00:00+00:00","article:modified_time":"2020-02-18T11:01:00+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"53143","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 06:14:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:30:25","updated":"2026-01-24 06:14:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/53143","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=53143"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/53143\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=53143"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=53143"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=53143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}