{"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":"Betrieb von maschinellem Lernen bei Mail.ru","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Betrieb 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>Basierend auf meinen Vortr\u00e4gen bei Highload++ und DataFest Minsk 2019.<\/i><\/p>\n<p>F\u00fcr viele Menschen ist die E-Mail heute ein unverzichtbarer Bestandteil des Lebens im Internet. Mit ihrer Hilfe f\u00fchren wir gesch\u00e4ftliche Korrespondenz, speichern verschiedene wichtige Informationen in Zusammenhang mit Finanzen, Hotelbuchungen, Bestellungen und vielem mehr. Mitte 2018 haben wir eine Produktstrategie f\u00fcr die Entwicklung der E-Mail formuliert. Wie sollte eine moderne E-Mail aussehen?<\/p>\n<p>Die E-Mail muss <b>intelligent<\/b>, das hei\u00dft, sie soll den Nutzern helfen, sich im wachsenden Informationsvolumen zurechtzufinden: filtern, strukturieren und diese auf die bequemste Art bereitstellen. Sie sollte <b>n\u00fctzlich<\/b>, indem sie es erm\u00f6glicht, direkt im Posteingang verschiedene Aufgaben zu erledigen, wie zum Beispiel Bu\u00dfgelder zu bezahlen (eine Funktion, die ich leider oft nutze). Und dabei sollte die E-Mail nat\u00fcrlich auch Informationsschutz gew\u00e4hrleisten, Spam filtern und vor Hacks sch\u00fctzen, sprich sie muss <b>sicher<\/b>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nDiese Richtungen definieren eine Reihe von Schl\u00fcsselaufgaben, von denen viele effektiv mit Hilfe von maschinellem Lernen gel\u00f6st werden k\u00f6nnen. Hier sind Beispiele f\u00fcr bereits implementierte Funktionen, die im Rahmen der Strategie entwickelt wurden \u2013 jeweils eine f\u00fcr jede Richtung.<\/p>\n<ul>\n<li><b>Smart Reply<\/b>. In der E-Mail gibt es die Funktion f\u00fcr intelligente Antworten. Das neuronale Netzwerk analysiert den Text der E-Mail, versteht ihren Sinn und Zweck, und schl\u00e4gt daraufhin drei am besten passenden Antwortm\u00f6glichkeiten vor: positiv, negativ und neutral. Dies hilft erheblich, Zeit beim Beantworten von E-Mails zu sparen und oft ungew\u00f6hnliche und unterhaltsame Antworten zu geben.\n<\/li>\n<li><b>Gruppierung von E-Mails<\/b>, die mit Bestellungen in Online-Shops verbunden sind. Wir kaufen oft online ein, und in der Regel k\u00f6nnen die Gesch\u00e4fte mehrere E-Mails f\u00fcr jede Bestellung senden. Beispielsweise von AliExpress, dem gr\u00f6\u00dften Service, kommen sehr viele E-Mails f\u00fcr eine Bestellung, und wir haben festgestellt, dass in extremen F\u00e4llen deren Anzahl bis zu 29 betragen kann. Daher extrahieren wir mithilfe des Modells zur Erkennung benannter Entit\u00e4ten die Bestellnummer und andere Informationen aus dem Text und gruppieren alle E-Mails in einem Thread. Zudem 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=\"Betrieb 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>Antiphishing<\/b>. Phishing ist eine besonders gef\u00e4hrliche Art von Betrugsmails, mit denen Angreifer versuchen, an finanzielle Informationen (einschlie\u00dflich der Bankkarten des Nutzers) und Logins zu gelangen. Solche Mails imitieren echte von Dienstanbietern versandte Mails, auch visuell. Daher erkennen wir mithilfe von Computer Vision die Logos und das Design von Mails gro\u00dfer Unternehmen (zum Beispiel Mail.ru, Sber, Alfa) und ber\u00fccksichtigen diese 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 im E-Mail-Bereich insgesamt. E-Mail ist ein hochbelastetes System: \u00dcber unsere Server gehen durchschnittlich t\u00e4glich 1,5 Milliarden Mails f\u00fcr 30 Millionen DAU-Nutzer. Alle notwendigen Funktionen und Features werden von etwa 30 maschinellen Lernsystemen unterst\u00fctzt. <\/p>\n<p>Jede E-Mail durchl\u00e4uft eine umfassende Klassifikationspipeline. Zuerst filtern wir Spam heraus und behalten gute Mails. Nutzer bemerken oft nicht, wie das Antispam-System arbeitet, da 95-99 % des Spams nicht einmal im entsprechenden Ordner landen. Die Spam-Erkennung ist ein sehr wichtiger und gleichzeitig der komplexeste Teil unseres Systems, da im Bereich Antispam eine st\u00e4ndige Anpassung zwischen Schutzsystemen und Angriffen stattfindet, was eine kontinuierliche ingenieurtechnische Herausforderung f\u00fcr unser Team darstellt.<\/p>\n<p>Anschlie\u00dfend trennen wir Mails von Menschen und Bots. Mails von Menschen sind am wichtigsten, deshalb bieten wir f\u00fcr sie Funktionen wie Smart Reply an. Mails von Bots werden in zwei Kategorien unterteilt: Transaktionsmails \u2013 wichtige Mails von Diensten, wie Bestell- oder Hotelbuchungsbest\u00e4tigungen, Finanzen \u2013 und Informationsmails \u2013 Werbung von Unternehmen, Rabatte. <\/p>\n<p>Wir sind der Meinung, dass Transaktionsmails in ihrer Bedeutung der pers\u00f6nlichen Korrespondenz gleichwertig sind. Sie sollten stets griffbereit sein, da es oft notwendig ist, schnell Informationen \u00fcber Bestellungen oder Flugbuchungen zu finden, und dabei verbringen wir Zeit mit der Suche nach diesen Mails. Daher teilen wir sie zur Vereinfachung automatisch in sechs Hauptkategorien ein: Reisen, Bestellungen, Finanzen, Tickets, Registrierungen und schlie\u00dflich Strafen.<\/p>\n<p>Informationsschreiben sind die zahlreichste und wahrscheinlich auch weniger wichtige Gruppe, die keine sofortige Reaktion erfordert, da sich im Leben des Nutzers nichts Wesentliches \u00e4ndert, wenn er ein solches Schreiben nicht liest. In unserem neuen Interface fassen wir sie in zwei Threads zusammen: soziale Netzwerke und Newsletter, wodurch wir den Posteingang visuell aufr\u00e4umen und nur die wichtigen E-Mails im Blick behalten.<\/p>\n<p><img decoding=\"async\" alt=\"Betrieb 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 viele Schwierigkeiten im Betrieb mit sich. Schlie\u00dflich degradiert jede Modell im Laufe der Zeit, wie jede Software: Merkmale fallen aus, Maschinen versagen, es entsteht fehlerhafter Code. Zudem \u00e4ndern sich st\u00e4ndig die Daten: neue werden hinzugef\u00fcgt, das Nutzerverhalten ver\u00e4ndert sich usw., sodass ein Modell ohne die n\u00f6tige Unterst\u00fctzung im Laufe der Zeit immer schlechter funktioniert. <\/p>\n<p>Man darf auch nicht vergessen, dass je tiefer maschinelles Lernen in das Leben der Nutzer eindringt, desto gr\u00f6\u00dfere Auswirkungen sie auf das \u00d6kosystem haben, und infolgedessen desto mehr finanzielle Verluste oder Gewinne die Akteure auf dem Markt erzielen k\u00f6nnen. Daher passen sich in immer mehr Bereichen die Akteure an die Arbeit mit ML-Algorithmen an (klassische Beispiele sind Werbung, Suche und das bereits erw\u00e4hnte Antispam).<\/p>\n<p>Zudem weisen die Aufgaben des maschinellen Lernens eine Besonderheit auf: Jede, auch noch so unbedeutende, \u00c4nderung im System kann viel Arbeit mit sich bringen: Datenarbeit, Neuausbildung, Deployment, was Wochen oder Monate in Anspruch nehmen kann. Deshalb erfordert es immer mehr Aufwand, je schneller sich die Umgebung ver\u00e4ndert, in der Ihre Modelle operieren. Ein Team kann viele Systeme erstellen und sich dar\u00fcber freuen, danach aber nahezu alle Ressourcen f\u00fcr deren Unterst\u00fctzung aufwenden, ohne die M\u00f6glichkeit, etwas Neues zu machen. Mit einer solchen Situation sind wir einmal im Antispam-Team konfrontiert worden und haben die offensichtliche Schlussfolgerung gezogen, dass die Wartung automatisiert werden muss.<\/p>\n<h3>Automatisierung<\/h3>\n<p>\nWas kann automatisiert werden? Tats\u00e4chlich fast alles. Ich habe vier Bereiche identifiziert, die die Infrastruktur des maschinellen Lernens bestimmen:<\/p>\n<ul>\n<li>Datensammlung;\n<\/li>\n<li>Nachbesserung;\n<\/li>\n<li>Deployment;\n<\/li>\n<li>Testen &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 herum viel wichtiger als das Modell selbst. Es kann ein altbew\u00e4hrter linearer Klassifizierer sein, aber wenn die Merkmale richtig bereitgestellt und ein gutes Feedback von den Benutzern integriert wird, funktioniert er viel besser als State-Of-The-Art-Modelle mit all den Spielereien.<\/p>\n<h4>Feedback-Schleife<\/h4>\n<p>\nDieser Zyklus umfasst die Datensammlung, das Fine-Tuning und das Deployment \u2013 im Grunde den gesamten Aktualisierungszyklus des Modells. Warum ist das wichtig? Schauen Sie sich das Diagramm der Registrierungen im E-Mail-Dienst an:<\/p>\n<p><img decoding=\"async\" alt=\"Betrieb von maschinellem Lernen bei Mail.ru\" src=\"\/wp-content\/uploads\/2019\/11\/f3c98bd49a101754cf299821a40e2b8e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer Machine Learning-Entwickler hat ein Anti-Bot-Modell implementiert, das Bots daran hindert, sich im E-Mail-Dienst zu registrieren. Das Diagramm f\u00e4llt auf einen Wert, bei dem nur echte Benutzer \u00fcbrig bleiben. Alles ist gro\u00dfartig! Aber nach vier Stunden optimieren die Bot-Betreiber ihre Skripte, und alles kehrt zur Normalit\u00e4t zur\u00fcck. Der Entwickler hat einen Monat daf\u00fcr verwendet, Merkmale hinzuzuf\u00fcgen und das Modell weiterzubilden, aber der Spammer konnte sich innerhalb von vier Stunden anpassen.<\/p>\n<p>Um zu vermeiden, dass es so schmerzhaft ist und wir alles sp\u00e4ter neu machen m\u00fcssen, m\u00fcssen wir zu Beginn dar\u00fcber nachdenken, wie die Feedback-Schleife aussehen wird und was wir tun werden, falls sich die Umgebung \u00e4ndert. Lassen Sie uns mit der Datensammlung beginnen \u2013 das ist der Treibstoff f\u00fcr unsere Algorithmen.<\/p>\n<h2>Datensammlung<\/h2>\n<p>\nEs ist klar, dass moderne neuronale Netze je mehr Daten sie haben, umso besser funktionieren, und diese werden in der Regel von den Benutzern des Produkts generiert. Benutzer k\u00f6nnen uns helfen, Daten zu kennzeichnen, aber wir d\u00fcrfen das nicht \u00fcbertreiben, denn irgendwann werden die Benutzer es leid sein, Ihre Modelle weiterzubilden, und sie werden zu einem anderen Produkt wechseln. <\/p>\n<p>Einer der h\u00e4ufigsten Fehler (hier beziehe ich mich auf Andrew Ng) ist die zu starke Ausrichtung auf Metriken des Testdatensatzes anstatt auf das Feedback der Benutzer, welches tats\u00e4chlich das wichtigste Ma\u00df f\u00fcr die Qualit\u00e4t der Arbeit darstellt, da wir ein Produkt f\u00fcr den Benutzer schaffen. Wenn der Benutzer die Arbeitsweise des Modells nicht versteht oder nicht mag, ist alles umsonst. <\/p>\n<p>Deshalb sollte der Benutzer immer die M\u00f6glichkeit haben, abzustimmen, und wir sollten ihm ein Werkzeug f\u00fcr das Feedback geben. Wenn wir glauben, dass eine E-Mail, die im Posteingang angekommen ist, etwas mit Finanzen zu tun hat, sollten wir sie mit \u201eFinanzen\u201c kennzeichnen und einen Knopf zeichnen, den der Benutzer dr\u00fccken kann, um zu sagen, dass es keine Finanzen sind.<\/p>\n<h3>Qualit\u00e4t des Feedbacks<\/h3>\n<p>\nLass uns \u00fcber die Qualit\u00e4t des Benutzerfeedbacks sprechen. Erstens kann es sein, dass du und der Benutzer unterschiedliche Bedeutungen in ein und dasselbe Konzept legen. Zum Beispiel meint ihr mit den Produktmanagern, dass \"Finanzen\" Briefe von der Bank sind, w\u00e4hrend der Benutzer denkt, dass auch ein Brief von der Gro\u00dfmutter \u00fcber die Rente zu den Finanzen z\u00e4hlt. Zweitens gibt es Benutzer, die ohne nachzudenken auf Kn\u00f6pfe klicken, ohne jegliche Logik. Drittens kann der Benutzer in seinen Schlussfolgerungen tief im Irrtum sein. Ein anschauliches Beispiel aus unserer Praxis ist die Implementierung eines Klassifikators <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>, einer recht am\u00fcsanten Spam-Art, bei der dem Benutzer angeboten wird, mehrere Millionen Dollar von einem pl\u00f6tzlich gefundenen entfernten Verwandten in Afrika zu kassieren. Nach der Implementierung dieses Klassifikators haben wir die Klicks auf \"Kein Spam\" f\u00fcr diese Briefe \u00fcberpr\u00fcft und herausgefunden, dass 80 % davon klarer nigerianischer Spam sind, was darauf hinweist, dass die Benutzer \u00e4u\u00dferst gutgl\u00e4ubig sein k\u00f6nnen.<\/p>\n<p>Und wir d\u00fcrfen nicht vergessen, dass nicht nur Menschen auf die Kn\u00f6pfe 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 tun?<\/p>\n<p>Wir verwenden zwei Ans\u00e4tze: <\/p>\n<ul>\n<li><b>Feedback von verbundenem ML<\/b>. Zum Beispiel haben wir ein Online-Antibot-System, das, wie ich bereits erw\u00e4hnt habe, schnell Entscheidungen auf Basis einer begrenzten Anzahl von Merkmalen trifft. Es gibt ein zweites, langsameres System, das im Nachhinein arbeitet. Es hat mehr Daten \u00fcber den Benutzer, sein Verhalten usw. Folglich wird die am besten abgewogene Entscheidung getroffen, und es hat daher eine h\u00f6here Genauigkeit und Vollst\u00e4ndigkeit. Wir k\u00f6nnen die Unterschiede zwischen diesen Systemen als Trainingsdaten f\u00fcr das erste System verwenden. Auf diese Weise wird das einfachere System stets versuchen, sich der Leistung des komplizierteren Systems anzun\u00e4hern.\n<\/li>\n<li><b>Klassifikation der Klicks<\/b>. Man kann jeden Klick des Benutzers einfach klassifizieren, seine Validit\u00e4t und Verwendbarkeit bewerten. So machen wir es im E-Mail-Antispam, indem wir Merkmale des Benutzers, seine Historie, Merkmale des Absenders, den Text selbst und die Ergebnisse der Klassifikatoren verwenden. Am Ende erhalten wir ein automatisches System, das das Benutzer-Feedback validiert. Und da es seltener weiter trainiert werden muss, kann seine Arbeit die Grundlage f\u00fcr alle anderen Systeme werden. Der Hauptfokus in diesem Modell liegt auf Pr\u00e4zision, 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 Benutzer nicht vergessen, denn f\u00fcr uns sind tausende, Millionen Fehler in einem Diagramm nur Statistik, w\u00e4hrend jeder Fehler f\u00fcr den Benutzer eine Trag\u00f6die ist. Neben der Tatsache, dass der Benutzer mit Ihrem Fehler im Produkt leben muss, erwartet er nach seinem Feedback, dass eine \u00e4hnliche Situation in der Zukunft ausgeschlossen wird. Daher sollten Benutzer nicht nur die M\u00f6glichkeit erhalten, abzustimmen, sondern auch das Verhalten der ML-Systeme anzupassen, indem sie beispielsweise pers\u00f6nliche Heuristiken f\u00fcr jeden Klick des Feedbacks erstellen; im Fall von E-Mails k\u00f6nnte dies die M\u00f6glichkeit sein, \u00e4hnliche E-Mails nach Absender und Betreff f\u00fcr diesen Benutzer zu filtern.<\/p>\n<p>Zus\u00e4tzlich muss man basierend auf Berichten oder Anfragen an den Support in einem halbautomatischen oder manuellen Modus das Modell anpassen, damit auch andere Benutzer nicht unter \u00e4hnlichen Problemen leiden.<\/p>\n<h3>Heuristiken f\u00fcr das Training<\/h3>\n<p>\nMit diesen Heuristiken und Anpassungen gibt es zwei Probleme. Erstens ist die st\u00e4ndig wachsende Anzahl an Anpassungen schwer aufrechtzuerhalten, ganz zu schweigen von ihrer Qualit\u00e4t und ihrer langfristigen Funktionalit\u00e4t. Das zweite Problem besteht darin, dass ein Fehler nicht h\u00e4ufig vorkommen kann, und einige Klicks zum Nachtrainieren des Modells m\u00f6glicherweise nicht ausreichen. Es scheint, als k\u00f6nnten diese beiden nicht miteinander verbundenen Effekte erheblich gemildert werden, wenn man den folgenden Ansatz anwendet.<\/p>\n<ol>\n<li>Erstellen wir eine tempor\u00e4re Anpassung. \n<\/li>\n<li>Leiten wir die Daten von dieser Anpassung in das Modell, es wird regelm\u00e4\u00dfig weiter trainiert, auch anhand der erhaltenen Daten. Hier ist es selbstverst\u00e4ndlich wichtig, dass die Heuristik eine hohe Genauigkeit aufweist, um die Qualit\u00e4t der Daten im Trainingsset nicht zu mindern. \n<\/li>\n<li>Dann richten wir das Monitoring auf das Ausl\u00f6sen des Workarounds ein, und 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 sich nun wohl kaum wiederholen.\n<\/li>\n<\/ol>\n<p>\nDie Armee der Workarounds ist also sehr n\u00fctzlich. Wichtig ist, dass ihre Nutzung vor\u00fcbergehend und nicht dauerhaft ist. <\/p>\n<h2>Nachtraining<\/h2>\n<p>\nNachtraining ist der Prozess des Hinzuf\u00fcgens neuer Daten, die aus dem Feedback von Nutzern oder anderen Systemen stammen, und des Trainings des bestehenden Modells auf diesen Daten. Mit dem Nachtraining k\u00f6nnen verschiedene Probleme auftreten:<\/p>\n<ol>\n<li>Das Modell unterst\u00fctzt m\u00f6glicherweise einfach kein Nachtraining und kann nur von Grund auf neu lernen. \n<\/li>\n<li>Nirgendwo in dem Buch der Natur steht geschrieben, dass Nachtraining die Qualit\u00e4t der Arbeit in der Produktion unbedingt verbessern wird. Oft geschieht das Gegenteil, das hei\u00dft, es kann nur zu einer Verschlechterung kommen.\n<\/li>\n<li>Die Ver\u00e4nderungen k\u00f6nnen unvorhersehbar sein. Das ist ein ziemlich heikler Punkt, den wir f\u00fcr uns festgestellt haben. Selbst wenn das neue Modell im A\/B-Test \u00e4hnliche Ergebnisse wie das aktuelle liefert, bedeutet das nicht, dass es genauso funktioniert. Ihre Leistung kann sich in einem einzigen Prozentpunkt unterscheiden, was neue Fehler bringen oder bereits behobene alte zur\u00fcckbringen kann. Mit den aktuellen Fehlern k\u00f6nnen wir und die Nutzer bereits leben, und wenn eine gro\u00dfe Anzahl neuer Fehler auftritt, kann der Nutzer auch nicht verstehen, was passiert, da er ein vorhersehbares Verhalten erwartet.\n<\/li>\n<\/ol>\n<p>\nDeshalb ist das Wichtigste beim Nachtraining, 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 Nachtraining sprechen, ist der Ansatz des aktiven Lernens. Was bedeutet das? Zum Beispiel erkennt ein Klassifikator, ob ein Schreiben zu Finanzen geh\u00f6rt, und wir f\u00fcgen um seine Entscheidungsgrenze eine Stichprobe aus gekennzeichneten Beispielen hinzu. Das funktioniert gut, zum Beispiel in der Werbung, wo es z sehr viel Feedback gibt und das Modell im Online-Modus trainiert werden kann. Wenn es jedoch wenig Feedback gibt, erhalten wir eine stark verzerrte Stichprobe im Vergleich zur Produktionsverteilung der Daten, auf deren Grundlage das Verhalten des Modells im Betrieb nicht bewertet werden kann.<\/p>\n<p><img decoding=\"async\" alt=\"Betrieb 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, bereits bekannte Modelle zu bewahren und neue zu erwerben. Hier ist Kontinuit\u00e4t wichtig. Das Modell, das wir oft mit gro\u00dfer M\u00fche herausgebracht haben, funktioniert bereits, weshalb wir uns an seinen Leistungen orientieren k\u00f6nnen. <\/p>\n<p>In der Mail werden verschiedene Modelle angewendet: B\u00e4ume, lineare Modelle, neuronale Netzwerke. F\u00fcr jedes erstellen wir unseren eigenen Feinabgleichungsalgorithmus. Im Prozess der Feinabstimmung erhalten wir nicht nur neue Daten, sondern auch oft neue Merkmale, die wir in allen nachfolgenden Algorithmen ber\u00fccksichtigen werden.<\/p>\n<h3>Lineare Modelle<\/h3>\n<p>\nAngenommen, wir haben eine logistische Regression. Wir stellen den Verlust der Modell-Performance aus folgenden Komponenten zusammen:<\/p>\n<ul>\n<li>LogLoss auf neuen Daten;\n<\/li>\n<li>wir regularisieren die Gewichte neuer Merkmale (alte lassen wir unber\u00fchrt);\n<\/li>\n<li>wir lernen auch mit alten Daten, um die alten Muster zu bewahren;\n<\/li>\n<li>und, vielleicht am wichtigsten: wir h\u00e4ngen eine harmonische Regularisierung an, die garantiert, dass die Gewichte im Vergleich zum alten Modell nur geringf\u00fcgig ver\u00e4ndert werden.\n<\/li>\n<\/ul>\n<p>\nDa jede Verlustkomponente Koeffizienten hat, k\u00f6nnen wir die optimalen Werte f\u00fcr unsere Aufgabe beim Cross-Validation oder basierend auf Produktanforderungen anpassen.<\/p>\n<p><img decoding=\"async\" alt=\"Betrieb 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 die Feinabstimmung der B\u00e4ume entwickelt:<\/p>\n<ol>\n<li>In der Produktion arbeitet ein Wald aus 100\u2013300 B\u00e4umen, der auf dem alten Datensatz trainiert wurde.\n<\/li>\n<li>Am Ende entfernen wir M = 5 B\u00e4ume und f\u00fcgen 2M = 10 neue hinzu, die auf dem gesamten Datensatz trainiert wurden, aber mit hohem Gewicht auf neuen Daten, was nat\u00fcrlich eine inkrementelle \u00c4nderung des Modells gew\u00e4hrleistet.\n<\/li>\n<\/ol>\n<p>\nOffensichtlich erh\u00f6ht sich im Laufe der Zeit die Anzahl der B\u00e4ume erheblich, und sie m\u00fcssen regelm\u00e4\u00dfig reduziert werden, um im Zeitrahmen zu bleiben. Daf\u00fcr verwenden wir den derzeit sehr verbreiteten Ansatz der Wissen-Destillation (KD). Kurz dabeizutragen, wie es funktioniert.<\/p>\n<ol>\n<li>Wir haben ein aktuelles \u201ekomplexes\u201c Modell. Wir f\u00fchren es auf dem Trainingsdatensatz aus und erhalten eine Verteilung der Klassenwahrscheinlichkeiten als Ausgabe.\n<\/li>\n<li>Dann schulen wir das Sch\u00fcler-Modell (in diesem Fall ein Modell mit weniger B\u00e4umen), um die Ergebnisse des Modells zu wiederholen, indem wir die Klassenverteilung als Zielvariable verwenden.\n<\/li>\n<li>Es ist wichtig zu erw\u00e4hnen, dass wir das Layout des Datensatzes nicht verwenden und daher beliebige Daten verwenden k\u00f6nnen. Selbstverst\u00e4ndlich nutzen wir eine Stichprobe von Daten aus einem produktiven Stream als Trainingsdatensatz f\u00fcr das Sch\u00fcler-Modell. So erm\u00f6glicht der Trainingssatz eine genaue Modellierung, w\u00e4hrend die Stichprobe des Streams eine \u00e4hnliche Leistung in der Produktionsverteilung gew\u00e4hrleistet und die Verzerrung des Trainingssatzes ausgleicht.\n<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Betrieb 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 gelegentliches Reduzieren ihrer Anzahl durch Knowledge Distillation) sorgt daf\u00fcr, dass neue Muster eingef\u00fchrt werden und eine vollst\u00e4ndige Nachfolge gew\u00e4hrleistet ist.<\/p>\n<p>Mit KD f\u00fchren wir auch Unterscheidungen bei den Merkmalsoperationen des Modells durch, wie z. B. das Entfernen von Merkmalen und das Arbeiten mit Ausf\u00e4llen. In unserem Fall haben wir eine Reihe wichtiger statistischer Merkmale (von Absendern, Text-Hashes, URLs usw.), die in einer Datenbank gespeichert sind, die Ausfall-Charakteristika aufweist. Auf solche Entwicklungen ist das Modell nat\u00fcrlich nicht vorbereitet, da im Trainingssatz keine Ausfallsituationen vorkommen. In solchen F\u00e4llen kombinieren wir KD-Techniken und Augmentation: Beim Training f\u00fcr Teile der Daten entfernen oder setzen wir erforderliche Merkmale auf null, w\u00e4hrend wir die urspr\u00fcnglichen Labels (Ausgaben des aktuellen Modells) verwenden. Das Sch\u00fcler-Modell lernt, diese Verteilung zu wiederholen.<\/p>\n<p><img decoding=\"async\" alt=\"Betrieb 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 Stichproben aus dem Stream prozentual ben\u00f6tigt werden.<\/p>\n<p>F\u00fcr das Entfernen von Merkmalen, der einfachsten Operation, wird nur ein kleiner Teil des Streams ben\u00f6tigt, da sich nur ein paar Merkmale \u00e4ndern und das aktuelle Modell auf demselben Satz trainiert wurde \u2013 der Unterschied ist minimal. Um das Modell zu vereinfachen (die Anzahl der B\u00e4ume um ein Vielfaches zu reduzieren), werden bereits 50 zu 50 ben\u00f6tigt. Und f\u00fcr Ausf\u00e4lle wichtiger statistischer Merkmale, die die Leistung des Modells erheblich beeinflussen, sind noch mehr Daten erforderlich, um die Funktionalit\u00e4t des neuen, ausfallsicheren Modells bei allen Arten von Nachrichten auszugleichen. <\/p>\n<p><img decoding=\"async\" alt=\"Betrieb 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>\nLassen Sie uns zu FastText \u00fcbergehen. Ich erinnere daran, dass die Wortdarstellung (Embedding) aus der Summe des Embeddings des Wortes selbst und aller seiner Buchstaben-N-Gramme besteht, \u00fcblicherweise Trigrammen. Da es viele Trigramme geben kann, wird Bucket Hashing verwendet, das hei\u00dft, die Umwandlung des gesamten Raums in eine feste Hashmap. Am Ende erh\u00e4lt die Gewichtsmatrix die Dimension des inneren Schichtengegenstandes multipliziert mit der Anzahl der W\u00f6rter plus Buckets. <\/p>\n<p>Beim Feintuning entstehen neue Merkmale: W\u00f6rter und Trigramme. Im Standard-Feintuning von Facebook passiert nichts Au\u00dfergew\u00f6hnliches. Nur die alten Gewichte werden mit Kreuzentropie auf den neuen Daten angepasst. Somit werden die neuen Merkmale nicht genutzt, und dieser Ansatz weist alle zuvor beschriebenen Nachteile auf, die mit der Unvorhersehbarkeit des Modells in der Produktion verbunden sind. Daher haben wir FastText etwas verbessert. Wir f\u00fcgen alle neuen Gewichte (W\u00f6rter und Trigramme) hinzu, trainieren die gesamte Matrix mit Kreuzentropie nach und f\u00fcgen eine harmonische Regularisierung analog zum linearen Modell hinzu, die eine unerhebliche \u00c4nderung der alten Gewichte garantiert.<\/p>\n<p><img decoding=\"async\" alt=\"Betrieb 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>\nMit Convolutional Neural Networks ist es etwas komplizierter. Wenn im CNN die letzten Schichten nachtrainiert werden, kann nat\u00fcrlich harmonische Regularisierung angewendet werden, und die Kontinuit\u00e4t kann garantiert werden. Wenn jedoch das gesamte Netzwerk nachtrainiert werden muss, l\u00e4sst sich eine solche Regularisierung nicht auf alle Schichten anwenden. Es gibt jedoch die M\u00f6glichkeit, komplement\u00e4re Embeddings \u00fcber Triplet Loss zu trainieren (<noindex><a rel=\"nofollow\" href=\"https:\/\/arxiv.org\/abs\/1503.03832\">urspr\u00fcnglicher Artikel<\/a><\/noindex>).<\/p>\n<h4>Triplet Loss<\/h4>\n<p>\nAm Beispiel der Anti-Phishing-Aufgabe werden wir Triplet Loss im Gro\u00dfen und Ganzen besprechen. 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 Spielraum lassen, um eine gr\u00f6\u00dfere Kompaktheit der Klassen zu gew\u00e4hrleisten. <\/p>\n<p><img decoding=\"async\" alt=\"Betrieb 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 er wird absolut inkompatibel mit dem vorherigen. Dies ist ein ernsthaftes Problem bei Aufgaben, die Vektoren verwenden. Um dieses Problem zu umgehen, werden wir w\u00e4hrend des Trainings alte Embeddings hinzuf\u00fcgen.<\/p>\n<p>Wir haben neue Daten in das Trainingsset hinzugef\u00fcgt und schulen die zweite Version des Modells von Grund auf. In der zweiten Phase verfeinern wir unser Netzwerk (Finetuning): Zuerst wird die letzte Schicht weitertrainiert, dann wird das gesamte Netzwerk wieder freigegeben. Bei der Erstellung der Triplets berechnen wir nur einen Teil der Embeddings mit dem trainierbaren Modell, w\u00e4hrend die anderen mit dem alten Modell erstellt werden. So stellen wir w\u00e4hrend des Verfeinerungsprozesses die Kompatibilit\u00e4t der metrischen R\u00e4ume v1 und v2 sicher. Eine spezielle Art der harmonischen Regularisierung.<\/p>\n<p><img decoding=\"async\" alt=\"Betrieb 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 gesamte Architektur<\/h3>\n<p>\nBetrachtet man das gesamte System am Beispiel von Anti-Spam, sind die Modelle nicht isoliert, sondern ineinander geschachtelt. Wir nehmen Bilder, Text und andere Merkmale und erhalten mithilfe von CNN und Fast Text Embeddings. Dar\u00fcber werden Klassifizierer angewendet, die Scores f\u00fcr verschiedene Klassen ausgeben (E-Mail-Typen, Spam, Vorhandensein eines Logos). Die Scores und Merkmale gelangen dann in einen Wald von Entscheidungsb\u00e4umen zur endg\u00fcltigen Entscheidungsfindung. Einzelne Klassifizierer in diesem Schema erm\u00f6glichen eine bessere Interpretation der Ergebnisse des Systems und eine gezielte Nachschulung der Komponenten im Falle von Problemen, anstatt alle Daten in roher Form in die Entscheidungsb\u00e4ume einzuspeisen.<\/p>\n<p><img decoding=\"async\" alt=\"Betrieb von maschinellem Lernen bei Mail.ru\" src=\"\/wp-content\/uploads\/2019\/11\/30effc5ef7398db5f085b6dd415647d3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLetztendlich garantieren wir die Nachvollziehbarkeit auf jeder Ebene. Auf der untersten Ebene in CNN und Fast Text nutzen wir harmonische Regularisierung, und f\u00fcr die Klassifizierer in der Mitte ebenfalls harmonische Regularisierung und Kalibrierung der Scores zur Kompatibilit\u00e4t der Wahrscheinlichkeitsverteilungen. Das Boosting der B\u00e4ume wird inkrementell oder mithilfe von Knowledge Distillation trainiert.<\/p>\n<p>Insgesamt bedeutet die Unterst\u00fctzung eines solchen geschachtelten Systems des maschinellen Lernens normalerweise einen gro\u00dfen Aufwand, da jede Komponente auf der unteren Ebene zu einem Update des gesamten Systems dar\u00fcber f\u00fchrt. Da jedoch in unserem Setup jede Komponente nur geringf\u00fcgig ge\u00e4ndert wird und mit der vorherigen kompatibel ist, kann das gesamte System in Teilen aktualisiert werden, ohne dass die gesamte Struktur neu trainiert werden muss, was es erm\u00f6glicht, die Unterst\u00fctzung ohne ernsthafte \u00dcberlastung aufrechtzuerhalten. <\/p>\n<h2>Bereitstellung<\/h2>\n<p>\nWir haben die Datensammlung und das Nachtrainieren verschiedener Modelltypen behandelt, daher gehen wir nun zu ihrem Deployment in die Produktionsumgebung \u00fcber.<\/p>\n<h3>A\/B-Testing<\/h3>\n<p>\nWie ich bereits fr\u00fcher sagte, erhalten wir beim Datensammeln in der Regel eine verzerrte Stichprobe, anhand derer die Produktionsleistung des Modells nicht bewertet werden kann. Daher ist es bei der Bereitstellung des Modells unbedingt erforderlich, es mit der vorherigen Version zu vergleichen, um zu verstehen, wie es tats\u00e4chlich l\u00e4uft, d. h. A\/B-Tests durchzuf\u00fchren. Tats\u00e4chlich ist der Rollout-Prozess und die Analyse der Grafiken ziemlich routinem\u00e4\u00dfig und l\u00e4sst sich hervorragend automatisieren. Wir rollen unsere Modelle schrittweise f\u00fcr 5 %, 30 %, 50 % und 100 % der Benutzer aus und sammeln dabei alle verf\u00fcgbaren Metriken zu den Modellantworten und dem Feedback der Benutzer. Bei ernsthaften Ausrei\u00dfern rollen wir das Modell automatisch zur\u00fcck, w\u00e4hrend wir in anderen F\u00e4llen, nachdem wir eine ausreichende Anzahl von Benutzeranfragen gesammelt haben, eine Entscheidung \u00fcber die Erh\u00f6hung des Prozentsatzes treffen. Letztendlich bringen wir das neue Modell vollst\u00e4ndig automatisiert auf 50 % der Benutzer, w\u00e4hrend der Rollout auf das gesamte Publikum von einer Person genehmigt wird, obwohl auch dieser Schritt automatisiert werden kann.<\/p>\n<p>Allerdings bietet der Prozess der A\/B-Tests Optimierungsm\u00f6glichkeiten. Das Problem ist, dass jeder A\/B-Test recht langwierig ist (in unserem Fall dauert er je nach Feedback zwischen 6 und 24 Stunden), was ihn ziemlich kostspielig und ressourcenintensiv macht. Dar\u00fcber hinaus ist ein ausreichender Prozentsatz des Verkehrs f\u00fcr den Test erforderlich, um die Gesamtzeit des A\/B-Tests zu verk\u00fcrzen (eine statistisch signifikante Stichprobe zur Bewertung von Metriken bei einem niedrigen Prozentsatz zu sammeln, kann sehr lange dauern), was die Anzahl der A\/B-Slots \u00e4u\u00dferst begrenzt. Offensichtlich m\u00fcssen wir nur die vielversprechendsten Modelle in den Test bringen, die wir im Prozess des Feintunings in gro\u00dfer Anzahl erhalten.<\/p>\n<p>Um dieses Problem zu l\u00f6sen, haben wir einen separaten Klassifikator trainiert, der den Erfolg des A\/B-Tests vorhersagt. Dazu verwenden wir Entscheidungsstatistik, Precision, Recall und andere Metriken aus dem Trainingsdatensatz, dem Validierungsdatensatz und einer Stichprobe aus dem Verkehrsstrom. Au\u00dferdem vergleichen wir das Modell mit dem aktuellen Produktionsmodell, mit Heuristiken, und ber\u00fccksichtigen die Komplexit\u00e4t des Modells. Unter Verwendung all dieser Merkmale bewertet der auf der Testhistorie trainierte Klassifikator die Kandidatenmodelle, in unserem Fall Entscheidungsb\u00e4ume, und entscheidet, welches von ihnen in den A\/B-Test aufgenommen wird. <\/p>\n<p><img decoding=\"async\" alt=\"Betrieb 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 erm\u00f6glichte dieser Ansatz eine mehrfache Steigerung der Anzahl erfolgreicher A\/B-Tests.<\/p>\n<h3>Testen &amp; \u00dcberwachen<\/h3>\n<p>\nTesten und \u00dcberwachen schaden, wie man denkt, nicht unserer Gesundheit; im Gegenteil, sie verbessern sie und befreien uns von unn\u00f6tigem Stress. Testen erm\u00f6glicht es, Ausf\u00e4lle zu verhindern, w\u00e4hrend \u00dcberwachen dazu dient, diese rechtzeitig zu erkennen, um die Auswirkungen auf die Nutzer zu minimieren.<\/p>\n<p>Hier ist es wichtig zu verstehen, dass Ihr System fr\u00fcher oder sp\u00e4ter immer Fehler machen wird \u2013 das ist mit dem Entwicklungszyklus jeder Software verbunden. Zu Beginn der Systementwicklung gibt es immer viele Bugs, bis alles stabilisiert ist und der Hauptteil der Neuerungen abgeschlossen ist. Mit der Zeit erh\u00f6ht sich jedoch die Entropie, und Fehler treten erneut auf \u2013 aufgrund der Degradierung der umgebenden Komponenten und der sich \u00e4ndernden Daten, von denen ich zu Beginn sprach.<\/p>\n<p>Hier m\u00f6chte ich anmerken, dass jedes maschinelle Lernsystem aus der Sicht seines Nutzens \u00fcber den gesamten Lebenszyklus betrachtet werden muss. Die Grafik zeigt ein Beispiel f\u00fcr die Funktionsweise eines Systems zur Erkennung einer seltenen Art von Spam (auf der Grafik liegt die Linie nahe null). Einmal hat es wegen eines falsch zwischengespeicherten Merkmals verr\u00fcckt gespielt. Ungl\u00fccklicherweise gab es kein Monitoring auf anomalem Verhalten, wodurch das System begann, viele E-Mails im Ordner \u201eSpam\u201c zu speichern, an der Grenze der Entscheidungsfindung. Trotz der Behebung der Folgen hat das System bereits so oft falsch reagiert, dass es sich nicht einmal in f\u00fcnf Jahren amortisieren wird. Das ist ein v\u00f6lliger Fehlschlag aus der Sicht des Lebenszyklus des Modells. <\/p>\n<p><img decoding=\"async\" alt=\"Betrieb 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 Monitoring der Schl\u00fcssel im Leben eines Modells werden. Neben den Standard- und offensichtlichen Metriken betrachten 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 der historischen oder die Werte im A\/B-Test mit dem restlichen Strom vergleichen, was es erm\u00f6glicht, Anomalien im Modell zu erkennen und \u00c4nderungen rechtzeitig zur\u00fcckzusetzen.<\/p>\n<p>In den meisten F\u00e4llen starten wir unsere ersten Versionen von Systemen mit einfachen Heuristiken oder Modellen, die wir sp\u00e4ter zur \u00dcberwachung verwenden. Zum Beispiel \u00fcberwachen wir das NER-Modell im Vergleich zu regul\u00e4ren Ausdr\u00fccken f\u00fcr bestimmte Online-Shops, und wenn die Abdeckung des Klassifikators im Vergleich zu ihnen sinkt, untersuchen wir die Gr\u00fcnde. Ein weiteres n\u00fctzliches Anwendungsgebiet f\u00fcr Heuristiken!<\/p>\n<h2>Ergebnisse<\/h2>\n<p>\nLassen Sie uns die wichtigsten Gedanken des Artikels noch einmal durchgehen.<\/p>\n<ul>\n<li><b>Fibd\u00e4k<\/b>. Wir denken immer an die Benutzer: wie sie mit unseren Fehlern leben werden, wie sie uns dar\u00fcber informieren k\u00f6nnen. Wir vergessen nicht, dass die Benutzer keine reinen Feedbackquellen f\u00fcr das Training von Modellen sind und dass es notwendig ist, diese mit Hilfe von unterst\u00fctzenden ML-Systemen zu filtern. Wenn es nicht m\u00f6glich ist, ein Signal vom Benutzer zu sammeln, suchen wir alternative Feedbackquellen, wie z. B. verwandte Systeme. \n<\/li>\n<li><b>Nachtraining<\/b>. Hier ist das Hauptaugenmerk die Kontinuit\u00e4t, deshalb st\u00fctzen wir uns auf das aktuelle Produktionsmodell. Wir trainieren neue Modelle so, dass sie sich nicht wesentlich von der Vorg\u00e4ngerversion unterscheiden, durch harmonische Regularisierung und \u00e4hnliche Tricks.<\/li>\n<li><b>Bereitstellung<\/b>. Die automatische Bereitstellung anhand von Metriken verk\u00fcrzt die Zeit f\u00fcr die Implementierung von Modellen erheblich. Die \u00dcberwachung von Statistiken und Entscheidungstransaktionen sowie die Anzahl der Benutzerfehler sind unerl\u00e4sslich f\u00fcr Ihren ruhigen Schlaf und produktive Wochenenden.\n<\/li>\n<\/ul>\n<p>\nIch hoffe, dass das Gelese Ihnen hilft, Ihre ML-Systeme schneller zu verbessern, ihre 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.1.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.1.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\udd47Einsatz von maschinellem Lernen bei Mail.ru | 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}]}}