Intelligente Wiederholungsaufkleber



Hallo Habr! Heute haben wir ICQ neu gestartet . Die Schlüsselfunktionen des neuen Messenger basieren auf Technologien der künstlichen Intelligenz: Smart Reply-Schnellaufkleber und Textaufforderungssystem für die Beantwortung eingehender Nachrichten, Vorschläge für Aufkleber für eingegebene Phrasen, Sprachnachrichtenerkennung und andere.

In diesem Artikel werde ich über einen von ihnen sprechen - Smart Reply. Diese Funktion spart Benutzern Zeit, da sie nur auf den gewünschten Aufkleber klicken müssen. Gleichzeitig wird die Funktion die Verwendung verschiedener Aufkleber populär machen und die Emotionalität der Kommunikation erhöhen.

Datenaufbereitung


Die Aufgabe aus dem Bereich NLP wurde mit Hilfe von maschinellem Lernen und neuronalen Netzen gelöst. Das Training wurde mit speziell vorbereiteten Daten aus öffentlichen Chats durchgeführt. Die Paare wurden verwendet: ein Fragment des Dialogs und ein Aufkleber, der von einem der Benutzer als Antwort auf die letzte Nachricht des Gesprächspartners gesendet wurde. Um den Kontext besser zu berücksichtigen, besteht ein Fragment des Dialogs aus den Nachrichten des letzten Gesprächspartners, die zusammengeklebt sind, und aus den Nachrichten des Benutzers vor ihnen. Sie können mit der Anzahl der Nachrichten experimentieren. Das Google ML Kit verwendet beispielsweise einen Kontext von 10 Nachrichten [1] .

Eines der Probleme, mit denen ich mich befassen musste, ist, dass die Häufigkeit der Verwendung von Aufklebern, beginnend mit den beliebtesten, stark abnimmt. Darüber hinaus beträgt die Gesamtzahl der Aufkleber mehr als eine Million. Die folgende Abbildung zeigt die absteigende Verwendungshäufigkeit der 4000 beliebtesten Aufkleber. Daher wurden 4000 beliebte Aufkleber mit der Entfernung einiger der häufigsten für das Training ausgewählt, um die ungleichmäßige Verteilung des Trainingssatzes zu verringern.


Verwendungshäufigkeit von 4000 beliebtesten Aufklebern in absteigender Reihenfolge.

Bei Texten wurde eine Normalisierung durchgeführt, indem Zahlen entfernt, Buchstaben, einzelne Zeichen und Satzzeichen wiederholt wurden (mit Ausnahme von Fragezeichen und Ausrufen, die für die Bedeutung wichtig sind), wobei die Buchstaben auf Kleinbuchstaben reduziert wurden. Im Allgemeinen sind die Besonderheiten so, dass Benutzer in Chatrooms die Grammatik schlecht befolgen.

Modellauswahl


Zur Vorhersage wird das siamesische DSSM-Modell in Analogie zum Modell für Smart Reply in Mail.ru verwendet (eine ähnliche Architektur ist in [2] beschrieben).), aber mit gewissen Unterschieden. Der Vorteil des siamesischen Modells in der Effizienz für die Inferenz, da der den Aufklebern entsprechende Teil im Voraus berechnet wird. Um Briefe zu beantworten, verwendet das Originalmodell eine Tüte mit n-Gramm-Wörtern, um den Text darzustellen, der zum Schreiben gerechtfertigt ist: Der Text kann groß sein, und wir müssen die allgemeinen Einzelheiten erfassen und eine kurze Standardantwort geben. Bei Chats und Aufklebern ist der Text kurz und einzelne Wörter sind hier wichtiger. Daher wurde beschlossen, einzelne Worteinbettungen als Features zu verwenden und eine LSTM-Ebene für diese hinzuzufügen. Eine ähnliche Idee zur Verwendung der LSTM-Ebene bei Kurztexten wurde beispielsweise für Textantworten im Google Allo Messenger [3] und im Smiley-Vorhersagemodell für DeepMoji-Kurznachrichten [4] verwendet.. Die folgende Abbildung zeigt schematisch das Modell.


Architekturmodell.

In der Abbildung sind die ersten Ebenen die Einbettungen eingehender Token-Wörter (links) und Aufkleber (rechts). Für die Tokenisierung von Wörtern wurde ein Wörterbuch verwendet, das 100.000 der beliebtesten Wörter enthielt. Um Nachrichten von verschiedenen Benutzern zu trennen, wurde ein spezielles dediziertes Token verwendet. Das Training ist durchgängig. Nachdem wir die Einbettungen für die Folge von Wörtern berechnet haben, gehen wir zur LSTM-Schicht, deren Zustand dann mit Tangentenaktivierung auf die vollständig verbundenen Schichten übertragen wird. Als Ergebnis erhalten wir im linken Encoder am Ausgang einen Vektor, der den Text darstellt, und im rechten den Vektor, der dem Aufkleber entspricht. Das Skalarprodukt von Vektoren bestimmt, wie Text und Aufkleber zusammenpassen. Die Dimension der Einbettungen, der Vektor des internen Zustands des LSTM und der Ausgabevektor wurden gleich 300 angenommen.

Die Zielfunktion für das Training sieht folgendermaßen aus:



wobei K die Größe des Stapels ist, ist

S (x i , y i ) das Skalarprodukt der resultierenden Vektoren für positive Beispiele von Text-Aufkleber-Paaren,

S (x i , y j )- Skalarprodukt von Vektoren für negative Beispiele von Text-Aufkleber-Paaren. Negative Beispiele für Text-Aufkleber-Paare wurden aufgrund des zufälligen Mischens der ursprünglichen korrekten Paare erzeugt. Da es bei gängigen Universalaufklebern wahrscheinlich ist, dass sich beim erneuten Mischen herausstellt, dass es sich um das richtige Paar handelt, wurde im Stadium der Umschulung eine zusätzliche Kontrolle als Teil der Charge verwendet, sodass es keine ähnlichen Texte für positive und negative Paare mit einem Aufkleber gab. Während der Experimente arbeiten besser, wenn negative Beispiele weniger als das K verwenden . Aufgrund des Rauschens der Daten funktionierte das Training mit großen Chargen besser. Die Komplikation des Modells und das Hinzufügen der Aufmerksamkeitsschicht führten zu keiner merklichen Verbesserung der Genauigkeit, was vielmehr auf die mit den Daten verbundenen Einschränkungen und deren Qualität hinweist.

Aufgrund der Tatsache, dass der Ansatz mit einem Wörterbuch einzelner Wörter anstelle des Zeichens n-Gramm gewählt wird, geht die Flexibilität des Modells in Bezug auf Tippfehler verloren. Es wurde ein Experiment mit dem Training der FastText-Einbettung durchgeführt, das direkt im Netzwerk trainiert wird, wodurch die Auswirkungen von Fehlern verringert werden. In diesem Fall wurde das Training schlechter und das Hinzufügen einer Aufmerksamkeitsschicht half merklich. Nach dem Abwägen von Qualitätsindikatoren und anderen Faktoren wurde beschlossen, sich mit einem einfacheren Modell zu befassen. In diesem Fall wird das Tippfehlerproblem mithilfe einer Rechtschreibprüfung gelöst, wenn das Wort nicht im Wörterbuch enthalten ist. Im normalen Modus wird die Rechtschreibprüfung nicht verwendet, da einige fehlerhafte Wörter ein Merkmal des informellen Chats sind.

Antworten bekommen


Wie funktioniert das Modell in der Inferenzphase?

Wir berechnen die vom richtigen Encoder berechneten Aufklebervektoren im Voraus. In der Anforderungsverarbeitungsphase wird nur der linke Codierer verwendet, um einen Vektor für den eingehenden Text zu erhalten. Als nächstes müssen Sie die Liste der Aufkleber in absteigender Reihenfolge des Skalarprodukts des Text- und Aufklebervektors abrufen. Dies kann direkt durch Multiplizieren aller Aufklebervektoren oder durch Verwenden der Suchalgorithmen für den nächsten Nachbarn für diese Metrik erfolgen. Zum Beispiel wird in [2] vorgeschlagen, die hierarchische Quantisierung für die maximale Suche nach inneren Produkten (MIPS) zu verwenden. Wir haben den HNSW-Suchalgorithmus angewendet, was im Vergleich zur vollständigen Suche eine signifikante Beschleunigung ergab.

Antworten vielfältig machen


Die nächste Stufe ist die Diversifizierung der vorgeschlagenen Aufkleber, da häufig Top-End-Aufkleber alle gleich sein können.

Drei vorgeschlagene Aufkleber für die Phrase "Hallo": ohne Diversifikation und mit Diversifikation.

Es wurden verschiedene Diversifizierungsoptionen getestet. Am einfachsten ist es, die oberen N-Aufkleber unter Berücksichtigung der Grenze der Punktzahl auszuwählen, dann den oberen Aufkleber auszuwählen und die beiden anderen mit dem maximalen Abstand voneinander auszuwählen, während der zulässige Unterschied in den Abständen zum oberen Aufkleber begrenzt wird. Dieser Ansatz kann kombiniert werden, indem die Ergebnisse der manuellen Kennzeichnung von Aufklebern durch emotionale Färbung (positiv, negativ, neutral) verwendet werden und gegebenenfalls aus den oberen N Aufklebern mit verschiedenen Farben ausgewählt werden.

Eine andere Möglichkeit besteht darin, Aufkleber nach ihren Einbettungen zu gruppieren und bei der Ausgabe von Ergebnissen nicht mehr als einen Aufkleber aus dem Cluster auszuwählen. Für das Clustering wurde das UMAP + HDBSCAN-Bundle verwendet. UMAP ist ein neuer effektiver Algorithmus zur Reduzierung der Dimensionalität, der das bereits bewährte t-SNE übertrifft. Die Dimensionsreduktion wurde auf zwei angewendet, und dann wurde der HDBSCAN-Clustering-Algorithmus verwendet. Es wurden ungefähr 100 Cluster identifiziert. Diese Aufgabe wird nicht vollständig automatisch gelöst. Mit verschiedenen Einstellungen war es möglich, bis zu 70% der Aufkleber zu gruppieren. Anschließend ist eine manuelle Überarbeitung und Überprüfung erforderlich. Daher haben wir uns für die oben beschriebenen einfacheren Optionen entschieden, da deren Ergebnis gut war.


Clustering-Aufkleber auf Einbettungen.

Ergebnisse


Als Ergebnis erhielten wir einen einfachen und effektiven Smart Replay-Aufkleber, der eine sehr gute Qualität der Antworten zeigte. Laut Tests für 1000 verschiedene Phrasen, von einfach bis relativ komplex, wurde der obere Aufkleber nach Angaben der Befragten in mehr als 75% der Fälle als vollständig geeignet bezeichnet. Beim Test von 100 einfacheren und populäreren Phrasen ist das Ergebnis noch beeindruckender: Der obere Aufkleber wurde in 93% der Fälle als vollständig geeignet bezeichnet.

Beispiele für Aufkleber, die das Antwortmodell bietet.

Was sind die Nachteile?

Aufgrund des Ungleichgewichts im Trainingsdatensatz haben einige Wörter einen unnötig großen Einfluss. Beispielsweise führt das Wort „Liebe“ in einigen Zusammenhängen häufig zum Vorschlag verschiedener „romantischer“ Aufkleber, da die Trainingsdaten eine Tendenz in diese Richtung aufweisen. Die Einführung zusätzlicher Gewichte für Frequenzwörter und Aufkleber sowie die Erweiterung von Phrasen lösten das Problem nicht vollständig, verbesserten jedoch teilweise die Situation.

Wir ruhen uns nicht auf unseren Lorbeeren aus, und der Prozess zur Verbesserung der Qualität unserer Modelle geht weiter. Es werden Experimente durchgeführt, um die Architektur und die Mechanismen für die Aufbereitung und Verwendung von Daten zu modifizieren.

Literatur


  1. Google updates ML Kit with Smart Reply API for third-party Android and iOS apps. 9to5google.com/2019/04/05/ml-kit-smart-reply
  2. Matthew Henderson, Rami Al-Rfou, Brian Strope, Yun-Hsuan Sung, Laszlo Lukacs, Ruiqi Guo, Sanjiv Kumar, Balint Miklos, and Ray Kurzweil. Efficient Natural Language Response Suggestion for Smart Reply. arXiv:1705.00652v1, 2017.
  3. Pranav Khaitan. Chat Smarter with Allo. ai.googleblog.com/2016/05/chat-smarter-with-allo.html
  4. Bjarke Felbo, Alan Mislove, Anders Søgaard, Iyad Rahwan, Sune Lehmann. Using millions of emoji occurrences to learn any-domain representations for detecting sentiment, emotion and sarcasm. arXiv:1708.00524v2, 2017.

All Articles