Wie wir künstliche Intelligenz lehrten, um Unterstützungsfragen zu beantworten. Erleben Sie Yandex.Taxi

Es gibt keine idealen Dienste - manchmal hat der Benutzer Fragen zum technischen Support. Es ist schwer zu sagen, dass es in solchen Fällen unangenehmer ist, eine Kombination von Vorlagen-Bot-Replikaten zu kombinieren, die das Problem lösen können, oder auf die Antwort eines Spezialisten zu warten, die sich bereits einen halben Tag mit Ihnen in Verbindung setzt.

In Yandex.Taxi haben wir von den beiden Optionen die dritte gewählt - die Verwendung von Maschinenintelligenz, um technischen Support mit menschlichem Gesicht zu erstellen. Mein Name ist Tatyana Savelyeva, meine Gruppe beschäftigt sich mit maschinellem Lernen an unstrukturierten Daten. Unter dem Strich teile ich Benutzererkenntnisse, erzähle, wie man einen komplexen Prozess automatisiert, die Arbeit völlig unterschiedlicher Teams organisiert und natürlich Deep Learning und technische Hacks in der Praxis anwendet (ohne sie).



Warum überhaupt etwas automatisieren?


Es scheint, warum eine mehrstufige Unterstützungsstruktur erfinden - mehr Leute einstellen. Vielleicht funktioniert dies, wenn ungefähr 10 Anfragen pro Tag zur Unterstützung kommen. Wenn sich die Anzahl der Benutzeranrufe auf eine Million beläuft (was ein kleiner Prozentsatz der Fahrten für Yandex Taxi ist, aber absolut beeindruckend), müssen Sie über zuverlässigere Taktiken nachdenken: Es ist zumindest schwieriger, eine ausreichende Anzahl von Bedienern zu finden und zu schulen, die mit atypischen Problemen in solchen Mengen umgehen können .

Vor einiger Zeit hat die Branche beschlossen, dieses Problem mithilfe mehrerer Unterstützungsebenen zu lösen. In der ersten Phase wurden die einfachsten, vorhersehbaren Fragen herausgefiltert: Wenn die fertige Antwort nicht passte, wurde das Problem klassifiziert und an einen qualifizierteren Experten weitergeleitet. Elegant, aber es gibt eine Nuance.

Die Anzahl der Anrufe nimmt zu - die Bearbeitung dauert länger. Der Durchsatz der Bediener, der menschliche Faktor - gibt es viele Gründe, die das System verlangsamen, wo die Rechnung für Minuten geht? Viele dieser Einschränkungen können mit Hilfe einer Maschine umgangen werden: Sie wird nicht verwechselt, wenn sie müde wird, und sie trifft Entscheidungen schneller.

Vor ungefähr einem Jahr haben wir begonnen, maschinelles Lernen zu verwenden, um den Bediener sofort über mögliche Interaktionsszenarien zu informieren. Kunden erhalten jetzt schneller Antworten. Der Perfektion sind jedoch keine Grenzen gesetzt!

Wo soll ich anfangen?


Angenommen, Sie haben kein Glück: Der Fahrer ist nicht angekommen und meldet sich nicht. Was passiert mit Ihrer Kontaktaufnahme mit dem Yandex.Taxi-Support?



Was kann optimiert werden, um Probleme noch schneller zu lösen? Beginnen wir mit der ersten Phase , in der das Ticket in eine von zwei Zeilen geht. Anfänglich hing die Auswahl von den Schlüsselwörtern in der Abfrage ab - es funktionierte, aber die Genauigkeit der Bestimmung war eher gering. Um dies zu korrigieren, half ein Klassifikator, der auf dem klassischen Modellcodierer BERT für neuronale Netze basiert.

In dieser Aufgabe wird die Vollständigkeit für Expertenlinien festgelegt: Fälle, in denen ein Verfahren erforderlich ist, sollten nicht an ihnen vorbeigehen. Vergessen Sie jedoch nicht den Kampf um die Erhöhung der Genauigkeit: Es sollten so wenig wie möglich einfache Anrufe in die Expertenleitung gelangen, damit die Reaktionszeit auf wirklich kritische Fälle nicht über die Geduld des Benutzers hinausgeht. Die Klassifizierungsgenauigkeit nach Methoden des maschinellen Lernens erwies sich als doppelt so effektiv wie die Keyword-Analyse. Die Reaktionsgeschwindigkeit auf Notsituationen wurde um das 1,5-fache erhöht.

Der Versuch, die Arbeit einer Expertenlinie im Rahmen der heute vorhandenen Technologien zu automatisieren, ist schwierig: Die Logik des Geschehens ist schwer zu systematisieren, und jeder Fehler ist sehr teuer. Kehren wir zu typischen, gut untersuchten First-Line-Abfragen zurück - vertrauen Sie ihre Verarbeitung möglicherweise Algorithmen an? So werden Routineaufgaben noch schneller gelöst und die Mitarbeiter können kontroversen Fällen, die über den Rahmen von Vorlagen hinausgehen, mehr Aufmerksamkeit schenken.

Um diese Idee zu testen, wurde ein Sujest entwickelt - ein Hinweissystem, das den Supportmitarbeitern die drei am meisten bevorzugten Optionen für die Beantwortung der aktuellen Anfrage bietet: Das



Experiment war erfolgreich: In 70% der Fälle wählten die Bediener eine der vorgeschlagenen Nachrichten, wodurch sich die Antwortzeit um 10% verringerte. Es scheint an der Zeit zu sein, die erste Zeile vollständig zu automatisieren.

Benötigen Sie einen Plan.Was macht ein Mitarbeiter an vorderster Front ?

  1. Liest den Text, definiert das Thema der Behandlung.
  2. Untersucht Reiseinformationen.
  3. Wählt eine der vorbereiteten Antworten unter Berücksichtigung der ersten beiden Punkte aus.

Ein Beispiel zum Eindringen. Gegeben: eine Textanfrage für einen notleidenden Benutzer, einige Reiseinformationen, ein fürsorgliches Support-Personal.



Zunächst bestimmt der Mitarbeiter den Gegenstand der Beschwerde: "Doppelte Abbuchung von der Karte." Überprüfen Sie anschließend die Zahlungsmethode, den Status und den berechneten Betrag. Einmal abgeschriebenes Geld: Was könnte der Grund sein? Ja, hier ist es: zwei Benachrichtigungen hintereinander.

Was sollte ein automatisches Antwortsystem tun?

Alles das selbe. Auch die wichtigsten Anforderungen an die Antworten ändern sich nicht:

Qualität

Wenn sich der Benutzer über die Anwendung beschwert, muss nicht versprochen werden, den Fahrer zum Waschen des Autos aufzufordern. Es reicht nicht aus, genau zu verstehen, was das Problem ist, man muss detailliert beschreiben, wie man es löst.

Geschwindigkeit
Besonders wenn die Situation kritisch ist und die Antwort gerade jetzt wichtig ist.

Flexibilität und Skalierbarkeit.

Die Aufgabe mit einem Sternchen: Obwohl die Erstellung eines Support-Systems mit Taxi begonnen hat, ist es nützlich, das Ergebnis auf andere Dienste zu übertragen: Yandex.Food oder Yandex.Lavka, zum Beispiel. Das heißt, wenn ich die Support-Logik ändere - Antwortvorlagen, Anrufthemen usw. - möchte ich das System in Tagen und nicht in Monaten neu konfigurieren.

Wie wird es umgesetzt?


Stufe 1. Wir bestimmen das Thema des Textes mit ML.

Zuerst haben wir einen Baum von Referenzthemen zusammengestellt und den Klassifikator geschult, um sie zu navigieren. Es gab ungefähr 200 mögliche Probleme: mit der Fahrt (der Fahrer ist nicht angekommen), mit der Anwendung (ich kann die Karte nicht anbringen), mit dem Auto (schmutziges Auto) usw.

Wie oben erwähnt, haben wir ein vorab trainiertes Modell verwendet, das auf BERT basiert. Das heißt, um den Abfragetext zu klassifizieren, ist es notwendig, ihn in Form von Vektoren darzustellen, so dass Sätze mit ähnlicher Bedeutung nebeneinander im resultierenden Raum liegen.

BERT ist in zwei Aufgaben mit nicht zugewiesenen Texten vorab geschult. Im ersten Fall werden 15% der Token zufällig durch [MASK] ersetzt, und das Netzwerk sagt basierend auf dem Kontext die anfänglichen Token voraus - dies verleiht dem Modell eine natürliche „Bidirektionalität“. Die zweite Aufgabe lehrt uns, die Beziehung zwischen Vorschlägen zu bestimmen: Wurden zwei Einträge hintereinander eingereicht oder im gesamten Text verteilt?

Nachdem wir die BERT-Architektur anhand eines Beispiels für Anfragen an den technischen Support von Yandex.Taxi fertiggestellt hatten, erhielten wir ein Netzwerk, das den Betreff der Nachricht vorhersagen kann und an die Besonderheiten unseres Dienstes angepasst ist. Die Häufigkeit der Themen und die Themen selbst ändern sich jedoch: Damit das Netzwerk mit ihnen aktualisiert werden kann, werden wir in den letzten Wochen nur die unteren Ebenen des Modells separat auf die neuesten Daten trainieren. So bleibt das Wissen über die Merkmale der Supporttexte erhalten und die Wahrscheinlichkeiten für mögliche Klassen werden angemessen auf den aktuellen Tag verteilt.

Ein bisschen mehr über die Angemessenheit: Für alle unsere Dienstleistungen - einschließlich Taxi - wurde eine ganze Bibliothek von Modellarchitekturmodulen und Methoden zur Validierung von Wahrscheinlichkeitsschwellen entwickelt. Es ermöglicht Ihnen:

  • , : , — ;
  • , . , . , , , .

Phase 2. Wir arbeiten mit Informationen über die Reise: Wir schreiben Geschäftsregeln für jede Vorlage vor. Den

Supportmitarbeitern wurde eine Schnittstelle angeboten, über die für jede Antwortvorlage eine verbindliche Regel erforderlich war. So sieht es beispielsweise bei doppelter Zahlung aus:

Vorlage: „Hallo! Ich habe alles überprüft: Die Reise wurde einmal bezahlt. Das Geld wird zuerst auf Ihrer Karte „eingefroren“ und erst dann belastet. Aus diesem Grund kann die Bank zweimal über eine Transaktion informieren. Bitte überprüfen Sie Ihren Kontoauszug, um sicherzugehen. Wenn Sie dort zwei abgezogene Beträge sehen, senden Sie bitte einen Scan oder ein Foto des Auszugs. »

Regel: Zahlungstyp ist" Karte "und Transaktionsstatus ist" Clear_Success "und Transaktionssumme == Bestellkosten

Nur für Vorlagen für den Kundensupport haben unsere Experten bereits mehr als 1,5 Tausend Regeln erstellt.

Stufe 3. Wir wählen die Antwort: Wir kombinieren die entsprechenden Textthemen und Geschäftsregeln für die Vorlagen.

Jedes Thema wird mit den entsprechenden Antwortvorlagen abgeglichen: Das Thema wird durch ML-Methoden bestimmt, und die Vorlagen, die darauf reagieren, werden anhand der Regel aus dem vorherigen Absatz auf ihre Richtigkeit überprüft. Der Benutzer erhält eine Antwort, deren Überprüfung den Wert "True" zurückgibt. Wenn es mehrere solcher Optionen gibt, wird die beliebteste unter den Support-Mitarbeitern ausgewählt.



Übrigens ändern sich die Interaktionsprozesse mit Treibern in Yandex.Taxi überhaupt nicht: Das Modell wählt nur die gewünschte Vorlage für den Bediener aus und antwortet dem Benutzer unabhängig.

Finalisieren


Hurra! Das System ist entworfen, der Start fand statt, die Optimierung zeigt hervorragende Ergebnisse, aber es ist zu früh, um sich zu entspannen. Autoresponder sollten ohne ständigen Eingriff stabil funktionieren und leicht skalierbar sein - allein oder im halbmanuellen Modus. Dies haben wir dank der dreiteiligen Struktur des Systems erreicht:

  1. Offline-Entwicklung - In dieser Phase ändern sich die Modelle, Regeln werden vorbereitet.
  2. Produktionsservice - ein Microservice, der Updates aufnimmt, anwendet und in Echtzeit auf Benutzer reagiert;
  3. Nach der Analyse der Ergebnisse, um sicherzustellen, dass das neue Modell ordnungsgemäß funktioniert, sind die Benutzer mit den automatischen Antworten zufrieden.



Und noch einmal zu den Beispielen. Ganz oben auf der beliebtesten Wunschliste der Kunden (und wie wir mit ihnen umgehen, ohne Code zu schreiben):

Taxi hat coole automatische Antworten: Ich möchte dasselbe in Yandex.Ed.

Um einen Support mit unserem System zu verbinden, benötigen Sie vier einfache Schritte:

  1. Erstellen Sie einen Themenbaum für Texte.
  2. Ordnen Sie jedem Thema Muster zu.
  3. Füllen Sie eine Reihe von Regeln mit Vorlagen in unserem Admin-Bereich aus.
  4. Stellen Sie eine Korrespondenztabelle zwischen Benutzeranforderungen und Supportantworten bereit.

Wenn all dies vorhanden ist, legen wir den Pfad zu einem neuen Upload fest, das Modell lernt aus den empfangenen Daten und ruft zusammen mit allen definierten Regeln (Integration in ein bestimmtes ML-Thema) in unseren Microservice. Bitte beachten Sie: Es wird keine neue Logik geschrieben, alles im Rahmen eines bestehenden Prozesses!

Die Logik der Unterstützung hat sich geändert, wir wollen neue Regeln.

Bitte - füllen Sie die neuen Regeln in unserem Admin-Bereich aus. Das System analysiert, wie sich die Änderungen auf den Prozentsatz der automatischen Antworten * auswirken, und berücksichtigt dabei, wie stark die Regel gefordert wurde. Wenn alles gut gegangen ist, werden die abgeschlossenen Regeln in eine Konfiguration umgewandelt und in den ML-Dienst geladen. Hurra! Es ist weniger als eine Stunde vergangen, und die Geschäftsregeln wurden in der Produktion aktualisiert. Es wurde keine einzige Codezeile geschrieben, und die Programmierer werden nicht gestört.

* Es scheint, dass dies nicht sehr offensichtlich ist. Fügen wir dem Beispiel also ein Beispiel hinzu. Angenommen, Experten haben eine Regel eingeführt: Die Verwendung einer bestimmten Antwortvorlage ist nur für Bestellungen im Wert von mehr als 200 Rubel möglich. Wenn diese Einschränkung funktioniert, bleiben Tickets für Reisen für einen geringeren Betrag geschlossen, der Anteil der automatisch ausgewählten Antworten nimmt ab und die Effizienz des gesamten Systems nimmt ab. Um dies zu verhindern, ist es wichtig, die fehlgeschlagenen Regeln rechtzeitig abzufangen und zur Überarbeitung zu senden.

Wir haben ein neues Thema hinzugefügt, wir wollen das Modell ändern, wir brauchen alles, um morgen zu arbeiten.

Oft möchten Inhaltsspezialisten neue Themen hinzufügen, in vorhandene aufteilen oder irrelevante löschen. Kein Problem - Sie müssen die Korrespondenz zwischen den Themen und Antwortvorlagen im Admin-Bereich ändern.

Wenn in den Antworten der First-Line-Support-Mitarbeiter bereits neue oder geänderte Themen enthalten sind, werden diese Daten durch das Modell mit regelmäßiger Umschulung automatisch verschärft und Schwellenwerte für sie berechnet (für Daten aus der letzten Woche, mit Ausnahme des für Tests zurückgestellten Satzes).

An der Testprobe werden das alte und das neue Modell nach speziellen Metriken verglichen - Genauigkeit, die Freigabe wird automatisch festgelegt. Wenn die Änderungen positiv sind, wird ein neues Modell in der Produktion eingeführt.

Wir analysieren Metriken: nicht sinken, nicht brechen


Wir werden uns auf zwei Kriterien konzentrieren - die durchschnittliche Bewertung einer automatischen Antwort durch einen Benutzer und das Auftreten zusätzlicher Fragen. Änderungen wurden im ab-Experiment überwacht, es wurde kein statistisch signifikanter Rückgang der Metriken beobachtet, außerdem bewerteten Benutzer die Ergebnisse des Modells aufgrund der Reaktionsgeschwindigkeit häufig hoch.

Unabhängig davon, wie sehr wir uns bemühen, führen maschinelle Lernmethoden manchmal zu absurden Reaktionen. Nach dem nächsten Update des Modells haben wir einen solchen Fall

festgestellt : Benutzer: Dank des Fahrers kam das Auto pünktlich an, der Fahrer hat es gut gemacht, alles lief perfekt! Support
: Wir werden den Fahrer bestrafen, dies wird nicht wieder vorkommen.

Der Start war zum Glück ein Test. Das Problem war folgendes: Das Modell lernte, auf Bewertungen mit einer Bewertung von weniger als 4 zu reagieren, und manchmal zeigten wir fälschlicherweise ihre Bewertungen mit 4 und 5 Sternen. Natürlich konnte aufgrund von Lernbeschränkungen nichts intelligenteres Neuron antworten. Bei der Implementierung sind solche Fälle selten (0,1% der Gesamtzahl) - wir verfolgen sie und ergreifen geeignete Maßnahmen: Das neuronale Netzwerk reagiert auf die wiederholte Nachricht des Benutzers.

Schlussfolgerungen und Pläne für die Zukunft


Nachdem wir das automatische Antwortsystem angeschlossen hatten, reagierten wir viel schneller auf Benutzeranfragen und widmeten wirklich komplexen Fällen, die einer detaillierten Untersuchung bedürfen, maximale Aufmerksamkeit. Wir hoffen, dass dies uns hilft, die Qualität von Yandex.Taxi zu verbessern und die Anzahl unangenehmer Vorfälle zu minimieren.

Das Auto-Fix-Modell schließt etwa 60% der ersten Zeile, ohne die durchschnittliche Benutzerbewertung zu verschwenden. Wir planen, die Methode weiterzuentwickeln und den Prozentsatz der automatischen Antworten in der ersten Zeile auf 99,9% zu erhöhen. Und natürlich helfen Sie Ihnen weiterhin - unterstützen Sie unsere Anwendungen und tauschen Sie Erfahrungen darüber auf Habré aus.

All Articles