Kai Matzutt, Head of AI:
Ihr kennt das vermutlich, ihr unterhaltet euch nett und plötzlich kommt ein Satz und ihr fragt euch: “Was soll mir das denn jetzt sagen?” oder einfach nur: “Häh?”.
So geht es einem Chatbot mit jedem Satz. Zum Glück hat sich unsere Lieblingsdisziplin, das Natural Language Processing (NLP), schon lange Gedanken dazu gemacht, wie man mit der Ratlosigkeit unseres Chatbots umgehen kann.
Der Zweig der NLP, der sich damit beschäftigt, nennt sich Intent Detection.
Unser Chatbot, nennen wir sie einfach mal Botilda, ist natürlich eine Expertin, d.h. sie kennt sich mit einer Reihe von Themen besonders gut aus, z.B. wie Ihr auf einer Webseite den Stand der Bestellung erfahren könnt, oder was Ihr tun müsst, wenn Ihr euer Passwort vergessen habt. Eine gut umgesetzte Intent detection ist nun die Technik, die ihr erlaubt, bei einer Frage oder einem Kommentar des Gegenübers zu erkennen, ob ein Thema angesprochen wurde, mit dem Botilda sich auskennt. Für den Fall hat Botilda natürlich die passende Antwort parat. Wie ihr euch vermutlich bereits gedacht habt, heißen Themen im NLP-Jargon Intents. Aus diesem Grund werde ich in diesem Text beide Bezeichnungen, also Themen/Intents nutzen.
Wenn Ihr diese Kolumne regelmäßig verfolgt, dann wollt ihr ja vielleicht auch Experten für NLP werden, deswegen will ich euch auch ein wenig mehr dazu erzählen, wie eine solche Intent Detection umgesetzt werden kann.
Erkennung von Themen (Chatbot Intents)
Die Erkennung von Themen ist auch heute noch für optimale, komplexere Chatbots relevant. Auch wenn man eine Frage irgendwie an einen leicht aufgebohrtes ChatGPT stellen könnte und dort der Umweg, erst Themen zu erkennen abwegig erscheint. Doch damit nimmt man sich erstens die Chance, gerade bei sensiblen Themen selber Antworten vorzugeben oder die Wissensquellen gezielt auszusuchen. Was passieren kann, wenn man das nicht tut, könnt Ihr an anderer Stelle in unserem Blog lesen.
Früher, als große Sprachmodelle (LLMs) - wenn es sie überhaupt gab - noch in den Kinderschuhen steckten war die Erkennung von Themen etwas anders, so etwas wie ein allgemeines Sprachverständnis, war ein Traum, der in weiter Ferne lag, so dass man den "kleinen Modellen" spezielle Tricks beibringen musste. Heute kann man LLMs befragen, welches Thema eine Kundenanfrage hat. Das klingt viel einfacher, ist es aber nur bedingt, denn auch wenn das LLM sehr gut verallgemeinert, muss man schon sehr genau austarieren, welche Details man ihm mitteilen muss. Das sogenannte Prompt-Engineering, also das Formulieren der Frage an das Modell soll ja nur die Themen erkennen, die man auch beantworten möchte. Und auch die Sicherheit Eurer Daten ist hier ein wichtiger Aspekt. Was man alles falsch machen kann, behandeln wir an anderer Stelle.
Alte Welt: Sentence Embeddings (und schweben in höheren Dimensionen)
Jeder weiß doch, dass Computer nur in 0en und 1en “denken” (“binär”). Und Botilda ist doch irgendwie auch ein Computer, wie also “versteht” sie, was wir sagen? Wir brauchen erst einmal einen Weg, wie wir den Text so für unseren Chatbot übersetzen, dass sie “den Sinn” erfassen kann. Natürlich lassen sich Buchstaben sehr leicht in 0en und 1en übersetzen (wenn auch auf viele Arten – ich denke da vor allem an die Anfangszeit von “Unicode” zurück). Aber den Sinn von Worten oder sogar Sätzen hat man dann noch lange nicht in Binär-Sprache erfasst.
Dafür müssen wir uns ein wenig zurück in Eure Schul- und Studienzeit zurückdenken, in der ihr (hoffentlich!) mal etwas über Vektoren gelernt habt. Ja, das waren diese Pfeile, die man so addieren konnte, dass neue Pfeile entstehen. Oder man konnte sie als Punkte in einem bestimmten Raum, zum Beispiel einer Ebene, interpretieren.
Nun stellt euch vor, dass man jedem denkbaren Satz einen solchen Vektor, einen Punkt in einem bestimmten Raum zuordnen kann. Und zwar so, dass Sätze, die von der Bedeutung her ähnlich sind nah beieinander sind (im Idealfall egal in welcher Sprache) und dass Beziehungen, die zwischen Sätzen bestehen irgendwie durch die räumliche Beziehung ihrer zugeordneten Punkte “gespeichert” sind.
Klingt ein wenig verrückt, aber mit Hilfe von Sprach-Modellen, die ich schon in meinem ersten Blog-Beitrag "NLP – Beispiele und Potenziale" erwähnt habe, bekommt man das heutzutage sehr gut hin.
(Was Sprach-Modelle sind und wie man damit Sätze zu Vektoren macht, werde ich mal in einem der nächsten Blog-Beiträge erklären müssen.)
Die Bedeutung eines Satzes lässt sich nun also an der Position, der Fachmann spricht hier auch von einer Einbettung (englisch: embedding) des Satz-Vektors in diesem Vektorraum erfassen. Weil Sprache aber nun ziemlich komplex ist, reicht hier als “Embedding Space” oder “Einbettungs-Vektorraum” keine Ebene, sondern hier haben sich Räume bewährt, die deutlich mehr Dimensionen als die zwei einer Ebene haben. Bei einer Einbettung, die wir von moinAI nutzen, befinden wir uns zum Beispiel in einem 1000-dimensionalen Raum. Das ist für Menschen schwer vorstellbar aber die Regeln, die in solchen Räumen gelten, lassen sich mit der von mir geliebten Mathematik recht gut von unseren drei Alltags-Dimensionen (für Besserwisser: Ich habe gefühlt nie Zeit, also habe ich die vierte Dimension, mit der wir leben, hier nicht erwähnt) ableiten.
Und Vektoren bzw. Punkte lassen sich sehr einfach in Binärsprache übersetzen, sodass Botilda durch diese Vektoren eine erste Vorstellung von den Beziehungen zwischen Sätzen/Texten nutzen kann.
Damit Botilda jetzt auch noch versteht, was die verschiedenen Raumbereiche für tiefere Bedeutung haben, braucht sie nun noch ein paar Unterrichtsstunden von guten Lehrern. Damit beschäftigen wir uns im nächsten Abschnitt.
Classification – welcher Satz gehört zu welchem Thema?
Als nächsten Schritt wollen wir Botilda nun beibringen, welche Sätze zu welchem Thema gehören. Das nennt man in der Fachwelt Klassifizierung oder auf Englisch Classification (bei diesem Fachbegriff müssen die Vektoren übrigens nicht unbedingt zu Texten gehören) und anstatt von Themen spricht man eigentlich von Klassen.
Das Prinzip hinter klassischen (haha!) Klassifizierungs-Algorithmen ist tatsächlich ein wenig wie in einer Schule: Zuerst geben wir Botilda ganz viele Beispiele von Sätzen und erzählen ihr zu welchem Thema die jeweiligen Sätze gehören (das sind die sogenannten Trainings-Datensätze). Dann geben wir ihr andere Beispielsätze und sie soll uns sagen, zu welchem Thema sie die Sätze zuordnen würde (diese Sätze bilden den Test-Datensatz). Je nachdem, wie gut sie das gemacht hat bekommt sie Noten. Für die Noten hat sich allerdings ein eher wirtschaftsnaher Begriff durchgesetzt: die “Kosten” ihrer Einschätzung werden mit einer sogenannten “cost function” bewertet.
Da Botilda schlau ist, versucht sie aus dieser Bewertung ihre Schlüsse zu ziehen und wird beim nächsten Mal Themen etwas anders zuzuordnen. Wir gehen also in die nächste Runde und geben ihr noch einmal die Trainingsdaten zum Lernen und testen Botilda auf Basis der Trainingsdaten. Dieses Spiel führen wir nun solange durch, bis wir mit den Noten zufrieden sind oder sich die Noten einfach nicht mehr verbessern. In letzterem Fall müssen wir uns eventuell zusätzliche Trainingsbeispiele besorgen, damit Botilda eine gute Chance hat, noch besser zu werden.
Und wisst Ihr was daran am Besten ist, wenn ihr mit uns von moinAI zusammenarbeitet? Wir sind so ein eingespieltes Lehrer- und Trainer-Team, dass für euch fast gar nichts mehr zu tun ist. Wir geben euch zu Anfang ein paar grundlegende Tipps mit, dann sagt Ihr uns im Wesentlichen mit ein paar Beispielen, was für Anfragen Ihr erwartet und dann starten wir das Trainingscamp. Und nach kurzer Zeit habt Ihr eine einsatzbereite KI!
Gesprächstherapie – Tipps für lange glückliche Chatbot-Beziehungen
Hier möchte ich jetzt noch ein paar von den Tipps erläutern, die ich gerade erwähnt habe.
Granularität Definition
Was ist Granularität?
Wichtig ist bei KI-Chatbots immer die sogenannte Granulariät von Intents. Kurz gesagt geht es dabei darum, ob ein Thema/Intent besonders allgemein oder besonders spezifisch formuliert ist.
Um das mal an einfachen Beispielen klarzumachen: Wenn man zum Beispiel ein Thema “Technisches Problem auf der Webseite” definiert, dann ist das vermutlich eine grobe Granularität, (englischer Fachterminus “coarse granularity”), denn dieses Thema ließe sich sicher noch viel feiner aufteilen, z.B. bei einem Webshop in “Bestellübersicht Fehler”, “Abschluss der Bestellung funktioniert nicht”, “App Verbindungsproblem” und weitere Themen, die alle irgendwie etwas mit der Technik der Seite zu tun haben. Wenn man nun die Themen so detailliert aufstellt, spricht man von feiner Granularität (Überraschung: im Englischen “fine granularity”).
Ob man sich nun für eine feine oder eine grobe Granularität entscheiden sollte, hängt etwas von der Zielgruppe und den eigenen Präferenzen ab. Eine Möglichkeit, die bei uns besonders gut klappt, ist, dass man erst mit einem groben Themen-Raster anfängt und dann das moinAI Dreaming-Feature nutzt. Dieses KI-basierte Feature schlägt auf Basis der Anfragen, die tatsächlich beim Chatbot ankommen, neue Themen vor. So sieht man in der Regel sehr schnell, ob es sich lohnt ein Thema aufzusplitten. Aufpassen muss man hier nur, dass sich die Themen nicht zu stark überschneiden. Denn Botilda will ja die beste Antwort geben und das ist im Idealfall die zu einem sehr fein gewählten Intent. Aber auch da könnt Ihr euch zurücklehnen und uns machen lassen. Unsere KI erkennt solche problematischen Fälle und unsere MI (Menschliche Intelligenz – in Form von CSM- und KI-Experten 😎 ) löst die Probleme für euch. Also quasi mit KIMI.
Fallback Lösung
Was ist ein Fallback Intent?
Nach all der akademischen Ausbildung weiß Botilda als Expertin auch sehr gut, was sie nicht versteht. Mit anderen Worten, all das, was nicht zu den von ihr trainierten Themen passt, wird in einem großen Sammelthema aufgefangen. Wir sprechen hier auch gerne vom Fallback Intent. Hier empfiehlt es sich dann, eine Antwort parat zu halten, die darauf hinweist, womit sie sich auskennt. Bei der Formulierung geeigneter Antworten helfen wir als Experten für Experten-Chatbots selbstverständlich gerne weiter.
Beziehung zwischen Themen und Chatbot-Antworten
Natürlich ist am Ende Botildas Ziel, mit Ihren Antworten ihre Gesprächspartner:innen glücklich zu machen. Da es hier immer mal wieder zu Verwirrung kommt, will ich noch mal darauf hinweisen, das Themen/Intents und passende Chatbot-Antworten natürlich in einer geeigneten Beziehung zueinander stehen, aber von Ihrer Bedeutung doch sehr unterschiedlich zu betrachten sind.
Wie der Name Intent Detection schon andeutet, wollen wir hier die Bedeutung der Anfrage erschließen. Die passende Chatbot-Antwort ist aber etwas, was mit passenden Inhalten zum erkannten Thema zu tun hat und die können sich von Kontext zu Kontext unterscheiden. Um es ganz banal deutlich zu machen: Unsere Intent Detection ist mehrsprachig. Ihr könnt also dieselben trainierten Themen für all eure länderspezifischen Webseiten nutzen. Ich bezweifle aber, dass sich eure französischen Kunden mit deutschsprachigen Antworten zufriedengeben werden. Wie man die Herausforderung mit der Mehrsprachigkeit in Bezug auf die Chatbot-Antworten lösen kann, erfahrt ihr in dem Blogartikel "Chatbot-Channels: Definition und Vorteile".
Falls Ihr euch fragt wie ein Chatbot in der Kundenkommunikation eures Unternehmens aussehen könnte, dann möchte ich euch eine Chatbot-Demo ans Herz legen. Diese wird von einem unserer Consultants durchgeführt und zeigt all die Möglichkeiten eines Chatbots in der Kundenkommunikation auf. Selbstverständlich individuell für den Use-Case eurer Wahl, kostenlos und unverbindlich.