1 Einführung
1.1 KI verändert die Welt
Die Verfügbarkeit von riesigen Datenmengen und Rechenkapazitäten hat Anwendungen Künstlicher Intelligenz (KI), insbesondere basierend auf Deep Learning, in vielen Bereichen zum Durchbruch verholfen:
- Bilderkennung (z.B. Personen auf Photos)
- Autonomes Fahren
- Sprachverarbeitung, insb. Chatbots
- Multimodale Sprachanwendungen, etwa zur Generation von Bildern und Videos
- Agentische Systeme …
Ziel dieses Beitrags ist es, die Funktionsweise moderner Sprachmodelle (LLMs) möglichst verständlich zu erläutern. Vereinfacht ausgedrückt, geht es also um die Frage: Was passiert im Hintergrund, wenn ich bei ChatGPT Text eingebe?

1.2 Vorbote von ChatGPT: Google-Transformer-Paper
Mit der Veröffentlichung “Attention is all you need” haben Wissenschaftler von Google Brain und Google Research der Computerlinguistik im Jahr 2017 eine neue Richtung gegeben.

Das Paper bezog sich konkret auf maschinelle Übersetzung Englisch-Deutsch bzw. Englisch-Französisch. Die neuen Konzepte (Transformer mit Self-Attention) werden jedoch von allen führenden Sprachmodellen eingesetzt.
Das Feld ist weithin hochaktiv: Zwischenzeitlich wurden 180.000 Arbeiten veröffentlicht, die sich auf das Transformer-Paper beziehen.

2 Elementare Computerlinguistik
Computerlinguistik, d.h. die automatische Verarbeitung natursprachlicher Texte (Natural Language Processing, NLP) …
2.1 Bag of Words (BoW) - Textklassifizierung
Wir beginnen mit Bag of Words (BoW), einem konzeptionell einfachen Algorithmus. Dieser kann genutzt werden, um Dokumente bzw. Textfragmente (z.B. Sätze) automatisch nach (einem vorgegebenen Satz von) Themen zu klassifizieren.
Als Beispiel betrachten wir folgende 9 (kurzen) Sätze:
- Fußball ist spannend.
- Ich spiele gerne Tennis.
- Sport macht Spaß
- Heute ist es sonnig.
- Morgen wird es regnen.
- Das Wetter ist schön.
- Ich esse gern Pizza.
- Brot ist lecker.
- Obst ist gesund.
Für uns als Menschen ist offensichtlich, dass diese Sätze anhand von Schlüsselbegriffen thematisch gruppiert werden können (hier farbig markiert):
| Nr | Satz (HTML) | Thema |
|---|---|---|
| 1 | Fußball ist spannend. | Sport |
| 2 | Ich spiele gerne Tennis. | Sport |
| 3 | Sport macht Spaß | Sport |
| 4 | Heute ist es sonnig. | Wetter |
| 5 | Morgen wird es regnen. | Wetter |
| 6 | Das Wetter ist schön. | Wetter |
| 7 | Ich esse gern Pizza. | Essen |
| 8 | Brot ist lecker. | Essen |
| 9 | Obst ist gesund. | Essen |
Bemerkungen zu nicht-Schlüsselwörtern
Andere Wörter sind weniger eindeutig: “spiele” könnte sich statt auf Sport z.B. auch auf ein Instrument oder Gesellschaftsspiel beziehen, “gesund” statt auf Essen auch auf Sport etc.; “ist”, “ich”, “es” etc. sind recht generisch (während “schön”, “gerne” eher auf Stimmungen verweisen). Dessen ungeachtet erscheint es i.A. vielversprechend, die in einem Satz auftretenden Wörter zur Analyse und Klassifikation zu verwenden.
In der Bag of Words-Methode extrahiert man zunächst aus einem Korpus das Vokabular. Für unsere 9 Sätze umfasst dieses 26 Wörter (die einheitlich klein geschrieben werden):
[‘brot’, ‘das’, ’es’, ’esse’, ‘fußball’, ‘gern’, ‘gerne’, ‘gesund’, ‘heute’, ‘ich’, ‘ist’, ’lecker’, ‘macht’, ‘morgen’, ‘obst’, ‘pizza’, ‘regnen’, ‘schön’, ‘sonnig’, ‘spannend’, ‘‘spaß’, spiele’, ‘sport’, ’tennis’, ‘wetter’, ‘wird’].
Anhand dieses definierten Vokabulars, einer (hier alphabetisch) sortierten Wortliste, kann jeder der Sätze (allgemeiner: jedes Dokument) auf einen sogenannten Merkmalsvektor (feature vector) abgebildet werden, dessen n-ter Eintrag angibt, ob das n-te Wort des Vokabulars darin vorkommt (one-hot vector).
Für Satz 1 (S1) hat diese Abbildung folgende Form (mit Merkmalsvektor in Zeilennotation):
$$
S_1 = \text{“Fußball ist spannend.”} \longrightarrow \mathbf{x}_1 =[0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0]
$$
Die Elemente 1-4 des Vektors haben den Wert 0, weil die Wörter ‘brot’, ‘das’, ’es’, ’esse’ nicht im Satz vorkommen. Das 5. Element hat den Wert 1, weil das Wort ‘fußball’ vorkommt. Insgesamt gibt es 3 nichtverschwindende Elemente, weil der Satz 3 verschiedene Wörter hat (die per Konstruktion alle im Vokabular vorkommen).Erklärung der Vektor-Einträge
Etwas übersichtlicher erscheint die Zuordnung in der Dokument-Term-Matrix (DTM); abgesehen von der Kopfzeile entsprechen die Spalten den Merkmalsvektoren (in Spaltennotation):
| S1 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9 | |
|---|---|---|---|---|---|---|---|---|---|
| brot | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
| das | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
| es | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
| esse | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
| fußball | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| gern | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
| gerne | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| gesund | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
| heute | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
| ich | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
| ist | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 |
| lecker | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
| macht | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| morgen | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
| obst | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
| pizza | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
| regnen | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
| schön | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
| sonnig | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
| spannend | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| spaß | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| spiele | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| sport | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| tennis | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| wetter | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
| wird | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
Die Bag of Words-Methode beruht nun darauf, dass durch die Abbildung der Sätze (Dokumente) auf Merkmalsvektoren generische Algorithmen für die Klassifikation von Vektorgrößen genutzt werden können (siehe Kapitel 3). Konkret wird dazu ein neuronales Netz (in der Regel mit Softmax-Aktivierung) verwendet.
In einer Trainingsphase werden Parameter des Neuronalen Netzes (Gewichte - weights) angepasst (“gelernt”), die dann bei der Anwendung auf ein (i.d.R. zuvor noch nicht betrachtetes) Dokument die Klassifizierung erlauben.
Zur Illustration konstruieren wir “von Hand” ein vereinfachtes Verfahren, das wesentliche Aspekte enthält. Dazu betrachten wir nur relevant erscheinende Begriffe und weisen diesen Wertungspunkte (auf einer Skala von 1-5) für die drei betrachteten Klassen zu:
| Sport | Wetter | Essen | |
|---|---|---|---|
| brot | 0 | 0 | 5 |
| esse | 0 | 0 | 5 |
| fußball | 5 | 0 | 0 |
| gesund | 2 | 0 | 2 |
| lecker | 0 | 0 | 4 |
| obst | 0 | 0 | 5 |
| pizza | 0 | 0 | 5 |
| regnen | 0 | 5 | 0 |
| schön | 0 | 2 | 0 |
| sonnig | 0 | 5 | 0 |
| spiele | 2 | 0 | 0 |
| sport | 5 | 0 | 0 |
| tennis | 5 | 0 | 0 |
| wetter | 0 | 5 | 0 |
Einem gegebenen Satz kann man durch Summation der Teil-Scores einen Wertungsvektor z (für Klassen [Sport, Wetter, Essen]) zuordnen, hier für Beispielsatz 2: $$ S_2 = \text{“Ich spiele gerne Tennis.”} \longrightarrow \mathbf{x}_2 = [0,0 …0,1,0,\dots] \longrightarrow \mathbf{z}_2 = [5+2,0,0] = [7,0,0] $$ In diesem Fall hat das Rohergebnis (Logit) einen nichtverschwindenden Wert nur für die der Klasse “Sport” zugeordnete Komponente. Im Rahmen des Verfahrens geht es also zu 100% um Sport.
In einem komplexeren Fall kann die Lage weniger eindeutig sein: $$ S_{10} = \text{“Nach dem Sport esse ich gerne Pizza.”} \longrightarrow \mathbf{x}_{10} = \dots \longrightarrow \mathbf{z}_{10} = [5,0,5+5] = [5,0,10] $$ Hier geht es also um Sport und um Essen. Wenn eine eindeutige Entscheidung gefordert ist, müsste “Essen” das Klassifikationsergebnis sein (wegen höherem Score in der 3. Komponente). Dazu könnte als “Aktivierungsabbildung” die Maximum-Funktion gewählt werden (die den Vektor [5,0,10] auf [0,0,1] abbildet).
Im Fall eines neuronalen Netzes haben die Gewichte (u.a. wegen verdeckter Schichten) i.A. weniger klare Interpretationen als obige Score-Werte. Es ist jedoch davon auszugehen, dass Schlüsselwörter jeweils durch Pfade mit hohen Gewichten mit der zugehörigen Klasse verbunden sind (etwa “Fußball” mit “Sport”).
2.2 Ngram methods
In der Bag of Words-Methode wird die Reihenfolge von Wörtern komplett ignoriert: Die Sätze “Mann beißt Hund” und “Hund beißt Mann” werden auf den gleichen Merkmalsvektor abgebildet. Offensichtlich eignet sich dieses Modell nicht zur Generation von Texten.
Man kann jedoch Tupel von Wörtern (allgemeiner: Tokens, siehe Kapitel 3) betrachten, etwa Folgen aus 2 oder 3 Wörtern. Konkret extrahiert man aus einem Trainingskorpus das Vokabular an Wörtern sowie an Tupeln und Tripeln samt Häufigkeiten.
Beispiel: Wir betrachten (exemplarisch) die beiden Ausgangssätze (mit 3 bzw. 4 Wörtern)
- Fußball ist spannend.
- Ich esse gern Pizza.
Daraus erhält man die 7 Unigramme, d.h. das Vokabular (hier zur Übersicht in der Reihenfolge des Vorkommens)
[fußball, ist, spannend, ich, esse, gern, pizza],
die 5 Bigramme
[fußball ist, ist spannend, ich esse, esse gern, gern pizza]
und die 3 Trigramme
[fußball ist spannend, ich esse gern, esse gern pizza]
Bemerkung zu Satzgrenzen
Hier werden keine N-Gramme betrachtet, die sich über Satzgrenzen erstrecken, weil diese die Korrelationen stark ändern (und allgemein reduzieren).
Führt man eine derartige Analyse für einen hinreichend großen Korpus durch, erhält man (ggf. themenbezogen) eine Statistik von Wortfolgen, die genutzt werden kann, um wahrscheinliche Satzfortsetzungen zu finden. Angenommen, die Analyse hat folgende Trigramme gefunden, die mit “esse gern” beginnen:
| Trigramm | Häufigkeit |
|---|---|
| esse gern pizza | 5 |
| esse gern japanisch | 2 |
| esse gern zu | 4 |
| esse gern nichts | 1 |
Ein Ngram-Textgenerator würde den begonnenen Satz “Ich esse gern” also mit der wahrscheinlichsten Fortsetzung “pizza” vervollständigen; ein Ngram-Vorschlagssystem könnte als Fortsetzungen “pizza” und “zu” vorschlagen (zur Auswahl durch den Anwender). Falls ein Textanfang keinem bekannten Trigramm entspricht, wird ersatzweise auf Bigramme (oder nachrangig Unigramme) zurückgegriffen.
Die in Kapitel 4 betrachteten modernen Sprachmodelle eignen sich erheblich besser zur Erzeugung von Texten. Varianten der Ngram-Methode werden jedoch weiterhin u.a. für die Auto-Vervollständigung (während der Texteingabe) in Smartphones genutzt.
2.3 Sentiment-Analyse
Eine wichtige Anwendung der automatischen Klassifikation von Texten bezieht sich auf die Haltung bzw. Stimmung, also die Frage ob (etwa eine Nachricht an den Kundenservice) insgesamt positiv bzw. lobend oder negativ bzw. verärgert erscheint. Dazu werden traditionell die Bag-of-Words-Methode bzw. N-Gramm-Methoden (die u.a. den Einfluss von Verneinungen erfassen können) eingesetzt.
3 Numerische Analysen
In der Literatur zu KI und Maschinellem Lernen hat sich die Vorhersage von Haus-Verkaufspreisen als absolutes Standardbeispiel etabliert. Es geht also darum, für ein zum Verkauf stehendes Haus (samt Grundstück) anhand charakteristischer Kenndaten den zu erwartenden Verkaufspreis vorherzusagen.
Nehmen wir an, es liegt ein Datensatz folgender Art über Hausverkäufe der letzten Jahre vor:
| Haustyp | Grundstück (m²) | Wohnfläche (m²) | # Zimmer | Alter (Jahre) | Wohnlage | Preis (EUR) | |
|---|---|---|---|---|---|---|---|
| 1 | Reihenhaus | 200 | 110 | 5 | 0 | + | 450.000 |
| 2 | Einfamilienhaus | 900 | 180 | 7 | 30 | - | 350.000 |
| 3 | Reihenhaus | 250 | 110 | 5 | 25 | ++ | 750.000 |
| 4 | Doppelhaushälfte | 500 | 140 | 6 | 10 | o | 650.000 |
| … | … | … | … | … | … | … | … |
| 100 | Reihenhaus | 300 | 150 | 5 | 5 | + | 600.000 |
Grundsätzlich erscheint die Hoffnung berechtigt, aus solchen Daten Modelle abzuleiten, die fundierte Preisvorhersagen erlauben.
3.1 Lineare Regression
Wir beschränken uns zunächst auf “gute Wohnlagen” (+) und nehmen an, dass dann die Wohnfläche der für die Preisfindung dominierende Faktor ist. Hier ein (künstlich generierter) Beispielsatz von Trainingsdaten:
| Wohnfläche (m²) | Preis (EUR) | |
|---|---|---|
| 1 | 72 | 310005 |
| 2 | 92 | 341896 |
| 3 | 102 | 386480 |
| 4 | 114 | 427631 |
| 5 | 130 | 501599 |
| 6 | 135 | 457250 |
| 7 | 170 | 578738 |
| 8 | 184 | 621409 |
| 9 | 196 | 667073 |
| 10 | 198 | 695280 |
Man erkennt, dass die Preise offensichtlich stark positiv mit der Wohnfläche korrelieren. Mittels linearer Regression lässt sich nun einfach eine Ausgleichsgerade bestimmen (s.u.). Für das konkrete Beispiel hat diese Ausgleichsgerade die Form: $$ \text{Preis}_{\text{model}} = 2987 \text{ EUR}/m^2 * \text{Wohnfläche } + 82.590 \text{ EUR} $$ Man erkennt in folgender Abbildung, dass diese Funktion die Daten recht gut wiedergibt:
Die Abweichungen (grün markiert) sind generell recht klein, meist weniger als 20.000 EUR (positiv oder negativ). Anhand der Abbildung oder der Formel kann man das gelernte (einfache) Modell nun für eine Vorhersage nutzen: Ein Haus mit 150 m² Wohnfläche sollte etwa 530.000 € kosten.
Nun etwas formaler: Da es im Modell um die Vorhersage von Preisen geht, bezeichnen wir diese Größe als Output (Symbol: y); die gegebenen Parameter (hier nur Wohnfläche) bezeichnen wir als Input (Symbol: x). Der obige Trainingsdatensatz (von nummerierten Einträgen) übersetzt sich also wie folgt: $$ \begin{array}{cc} x_1 = 72; & y_1 = 310005\\\ x_2 = 92; & y_2 = 341896\\\ \dots \\\ x_{10} = 198; & y_{10} = 695280 \end{array} $$
Allgemein geht es bei Fits numerischer Daten darum, eine funktionale Form (hier für skalaren Input x) $$ y = f(x) $$ zu finden, die der Fragestellung gerecht wird, also insbesondere die Trainingsdaten gut erfasst. Bei linearer Regression hat das Modell f die Form $$ f(x) \equiv f_{w,b}(x) = w * x + b, $$ wobei die Steigung w und die Inhomogenität (= Y-Achsenabschnitt) b zu bestimmen sind. Für gegebene Modell-Parameter bezeichnen wir die Vorhersage als “y quer”, etwa für Datensatz Nr. 1: $$ \bar{y}_1 = f(x_1) \qquad = f(72) = 297654 $$ Die Abweichung bezeichnen wir als “Delta y”: $$ \Delta y_1 = \bar{y}_1 - y_1 = f(x_1) - y_1 \quad = f(72) - 310005 = -12351 $$ Bei der linearen Regression werden nicht die Abweichungen minimiert (und auch nicht deren Beträge), sondern die mittlere quadratische Abweichung für insgesamt N Datensätze: $$ L \equiv L_{w,b}[{x_i, y_i}]= \frac{1}{N}\sum_{i=1}^N \Delta y_i^2 = \frac{1}{N}\sum_{i=1}^N (\bar{y}_i - y_i)^2 = \frac{1}{N}\sum_{i=1}^N (w * x_i + b - y_i)^2 $$ Die zu minimierende Funktion L bezeichnet man (u.a. im Kontext von Regression und neuronalen Netzen) i.A. als Verlustfunktion oder loss function.
3.2 Gradientenverfahren
Im konkreten Fall existiert für die Bestimmung der Ausgleichsgerade zu einem gegebenen (Trainings-)Datensatz (mit N>2) zwar eine direkte analytische Lösung, die die Verlustfunktion global minimiert. Wir wollen jedoch das iterative Gradientenverfahren (gradient descent) behandeln, das viel allgemeiner anwendbar ist und in der Regel im Kontext von neuronalen Netzen (auch bei generativen Sprachmodellen) zum Einsatz kommt.
Für gegebene Trainingsdaten ist die Verlustfunktion eine Funktion der Modellparameter w und b. Diese werden anfangs (z.B. zufällig) initialisiert, was einen (in der Regel nicht optimalen) Initialwert für die Verlustfunktion (das Maß für die Fehlanpassung) ergibt. Es liegt nun nahe, etwas mit den Parametern zu “spielen”, um L zu reduzieren.
Strategie zur spielerischen Reduktion der Abweichungen
Man könnte z.B. nach folgender Regel vorgehen:
- Berechne L für initiale Parameter w und b (für gegebenen Trainingsdatensatz)
- Erhöhe w um einen kleines Inkrement Δw (z.B. 1% einer relevanten Größenordnung, etwa 5 €/m²).
- Berechne neue Verlustfunktion L’ für die testweise modifizierten Parameter
- Falls L´< L: akzeptiere den Vorschlag, d.h. w ➔ w + Δw
- Falls L´> L: verändere w mit umgekehrtem Vorzeichen w ➔ w - Δw
In den meisten Fällen würde man die Abweichung reduzieren; durch Interation käme man nah an einen optimalen Wert für w bei fixem Wert für b. Dann könnte man ein analoges Verfahren für b (bei festem w) durchführen.
Intuition: lokal Weg mit möglichst positiver/negativer Steigung wählen, wenn ich zum Gipfel/in´s Tal will:
Für ein zielgerichteteres Vorgehen betrachtet man den Gradienten von L (hier in Bezug auf den Parameter-Vektor [w,x]). Dessen Komponenten sind die partiellen Ableitungen von L (hier ohne Herleitung): $$ \frac{\partial L}{\partial b} = \frac{2}{N} \sum_{i=1}^N (w * x_i + b - y_i) = \frac{2}{N} \sum_{i=1}^N \Delta y_i $$
$$ \frac{\partial L}{\partial w} = \frac{2}{N} \sum_{i=1}^N x_i * (w * x_i + b - y_i) = \frac{2}{N} \sum_{i=1}^N x_i \Delta y_i $$
Wir legen nun eine sogenannte Lernrate (learning rate) α fest, üblicherweise mit einem niedrigen Wert, etwa α = 0,001. Die Modellparameter werden nun iterativ jeweils entgegen dem Gradienten von L modifiziert (in Vektorschreibweise) $$ [w,b] \to [w,b]- \alpha * \nabla L $$ bzw. (aufgeschlüsselt in die Komponenten, partielle Ableitungen s.o.) $$ w \to w - \alpha*\frac{\partial L}{\partial w}; \qquad b \to b - \alpha*\frac{\partial L}{\partial b} $$ Nach Konvergenz verschwinden beide partiellen Ableitungen (im Rahmen der numerischen Genauigkeit); daraus folgt, dass die Abweichungen im Mittel verschwinden.
Das Verfahren lässt sich leicht auf den mehrdimensionalen Fall verallgemeinern, d.h. auf ein lineares Modell, das mehrkomponentige Feature-Vektoren berücksichtigt (etwa Wohnfläche, Grundstücksfläche, Alter und Wohnlage für Hauspreise). Das Modell hat dann die Form $$ f(\mathbf{x})= f_{\mathbf{w},b}(\mathbf{x}) = \mathbf{w} \cdot \mathbf{x} + b $$ Die partiellen Ableitungen behalten ihre Struktur; auch das iterative Lösungsverfahren ist analog zum skalaren Fall (nur die Notation ist komplizierter, weil dann Feature-Index und Datensatz-Index zu unterscheiden sind).
3.3 Klassifikation mit logistischer Regression
Wir kehren zurück zu Klassifikationsproblemen, diesmal aber anhand numerischer Parameter. Konkret betrachten wir einen (auf https://www.kaggle.com/datasets/uciml/breast-cancer-wisconsin-data verfügbaren) Datensatz aus der Brustkrebs-Diagnostik. Der Feature-Vektor umfasst für jeden Datensatz 10 Parameter, von denen wir nur zwei betrachten:
Jedes Kreuz entspricht einem (Trainings-)Datensatz; die Klassifizierung (Tumor bösartig? Ja/nein) ist farbig kodiert.
Die gestrichelte schwarze Linie gibt die sogenannte Entscheidungslinie (decision boundary) eines Vorhersagemodells wieder, welches durch logistische Regression berechnet wurde. Man erkennt, dass Tumoren rechts/oben davon meist bösartig sind.
Das Verfahren ist erstaunlich ähnlich zur oben betrachteten linearen Regression: im Grunde wird die lineare Abbildung (ein einfaches Neuronales Netz, NN) nur durch eine abschließende nichtlineare Transformation (in NN-Kontext Aktivierungsschicht genannt), ergänzt. Konkret lautet das Modell $$ f(\mathbf{x})= f_{\mathbf{w},b}(\mathbf{x}) = \sigma(\mathbf{w} \cdot \mathbf{x} + b) $$ Dabei ist die Sigmoidfunktion bzw. logistische Funktion σ(s) eine glatte monoton wachsende Funktion, die alle reellen Zahlen, d.h. den Wertebereich (-∞,∞), auf das Intervall (0,1) ab, das unmittelbar als Wahrscheinlichkeit interpretiert werden kann (z.B. für Bösartigkeit eines Tumors):
Wenn wir den Output der Trainingsdaten durch die Zahlen 0 (Tumor nicht bösartig) bzw. 1 (Tumor bösartig) kodieren, kann die logistische Verlustfunktion (logistic loss, binary cross-entropy) angewendet werden: $$ L = - \frac{1}{N}\sum_{i=1}^N [y_i \cdot \log(\bar{y}_i) + (1-y_i)\cdot\log(1-\bar{y}_i)] $$ Interessanterweise hat der Gradient, d.h. die partiellen Ableitungen nach den Modell-Parametern, im Ergebnis die gleiche Form wie bei der linearen Regression.
3.4 Neuronale Netzwerke
Allgemeiner Aufbau eines feed-forward Neuronalen Netzes:
Detail: allgemeines Neuron
Hier eine Auswahl gängiger Aktivierungsfunktionen:

Übersetzung oben behandelter Verfahren in NN-Schematik:
Bei genügend Zeit könn(t)en hier u.a. folgende Aspekte besprochen werden:
- allgemeines Neuronales Netz, Deep Neural Network (DNN), Deep Learning, Hidden Layers
- Bedeutung der Aktivierung in Hidden Layers, Anwendung für nichtlineare Fits
- Autoencoder
4 Moderne Sprachmodelle, LLMs
Jetzt soll es (endlich) um die Prinzipien moderner Sprachmodelle (insb. Large Language Models, LLMs) gehen, etwa auf dem Niveau von GPT-3, durch dessen Veröffentlichung die Firma OpenAI ab Ende 2022 die LLM-Revolution eingeleitet hat und frühere Science-Fiction-Szenarien Wirklichkeit werden ließ. Dabei greifen wir auf die in den bisherigen Kapiteln gelegten Grundlagen zurück.
Im Folgenden betrachten wir zunächst Konzepte, die es erlauben, Sprache vollständiger und effizienter abzubilden als mit den in Kapitel 2 betrachteten Bag-of-Words- und N-Gramm-Methoden, und die einem sinnhaften Verständnis näherkommen: Embeddings und Tokens.
4.1 Embeddings, Word2vec
Dünnbesetzte Merkmalsvektoren bei BoW, riesige Dimension
In der Bag-of-Words-Methode wird jedes Wort auf einen Merkmalsvektor abgebildet, dessen Dimension (Anzahl an Komponenten) der Größe des Vokabulars entspricht, also der Anzahl verschiedener Wörter im Korpus (einschließlich Varianten durch Deklination und Konjugation); schon bei einer Sprache geht diese Zahl in die Millionen. Bei jeder Analyse (inference) besteht die Gefahr, dass unbekannte Wörter auftreten (out-of-vocabulary words); in noch stärkerem Umfang gilt dies für Tupel in N-Gramm-Methoden.
Der Merkmalsvektor ist bei BoW i.A. dünnbesetzt (sparse): für ein Wort hat er nur eine nichtverschwindende Komponente (one-hot vector); für einen Satz oder Dokument mit M Wörtern hat er maximal M nichtverschwindende Komponenten (also z.B. 20 von 2 Mio). Jede Art von Berechnungen auf dieser Basis wäre hochgradig ineffizent und würde die semantische Bedeutung vernachlässigen.
Ein zentrales Konzept moderner Sprachmodelle sind Einbettungen (embeddings): Wörter (allgemeiner: Tokens, s.u.) werden als dichte Vektoren in einem Raum viel niedrigerer Dimensionalität (typisch: d=300) repräsentiert - grob analog zu der manuellen Klassifikation in Abschnitt 2.1.
Ein etablierter Algorithmus, um für ein Vokabular anhand eines Trainings-Korpus Einbettungen per unsupervised learning zu berechnen, ist die Word2vec-Methode. Wir betrachten die skip-gram-Variante (Alternative: Continuous Bag-of Words, CBOW).
Dazu wird der Trainingsdatensatz (bzw. Einzelsätze daraus) jeweils in 5-Tupel zerlegt und als Lückentext verwendet: Ein neuronales Netz wird darauf trainiert, jeweils aus dem mittleren Wort die umliegenden Wörter zu “erraten”, d.h. auf ihr Vorkommen mit hoher Wahrscheinlichkeit zu schließen (hier illustriert für ein Vokabular mit 10.000 Wörtern und Embedding-Dimension 300):

Das Verfahren ist grob ähnlich zur logistischen Regression (siehe Kapitel 3.3), nutzt allerdings Multiclass Classification (hier für 10000 Klassen), so dass das Output Layer eine höhere Dimensionalität hat und als abschließende Aktivierung i.d.R. Softmax (statt der Sigmoid-Funktion) genutzt wird.
Aus dem Beispielsatz(fragment) “Der Mitarbeiter fährt per Bahn” würden also 4 Trainingsdatensätze erzeugt:
| Input | Output | |
|---|---|---|
| 1 | fährt | der |
| 2 | fährt | mitarbeiter |
| 3 | fährt | per |
| 4 | fährt | bahn |
Nach dem Abschluss des Trainings (mit typisch Millionen von Sätzen) fungiert der linke Teil des NN als Encoder; für jeden Input wird dann im Embedding Layer der zugehörige Embedding-Vektor berechnet.
Wort-Embeddings geben semantische Beziehungen wieder: weitgehend synonyme Wörter werden auf nahe beieinanderliegende Wort-Embeddings abgebildet. Man kann sogar mit Embeddings rechnen: “king” - “man” + “woman” ≈ “queen” und Beziehungen zwischen Ländern und Hauptstädten erkennen:
Beachte:
- Per Konstruktion ist die Abbildung Wort (one-hot vector) → Embeddings nicht direkt umkehrbar: i.A. müssen Wörter per Klassifizierungs-Algorithmus bestimmt werden, die einem Embedding-Ergebnisvektor entsprechen.
- Wort-Embeddings können direkt auf Satz- oder Dokument-Embeddings übertragen werden, indem die Embedding-Vektoren der Bestandteile einfach addiert oder gemittelt werden; dieses Konzept kommt bei RAG zum Einsatz (s.u.).
- In der Word2vec-Methode sind die Dimensionen der Embedding-Vektoren auf Modellebene äquivalent; die inhärente Symmetrie muss (wie bei den meisten Deep-Learning-Algorithmen) während der Initialisierung gebrochen werden.
4.2 Tokens, BPE
Wörter und Buchstaben als Text-Atome
Bisher haben wir Wörter als Basiseinheit der Textverarbeitung betrachtet. Wegen der riesigen Vokabulare ist das schon für eine Sprache nicht effizient; Sprachmodelle, die mehrere Sprachen “verstehen” (wie die für ChatGPT genutzten LLMs), wären damit kaum vorstellbar. Natürlich existiert schon eine kompakte Basis für Text: die Buchstaben (z.B. das lateinische Alphabet), die allerdings zu wenig Bedeutung tragen.
Stattdessen benutzt man in der Praxis sogenannte Tokens, d.h. Wortfragmente, als Basis für die Repräsentation der Sprache. Die Sprachmodelle selbst verwenden weder Buchstaben noch Wörter, sondern ausschließlich einen bestimmten Satz an Tokens (sowie intern Embeddings etc.). Input und Output müssen jeweils durch einen passenden Tokenizener übersetzt werden (was in beide Richtungen eindeutig möglich ist).
Manueller Ansatz: Wortstämme + Silben
Wenn wir manuell Tokens definieren sollten, würden wir vermutlich Silben, Wortstämme etc. als Kandidaten wählen, etwa das Wort “Frauen” in den Wortstamm “Frau” und die Endung “en” zerlegen, analog “gingen” in “ging” und “en”. Ein Sprachmodell könnte dann einerseits die Bedeutung der Wortstämme lernen und andererseits Kombinationsmöglichkeiten zwischen Wortstämmen und Endungen. Dieses Verfahren skaliert jedoch nicht, lässt sich nicht vollständig automatisieren und ist auf Multi-Sprach-Modelle kaum anwendbar.
Dagegen ist ein ursprünglich für Textkomprimierung eingeführter Algorithmus zur Erzeugung eines Token-Vokabulars festgelegter Größe, das (modifizierte) Byte-Pair Encoding (BPE) konzeptionell verblüffend einfach:
- Wähle einen Textkorpus als Trainingsdatensatz (z.B. Wikipedia deutsch)
- Lege die Zielgröße des Token-Vokabulars fest (z.B. 10.000 Tokens).
- Initialisiere das Vokabular mit den (relevanten) Buchstaben, z.B. 26 Buchstaben “a” bis “z”.
- Zähle die Häufigkeit aller Token-Paare im aktuellen Vokabular
- Definiere das häufigste Token-Paar als neues Token; ersetze dieses Paar im Korpus durch das neue Token
- Iteriere Schritte 4+5 bis das Vokabular die Zielgröße erreicht hat.
Beispiel: Zur Illustration betrachten wir nur eine Teilmenge der Buchstaben anhand des Korpus “der”, “den”, “depp”, “ehre”, “mehr”
- Initialisierung: Vokabular (v0) “d”, “e”, “h”, “m”, “n”, “p”, “r” - Korpus “d e r”, “d e n”, “d e p p”, “e h r e”, “m e h r”
- Ersetzung “d e” ➔ “de”: Vokabular (v1) “d”, “e”, “h”, “m”, “n”, “p”, “r”, “de” - Korpus “de r”, “de n”, “de p p”, “e h r e”, “m e h r”
- Ersetzung “e h” ➔ “eh”: Vokabular (v2) “d”, “e”, “h”, “m”, “n”, “p”, “r”, “de”, “eh” - Korpus “de r”, “de n”, “de p p”, “eh r e”, “m eh r”
Im Beispiel kommen jetzt Token-Paare nur noch höchstens je einmal vor; in der Praxis (bei großen Korpora) ist eine hohe Entartung von Rang 1 unwahrscheinlich; ggf. würde man zufällig unter den Kandidaten wählen.
Beispiel, hier für GPT-4o (erzeugt mit https://tiktokenizer.vercel.app):

4.3 RNNs, Transformer, Self-Attention
Grundprinzipien
In generativen Sprachmodellen wird ein Text (z.B. ein Dialog) als zeitlich geordnete Sequenz von Tokens betrachtet. In der Regel besteht (bei einem kausalen bzw. autoregressiven Modell) die Aufgabe darin, eine gegebene Zeitreihe fortzusetzen (initial entspricht s dem Prompt): $$ \mathbf{s} \equiv (t_1, t_2, \dots, t_K) \longrightarrow (t_1, t_2, \dots, t_{K+1}) $$ Ein zentraler Schritt ist dabei die Berechnung einer (bedingten) Wahrscheinlichkeitsverteilung für das nächste Token: $$ \text{Prob} (t = t_{K+1} | \mathbf{s}) $$ Dies ist ein Klassifizierungsproblem. Offensichtlich ist es i.A. nicht vielversprechend, mit N-Gramm-Methoden (s.o.) nur die letzten bekannten Tokens zu berücksichtigen; das Kontextlänge (context length) L berücksichtigter Tokens muss viel größer als 1 (oder 3-5) sein.
Grundsätzlich bestehen diese Modelle aus einem neuronalen Netz, das eine Sequenz (von Tokens) der Länge L auf eine um ein Token verschobene Sequenz abbildet (wobei das Kontext-Fenster ggf. duch Padding-Tokens aufgefüllt wird): $$ (t_{i-L},t_{i-L+1}, \dots t_{i-1}) \stackrel{\text{DNN}}{\longrightarrow}(t_{i-L+1},t_{i-L+2}, \dots t_{i}) $$ Die Dimension der Input- und Output-Vektoren ist das Produkt aus Kontextlänge und Vokabulargröße.
Perplexity
Kohärente Sätze und Texte zeichnen sich dadurch aus, dass ihr Fortgang relativ schmalen Pfaden folgt: Für den nächsten Teilsatz, das nächste Wort oder Token kommt jeweils nur ein kleiner Bruchteil des Vokabulars infrage. Bei einem guten Sprachmodell entspricht das einer relativ scharfen Wahrscheinlichkeitsverteilung für das nächste Token.
Die Breite dieser Wahrscheinlichkeitsverteilung wird für Sprachmodelle als Perplexity gemessen. Diese ist über die Logarithmen der Wahrscheinlichkeiten definiert und gibt näherungsweise an, wieviele Tokens für die Fortsetzung infrage kommen. Zur Illustration betrachten wir 5 Tokens (hier als a-e bezeichnet) und 3 Fälle:
| Fall 1 | Fall 2 | Fall 3 | |
|---|---|---|---|
| Prob(a) | 1 | 0,2 | 0,5 |
| Prob(b) | 0 | 0,2 | 0,3 |
| Prob(c) | 0 | 0,2 | 0,2 |
| Prob(d) | 0 | 0,2 | 0 |
| Prob(e) | 0 | 0,2 | 0 |
| Perplexity | 1 | 5 | 2.8 |
Die Perplexity (deutsch etwa: Verblüffung) ist ein gängiger Benchmark für (Basis-)Sprachmodelle. Sehr einfache Modelle haben Werte größer als 100, GPT-2 hatte 20; moderne LLMs haben Perplexitäts-Werte von etwa 5.
RNNs
Frühe Beispiele halbwegs brauchbarer generativer Sprachmodelle beruhen in der Regel auf Rekurrenten Neuronalen Netzen (recurrent neural network, RNN). Bei den bisher betrachteten feed-forward NNs floss Information (in der Inferenz-Phase) nur von Input zu Output, d.h. die Funktionswerte von Neuronen in Schicht k hingen nur von Funktionswerten von Neuronen in Schichten i<k ab.
Bei RNNs kann dagegen Information auch innerhalb einer Schicht oder in Richtung Input fließen:
Man kann sich die Statusschicht als eine Art erweitertes Gedächtnis vorstellen. RNN-Sprachmodelle skalieren jedoch schlecht mit einer Vergrößerung der Kontextlänge, ihr Gedächtnis ist also recht kurz.
Transformer + Self-Attention
Auf verschiedene Versuche, die Defizite von RNN-Sprachmodelle durch Kombinationen etlicher Deep-Learning-Konzepte zu beheben, gab 2017 das eingangs zitierte Google-Transformer-Paper eine überzeugende Antwort: Attention Is All You Need!
Auf den mit diesem Paper etablierten **Self-Attention-**Mechanismen (Selbst-Aufmerksamkeit) beruhen alle leistungsstarken großen (und kleineren) Sprachmodelle wie die ChatGPT-Reihe (GPT-3, GPT-4 etc.) von OpenAI. Statt der im Originalpaper vorgeschlagenen Encoder-Decoder-Architektur
beruhen letztere allerdings überwiegend auf Decoder-only-Architekturen.
Keine dieser Architekturen können wir hier im Detail besprechen. Anhand eines Decoder-only-Beispiels
diskutieren wir nur wenige Punkte:
- Das Modell beruht auf der Transformation von Embedding-Vektoren x, g, z
- Da ein zentraler Bestandteil (Multy Layer Perceptron, MLP) in identischen Kopien eingesetzt wird, können Tokens parallel verarbeitet werden.
- Die Self-Attention-Schichten kodieren Beziehungen zwischen Tokens. Deren Abstandsabhängigkeit wird durch Rotary Positional Encoding (RoPE) erfasst, Rotationen in 2-dimensionalen Unterräumen der Embedding-Vektoren (wobei für festen Abstand die Rotationswinkel für Dimensionen 1+2 am größten sind und für hohe Dimensions-Indizes schnell abfallen).
4.4 Training von LLMs
Wie oben dargestellt, wurde die revolutionäre Transformer-Architektur mit Self-Attention im Jahr 2017 vom Weltkonzern Google eingeführt. Den Durchbruch erzielte jedoch das Startup OpenAI 5 Jahre später.
Der Erfolg von ChatGPT (bzw. den Modellen GPT-3, GPT-4, GPT-4o etc.) beruht nicht alleine auf Modellarchitekturen, sondern insbesondere auf den Trainingsstrategien und dem dafür investierten Aufwand.
Training von Base / Foundation models
Alle generativen LLMs lassen sich von Basis-Modellen (auch Foundation Models genannt) ableiten, die initial - wie oben dargestellt - mit Unsupervised Learning (Unüberwachtes Lernen) anhand von riesigen Text-Korpora trainiert werden. Diese setzen sich typischerweise aus einzelnen oder allen der folgenden Teil-Korpora zusammen:
- Wikipedia
- Bücher aller Art
- Zeitungsartikel
- wissenschaftliche Artikel
- Soziale Medien
- Computerprogramme
- Ratgeber-Foren (insb. für IT)
- sonstige Internetseiten
Aus Teilen des Trainingskorpus wird für jeden einzelnen Trainingsschritt eine Sequenz von Tokens der Länge L (für Kontextlänge L) als Input gewählt und die um ein Token verschobene Sequenz als Output; es wird also trainiert, das nächste Token vorherzusagen.
Dieser Prozess benötigt riesige Ressourcen (insbesondere eine große Anzahl an NVIDIA GPUs mit viel Speicher); für große Modelle kostet ein komplettes Training typisch etwa 100 Mio $.
Wichtig: Ein derart trainiertes Basismodell hat zunächst nur die Fähigkeit, Texte sinnvoll fortsetzen zu können.
Beispiel: Für den Input (Prompt) “Was ist der Sinn des Lebens?” könnte ein LLM also z.B. (wie eine beliebig herausgegriffenen Webseite des MDR) mit dem (Teaser-)Text “Wir werden ungefragt in diese Welt hineingeboren und sollen unser Leben gestalten. Aber wie eigentlich und vor allem warum? Wieso sind wir hier?” fortfahren - also hauptsächlich mit weiteren Fragen.
Bemerkung: in gewissem Rahmen lassen sich Basis-Modelle durch One-Shot-Training (einer Variante des Prompt Engineering) zu konstruktiverem Verhalten bewegen.
Instruction Tuning
Damit Modelle konstruktiv antworten, müssen sie zusätzlich ein Instruction Tuning (ein Spezialfall von Fine Tuning) durchlaufen, einer Anwendung von Supervised Learning (Überwachtes Lernen).
Dabei werden eine große Zahl von (hoffentlich repräsentativen) Input-Beispielen, jeweils mit einem erwünschten Output kombiniert, als Trainigsdaten genutzt, etwa
User: Wie heißt die Hauptstadt von Frankreich?
Agent: Die Hauptstadt von Frankreich heißt Paris.
Es ist offensichtlich höchst nichttrivial, Trainingsdatensätze zu generieren, die alle denkbaren Anwendungen eines LLMs hinreichend abdecken und die Sprachvariabilität nicht zu stark einschränken. Oft werden jedoch feste Schlüsselwörter (wie “System”, “User”, “Agent”) verwendet, die mitgelernt werden und implizieren, wie ein optimaler Prompt aussehen sollte.
Die im (dann pretrained genannten) Basismodell gelernten Parameter werden durch das Instruction Fine Tuning i.A. nur leicht modifiziert. Das resultierende Instruction Model reagiert jedoch i.d.R. deutlich konstruktiver auf User-Prompts.
Problem: Teilweise sind reine Instruction Models zu konstruktiv und geben ungefiltert gelernte Sterotype wieder. So könnten diese Modelle bereitwillig beim Bombenbau oder Selbstmord helfen und würden rassistische und sexistische Haltungen wiedergeben.
Alignment
Die für ChatGPT eingesetzten Modelle wurden daher einem weiteren Fine Tuning-Schritt unterzogen, i.d.R. Reinforcement Learning from Human Feedback (RLHF). Dabei lässt man das zu trainierende LLM zu einer gegebenen Eingabe mehrere Antworten generieren (etwa 2 oder 4), die von Testpersonen bewertet bzw. gerankt werden. Wiederum werden die zuvor gelernten Modellparameter (i.A. minimal) modifiziert.
Inzwischen haben sich auch Methoden etabliert, bei denen sich LLMs quasi selbst beobachten (um schädlichen Output zu unterdrücken oder wieder zu löschen), teils werden auch spezialisierte Modelle als Aufpasser genutzt.
4.5 Parameter bei der Inferenz
Bisher haben wir noch nicht die wichtige Frage behandelt, wie genau beim Einsatz eines LLM das nächste auszugebende Token selektiert wird.
Tatsächlich berechnet ein LLM bei der Inferenz zunächst den besten Embedding-Vektor (der i.A. keinem Token exakt entspricht); der Überlapp den Embedding-Vektoren “benachbarter” Tokens kann als Wahrscheinlichkeit interpretiert werden, das dieser Token die optimale Fortsetzung darstellt.
Wenn man genau diese Wahrscheinlichkeitsverteilung durch einen Zufallsprozess realisieren würde, bestünde die Gefahr, dass gelegentlich auch Outlier gewählt werden (die mit hoher Wahrscheinlichkeit unpassend sind), etwa Token/Kandidat t42 mit nur 0,1 % Wahrscheinlichkeit in folgendem Beispiel (Indizes geben hier den Rang an):
| Token | t1 | t2 | t3 | t4 | t5 | t6 | … | t42 | … |
|---|---|---|---|---|---|---|---|---|---|
| Wahrscheinlichkeit | 0,4 | 0,3 | 0,2 | 0,02 | 0,01 | 0,01 | 0,001 |
Deswegen werden in der Praxis nahezu immer Parameter genutzt, die die Wahl einschränken:
- Top-k Sampling: Es werden nur die k Kandidaten (z.B. k=5) mit den höchsten Wahrscheinlichkeiten betrachtet, d.h. nur die Tokens t1 bis tk. Im Spezialfall k=1 wird der Prozess deterministisch.
- Top-p Sampling: Ausgehend vom Top-Kandidaten werden Kandidaten mit abnehmender Wahrscheinlichkeit nur betrachtet, bis die vorgegebene Wahrscheinlichkeit 0<p<1 erreicht ist (z.B. für 0,4 < p <=0,7 nur t1 und t2).
- Sampling-Temperatur T: Die Rohergebnisse (Logits) werden vor dem Anwenden der abschließenden Aktivierung (Softmax) durch T dividiert, wodurch die Wahrscheinlichkeitsverteilung bei T<1 schmaler wird (für T>1 breiter). Im Spezialfall T=0 wird der Prozess deterministisch.
Die Modelle bzw. APIs von OpenAI und GWDG erlauben die Spezifikation von Top-p und T. OpenAI rät dazu, je nur einen der Werte anzupassen. Defaults von OpenAI sind laut API-Dokumentation temperature=top_p=1. Im GWDG-Chat-Interface https://chat-ai.academiccloud.de/ ist temp=top_p=0.5 voreingestellt.
5 Mit eigenen Daten reden: RAG
Normalerweise antwortet ein Chat-LLM nur auf Basis der während der Trainingsphasen gelernten sowie ggf. im Prompt gegebenen Informationen (der im Chat-Verlauf jeweils die gesamte Historie enthält). Der Text von einzelnen Dokumenten kann ggf. zusätzlich einbezogen werden, indem die Fragmente in den Prompt kopiert werden (was i.d.R. auch die Wirkung von Upload-Mechanismen ist). Das per Prompt injizierbare Textvolumen ist jedoch durch die Kontextlänge des LLMs begrenzt.
Retreaval Augmented Generation (RAG) ist eine Methode, um aus einer Bibliothek von Texten (z.B. gewonnen aus Webseiten, Word- oder PDF-Dokumenten) jeweils - spezifisch für jede Anfrage, d.h. jeden Nutzer-Prompt - eine kleine Zahl von Textfragmenten auszuwählen, die thematisch am besten passen. Diese Auswahl wird dann zusammen mit dem Nutzerprompt (und ggf. RAG-spezifischen System-Prompts) an das LLM übergeben.
Die Auswahl erfolgt anhand der in Abschnitt 4.1 besprochenen Embeddings. Dazu werden zunächst initial folgende Schritte durchgeführt:
- Upload der Dokumente
- Zerlegung in Fragmente geeigneter Größe (ggf. ergänzt um Metadaten wie URLs)
- Für jedes Fragment wird per (Tokenizer und) Embedding-Modell ein Embedding-Vektor bestimmt und in einer Vektordatenbank abgespeichert.
Während des Chats wird der aktuelle Prompt jeweils vor dem Absenden an das LLM modifiziert:
- Berechnung des Embedding-Vektors für den aktuellen Prompt
- Suche in der Vektordatenbank nach ähnlichen Embedding-Vektoren (von Fragmenten), mit Roh-Wahrscheinlichkeiten
- Auswahl der passendsten Vektoren bzw. jeweils zugehörigen Textfragmente
- Ergänzung des Prompts um die ausgewählten Textfragmente
Wichtige Parameter sind (neben der Wahl des Embedding-Algorithmus) Details der Textzerlegung (Länge und Überlapp sowie Ausrichtung der Fragmente) und die Anzahl der jeweils ausgewählten Fragmente.
Andere Möglichkeit zur Anpassung von LLMs an eigene Anforderungen: Parameter Efficient Fine Tuning (PEFT, ggf. per LoRA) - aufwendig + kompliziert!
6 Plattformen und Werkzeuge
Per KU-Kennung besteht Zugriff auf folgende KI-Plattformen:
- Webinterface “HAWKI” zum Zugriff auf OpenAI- und von der GWDG gehostete LLMs: https://ai.ku.de
- Webinterface Chat-AI als Teil der Academic Cloud der GWDG: https://chat-ai.academiccloud.de/
- Arcana-RAG-Portal der GWDG: https://chat-ai.academiccloud.de/arcanas/arcana
- API-Zugriff auf von der GWDG gehostete LLMs
- Microsoft Copilot: https://copilot.microsoft.com/
Informationen zur GWDG-Academic Cloud bzw. zur Verwendung von API-Keys der GWDG finden sich hier (Stand 2/2025):
7 Zusammenfassung und Ausblick
Wir haben zentrale Konzepte für LLMs behandelt bzw. angeschnitten:
- Korpus und Vokabular (Wörter → Tokens)
- Lineare Abbildungen
- Klassifikation, Aktivierungsfunktionen
- Vektor-Embeddings
- Training vs. Inferenz
- Supervised vs. unsupervised Training
- Transformer und Self-Attention
- Pretraining vs. Finetuning (Instruction tuning, RLHF)
- Inferenz-Parameter
Viele interessante Themen und Aspekte wurden nicht behandelt, z.B. Modellgrößen (Folien von https://www.coursera.org/learn/generative-ai-with-llms):
___
Anhang: Weiterführende Literatur
Unzählige Ressourcen unterschiedlichster Qualität können im Netz gefunden werden. Hier einige Startpunkte:
- The Hundred-Page Language Models Book: https://thelmbook.com
- Build a Large Language Model (From Scratch): https://www.manning.com/books/build-a-large-language-model-from-scratch
- Coursera-Kurs (DeepLearning.AI + AWS): https://www.coursera.org/learn/generative-ai-with-llms