2 Punkte von GN⁺ 2024-02-05 | 1 Kommentare | Auf WhatsApp teilen
  • Es wurde ein decoder-only Transformer mit rund 10 Millionen Parametern auf TinyShakespeare trainiert; anschließend wurde anhand interner Zustände und Experimente nachverfolgt, wie die Berechnungsergebnisse nach der Self-Attention in Wahrscheinlichkeiten für das nächste Token umgewandelt werden
  • Die zentrale Hypothese lautet, dass jeder Transformer-Block den Prompt mit einer bestimmten Menge von Strings aus dem Trainingskorpus verknüpft und dass die Häufigkeitsverteilung der Tokens, die tatsächlich auf diese Strings folgten, der Vorhersage des Blocks für das nächste Token nahekommt
  • Das implementierte Näherungsverfahren sucht Trainingsstrings, deren Ausgaben des Feed-forward Network denen des jeweiligen Blocks ähneln, summiert die Verteilung der nachfolgenden Zeichen und rekonstruiert die Modellausgabe als gewichtete Summe über die Blöcke
  • Bei 20.000 Prompts der Länge 10 lag die durchschnittliche Hellinger distance zwischen der angenäherten Ausgabe und der tatsächlichen Transformer-Ausgabe bei etwa 0,17; die Distanz zwischen dem Originalmodell und Ersatzmodellen mit gleicher Struktur, aber anderem Seed, lag bei etwa 0,11 ± 0,08
  • Die Analyse stützt die Interpretation, dass Feed-forward-Ausgaben einen großen Anteil an der Blocktransformation haben und Attention den Prompt auf die passende Klasse von Trainingsstrings abbildet; ob sich dies über kleine Modelle hinaus verallgemeinern lässt, ist jedoch unklar

Experimentelles Modell und Fragestellung

  • Ein Transformer mit rund 10 Millionen Parametern wurde nach Andrej Karpathys Let’s build GPT: from scratch, in code, spelled out implementiert und trainiert
    • Der Kerncode des Sprachmodells stammt aus Karpathys Arbeit; die interne Analyse und der Hilfscode sind separate Beiträge
    • Der zugehörige Code befindet sich unter transformer-experiments
  • Das Modell ist ein decoder-only Transformer mit 6 Blöcken
    • Die Trainingsdaten sind TinyShakespeare und enthalten 40.000 Zeilen aus Shakespeare-Stücken
    • Nach etwa einer Stunde Training auf einer RTX-4000-GPU erzeugt es strukturell plausiblen, künstlichen Shakespeare-Text
  • Die Tokens sind keine Wörter, sondern Zeichen
    • Die Vokabulargröße beträgt 65; vorhergesagt wird die Wahrscheinlichkeitsverteilung für das Zeichen, das auf den Eingabe-Prompt folgt
    • Beispielsweise sagt es nach 'my most gr' als nächstes Zeichen a mit 0,819, e mit 0,081 und i mit 0,059 voraus
  • Die Kernfrage betrifft nicht Self-Attention selbst, sondern wie die Ergebnisse nach der Attention in finale Wahrscheinlichkeiten für das nächste Token umgewandelt werden

Blockstruktur und Anteil des Feed-forward Network

  • Jeder Transformer-Block enthält multi-head self-attention und ein Feed-forward Network
    • In der PyTorch-Struktur hat die Blockausgabe die Form, dass auf x + self.sa(self.ln1(x)) anschließend x + self.ffwd(self.ln2(x)) addiert wird
    • Mit Zwischenvariablen lässt sich die Blockausgabe als x + sa_out + ffwd_out betrachten
  • Im analysierten Modell macht das Feed-forward Network 65,71 % aller trainierbaren Parameter aus
    • Feed-forward-Parameter: 7.089.408
    • Insgesamt trainierbare Parameter: 10.788.929
  • Die Ausgabe des Feed-forward Network erscheint als Hauptfaktor, der die Blockeingabe in die Ausgabe transformiert
    • Auch in späteren Experimenten zeigt die Feed-forward-Ausgabe einen größeren Einfluss auf die finale Wahrscheinlichkeitsverteilung als die reine Self-Attention-Ausgabe

Strings über ähnliche Feed-forward-Ausgaben finden

  • Das Näherungsverfahren nutzt die Ähnlichkeit der Feed-forward-Ausgaben zwischen Prompt und Strings aus dem Trainingskorpus
    1. Den Prompt in das Modell einspeisen und die Ausgabe des Feed-forward Network jedes Blocks speichern
    2. Für jeden Block im Trainingskorpus Strings finden, deren Feed-forward-Ausgabe ähnlich ist
    3. Die Häufigkeitsverteilung der Tokens summieren, die auf diese Strings folgten
    4. Die Verteilungen pro Block gewichtet summieren und normalisieren, um eine Wahrscheinlichkeitsverteilung zu erzeugen
  • Beim Demo-Prompt 'And only l' wurden 94 Strings der Länge 10 gefunden, deren Feed-forward-Ausgabe im Block 1 eine cosine similarity von mindestens 0,95 aufweist
    • Die gefundenen Strings enden überwiegend auf y l oder ly l, etwa hat only l, \nMy only l, I dearly l, ng Henry l, And only l
    • Die normalisierte Häufigkeitsverteilung der Zeichen, die auf diese Strings folgten, war der tatsächlichen Vorhersage des Modells für das nächste Zeichen sehr ähnlich
  • Im Beispiel 'And only l' liegen Näherung und tatsächliche Modellvorhersage eng beieinander
    • Modell: i 0,437, o 0,204, a 0,195, e 0,160
    • Näherung: i 0,389, o 0,250, a 0,222, e 0,139
    • Die Hellinger distance beträgt 0,0711
  • Nur ein einzelner Block kann in manchen Fällen scheitern
    • Beim Prompt 'hing tremb' sagt das Modell mit nur Block 1 l mit 0,999 voraus, die Näherung ergibt jedoch e mit 0,543 und l mit 0,343; die Hellinger distance beträgt 0,6305
    • Berücksichtigt man alle Blöcke, sagt die Näherung im selben Beispiel l mit 0,997 voraus, und die Hellinger distance sinkt auf 0,0233

Rechenumfang und manuelles Tuning

  • Aus Effizienzgründen wurden alle Analysen hauptsächlich mit Strings der Länge 10 durchgeführt
    • Der Trainingskorpus umfasst 1.115.394 Zeichen, und es gibt 858.923 eindeutige Teilstrings der Länge 10
    • Die Feed-forward-Ausgabe ist ein 384-dimensionaler float32-Vektor und wird einmal pro der 6 Blöcke erzeugt
  • 20.000 Strings der Länge 10 wurden zufällig ausgewählt und als Experiment-Prompts verwendet
    • Die blockweise cosine similarity zwischen jedem Prompt und den 858.923 eindeutigen Teilstrings wurde vorab berechnet und auf Festplatte gespeichert
    • Da relevante Matches nicht unter einer cosine similarity von 0,7 auftraten, wurde nur ab 0,7 vorgefiltert
  • Die Similarity Thresholds pro Block wurden durch manuelles Tuning festgelegt
    • Block 0: 0,95
    • Block 1: 0,94
    • Block 2: 0,85
    • Block 3: 0,76
    • Block 4: 0,81
    • Block 5: 0,89
  • Auch beim Zusammenführen der Häufigkeitsverteilungen pro Block wurden manuelle Gewichte verwendet
    • Die verwendeten Gewichte waren [0.01, 0.01, 0.1, 1.5, 6, 0.01]
    • Es wurde auch versucht, die Gewichte mit Deep-Learning-Methoden zu suchen, dies führte aber zu keinem besseren Ergebnis als manuelles Tuning

Bewertung mit 20.000 Prompts

  • Für alle 20.000 Prompts wurde die Hellinger distance zwischen der angenäherten Verteilung und der Ausgabeverteilung des Modells berechnet
    • Mittelwert: 0,1677
    • Standardabweichung: 0,1215
    • Minimum: 0,0013
    • Maximum: 0,9994
  • Die Hellinger distance misst die Überlappung zwischen Wahrscheinlichkeitsverteilungen; 0 bedeutet identisch, 1 bedeutet keine Überlappung
  • Zum Vergleich der Näherungsqualität wurde dieselbe Architektur noch dreimal mit einem anderen random seed trainiert
    • Seed des Originalmodells: 1337, geschätzter training loss 0,9334, validation loss 1,5063
    • Alternate 1 seed: 1442, training loss 0,9293, validation loss 1,5038
    • Alternate 2 seed: 88, training loss 0,9294, validation loss 1,4991
    • Alternate 3 seed: 99999, training loss 0,9339, validation loss 1,4941
  • Die durchschnittliche Hellinger distance zwischen Originalmodell und Ersatzmodellen liegt bei etwa 0,11 ± 0,08
    • Original vs Alternate 1: 0,1064 ± 0,0823
    • Original vs Alternate 2: 0,1057 ± 0,0817
    • Original vs Alternate 3: 0,1053 ± 0,0828
  • Die mittlere Distanz zwischen Näherung und Modell von 0,17 ist höher als die Distanz von 0,11 zwischen Ersatzmodellen, liegt aber innerhalb des Bereichs der Standardabweichung und dient daher als Hinweis, dass die Näherung recht gut ist

Interpretation der internen Transformer-Abläufe

  • Nach dem Embedding lässt sich das Modell als mehrere Stufen von Raumtransformationen betrachten
    • Die 6 Transformer-Blöcke transformieren Eingabe-Embeddings innerhalb eines 384-dimensionalen Embedding-Raums in Ausgabe-Embeddings
    • Die abschließende LayerNorm und Linear Layer transformieren den Embedding-Raum in einen 65-dimensionalen Logit-Raum; Softmax erzeugt daraus Wahrscheinlichkeiten für das nächste Token
  • Die Transformation innerhalb eines Blocks lässt sich als Vektoraddition betrachten
    • Die Blockausgabe ist die Summe aus Eingabe x, Self-Attention-Ausgabe sa_out und Feed-forward-Ausgabe ffwd_out
    • In der Analyse wurde beobachtet, dass die Feed-forward-Ausgabevektoren im Allgemeinen eine größere Norm als die Self-Attention-Ausgaben haben und dass beide Ausgaben pro Block meist in eine ähnliche Richtung zeigen
  • Selbst wenn nur die Feed-forward-Ausgaben addiert werden, ist die Richtung des finalen Ausgabevektors im Allgemeinen ähnlich
    • Die nur auf Feed-forward basierende Ausgabe hat zwar eine kleinere Norm, ihre Richtung liegt aber nahe an der ursprünglichen Ausgabe
    • Wegen der finalen LayerNorm ist der Normunterschied am Eingang des abschließenden Linear Layer nicht besonders wichtig
  • Dieses Ergebnis bedeutet nicht, dass man die Self-Attention-Berechnung entfernen könnte
    • Das Feed-forward Network enthält die Self-Attention-Ausgabe in seiner Eingabe, etwa ffwd_out = self.ffwd(self.ln2(x + sa_out)); entfernt man Self-Attention, ändert sich die Feed-forward-Ausgabe selbst

Token-Subspace-Hypothese

  • Bestimmte Embeddings können das Modell dazu bringen, ein bestimmtes Token nahezu sicher vorherzusagen
    • Beispielsweise lässt sich ein Embedding optimieren, das in die LayerNorm und den Linear Layer nach dem letzten Block eingeht, sodass die Wahrscheinlichkeit für Token a nahezu 1 wird
    • Die Transformer-Gewichte bleiben fixiert; nur der Embedding-Tensor wird optimiert
  • Für jedes Token gibt es nicht nur ein einziges Embedding, sondern viele Embeddings
    • Dies wird als komplexer nichtlinearer Embedding-Subspace interpretiert, der jedem Token entspricht
    • Für jedes Token ließen sich problemlos Tausende eindeutige Embeddings lernen
  • Der Subspace wurde nicht exakt mathematisch bestimmt, doch in der finalen Stufe funktioniert eine lineare Näherung gut
    • Die für jedes Token gelernten Embeddings wurden gestapelt, anschließend wurde SVD durchgeführt
    • Der erste right singular vector funktionierte gut als eindimensionale lineare Näherung des Subspace für das jeweilige Token
  • Kombiniert man die Subspace-Näherungsvektoren mehrerer Tokens linear, lassen sich Embeddings erzeugen, die Wahrscheinlichkeit auf mehrere Tokens verteilen
    • Addiert man die Näherungsvektoren von a und b, entsteht eine Verteilung, bei der sich Wahrscheinlichkeit auf beide Tokens verteilt
    • Wegen Näherungsfehlern, der Nicht-Orthogonalität der Subspace-Vektoren und Unterschieden in der Logit-Größe pro Token ergibt sich jedoch keine perfekte 50:50-Verteilung

Entsprechung zwischen Feed-forward-Ausgabe und Token-Subspace

  • Die Feed-forward-Ausgabe lässt sich so interpretieren, dass sie die Blockausgabe in Richtung eines bestimmten Token-Subspace verschiebt
    • Diese Tokens stimmen mit den Tokens überein, die das Näherungsverfahren vorhersagt, also den Tokens, die auf Trainingsstrings folgten, welche ähnliche Feed-forward-Ausgaben erzeugen
  • Betrachtet man im Beispiel med me Aut nur den letzten Block, sagt die Näherung o als wahrscheinlichstes nächstes Token und h als zweitwahrscheinlichstes voraus
    • Projiziert man denselben Feed-forward-Ausgabevektor auf die Token-Subspace-Näherung, sind die ähnlichsten Tokens ebenfalls o, h, i, u, y in dieser Reihenfolge
  • Auch im Beispiel if and thy zeigt sich eine ähnliche Entsprechung
    • Die Näherung setzt Space, s und Newline als wichtigste vorhergesagte Tokens an
    • Die am stärksten mit der Feed-forward-Ausgabe ausgerichteten Subspaces lagen ebenfalls nahe bei Space, s und Newline
  • Über alle 20.000 Prompts hinweg wurde nach einem willkürlichen Kriterium aggregiert
    • Das Kriterium lautet: „Liegen die Subspaces der Tokens, die in der Näherungsvorhersage 90 % der Wahrscheinlichkeitsmasse ausmachen, gemessen an der cosine similarity zur Feed-forward-Ausgabe in der oberen Hälfte der Rangliste?“
    • Bezogen auf den letzten Block erfüllen 16.357 Prompts, also 81,78 %, dieses Kriterium

Aggregierte Ergebnisse pro Block und Chance-Vergleich

  • Verwendet man die an den jeweiligen Blockpositionen gelernten Subspace-Näherungen, steigt die Erfüllungsrate des Kriteriums in späteren Blöcken
    • Block 6: 16.357 Prompts, 81,78 %
    • Block 5: 10.142 Prompts, 50,71 %
    • Block 4: 7.760 Prompts, 38,80 %
  • Wendet man die Subspace-Näherung der finalen Stufe auf alle Blöcke an, ergeben sich bessere Resultate
    • Block 6: 81,78 %
    • Block 5: 68,26 %
    • Block 4: 58,15 %
    • Block 3: 57,34 %
    • Block 2: 52,02 %
    • Block 1: 49,71 %
  • Außerdem wurde simuliert, mit welcher Wahrscheinlichkeit das Kriterium bei zufälliger cosine similarity erfüllt würde
    • Block 6: 20,76 % ± 0,25 %
    • Block 5: 20,55 % ± 0,26 %
    • Block 4: 18,37 % ± 0,24 %
    • Block 3: 18,20 % ± 0,24 %
    • Block 2: 17,04 % ± 0,23 %
    • Block 1: 16,31 % ± 0,23 %
  • Die Ergebnisse liegen deutlich über Chance, sind wegen Messrauschen und Grenzen der Subspace-Näherung jedoch schwer als entscheidender Beweis zu werten

Rolle der Self-Attention

  • In dieser Interpretation hängt eine gute Vorhersage davon ab, den Prompt auf die richtige String-Klasse im Trainingskorpus abzubilden
  • Die Achse, die dieses Mapping übernimmt, ist Self-Attention
    • Die Attention Layer identifiziert Muster zwischen den Prompt-Tokens
    • Bei den Mustern kann es sich um einfache String-Muster wie y l am Ende handeln oder um allgemeinere Tokenarten wie Vokale oder Großbuchstaben an bestimmten Positionen
  • Die gelernten Gewichte eines Attention Head bestimmen, auf welche Muster er reagiert
    • Wenn die Ausgabe eines Attention Head durch das Feed-forward Network läuft, wird sie zu einer Darstellung im Embedding-Raum, die Informationen über die Tokenverteilung enthält, die nach ähnlichen Trainingsstrings auftrat
  • Das analysierte Modell hat 6 Blöcke und 6 Attention Heads pro Block und kann daher einen Prompt im Hinblick auf mehrere potenzielle Muster bewerten

Fazit und Grenzen

  • Es gibt starke Evidenz dafür, dass das Näherungsverfahren der tatsächlichen Transformer-Ausgabe ähnelt
  • Weniger eindeutig ist die Evidenz dafür, dass das Näherungsverfahren den tatsächlichen internen Berechnungen des Transformers entspricht; sie deutet jedoch darauf hin, dass dies zumindest teilweise der Fall sein könnte
  • Ob sich die Ergebnisse aus einem einzelnen kleinen Transformer auf größere Modelle oder andere Datensätze verallgemeinern lassen, ist unklar
  • Dieses Projekt ist ein Prozess, dem Modell intern Fragen zu stellen und Experimente zu entwerfen; statt die „Magie“ von Sprachmodellen auf einfache Mechanismen zu reduzieren, macht es ihre Komplexität besser sichtbar

1 Kommentare

 
GN⁺ 2024-02-05
Hacker-News-Kommentare
  • Einige Themen des Ausgangsbeitrags sollten für jemanden, der https://people.math.harvard.edu/~ctm/home/text/others/shanno... gelesen hat, keine große Überraschung sein
    Wenn man die Grundlagenliteratur des eigenen Fachs nicht liest, wirken selbst Phänomene, die sich als natürliche Folge bereits ausgearbeiteter Arbeiten ergeben, wie unerklärliche Mysterien
    Trotzdem wirken die Experimente schon auf den ersten Blick ziemlich gründlich, und der Umfang der Detailarbeit, der hineingeflossen ist, verdient hohe Anerkennung
    Zwischen dem Erlernen bestehender Theorie und dem erneuten Herleiten von Grund auf gibt es einen schwierigen Trade-off. Ohne traditionelle Grundlage sind neue Entdeckungen möglich, mit Grundlage kann man bestimmte Phänomene jedoch tiefer verstehen
    Hier in den Kommentaren scheinen mehrere Leute überrascht zu sein, dass ein Modell, das bei gegebenen Daten die Log-Likelihood einer Sequenz maximiert, bei der Inferenz nicht auf magische Weise von diesem Verhalten abweicht. Das ist ein Dichteschätzmodell — erwartet man, dass es aus dem Nichts Shakespeare rezitiert?
    Wenn man zu den Grundlagen zurückkehrt, werden solche Experimente deutlich verständlicher. Es gibt bereits eine sehr klare mathematische Basis, die dies und die sogenannten emergenten Phänomene erklärt
    Genauer gesagt gibt es mehrere Ebenen, und Shannons Behandlung ergodischer Systeme ist ein guter Ausgangspunkt. Hier gibt es zwar kleine Abweichungen, aber als Entsprechung zum Verständnis der Gesamtdynamik wirkt es hinreichend nah

    • Sehr kluge Forscher der Informationstheorie betrachten neuronale Netze schon seit einigen Jahren aus einer informationstheoretischen Perspektive und haben dazu auch bekannte Papers veröffentlicht, konnten damit aber vieles an neuronalen Netzen nicht erklären. Interessant war es trotzdem
      Es ist nicht selten, dass kluge Leute sagen: „Diese mathematische Struktur ähnelt jener Idee; wenn man nur ein paar Strukturen hinzufügt oder wegnimmt, ist alles erklärt.“ In Wirklichkeit wissen wir aber vieles nicht
      Ich habe in diesem Feld noch nicht erlebt, dass Theoretiker mit einer Theorie kamen und damit etwas Neues bauten oder nützliche Vorhersagen lieferten. Meist probiert man Verschiedenes aus, und wenn es funktioniert, hängt man später eine plausible Erklärung daran; wenn nicht, lässt man es unter den Tisch fallen
      Kürzlich gab es auch einen Beitrag, der Transformer als Kernel-Smoothing betrachtet: https://arxiv.org/abs/1908.11775
    • Ich verstehe, was gemeint ist, aber dass man über alternative Pfade unterschiedlicher Tiefe konvergiert, ist an sich ebenfalls ein Signal
      Wiederholte Wiederentdeckungen sind nicht zwangsläufig Verschwendung, sondern können auch ein Prozess sein, eine tiefe Wahrheit mit mehreren Zugangswegen zu bestätigen und zu verifizieren
    • In einem benachbarten anderen Thread geht es darum, was es für das Urheberrecht bedeutet, dass neuronale Netze mit einer gewissen Fehlertoleranz an Trainingsdaten angepasst werden
      Ein beträchtlicher Teil der Lehrbücher zur Informationstheorie weist bereits auf die content-addressable Eigenschaften solcher Netze hin[1], und wegen dieses Zwecks werden sie auch für Anwendungen wie Kompression genutzt[2][3]
      Daher ist es auch keine Überraschung, dass das OpenAI-Modell fast wortgetreu reproduzierte, als die NYT ihm einige Absätze ihrer Artikel als Prompt gab
      [1] https://www.inference.org.uk/itprnn/book.pdf
      [2] https://bellard.org/nncp/
      [3] https://pub.towardsai.net/stable-diffusion-based-image-compr...
    • Dann fragt man sich doch, warum Shannon GPT nicht gebaut hat
  • Als ich sah, dass Google darauf hingewiesen hatte, man könne ChatGPT dazu bringen, Trainingsdaten unverändert auszuspucken, wenn man es auffordert, dasselbe Wort immer wieder zu wiederholen[0][1], kam mir exakt dieselbe Idee. Schön, dass jemand sie tatsächlich umgesetzt hat.
    Daraus ergeben sich für mich zwei Anschlussfragen:

    1. Ist dieser „KI, fang die KI“-Ansatz energieeffizienter, als Trainingsdaten per Gradientenabstieg und Backpropagation in ein Modell zu komprimieren und dieses dann auf einem dedizierten KI-Coprozessor laufen zu lassen?
    2. Könnte dieses Ergebnis als Beweismittel in den laufenden Klagen gegen OpenAI und Stability AI dienen?
      [0] Früher ging das. OpenAI blockiert inzwischen die Generierung, wenn man das Kontextfenster mit einem einzigen Wort füllt.
      [1] https://arxiv.org/abs/2311.17035
    • Dieser Ansatz kann nicht effizienter sein, als das ursprüngliche Modell auszuführen. Denn man muss das ursprüngliche Modell laufen lassen, Aktivierungen erhalten, im Korpus nach Strings suchen, die diesen Aktivierungen ähneln, und daraus die Next-Token-Statistik berechnen.
      Es werden nicht viele Schritte übersprungen; im Gegenteil, es kommt eine Menge Zusatzarbeit hinzu.
      Selbst wenn man den Korpus zum Trainieren des Modells und den Korpus zur Suche nach Strings mit ähnlichen Aktivierungen vollständig trennt, würden vermutlich fast dieselben Ergebnisse herauskommen. Der schwierige Teil besteht nämlich von vornherein darin, für Strings mit ähnlicher Next-Token-Statistik ähnliche Aktivierungen zu erzeugen.
      Bei den Schichtgewichten [0.01, 0.01, 0.1, 1.5, 6, 0.01] ist die vorletzte Schicht die wichtigste, und ihr Input ist bereits stark transformiert. Man sollte also nicht erwarten, damit einen Transformer durch ein simples grep über die Trainingsdaten ersetzen zu können.
      Dass das Gewicht der vorletzten Schicht viel größer ist als das der letzten, liegt vermutlich an Induction Heads. Wie in https://transformer-circuits.pub/2021/framework/index.html könnte die Struktur so sein, dass sie das Kopieren wiederholter Strings im Input implementiert: Die vorletzte Schicht bestimmt, wonach gesucht wird, und die letzte Schicht führt das Kopieren aus.
    • Falls damit die Idee gemeint ist, dass LLM-Ausgaben auf Next-Token-Wahrscheinlichkeiten beruhen, die aus den Trainingsdaten stammen, dann ist das eine gut bekannte Grundtatsache; daher scheint es unwahrscheinlich, dass dieses Ergebnis als Beweis dient.
      Der Beitrag dieses Artikels liegt, wie der Autor sagt, darin, dies einem technisch versierten Publikum zu zeigen, das direkt GPTs baut — im Unterschied zu Texten über „Wie wird das implementiert?“, die sich auf den Transformer selbst konzentrieren.
    • Aus meiner Erfahrung, bevor es blockiert wurde: Es halluzinierte Dinge, die wie echte Trainingsdaten aussahen.
      Bei genauerem Hinsehen waren es GitHub-READMEs, die nicht existierten und vorne und hinten nicht zusammenpassten, inhaltsleere Infobroschüren, zufällige Dialoge und dergleichen.
    • Interessant fand ich, dass das verlinkte arXiv-Paper dies als Angriff behandelt, samt Ethik und Responsible Disclosure.
      Aber das Scrapen des gesamten Internets, um solche Modelle zu trainieren, wird nie als Angriff bezeichnet.
    • Wenn ein Werk urheberrechtlich geschützt ist, dann hat man selbstverständlich auch Rechte an der Zip-Datei dieses Werks.
      Warum sollte man dann nicht auch Rechte an der Zeichen-Wahrscheinlichkeitsverteilung innerhalb dieses Werks haben?
  • Sobald ich Andrej Karpathys NanoGPT kennenlernte, trainierte ich es auf der russischen Ausgabe von War and Peace; interessant war, dass es trotz eines Modells von nur 3 MB die russische Grammatik weitgehend erfasste.
    Russisch hat eine komplexe synthetisch-flektierende Struktur. Zum Beispiel muss nach der Präposition „na“ („upon“) ein Substantiv im Akkusativ stehen; das zeigt sich bei belebten maskulinen Substantiven mit -a, bei unbelebten Substantiven ohne Endung, bei Substantiven auf „soft consonant“ mit -ia, bei femininen Substantiven mit -u usw.
    Außerdem verlangt das Verb „verwenden“, wenn ein als Werkzeug verwendetes Substantiv folgt, den Instrumental.
    Es war nicht perfekt und machte Fehler, aber es war interessant, dass NanoGPT nach nur drei Minuten Training bestimmte komplexe Regeln erschlossen hatte. Ich suchte die exakt generierten Beispielsätze im Originaltext, fand aber keine wörtlichen Übereinstimmungen.
    Semantisch war es allerdings völliger Unsinn, auch wenn es die Grammatik bis zu einem gewissen Grad verstand.

    • Flexionsendungen dürften zu den häufigsten Tokens im Trainingstext gehören, daher ist das nicht allzu überraschend.
  • Es gab eine gute 3D-Visualisierung, die dasselbe System zeigt; zusammen gelesen dürfte sie sehr wirkungsvoll sein.
    LLM Visualization (https://bbycroft.net/llm)
    https://news.ycombinator.com/item?id=38505211

    • Ich weiß den Aufwand zu schätzen, der in diese Visualisierung geflossen ist, aber aus der Perspektive von jemandem, der seit neun Jahren mit neuronalen Netzen arbeitet, war sie deutlich verwirrender als hilfreich.
      Das lag wohl daran, dass versucht wurde, alle Elemente auf einmal zu zeigen, und nichts auf abstrakte Konzepte ausgelagert wurde; ganz sicher bin ich mir aber nicht.
  • Ein gutes Projekt, aber das analysierte Modell ist sowohl hinsichtlich Größe als auch Trainingsdatenmenge praktisch ein Toy Model.
    Deshalb lässt sich dieses Modell vermutlich auch durch ein einfacheres Modell, vielleicht ein n-Gramm-Sprachmodell, approximieren; es ist jedoch schwer zu sagen, dass es repräsentativ dafür ist, wie größere Sprachmodelle funktionieren.

    • Vermutlich stimmt das. Wenn man ein kleineres Modell baut, kann man wahrscheinlich auch eine deutlich einfachere Erklärung seiner Funktionsweise erstellen.
  • Ich frage mich, ob der Autor behauptet, dass LLMs Textgeneratoren auf Basis einer Markow-Kette sind.
    Heißt das also, dass die Wahrscheinlichkeitsverteilung des nächsten generierten Tokens der Wahrscheinlichkeit der entsprechenden Token-Sequenz in den Trainingsdaten entspricht?
    Wenn ja, würde das bedeuten, dass man mit den ursprünglichen Trainingsdaten „einfach“ eine Markow-Kette bauen könnte und eine ähnliche Leistung wie bei einem LLM erhält?

    • Ein LLM ist in folgendem Sinne eine Markow-Kette:
      Der Zustand ist ein Token-Vektor von der Länge des Kontexts, und das Modell beschreibt die Übergangsmatrix. Für einen gegebenen Token-Vektor der Kontextlänge gibt es also Wahrscheinlichkeiten für den nächsten Token-Vektor derselben Kontextlänge aus.
    • Nein. Ein LLM kopiert nicht einfach denselben Text, sondern kommt eher dem nahe, den Text per Self-Attention zu „klassifizieren“ und anschließend eine einfache Markow-Kette anzuwenden.
      Der schwierige Teil ist die Klassifikation: zu erkennen, welche Texte aus den Trainingsdaten dem Prompt-Text „ähnlich“ sind.
      Das Beispiel aus dem Blogbeitrag sieht so aus:
      Original string: 'And only l'
      Similar strings: 'hat only l' 's sickly l' ' as\nthey l' 'r kingly l'
    • Im Artikel heißt es, man habe „das, was der Transformer angeblich tut, in imperativem Code implementiert, und es erzeugt Ausgaben, die denen des Transformers sehr ähnlich sind“.
      Das bedeutet, dass es möglicherweise einen Weg gibt, den Transformer zu umgehen und dieselben Ergebnisse zu erhalten. Ich frage mich, ob das effizienter ist.
      Zum Beispiel könnte es möglich sein, ausgehend von einem Basismodell etwas anderes zu trainieren, das auf einem deutlich kleineren Gerät läuft.
  • Es ist ziemlich schwer zu verstehen, was der Autor genau gezeigt zu haben behauptet.
    Ich habe den Abschnitt „Interpretation: Why Does the Approximation Work?“ mehrmals gelesen, aber er wirkt wie eine mechanische Erklärung der Transformer-Schritte. Ich verstehe nicht, was die Kernaussage ist.

  • Ich frage mich, ob das Phänomen bekannt ist, dass Attention- und FF-Verschiebungen im Großen und Ganzen in dieselbe Richtung zeigen.
    Schon dass sie schichtübergreifend im selben latenten Raum liegen, überrascht mich etwas. Könnte das FF-Netzwerk nicht eine beliebige Rotation vornehmen? Ich glaube, ich verstehe da etwas falsch.

    • Es handelt sich um eine 2D-Darstellung sehr hochdimensionaler Vektoren.
      Dabei geht zwangsläufig etwas verloren, und eine beliebige Rotation im hochdimensionalen Raum exakt abzubilden gehört zu den Dingen, die dabei wegfallen.
    • Es wäre gut, das zu überprüfen, indem man die Addition bei der Attention durch Skalierung ersetzt.