Transcript for:
"Der Grundlagen von」Generative Pretrained Transformers (GPT)

Die Initialen GPT stehen für "Generative Pretrained Transformer". Das erste Wort ist also ganz einfach: Das sind Bots, die neuen Text generieren. Pretrained bezieht sich darauf, dass das Modell einen Lernprozess aus einer riesigen Datenmenge durchlaufen hat, und das Präfix deutet an, dass es mehr Spielraum gibt, um es durch zusätzliches Training auf bestimmte Aufgaben abzustimmen. Aber das letzte Wort, das ist der eigentliche Schlüsselteil. Ein Transformator ist eine bestimmte Art von neuronalem Netzwerk, ein maschinelles Lernmodell, und die zentrale Erfindung, die dem aktuellen Boom der KI zugrunde liegt. In diesem Video und den folgenden Kapiteln möchte ich dir auf visuelle Weise erklären, was im Inneren eines Transformators passiert. Wir werden den Daten, die durch sie hindurchfließen, Schritt für Schritt folgen. Es gibt viele verschiedene Arten von Modellen, die du mit Transformatoren bauen kannst. Einige Modelle nehmen Audiodaten auf und erstellen eine Abschrift. Dieser Satz stammt von einem Modell, das den umgekehrten Weg geht und synthetische Sprache nur aus Text erzeugt. All die Tools, die 2022 die Welt im Sturm eroberten, wie Dolly oder Midjourney, die eine Textbeschreibung aufnehmen und ein Bild erzeugen, basieren auf Transformatoren. Auch wenn ich es nicht ganz dazu bringe, zu verstehen, was ein Kuchenwesen sein soll, bin ich immer noch begeistert, dass so etwas überhaupt möglich ist. Und der ursprüngliche Transformator, der 2017 von Google vorgestellt wurde, wurde für den speziellen Anwendungsfall der Übersetzung von Text von einer Sprache in eine andere erfunden. Aber die Variante, auf die du und ich uns konzentrieren werden und der Tools wie ChatGPT zugrunde liegen, ist ein Modell, das darauf trainiert ist, einen Text zu lesen, vielleicht sogar mit Bildern oder Geräuschen, die ihn umgeben, und eine Vorhersage darüber zu machen, was als Nächstes in dem Text kommt. Diese Vorhersage ist eine Wahrscheinlichkeitsverteilung über viele verschiedene Textabschnitte, die folgen könnten. Auf den ersten Blick könnte man meinen, dass das Vorhersagen des nächsten Wortes eine ganz andere Aufgabe ist, als das Erstellen von neuem Text. Wenn du jedoch ein solches Vorhersagemodell hast, kannst du einen längeren Text ganz einfach generieren, indem du dem Modell einen ersten Textausschnitt gibst, es eine Zufallsstichprobe aus der soeben erstellten Verteilung nehmen lässt, diese an den Text anhängt und dann den gesamten Prozess noch einmal durchlaufen lässt, um eine neue Vorhersage auf der Grundlage des gesamten neuen Textes zu treffen, einschließlich dessen, was es gerade hinzugefügt hat. Ich weiß nicht, wie es dir geht, aber es fühlt sich wirklich nicht so an, als ob das wirklich funktionieren sollte. In dieser Animation lasse ich zum Beispiel GPT-2 auf meinem Laptop laufen und lasse es wiederholt den nächsten Textabschnitt vorhersagen und abtasten, um eine Geschichte auf der Grundlage des Starttextes zu erstellen. Die Geschichte macht einfach nicht wirklich viel Sinn. Aber wenn ich stattdessen API-Aufrufe zu GPT-3 einsetze, was das gleiche Grundmodell ist, nur viel größer, bekommen wir plötzlich auf fast magische Weise eine vernünftige Geschichte, die sogar darauf schließen lässt, dass ein Pi-Wesen in einem Land der Mathematik und des Rechnens lebt. Dieser Prozess der wiederholten Vorhersage und des Samplings ist im Wesentlichen das, was passiert, wenn du mit ChatGPT oder einem anderen großen Sprachmodell interagierst und siehst, wie sie ein Wort nach dem anderen produzieren. Eine Funktion, die mir sehr gefallen würde, ist die Möglichkeit, die zugrundeliegende Verteilung für jedes neu gewählte Wort zu sehen. Beginnen wir mit einem Überblick darüber, wie Daten durch einen Transformer fließen. Wir werden noch viel mehr Zeit darauf verwenden, die Details der einzelnen Schritte zu erklären und zu interpretieren, aber in groben Zügen, wenn einer dieser Chatbots ein bestimmtes Wort generiert, passiert folgendes unter der Haube. Zuerst wird der Input in viele kleine Teile zerlegt. Diese Teile werden als Token bezeichnet, und im Fall von Text sind das in der Regel Wörter oder kleine Teile von Wörtern oder andere gängige Zeichenkombinationen. Wenn es sich um Bilder oder Töne handelt, können die Token kleine Teile des Bildes oder kleine Teile des Tons sein. Jedes dieser Token wird dann mit einem Vektor verknüpft, also einer Liste von Zahlen, die die Bedeutung des Stücks irgendwie kodieren sollen. Wenn du dir diese Vektoren als Koordinaten in einem sehr hochdimensionalen Raum vorstellst, landen Wörter mit ähnlichen Bedeutungen meist auf Vektoren, die in diesem Raum nahe beieinander liegen. Diese Abfolge von Vektoren durchläuft dann eine Operation, die als Aufmerksamkeitsblock bezeichnet wird und die es den Vektoren ermöglicht, miteinander zu kommunizieren und Informationen hin- und herzugeben, um ihre Werte zu aktualisieren. Die Bedeutung des Wortes Modell in der Formulierung Modell für maschinelles Lernen unterscheidet sich zum Beispiel von der Bedeutung in der Formulierung Modell für Mode. Der Aufmerksamkeitsblock ist dafür verantwortlich, herauszufinden, welche Wörter im Kontext relevant sind, um die Bedeutungen der anderen Wörter zu aktualisieren, und wie genau diese Bedeutungen aktualisiert werden sollten. Und noch einmal: Wenn ich das Wort Bedeutung verwende, ist diese irgendwie vollständig in den Einträgen dieser Vektoren kodiert. Danach durchlaufen diese Vektoren eine andere Art von Operation. Je nachdem, welche Quelle du liest, wird dies als mehrschichtiges Perzeptron oder vielleicht als Feed-Forward-Schicht bezeichnet. Und hier reden die Vektoren nicht miteinander, sondern sie durchlaufen alle parallel dieselbe Operation. Auch wenn dieser Block etwas schwieriger zu interpretieren ist, werden wir später darüber sprechen, dass der Schritt ein bisschen so ist, als ob man eine lange Liste von Fragen zu jedem Vektor stellt und sie dann auf der Grundlage der Antworten auf diese Fragen aktualisiert. Alle Operationen in diesen beiden Blöcken sehen aus wie ein riesiger Haufen von Matrizenmultiplikationen, und unsere Hauptaufgabe besteht darin, zu verstehen, wie man die zugrunde liegenden Matrizen liest. Ich beschönige ein paar Details zu einigen Normalisierungsschritten, die zwischendurch stattfinden, aber das ist ja nur eine Vorschau auf hohem Niveau. Danach wiederholt sich der Prozess im Wesentlichen, du wechselst zwischen Aufmerksamkeitsblöcken und Mehrschicht-Perzeptron-Blöcken hin und her, bis am Ende die Hoffnung besteht, dass alle wesentlichen Bedeutungen der Passage irgendwie in den allerletzten Vektor der Sequenz eingeflossen sind. Dann führen wir eine bestimmte Operation an diesem letzten Vektor durch, die eine Wahrscheinlichkeitsverteilung über alle möglichen Token, also alle möglichen kleinen Textabschnitte, die als nächstes kommen könnten, ergibt. Und wie gesagt, sobald du ein Tool hast, das aus einem Textausschnitt vorhersagen kann, was als Nächstes kommt, kannst du es mit einem kleinen Teil des Ausgangstextes füttern und es immer wieder dieses Spiel spielen lassen, bei dem es vorhersagt, was als Nächstes kommt, Stichproben aus der Verteilung nimmt, sie anfügt und dann immer wieder wiederholt. Einige von euch erinnern sich vielleicht noch daran, wie lange bevor ChatGPT aufkam, frühe Demos von GPT-3 aussahen: Du konntest Geschichten und Aufsätze auf der Grundlage eines ersten Snippets automatisch vervollständigen lassen. Um ein solches Tool in einen Chatbot zu verwandeln, ist es am einfachsten, mit einem kleinen Text zu beginnen, der den Rahmen für die Interaktion eines Nutzers mit einem hilfreichen KI-Assistenten absteckt, dem sogenannten Systemprompt. Es gäbe noch mehr zu sagen über den Schritt der Ausbildung, der nötig ist, damit das gut funktioniert, aber im Großen und Ganzen ist das die Idee. In diesem Kapitel werden wir uns näher mit den Details befassen, was am Anfang und am Ende des Netzes passiert. Außerdem möchte ich einige wichtige Hintergrundinformationen wiederholen, die jedem Ingenieur für maschinelles Lernen spätestens seit der Entwicklung von Transformers ein Begriff sind. Wenn du mit diesem Hintergrundwissen gut zurechtkommst und ein bisschen ungeduldig bist, kannst du das nächste Kapitel überspringen, in dem es um die Aufmerksamkeitsblöcke geht, die allgemein als das Herzstück des Transformators gelten. Danach möchte ich mehr über diese mehrschichtigen Perzeptron-Blöcke, die Funktionsweise des Trainings und eine Reihe anderer Details erzählen, die wir bis zu diesem Punkt übersprungen haben. Diese Videos sind Teil einer Miniserie über Deep Learning und es ist nicht schlimm, wenn du die vorherigen Videos noch nicht gesehen hast. Ich denke, du kannst sie auch in umgekehrter Reihenfolge ansehen, aber bevor wir uns mit den Transformers beschäftigen, sollten wir uns vergewissern, dass wir über die Grundvoraussetzungen und die Struktur von Deep Learning auf dem gleichen Stand sind. Auch auf die Gefahr hin, das Offensichtliche zu sagen, ist dies ein Ansatz für maschinelles Lernen, der jedes Modell beschreibt, bei dem du Daten verwendest, um irgendwie zu bestimmen, wie sich ein Modell verhält. Was ich damit meine, ist, dass du eine Funktion brauchst, die ein Bild aufnimmt und eine Beschriftung erzeugt, die es beschreibt, oder unser Beispiel, das nächste Wort in einem Text vorherzusagen, oder jede andere Aufgabe, die ein gewisses Element von Intuition und Mustererkennung erfordert. Die Idee des maschinellen Lernens ist, dass man nicht versucht, ein Verfahren für diese Aufgabe explizit im Code zu definieren, wie es in den Anfängen der KI der Fall war, sondern dass man eine sehr flexible Struktur mit einstellbaren Parametern aufbaut, wie eine Reihe von Knöpfen und Reglern, und dass man dann anhand von vielen Beispielen, die zeigen, wie die Ausgabe für eine bestimmte Eingabe aussehen sollte, die Werte dieser Parameter optimiert, um dieses Verhalten zu imitieren. Die einfachste Form des maschinellen Lernens ist zum Beispiel die lineare Regression, bei der die Eingaben und Ausgaben jeweils einzelne Zahlen sind, zum Beispiel die Quadratmeterzahl eines Hauses und der Preis, und du willst eine Linie finden, die sich am besten an diese Daten anpasst, um zukünftige Hauspreise vorherzusagen. Diese Linie wird durch zwei kontinuierliche Parameter beschrieben, z. B. die Steigung und den y-Achsenabschnitt, und das Ziel der linearen Regression ist es, diese Parameter so zu bestimmen, dass sie genau zu den Daten passen. Unnötig zu erwähnen, dass Deep Learning-Modelle viel komplizierter werden. GPT-3 hat zum Beispiel nicht zwei, sondern 175 Milliarden Parameter. Aber die Sache ist die: Es ist nicht selbstverständlich, dass du ein riesiges Modell mit einer riesigen Anzahl von Parametern erstellen kannst, ohne dass es die Trainingsdaten übermäßig gut anpasst oder völlig unpraktisch zu trainieren ist. Deep Learning beschreibt eine Klasse von Modellen, die sich in den letzten Jahrzehnten als bemerkenswert gut skalierbar erwiesen haben. Was sie eint, ist derselbe Trainingsalgorithmus, der Backpropagation genannt wird. Damit dieser Trainingsalgorithmus in großem Maßstab gut funktioniert, müssen diese Modelle einem bestimmten Format folgen. Wenn du dieses Format kennst, hilft es dir, viele der Entscheidungen zu erklären, wie ein Transformator die Sprache verarbeitet, die sonst willkürlich wirken könnten. Erstens: Egal, welches Modell du erstellst, die Eingabe muss als Array mit reellen Zahlen formatiert werden. Das kann eine Liste von Zahlen sein, ein zweidimensionales Array oder sehr oft handelt es sich um höherdimensionale Arrays, für die der allgemeine Begriff "Tensor" verwendet wird. Du stellst dir oft vor, dass die Eingabedaten nach und nach in viele verschiedene Schichten umgewandelt werden, wobei jede Schicht immer als eine Art Array aus reellen Zahlen strukturiert ist, bis du zu einer letzten Schicht gelangst, die du als Ausgabe betrachtest. Die letzte Schicht in unserem Textverarbeitungsmodell ist zum Beispiel eine Liste von Zahlen, die die Wahrscheinlichkeitsverteilung für alle möglichen nächsten Token darstellen. Beim Deep Learning werden diese Modellparameter fast immer als Gewichte bezeichnet, denn ein wesentliches Merkmal dieser Modelle ist, dass diese Parameter nur durch gewichtete Summen mit den zu verarbeitenden Daten interagieren. Du streust auch einige nicht-lineare Funktionen ein, die aber nicht von Parametern abhängig sind. In der Regel werden die gewichteten Summen aber nicht nackt und explizit ausgeschrieben, sondern als verschiedene Komponenten in einem Matrix-Vektorprodukt zusammengefasst. Es läuft auf dasselbe hinaus, wenn du daran denkst, wie eine Matrix-Vektor-Multiplikation funktioniert: Jede Komponente des Ergebnisses sieht wie eine gewichtete Summe aus. Für dich und mich ist es einfach konzeptionell klarer, über Matrizen nachzudenken, die mit einstellbaren Parametern gefüllt sind und Vektoren transformieren, die aus den zu verarbeitenden Daten gezogen werden. Zum Beispiel sind die 175 Milliarden Gewichte in GPT-3 in knapp 28.000 verschiedenen Matrizen organisiert. Diese Matrizen werden wiederum in acht verschiedene Kategorien eingeteilt, und wir werden jede dieser Kategorien durchgehen, um zu verstehen, was der jeweilige Typ macht. Während wir das durchgehen, macht es Spaß, die spezifischen Zahlen von GPT-3 heranzuziehen und genau zu zählen, woher diese 175 Milliarden kommen. Auch wenn es heutzutage größere und bessere Modelle gibt, hat dieses Modell einen gewissen Charme als das Modell für große Sprachen, das die Aufmerksamkeit der Welt außerhalb der ML-Gemeinschaften auf sich zieht. Außerdem neigen die Unternehmen dazu, die genauen Zahlen für modernere Netze zu verschweigen. Wenn du unter die Haube schaust, um zu sehen, was in einem Tool wie ChatGPT passiert, sieht fast die gesamte eigentliche Berechnung wie eine Matrix-Vektor-Multiplikation aus. Es besteht die Gefahr, dass du dich im Meer der Milliarden von Zahlen verlierst, aber du solltest in deinem Kopf eine klare Unterscheidung treffen zwischen den Gewichten des Modells, die ich immer blau oder rot einfärbe, und den zu verarbeitenden Daten, die ich immer grau einfärbe. Die Gewichte sind die eigentlichen Gehirne, sie sind die Dinge, die beim Training gelernt wurden, und sie bestimmen, wie es sich verhält. Die zu verarbeitenden Daten kodieren einfach die spezifischen Eingaben, die für einen bestimmten Lauf in das Modell eingegeben werden, wie zum Beispiel einen Textausschnitt. Mit all dem als Grundlage wollen wir uns nun dem ersten Schritt dieses Textverarbeitungsbeispiels widmen, nämlich der Zerlegung der Eingabe in kleine Teile und der Umwandlung dieser Teile in Vektoren. Ich habe schon erwähnt, dass diese Stücke Token genannt werden, die aus Wörtern oder Satzzeichen bestehen können, aber ab und zu möchte ich in diesem und vor allem im nächsten Kapitel so tun, als ob sie sauberer in Wörter unterteilt sind. Da wir Menschen in Worten denken, wird es dadurch viel einfacher, kleine Beispiele anzuführen und jeden Schritt zu verdeutlichen. Das Modell hat ein vordefiniertes Vokabular, eine Liste mit allen möglichen Wörtern, z.B. 50.000, und die erste Matrix, die wir kennenlernen werden, die so genannte Einbettungsmatrix, hat eine einzelne Spalte für jedes dieser Wörter. Diese Spalten bestimmen, in welchen Vektor sich jedes Wort in diesem ersten Schritt verwandelt. Wir bezeichnen sie als Wir, und wie alle Matrizen, die wir sehen, beginnen ihre Werte zufällig, aber sie werden anhand von Daten gelernt. Die Umwandlung von Wörtern in Vektoren war beim maschinellen Lernen schon lange vor den Transformatoren üblich, aber es ist etwas seltsam, wenn du es noch nie gesehen hast, und es bildet die Grundlage für alles, was folgt, also lass uns einen Moment Zeit, um uns damit vertraut zu machen. Wir nennen diese Einbettung oft ein Wort, das dich dazu einlädt, dir diese Vektoren ganz geometrisch als Punkte in einem hochdimensionalen Raum vorzustellen. Eine Liste von drei Zahlen als Koordinaten für Punkte im 3D-Raum zu visualisieren, wäre kein Problem, aber Worteinbettungen sind in der Regel sehr viel höher dimensioniert. In GPT-3 haben sie 12.288 Dimensionen, und wie du sehen wirst, ist es wichtig, in einem Raum zu arbeiten, der viele verschiedene Richtungen hat. Genauso wie du einen zweidimensionalen Schnitt durch einen 3D-Raum nehmen und alle Punkte auf diesen Schnitt projizieren könntest, werde ich, um die Worteinbettungen, die mir ein einfaches Modell liefert, zu animieren, einen dreidimensionalen Schnitt durch diesen sehr hochdimensionalen Raum wählen und die Wortvektoren darauf projizieren und die Ergebnisse anzeigen lassen. Die Idee dahinter ist, dass ein Modell, das seine Gewichte optimiert, um zu bestimmen, wie genau Wörter während des Trainings als Vektoren eingebettet werden, dazu neigt, sich auf eine Reihe von Einbettungen festzulegen, bei denen die Richtungen im Raum eine Art semantische Bedeutung haben. Wenn ich für das einfache Wort-Vektor-Modell, das ich hier verwende, nach allen Wörtern suche, deren Einbettung der von Turm am nächsten kommt, wirst du feststellen, dass sie alle sehr ähnlich aussehen wie ein Turm. Und wenn du zu Hause mit Python nachspielen willst, ist das das Modell, das ich für die Animationen verwende. Es ist kein Transformator, aber es reicht aus, um die Idee zu veranschaulichen, dass Richtungen im Raum eine semantische Bedeutung haben können. Ein sehr klassisches Beispiel dafür ist, dass der Unterschied zwischen den Vektoren für Frau und Mann, den du dir als kleinen Vektor vorstellen kannst, der die Spitze des einen mit der Spitze des anderen verbindet, dem Unterschied zwischen König und Königin sehr ähnlich ist. Angenommen, du kennst das Wort für einen weiblichen Monarchen nicht, dann könntest du es finden, indem du König nimmst, diese Frau-Mann-Richtung hinzufügst und nach den Einbettungen suchst, die diesem Punkt am nächsten sind. Zumindest so ähnlich. Obwohl dies ein klassisches Beispiel für das Modell ist, mit dem ich spiele, ist die tatsächliche Einbettung von Königin ein wenig weiter entfernt, als dies vermuten lässt, vermutlich weil die Art und Weise, wie Königin in den Trainingsdaten verwendet wird, nicht nur eine weibliche Version von König ist. Als ich ein wenig herumspielte, schienen mir die Familienbeziehungen die Idee viel besser zu veranschaulichen. Es sieht so aus, als hätte das Modell beim Training einen Vorteil darin gesehen, die Einbettungen so zu wählen, dass eine Richtung in diesem Raum die Geschlechtsinformation kodiert. Ein anderes Beispiel: Wenn du die Einbettung Italiens nimmst, die Einbettung Deutschlands abziehst und diese zur Einbettung Hitlers addierst, erhältst du etwas, das der Einbettung Mussolinis sehr ähnlich ist. Es ist, als ob das Modell gelernt hätte, einige Richtungen mit dem Italienertum und andere mit den Achsenführern des Zweiten Weltkriegs zu assoziieren. Mein Lieblingsbeispiel in diesem Zusammenhang ist vielleicht, dass der Unterschied zwischen Deutschland und Japan in einigen Modellen, wenn man ihn zu Sushi hinzufügt, der Bratwurst sehr nahe kommt. Auch bei diesem Spiel, bei dem es darum geht, die nächsten Nachbarn zu finden, war ich erfreut zu sehen, wie nah Kat sowohl dem Tier als auch dem Monster war. Eine mathematische Intuition, die du dir vor allem für das nächste Kapitel merken solltest, ist, dass das Punktprodukt zweier Vektoren ein Maß dafür ist, wie gut sie zusammenpassen. Bei Punktprodukten werden alle entsprechenden Komponenten multipliziert und die Ergebnisse dann addiert. Das ist gut, denn ein Großteil unserer Berechnungen muss wie gewichtete Summen aussehen. Geometrisch gesehen ist das Punktprodukt positiv, wenn Vektoren in ähnliche Richtungen zeigen, es ist null, wenn sie senkrecht zueinander stehen, und es ist negativ, wenn sie in entgegengesetzte Richtungen zeigen. Nehmen wir zum Beispiel an, du spielst mit diesem Modell und stellst die Hypothese auf, dass die Einbettung von Katzen minus Katze eine Art Pluralitätsrichtung in diesem Raum darstellen könnte. Um das zu testen, werde ich diesen Vektor nehmen und sein Punktprodukt mit den Einbettungen bestimmter Singularnomen berechnen und es mit den Punktprodukten der entsprechenden Pluralnomen vergleichen. Wenn du damit herumspielst, wirst du feststellen, dass die Pluralform durchweg höhere Werte liefert als die Singularform, was darauf hindeutet, dass sie mehr in diese Richtung geht. Lustig ist auch, dass das Punktprodukt mit den Einbettungen der Wörter 1, 2, 3 usw. steigende Werte ergibt, so als ob wir quantitativ messen könnten, wie plural das Modell ein bestimmtes Wort findet. Auch hier wird anhand von Daten gelernt, wie die Wörter eingebettet werden. Diese Einbettungsmatrix, deren Spalten uns sagen, was mit jedem Wort passiert, ist der erste Stapel von Gewichten in unserem Modell. Wenn du die GPT-3-Zahlen verwendest, beträgt der Wortschatz 50.257, und auch hier handelt es sich technisch gesehen nicht um Wörter an sich, sondern um Token. Die Einbettungsdimension beträgt 12.288 und die Multiplikation dieser Werte zeigt, dass es sich um etwa 617 Millionen Gewichte handelt. Fügen wir dies zu einer laufenden Rechnung hinzu und denken wir daran, dass wir am Ende auf 175 Milliarden kommen sollten. Im Fall von Transformatoren solltest du die Vektoren in diesem Einbettungsraum nicht nur als einzelne Wörter betrachten. Zum einen kodieren sie auch Informationen über die Position des Wortes, worauf wir später noch zu sprechen kommen, aber noch wichtiger ist, dass sie die Fähigkeit haben, den Kontext zu erfassen. Ein Vektor, der zum Beispiel als Einbettung des Wortes "König" begann, könnte nach und nach von verschiedenen Blöcken in diesem Netzwerk beeinflusst werden, so dass er am Ende in eine viel spezifischere und nuanciertere Richtung zeigt, die irgendwie kodiert, dass es sich um einen König handelt, der in Schottland lebte, der sein Amt nach der Ermordung des vorherigen Königs erlangt hatte und der in Shakespeare'scher Sprache beschrieben wird. Denke über dein eigenes Verständnis eines bestimmten Wortes nach. Die Bedeutung dieses Wortes wird eindeutig von der Umgebung beeinflusst, und manchmal gehört dazu auch der Kontext aus großer Entfernung. Wenn man also ein Modell entwickelt, das vorhersagen kann, welches Wort als nächstes kommt, muss man es irgendwie befähigen, den Kontext effizient zu berücksichtigen. Um das klarzustellen: Wenn du in diesem ersten Schritt eine Reihe von Vektoren auf der Grundlage des Eingabetextes erstellst, wird jeder dieser Vektoren einfach aus der Einbettungsmatrix herausgezogen, so dass jeder von ihnen zunächst nur die Bedeutung eines einzelnen Wortes kodieren kann, ohne dass er von seiner Umgebung beeinflusst wird. Aber du solltest dir vorstellen, dass das Hauptziel dieses Netzwerks, durch das es fließt, darin besteht, jedem dieser Vektoren eine Bedeutung zu geben, die viel reichhaltiger und spezifischer ist als das, was einzelne Wörter darstellen könnten. Das Netzwerk kann nur eine bestimmte Anzahl von Vektoren gleichzeitig verarbeiten, die so genannte Kontextgröße. Für GPT-3 wurde es mit einer Kontextgröße von 2048 trainiert, sodass die Daten, die durch das Netz fließen, immer wie dieses Array aus 2048 Spalten aussehen, von denen jede 12.000 Dimensionen hat. Diese Kontextgröße begrenzt, wie viel Text der Transformator bei der Vorhersage des nächsten Wortes einbeziehen kann. Aus diesem Grund hatten lange Gespräche mit bestimmten Chatbots, wie die frühen Versionen von ChatGPT, oft das Gefühl, dass der Bot den Gesprächsfaden verliert, wenn du zu lange weitermachst. Wir werden zu gegebener Zeit auf die Details der Aufmerksamkeit eingehen, aber ich möchte kurz darüber sprechen, was ganz am Ende passiert. Denk daran, dass die gewünschte Ausgabe eine Wahrscheinlichkeitsverteilung über alle Token ist, die als nächstes kommen könnten. Wenn das allerletzte Wort zum Beispiel Professor ist und der Kontext Wörter wie Harry Potter enthält, und direkt davor sehen wir den unbeliebtesten Lehrer, und wenn du mir etwas Spielraum gibst, indem du mir erlaubst, so zu tun, als ob die Token einfach wie ganze Wörter aussehen, dann würde ein gut trainiertes Netzwerk, das Wissen über Harry Potter aufgebaut hat, dem Wort Snape vermutlich eine hohe Zahl zuordnen. Dies umfasst zwei verschiedene Schritte. Die erste besteht darin, eine andere Matrix zu verwenden, die den allerletzten Vektor in diesem Kontext auf eine Liste von 50.000 Werten abbildet, einen für jedes Token im Vokabular. Dann gibt es eine Funktion, die diese in eine Wahrscheinlichkeitsverteilung normalisiert. Sie heißt Softmax und wir werden gleich noch mehr darüber sprechen, aber vorher mag es etwas seltsam erscheinen, nur diese letzte Einbettung für eine Vorhersage zu verwenden, wo es doch in diesem letzten Schritt tausende anderer Vektoren in der Schicht gibt, die ihre eigenen kontextreichen Bedeutungen haben. Das hat damit zu tun, dass es sich im Trainingsprozess als viel effizienter erweist, wenn du jeden dieser Vektoren in der letzten Schicht nutzt, um gleichzeitig eine Vorhersage für das zu treffen, was unmittelbar danach kommt. Es gibt später noch viel mehr über die Ausbildung zu sagen, aber ich möchte das jetzt nur kurz erwähnen. Diese Matrix wird Unembedding-Matrix genannt und wir geben ihr die Bezeichnung WU. Wie alle anderen Gewichtungsmatrizen, die wir sehen, beginnen auch diese mit zufälligen Einträgen, die aber während des Trainings gelernt werden. Diese Unembedding-Matrix hat eine Zeile für jedes Wort des Vokabulars und jede Zeile hat die gleiche Anzahl von Elementen wie die Einbettungsdimension. Sie ist der Einbettungsmatrix sehr ähnlich, nur die Reihenfolge ist vertauscht. Das bedeutet, dass dem Netzwerk weitere 617 Millionen Parameter hinzugefügt werden, was bedeutet, dass wir bisher etwas mehr als eine Milliarde gezählt haben - ein kleiner, aber nicht ganz unbedeutender Teil der 175 Milliarden, die wir am Ende insgesamt haben werden. In der letzten Minilektion dieses Kapitels möchte ich mehr über die Softmax-Funktion sprechen, denn sie taucht noch einmal auf, wenn wir uns mit den Aufmerksamkeitsblöcken beschäftigen. Wenn du willst, dass eine Zahlenfolge als Wahrscheinlichkeitsverteilung fungiert, z. B. eine Verteilung über alle möglichen nächsten Wörter, dann muss jeder Wert zwischen 0 und 1 liegen und alle Werte müssen sich zu 1 addieren. Wenn du jedoch das Lernspiel spielst, bei dem alles, was du tust, wie eine Matrix-Vektor-Multiplikation aussieht, halten sich die Ausgaben, die du standardmäßig erhältst, überhaupt nicht daran. Die Werte sind oft negativ oder viel größer als 1 und sie ergeben mit ziemlicher Sicherheit nicht die Summe 1. Softmax ist die Standardmethode, um eine beliebige Liste von Zahlen in eine gültige Verteilung umzuwandeln, und zwar so, dass die größten Werte möglichst nahe bei 1 und die kleineren Werte sehr nahe bei 0 enden. Das ist alles, was du wirklich wissen musst. Aber falls du neugierig bist: Es funktioniert so, dass du zuerst e mit jeder der Zahlen potenzierst, was bedeutet, dass du jetzt eine Liste positiver Werte hast. Dann kannst du die Summe all dieser positiven Werte nehmen und jeden Term durch diese Summe teilen, was sie zu einer Liste normalisiert, die sich zu 1 addiert. Du wirst feststellen, dass, wenn eine der Zahlen in der Eingabe deutlich größer ist als der Rest, der entsprechende Term in der Ausgabe die Verteilung dominiert. Wenn du also eine Stichprobe ziehst, würdest du mit ziemlicher Sicherheit nur die maximierende Eingabe auswählen. Aber es ist weicher, als nur den Maximalwert zu wählen, denn wenn andere Werte ähnlich groß sind, bekommen sie auch ein sinnvolles Gewicht in der Verteilung, und alles ändert sich kontinuierlich, wenn du die Eingaben ständig variierst. In manchen Situationen, z. B. wenn ChatGPT diese Verteilung verwendet, um ein nächstes Wort zu bilden, kann man diese Funktion noch ein wenig aufpeppen, indem man eine Konstante t in den Nenner der Exponenten einfügt. Wir nennen sie die Temperatur, da sie vage an die Rolle der Temperatur in bestimmten Gleichungen der Thermodynamik erinnert. Der Effekt ist, dass, wenn t größer ist, du den niedrigeren Werten mehr Gewicht gibst, was bedeutet, dass die Verteilung etwas gleichmäßiger ist, und wenn t kleiner ist, dann dominieren die größeren Werte aggressiver, wobei im Extremfall, wenn t gleich Null ist, das gesamte Gewicht auf den maximalen Wert geht. Ich lasse GPT-3 zum Beispiel eine Geschichte mit dem Ausgangstext "Es war einmal A" erstellen, aber ich verwende jeweils unterschiedliche Temperaturen. Temperatur Null bedeutet, dass sie immer das vorhersehbarste Wort wählt, und das, was du bekommst, ist am Ende eine banale Ableitung von Goldlöckchen. Eine höhere Temperatur gibt ihm die Chance, weniger wahrscheinliche Wörter zu wählen, aber sie ist mit einem Risiko verbunden. In diesem Fall fängt die Geschichte über einen jungen Webkünstler aus Südkorea eher originell an, aber sie artet schnell in Unsinn aus. Technisch gesehen kannst du mit der API eigentlich keine höhere Temperatur als 2 wählen. Dafür gibt es keinen mathematischen Grund, es ist nur eine willkürliche Einschränkung, die sie auferlegt haben, um zu verhindern, dass ihr Werkzeug Dinge erzeugt, die zu unsinnig sind. Wenn du also neugierig bist: Die Animation funktioniert so, dass ich die 20 wahrscheinlichsten nächsten Token nehme, die GPT-3 generiert, was das Maximum zu sein scheint, das sie mir geben, und dann die Wahrscheinlichkeiten mit einem Exponenten von 1,5 korrigiere. So wie du die Komponenten der Ausgabe dieser Funktion als Wahrscheinlichkeiten bezeichnest, bezeichnen die Leute die Eingaben oft als Logits, oder manche sagen Logits, manche sagen Logits, ich werde Logits sagen. Wenn du also zum Beispiel einen Text einspeist, all diese Worteinbettungen durch das Netzwerk fließen lässt und diese abschließende Multiplikation mit der Matrix ohne Einbettung durchführst, bezeichnen Menschen, die sich mit maschinellem Lernen beschäftigen, die Komponenten in dieser rohen, nicht normalisierten Ausgabe als die Logits für die nächste Wortvorhersage. In diesem Kapitel ging es vor allem darum, die Grundlagen für das Verständnis des Aufmerksamkeitsmechanismus zu legen, im Stil von Karate Kid: Wachs-auf-Wachs-ab. Wenn du ein gutes Gespür für Worteinbettungen, für Softmax und dafür hast, wie Punktprodukte Ähnlichkeit messen, und wenn du weißt, dass die meisten Berechnungen wie eine Matrixmultiplikation mit Matrizen voller einstellbarer Parameter aussehen müssen, dann sollte es relativ einfach sein, den Aufmerksamkeitsmechanismus zu verstehen, diesen Eckpfeiler des ganzen modernen KI-Booms. Dafür kommst du im nächsten Kapitel zu mir. Während ich dies veröffentliche, steht ein Entwurf des nächsten Kapitels für Patreon-Unterstützer zur Ansicht bereit. Eine endgültige Version sollte in ein oder zwei Wochen veröffentlicht werden. Das hängt davon ab, wie viel ich aufgrund der Überprüfung ändere. In der Zwischenzeit, wenn du in die Aufmerksamkeit eintauchen und dem Kanal ein bisschen helfen willst, ist er da und wartet.