Wie funktioniert ChatGPT?

Wie funktioniert ChatGPT?

Erfahre, wie ChatGPT funktioniert: Ein Überblick über Tokens, Wahrscheinlichkeiten und die Technik hinter den Sprachmodellen von OpenAI.

·12 Min. Lesezeit·Wissen
Liam van der Viven

Liam van der Viven

Mitgründer & CTO bei botBrains.io

ChatGPT ist ein Produkt von OpenAI und ermöglicht natürliche und fließende Konversationen mit Benutzern. ChatGPT ist eine Oberfläche für die GPT-Sprachmodelle von OpenAI. Die Frage nach ChatGPT ist also eigentlich die Frage, wie die dahinterstehenden Sprachmodelle, zum Beispiel GPT-4o, funktionieren. In diesem Artikel werfen wir einen Blick auf die Funktionsweise dieser Technologie.

Was ist ein Large Language Model (LLM)?

Ein Large Language Model (LLM) ist ein statistisches Modell. LLMs sind darauf trainiert, basierend auf einem gegebenen Text das nächste Wort zu erraten. Durch riesige Datenmengen wird jedoch in diesem statistischen Modell mehr als nur einfaches Erraten erreicht.

LLMs wie GPT-4o sind in der Lage, Texte zu schreiben, Fragen zu beantworten, Übersetzungen anzufertigen und komplexe Anweisungen zu befolgen.

Grundprinzip: Ein LLM ist kein „intelligentes“ System im menschlichen Sinne, sondern ein statistisches Modell, das basierend auf Wahrscheinlichkeiten Vorhersagen trifft, welches Wort oder Token als nächstes kommt.

Wie funktioniert ein Large Language Model?

Ein LLM basiert auf der Verarbeitung von Tokens und der Berechnung von Wahrscheinlichkeitsverteilungen. Diese Schritte sind die Grundlage für alle Funktionen eines LLMs.

Was sind Tokens?

Tokens sind Buchstabenfolgen, die ein Sprachmodell verarbeitet. Sie können Wörter, Wortteile oder sogar einzelne Zeichen sein, abhängig davon, wie das Modell trainiert wurde. Die meisten LLMs arbeiten auf Zeichenketten von 1 bis 6 Buchstaben, um die Komplexität zu reduzieren. GPT-4o ist ein LLM, welches von OpenAI entwickelt wurde und zum Beispiel 199.998 Tokens kennt.

Tokens dienen dem Modell dazu, Text in eine strukturierte Form zu zerlegen, die es analysieren kann.

Beispiel:

Satz: "Ich gehe einkaufen."
Tokens könnten sein:

  • ["Ich", "gehe", "einkaufen", "."]
  • Oder bei GPT-4o Tokenisierung: ["Ich", "gehe", "eink", "aufen", "."]

Probiere es selber aus:

Schreibe einen Satz deiner Wahl und schaue dir die Satzbausteine (Tokens) an, die das Modell erkennt. Es handelt sich um die tatsächliche Tokenisierung von ChatGPT mit Modell GPT-4o.

Wie generieren Sprachmodelle Text?

Ein LLM funktioniert, indem es für eine Abfolge von Tokens vorhersagt, welches Token am wahrscheinlichsten folgt.

  • Das Modell analysiert den bisherigen Text (die Eingabe).

  • Es berechnet, wie wahrscheinlich jedes mögliche nächste Token ist. Bei GPT-4o sind dies 199.998 Wahrscheinlichkeiten, da es 199.998 Tokens gibt.

  • Nun wird gesampled. Es wird oft fälschlicherweise gesagt, dass das Token mit der höchsten Wahrscheinlichkeit gewählt wird. Tatsächlich wird ein Token basierend auf einer Wahrscheinlichkeit gewählt, wobei natürlich das Token mit der höchsten Wahrscheinlichkeit am ehesten gewählt wird.

    Anders gesagt: Der Computer wählt eine zufällige Zahl zwischen 0 und 1. Wir verteilen Bereiche zwischen 0 und 1 gemäß der Wahrscheinlichkeit, zum Beispiel a mit 0,3, b mit 0,4, c mit 0,2 und d mit 0,1, dann sind die Bereiche 0 - 0,3 - 0,7 - 0,9 - 1,0. Wenn die Zufallszahl 0,6 ist, wird Token b gewählt.

  • Basierend auf dieser Auswahlmethode wird das Token mit der höchsten Wahrscheinlichkeit oder ein Token gemäß der Wahrscheinlichkeit genommen. Fortgeschrittene Anwender haben wahrscheinlich schon von der Temperature gehört, einem Steuerungsparameter, welcher die Wahrscheinlichkeiten beeinflusst, um mehr Varianz beim Sampling herbeizuführen. Mehr dazu später.

Beispiel

Um das Prinzip zu veranschaulichen, nehmen wir den einfachen Satzanfang „Ich gehe in das“. Das Modell könnte die Wahrscheinlichkeiten für die nächsten Tokens wie folgt berechnen:

  • "Haus": 12%
  • "Wald": 7%
  • "Himmel": 4%
  • "Zoo": 2%
  • 199.994 weitere Tokens mit geringerer Wahrscheinlichkeit, in Summe 75%

Vereinfacht sagen wir, das Modell wählt zufällig tatsächlich immer das Token mit der höchsten Wahrscheinlichkeit. Das Modell wählt also "Haus". Falls du dich fragst, warum es "W" und "H" gibt, schau doch mal, wie "Wald" und "Himmel" tokenisiert werden. Ergebnis: „Ich gehe in das Haus“

Nun wiederholt sich die Auswahl für die nächste Tokenfolge.

Eingabe: „Ich gehe in das Haus“

  • ".": 23%
  • " und": 20%
  • " mit": 17%
  • 199.995 weitere Tokens mit geringerer Wahrscheinlichkeit, in Summe 40%

Nun wiederholt sich das Sampling für die nächste Tokenfolge.

Eingabe: "Ich gehe in das Haus."

  • End-Of-Sequence: 23%
  • " Am": 20%
  • " Gestern": 17% (Referenziert "Gestern")
  • 199.995 weitere Tokens mit geringerer Wahrscheinlichkeit, in Summe 40%

Finales Ergebnis: "Ich gehe in das Haus." EOS

Wir sehen also, dass das Modell basierend auf den Wahrscheinlichkeiten iterativ ganze Sätze bauen kann.

Wann hört ein LLM auf, Tokens zu generieren?

Ein LLM nimmt die Eingabe und beginnt immer weiter, den nächsten Token zu erstellen, an die Eingabe anzuhängen und den Ablauf zu wiederholen. Damit wir nicht unendlichen Text bekommen, hat man zwei Regeln eingebaut: Entweder eine feste Anzahl von Tokens wurde erstellt oder eine bestimmte Folge von Tokens, welche wir auch Stopwords nennen, wurde erzeugt. Bei GPT-4o gibt es einen speziellen Token, mit dem das Modell angewiesen wird, die Generierung zu beenden. Dieser Token nennt sich End-Of-Sequence, also das Ende-der-Sequenz-Token und trägt die Identifikationsnummer 0. Dieser ist stets in den Stopwords enthalten. Somit kann das Modell, wie auch bei allen anderen Tokens, erlernen, wann es aufhören soll zu generieren.

Warum ist jedem Token eine sequenzielle Zahl zugeordnet?

In der Demonstration oben siehst du eine Folge von Zahlen, die in einer Liste stehen, etwa 127544, 2496, 49936, 17951, 4047, 37977, 7553, 22380, 40769, 2434, 152885, 30 (Input: "Warum ist jedem Token eine sequenzielle Zahl zugeordnet?")

Vereinfacht ist die Antwort: Der Computer kann mit Zahlen besser umgehen als mit Wörtern.

Die Zahlen sind eine Kodierung, die dem Modell hilft, die Tokens zu verarbeiten und zu generieren. Computer machen am Ende nur Dinge, die wir Menschen ihnen beigebracht haben, also müssen wir die Operationen verstehen. Wir Menschen denken bei Wahrscheinlichkeiten von vielen Elementen in Vektoren bzw. Matrizen. Wer sich an Mathe erinnert, weiß, dass Punkte in einem 3D-Raum als (x, y, z)-Koordinaten dargestellt werden. Diese Koordinaten sind eine Art „Kodierung“, wie wir in x-, y- und z-Richtung laufen müssen. Nur dass wir hier nicht 3 Achsen haben, sondern 199.998 Achsen, und die Distanz in jede Richtung die Wahrscheinlichkeit zwischen 0 und 1 ist, also 0,2 = 20% Wahrscheinlichkeit.

Computer, insbesondere Graphics Processing Units (GPUs), sind darauf optimiert, mit Matrizen zu arbeiten. Daher ist die Nachfrage nach ihnen aktuell so hoch.

Warum sind Tokens nicht immer Wörter?

Wie die Zerlegung von Sätzen in Tokens geschieht, ist ein eigenes Forschungsfeld, welches sich mit der Tokenisierung beschäftigt. Um das Thema nur kurz anzuschneiden: Man probiert, die Tokens so zu wählen, dass sie die Bedeutung des Satzes möglichst gut wiedergeben, aber auch die Komplexität des Modells nicht zu hoch wird.

Was genau meine ich hier mit Komplexität? Schauen wir uns dazu zwei Extreme an:

  • Jedes Wort - ein Token: Kodiert man jedes Wort aller Sprachen weltweit in jeder Konjugation, Deklination, etc., haben wir wenige 10 Millionen Tokens. Grundsätzlich machbar, jedoch würde das Modell sehr lange brauchen, um zu trainieren, sehr viel Speicherplatz benötigen und für jede Generierung Millionen von Gewichten errechnen müssen. Das hat sich nicht als optimale Konfiguration durchgesetzt.

  • Jedes Zeichen - ein Token: Kodiert man jedes Zeichen auf der Welt als einen Token, so ist der Speicherverbrauch und die Berechnung der Gewichte pro Schritt einfacher. Jedoch ist die kontextuelle Bedeutung von 'a' deutlich schwieriger zu erlernen als 'Haus'. Die Errechnung der Wahrscheinlichkeitsverteilung ist damit kontextuell schwieriger, da die Tokens zu klein sind bzw. in zu vielen verschiedenen Kontexten in den Trainingsdaten auftauchen, als dass ein LLM das Muster gut erkennen könnte. Zudem müssen wir für selbst kurze Sätze sehr viele Generierungsschritte durchführen, was das Modell langsamer macht. Frühere Versionen von GPT (z. B. GPT-2) haben genau das gemacht, und es hat sich gezeigt, dass die Qualität der Generierungen darunter leidet.

Wir sehen also, es gibt einen Trade-off zwischen der Menge, die wir trainieren müssen, um die kontextuelle Bedeutung eines Tokens zu lernen, wie viele Iterationsschritte wir pro Generierung durchführen müssen und wie teuer jeder dieser Generationsschritte ist (200.000 vs. Millionen von errechneten Gewichten). Es gibt noch weitere wichtige Gründe, die aber den Rahmen dieses Artikels sprengen würden. Wenn du mehr darüber erfahren möchtest, schreib uns gerne eine Nachricht.

Es ist wichtig zu erwähnen, dass die Tokenisierung auf einer Analyse und einem Training anhand von Textdaten basiert. Dadurch entstehen manchmal ungewöhnliche Muster: Beispielsweise können 5 Ausrufezeichen als 1 Token repräsentiert werden, 6 Ausrufezeichen hingegen als 2 Tokens, während 7 Ausrufezeichen wieder als 1 Token verarbeitet werden. Damit geht es auch weiter: 16 Ausrufezeichen könnten als 1 Token dargestellt werden, 15 benötigen jedoch 3 Tokens. Spiel gerne mit dem Tokenizer oben herum und schau dir an, wie den Text in Tokens übersetzt.

Warum befolgt ChatGPT meine Anweisungen (meistens)?

LLMs befolgen Regeln nicht, weil sie diese „verstehen“, sondern weil sie auf Muster und Wahrscheinlichkeiten basieren. Regeln entstehen, weil das Modell während seines Trainings in Textdaten auf wiederkehrende Strukturen stößt, die bestimmte Muster erzeugen. Lasst uns das ein wenig genauer betrachten:

Die Rolle der Wahrscheinlichkeiten

Nehmen wir an, du gibst dem Modell die Anweisung: „Schreibe die Wörter Katze, Hund und Maus mit Bindestrichen getrennt.“ Das Modell erkennt anhand der Trainingsdaten:

  • Nach „Katze“ folgt oft „-“ in dieser Art von Anweisung.
  • Nach einem „-“, ist das nächste Token wahrscheinlich „Hund“.
  • Nach „Hund“ folgt ebenfalls „-“, und danach „Maus“.

Warum funktioniert das?

  • Statistisches Lernen: Das Modell hat während des Trainings ähnliche Anweisungen gesehen und gelernt, die Wahrscheinlichkeiten entsprechend zu berechnen.
  • Mustererkennung: Häufige Sequenzen in den Trainingsdaten werden im Modell „kodiert“ und angewendet.

Beispiel: Regelbefolgung bei Token-Wahrscheinlichkeiten

Anweisung: „Liste die Zahlen 1 bis 3 mit Bindestrichen auf.“

  • Wahrscheinlichkeitsverteilung:
    • Nach „1“ ist die wahrscheinlichste Fortsetzung „-“.
    • Nach „- 1“ ist das nächste Token „2“.
    • Nach „- 1 - 2“ ist die wahrscheinlichste Fortsetzung „3“.

Ergebnis: „1 - 2 - 3“

Das Modell erzeugt diese Struktur nicht, weil es versteht, was Zahlen oder Bindestriche sind, sondern weil diese Kombination die wahrscheinlichste Fortsetzung ist, basierend auf den Trainingsdaten.

Idiomatische Sprachregeln

Ähnlich funktioniert dies bei idiomatischen Ausdrücken. Wenn das Modell lernt, dass "break the ice" im Deutschen als "das Eis brechen" übersetzt wird, wählt es diese Übersetzung, weil:

  • Die Tokens "break", "the", und "ice" in den Trainingsdaten häufig mit "das", "Eis" und "brechen" verknüpft sind.
  • Das Modell die idiomatische Übersetzung als wahrscheinlicher bewertet als eine wortwörtliche Übersetzung wie "breche das Eis".
  • Kontextuell hat das Modell aber auch gelernt, dass die Tokenfolge eng verwandt ist mit "Die Stimmung auflockern", "Die Spannung lösen" und "Den ersten Schritt machen".

Was ist die Temperature?

Die "Temperature" eines Sprachmodells ist eine Einstellung, welche die Auswahl der nächsten Wörter (Tokens) steuert, basierend auf deren Wahrscheinlichkeiten. Sie wirkt wie eine Art „Regler“, der entscheidet, wie vorhersehbar oder zufällig die Antworten sein sollen.

Vor der Berechnung der nächsten Wörter wird die Temperature angewendet, um die Wahrscheinlichkeiten der möglichen Wörter anzupassen. Eine Temperature kleiner als 1 verstärkt hohe Wahrscheinlichkeiten und verringert niedrige Wahrscheinlichkeiten. Eine Temperature größer als 1 verteilt die Wahrscheinlichkeiten gleichmäßiger, sodass auch weniger wahrscheinliche Tokens eine höhere Wahrscheinlichkeit bekommen und bereits wahrscheinliche Tokens eine gedämpfte Wahrscheinlichkeit erhalten.

Die Temperature wird also genutzt, um die Zufälligkeit und Kreativität der Wortauswahl zu regulieren – je nach gewünschtem Verhalten des Modells.

Übertragbarkeit auf Mistral, Claude und andere LLMs

Die beschriebene Funktionsweise von LLMs ist auf alle Modelle übertragbar. Große Modell-Reihen und Anbieter von LLMs sind beispielsweise

Fazit

ChatGPT ist eine Oberfläche für die Large Language Modelle von OpenAI. Large Language Modelle sind statistische Modelle, welche Text in Tokens konvertieren und zu Folgen von Tokens den nächsten Token vorhersagen. Wir haben uns das LLM GPT-4o von OpenAI angeschaut. ChatGPT befolgt Anweisungen, weil es Muster und Wahrscheinlichkeiten in den Trainingsdaten erkennt, nicht weil es die Anweisungen „versteht“. Die Temperature ist ein Werkzeug, um die Zufälligkeit der Wortauswahl zu steuern.

Weiterführende Lektüre

Über den Autor

Liam van der Viven

Liam ist Mitgründer von botBrains und leitet die technische Entwicklung als CTO. Zuvor war Liam als Softwareentwickler bei Amazon Web Services tätig. Er hat sein Studium in IT-Systems Engineering mit einem Bachelor of Science am renommierten Hasso-Plattner-Institut erfolgreich abgeschlossen.