Anwendungsfall KI: KI-basierter Chatbot mit Large Language Models (LLM)

Ein KI-basierter Chatbot basiert auf einem sogenannten Large Language Model (LLM). Ein solches großes Sprachmodell kann Text verstehen und darauf basierend neue Texte generieren. Die Grundlage dafür bildet ein Neuronales Netz, das jedoch nur mit Zahlen arbeitet. Daher wird der eingegebene Text zunächst in Zahlen umgewandelt, die als Eingabe für das Neuronale Netz dienen. Das Modell gibt dann ebenfalls Zahlen zurück, die anschließend wieder in Text konvertiert werden müssen. Diese Umwandlung von Text in Zahlen und zurück übernimmt ein sogenannter Tokenizer.

Wie funktioniert Tokenisierung?

  1. Zerlegung des Textes
    Zunächst wird der Text in kleinere Einheiten aufgeteilt. Bei einem einfachen Ansatz wird der Text in Wörter zerlegt, aber moderne Modelle wie GPT verwenden komplexere Verfahren. Sie zerlegen den Text in kleinere Einheiten, wie Wortteile (Subwörter), um effizienter arbeiten zu können und eine flexiblere Handhabung von unbekannten Wörtern zu ermöglichen.
    Beispiel:
    • Der Satz “Das ist ein Beispiel” könnte in die Tokens [„Das“, „ist“, „ein“, „Beispiel“] zerlegt werden.
    • In einem subwortbasierten Ansatz könnte das Wort “Beispiel” in zwei Tokens zerlegt werden: [„Bei“, „spiel“].
  2. Numerische Darstellung
    Nachdem der Text in Tokens zerlegt wurde, wird jedem Token eine Zahl zugeordnet. Diese Zahl ist die numerische Repräsentation, die das Neuronale Netz verarbeiten kann.
    Beispiel:
    • Der Token „Das“ könnte durch die Zahl 124 und der Token „ist“ durch die Zahl 38 repräsentiert werden.
  3. Umwandlung zurück in Text
    Wenn das Sprachmodell seine Berechnungen abgeschlossen hat, gibt es eine Abfolge von numerischen Werten zurück, die dann wieder in Tokens und schließlich in lesbaren Text umgewandelt werden.

Eine effiziente Tokenisierung ermöglicht es dem Modell, Texte präziser und mit weniger Tokens zu verstehen. Moderne Tokenisierungsansätze wie Byte Pair Encoding (BPE) oder Unigram Language Model sorgen dafür, dass häufige Wörter als ein Token dargestellt werden, während seltenere oder komplexe Wörter in kleinere Teile zerlegt werden, um möglichst viel Sprachinformation effizient zu nutzen.

Wie erfolgt das Training eines Neuronalen Netzes zu einem Sprachmodell?

Das Training eines Sprachmodells ist ein komplexer Prozess, bei dem das Modell darauf trainiert wird, Sprache zu verstehen und darauf zu reagieren. Es basiert auf großen Mengen von Textdaten und nutzt ein Neuronales Netz, um Muster und Beziehungen zwischen Wörtern zu lernen.
Der Trainingsprozess lässt sich in mehreren Schritten beschreiben:

  1. Datenerhebung
    Der erste Schritt besteht darin, riesige Mengen an Textdaten zu sammeln. Diese Daten stammen aus verschiedenen Quellen wie Büchern, Artikeln, Webseiten, Foren oder Dialogen. Ziel ist es, eine möglichst breite und diverse Basis an Sprache zu haben, damit das Modell unterschiedlichste Kontexte versteht.
  2. Datenaufbereitung
    Die gesammelten Textdaten werden vor dem Training durch mehrere Schritte verarbeitet:
    • Bereinigung: Unnötige oder fehlerhafte Daten (z.B. Sonderzeichen) werden entfernt.
    • Tokenisierung: Der Text wird in kleinere Einheiten (Tokens) zerlegt, die das Modell verarbeiten kann. Diese Tokens können Wörter, Wortteile oder Zeichen sein.
    • Padding und Truncation: Da verschiedene Texte unterschiedlich lang sind, werden sie entweder gekürzt (Truncation) oder mit speziellen Tokens aufgefüllt (Padding), damit alle Eingaben dieselbe Länge haben.
  3. Modellarchitektur
    Das Modell selbst besteht aus einem Neuronalen Netz, das in der Regel eine spezielle Architektur verwendet, um Sprache zu verarbeiten. Eine der gebräuchlichsten Architekturen für Sprachmodelle ist der Transformer, der im Jahr 2017 vorgestellt wurde.
  4. Trainingsziel
    Das häufigste Trainingsziel für Sprachmodelle ist es, die Wahrscheinlichkeit des nächsten Wortes in einem Satz vorherzusagen. Dies wird auch als Next-Word Prediction oder Autoregressive Modellierung bezeichnet. Das Modell lernt dabei, basierend auf den vorherigen Wörtern im Text das nächste Wort zu erraten.
  5. Verlustfunktion
    Die Verlustfunktion (Loss Function) gibt an, wie gut oder schlecht das Modell beim Vorhersagen des nächsten Wortes abschneidet. Der Unterschied zwischen der tatsächlichen Wortfolge und der vom Modell vorhergesagten Sequenz wird gemessen, und das Modell wird angepasst, um diesen Fehler zu minimieren. Übliche Verlustfunktionen für Sprachmodelle sind die Cross-Entropy oder der logarithmische Verlustfunktion.
  6. Backpropagation und Optimierung
    Der Lernprozess erfolgt durch Backpropagation. Hierbei wird der Fehler, den das Modell bei der Vorhersage gemacht hat, zurück durch die Schichten des Neuronalen Netzes „zurückgeführt“. Auf diese Weise können die Gewichte (die Parameter, die das Modell während des Trainings lernt) angepasst werden.
  7. Validieren
    Nach dem Training wird das Modell auf einem separaten Validierungsdatensatz getestet, der nicht im Training verwendet wurde. Dies hilft dabei, zu überprüfen, ob das Modell gut verallgemeinern kann.

Fine-Tuning

Nachdem das Modell auf großen allgemeinen Datenmengen trainiert wurde, wird es oft auf spezifische Aufgaben oder Domänen feinabgestimmt (Fine-Tuning). Hierbei werden kleinere Datensätze verwendet, die spezifisch für die gewünschte Aufgabe oder Anwendung sind, wie z.B. Chatbot-Dialoge, medizinische Texte oder juristische Dokumente.

Wie wird eine komplette Antwort auf eine Frage generiert?

Die Generierung einer kompletten Antwort auf eine Frage durch ein Sprachmodell erfolgt durch eine iterative Vorhersage von Wörtern, die Schritt für Schritt zu einem vollständigen Text zusammengesetzt werden.

  1. Eingabe der Frage
    Der erste Schritt besteht darin, die Frage oder den Kontext, den das Sprachmodell beantworten soll, als Eingabe zu erhalten. Die Frage wird zunächst tokenisiert, d.h. in kleinere Einheiten (Tokens) zerlegt, die vom Modell verarbeitet werden können.
    Beispiel:
    • Frage: „Was ist das größte Land der Welt?“
    • Tokens: [„Was“, „ist“, „das“, „größte“, „Land“, „der“, „Welt“, „?“]
  2. Wiederholung des Prozesses Token für Token
    Sobald das erste Token der Antwort vorhergesagt wurde, wird dieses Token zum bestehenden Text hinzugefügt. Nun berechnet das Modell das nächste Wort basierend auf dem bisherigen Text (der Frage und dem bereits generierten Teil der Antwort).
    Beispiel:
    • Generierte Antwort bis jetzt: „Russland“
    • Vorhersage des nächsten Tokens: „ist“
  3. Beendigung der Generierung
    Das Modell wiederholt den zuvor beschriebenen Vorgang Schritt für Schritt, bis eine vollständige Antwort generiert ist. Es wird also jedes Mal das nächste Token basierend auf dem bisherigen Text vorhergesagt. Dieser iterative Prozess endet, wenn ein Abbruchkriterium erreicht ist., z.B.:
    • Ein spezielles End-Token (wie [END]), das die Generierung abschließt.
    • Ein Satzzeichen wie ein Punkt, Fragezeichen oder Ausrufezeichen.
    • Maximale Tokenanzahl, falls keine natürliche Stoppbedingung erreicht wird.
      Beispiel:
      • Frage: „Was ist das größte Land der Welt?“
      • Antwort des Modells: „Russland ist das größte Land der Welt nach Fläche.“

Während des gesamten Prozesses verwendet das Modell den Self-Attention-Mechanismus, um sicherzustellen, dass es den gesamten Kontext der Frage berücksichtigt. Dadurch kann das Modell relevante Informationen aus der Frage herausfiltern, um kohärente Antworten zu geben.
Beispiel:

  • Wenn die Frage lautet: „Was ist die Hauptstadt von Frankreich?“, sollte das Modell „Paris“ als Antwort generieren, indem es den Zusammenhang zwischen „Hauptstadt“ und „Frankreich“ versteht.

Literatur

  • Jonas Freiknecht: KI-Sprachassistenten mit Python entwickeln: Datenbewusst, Open Source und modular. Hanser, München, 2. Auflage, 2024.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen