- Maskierte Sprachmodelle wie BERT und RoBERTa können als Konzept der Text-Diffusionsmodelle interpretiert werden.
- Anders als bei klassischen Auto-regressive-Modellen (z. B. GPT) wurde die Möglichkeit einer blockweisen Generierung und eines graduellen Wiederherstellungsverfahrens gezeigt.
- Durch das schrittweise Anpassen der Maskierungsrate im Training wurde experimentell bestätigt, dass RoBERTa auch natürliche Textgenerierung leisten kann.
- Selbst ohne Veränderung der bestehenden Architektur kann Generationsfähigkeit allein durch die Anpassung des Trainingsziels erreicht werden.
- Im Vergleich zu GPT-2 liefert ein auf RoBERTa basierendes Diffusionsmodell ebenfalls konsistente Textausgaben auf einem gewissen Niveau.
Überblick
Google DeepMind hat mit Gemini Diffusion ein Diffusions-basiertes Sprachmodell vorgestellt, das im Unterschied zur GPT-Familie Text in Blockblöcken auf einmal generiert. Dieser Ansatz erzeugt Text, indem er sukzessive zufälliges Rauschen raffiniert und bereinigt.
Beim Durchsehen der zugehörigen Veröffentlichung (Large Language Diffusion Models) wurde bestätigt, dass die diskrete Sprach-Diffusion eine Verallgemeinerung von Masked Language Modeling (MLM) ist. Auf Basis dieser Idee wurde experimentell untersucht, ob BERT-Modelle ebenfalls zur Textgenerierung genutzt werden können.
Hinweis: Die spätere DiffusionBERT-Arbeit prüft ähnliche Ideen strenger.
Kurze Geschichte der Transformer
Der 2017 erstmals vorgeschlagene Transformer hatte eine Encoder-Decoder-Struktur. 2018 entstanden getrennte, spezialisierte Modellfamilien: ein Encoder (BERT: bidirektional, auf maskierte Wiederherstellung fokussiert) und ein Decoder (GPT: autoregressiv, auf sequentielle Vorhersage fokussiert).
- Nur Encoder (BERT-Familie)
- Erhält den gesamten Kontext als Eingabe und maskiert bestimmte Teile mit
<MASK>, um diese mit dem Rest wiederherzustellen - Zeigt Leistungsstärken bei Satzrepräsentationen, Klassifikation usw.
- Erhält den gesamten Kontext als Eingabe und maskiert bestimmte Teile mit
- Nur Decoder (GPT-Familie)
- Sagt das nächste Token aus der vorgegebenen Reihenfolge voraus
- Schneidet sich besonders bei Generierung, Zusammenfassung und Übersetzung hervor
BERT wurde direkt für Klassifikation genutzt, doch die GPT-Familie sicherte sich durch verbesserte Generationsfähigkeiten zunehmend mehr Anwendungsfälle.
Diskrete Sprach-Diffusionsmodelle
Diffusionsmodelle wurden ursprünglich in der Bildgenerierung populär.
Bei Bildern:
- Vorwärtsprozess: Füge einem sauberen Bild schrittweise Gaußsches Rauschen hinzu, bis ein reiner Rauschzustand erreicht ist
- Rückwärtsprozess: Rekonstruiere die Ursprungsdaten durch wiederholte Denoising-Schritte mit einem Deep-Learning-Modell
Für Texte ist der einfachste Weg ein maskierungsbasierter Rauschprozess.
- Vorwärtsprozess (Maskierung)
- Bei t=0 liegt der Originaltext vor, mit zunehmendem Schritt wird ein Teil der Tokens zufällig durch
<MASK>ersetzt - Im Endschritt ist alles mit
<MASK>gefüllt
- Bei t=0 liegt der Originaltext vor, mit zunehmendem Schritt wird ein Teil der Tokens zufällig durch
- Rückwärtsprozess (Denoising)
- Der Transformer-Encoder lernt, die Original-Tokens aus einer gegebenen Maskierungssituation wiederherzustellen
- Bei niedriger Maskierungsrate ist das Wiederherstellen einfacher, bei hoher Maskierungsrate schwieriger
- Durch wiederholtes Vorgehen von hoher zu niedriger Maskierungsrate kann die komplette Sequenz erzeugt werden
In diesem Diffusionsrahmen summiert das Modell den Denoising-Loss über alle einzelnen Maskierungsratenstufen. Das Maskierungswiederherstellungsziel von BERT ist praktisch ein Teil der Text-Diffusion. Durch die Kombination einer Maskierungsratenplanung mit wiederholtem Denoising lässt sich das BERT-Ziel zu einem Verfahren für Sprachgenerierung ausbauen.
RoBERTa-Diffusions-Experiment
RoBERTa wurde 2019 vorgestellt und zeichnet sich durch erweiterte Hyperparameter, mehr Daten und ein einfacheres Trainingsziel (MLM Only) im Vergleich zu BERT aus.
In den Experimenten wurden die Baseline-Gewichte von RoBERTa, der Tokenizer und der Trainer aus den HuggingFace-Libraries transformers und datasets genutzt.
Auf dem WikiText-Datensatz erfolgte das Fine-Tuning in folgendem Ablauf:
- Pro Batch wird aus einem 10-stufigen Diffusions-Schedule (
mask_probs: 1.0~0.1) eine Stufe gezogen und für das Maskieren verwendet - Mit dem benutzerdefinierten
diffusion_collatorwird zuerst eine Maskierungswahrscheinlichkeit bestimmt und dann für jedes Token probabilistisch<MASK>gesetzt - Die ersten 16 Tokens werden stets beibehalten, um den Prompt-Kontext zu bewahren
Datenmaskierung (benutzerdefinierter Collator):
- Nach dem Padding jeder Tokengruppe eines Beispiels wird zufällig eine Maskierungswahrscheinlichkeit gewählt
- Alle Tokens außer den ersten 16 erhalten mit dieser Wahrscheinlichkeit das Maskierungszeichen
<MASK> - Maschinierte Daten und zugehörige Label-Sets werden zurückgegeben
Generierung (Inference):
- Eingabesequenz mit 256 Tokens: die ersten 16 sind Prompt, der Rest ist
<MASK> - In jedem Schritt werden die vom Modell vorhergesagten Tokens gesampelt und eingefügt, anschließend wird ein Teil erneut maskiert
- Die Maskierungsrate wird schrittweise reduziert und der Prozess wiederholt, bis am Ende alles wiederhergestellt ist
Beispielhafte Generierung:
- Mit Prompt und natürlichem Folge-Text wurden tatsächlich recht konsistente Texte erzeugt
- Manche Auffälligkeiten resultieren aus dem Vorverarbeitungsformat des WikiText-Datensatzes (z. B.
@-@-Bindestrich)
Vergleich mit GPT-2
- GPT-2 ist etwas schneller und liefert konsistenteren Text, dennoch zeigt RoBERTa Diffusion eine überraschend gute Leistung (mit hohem Potenzial für schrittweise Verbesserungen)
- Neue Verfahren wie AR-Diffusion und Skip-Step Diffusion sowie weitere Optimierungen könnten Qualität und Geschwindigkeit weiter steigern
Fazit
- Maskierte Sprachmodelle wie RoBERTa können durch Training mit angepasster Maskierungsrate zu natürlichen Sprachgenerierungs-Engines werden.
- Schon das Lernen mit der schrittweisen Schädigung und Wiederherstellung von Text über
<MASK>-Tokens reicht aus, um die vollständige Umwandlung in ein generatives Modell zu belegen. - Auch ohne Änderung der Modellstruktur ist es möglich, Generationsfähigkeit allein durch die Modifikation des Trainingsziels zu gewinnen.
- Letztlich stimmen Modelle der BERT-Familie im Kern mit einem Text-Diffusionsmodell überein.
1 Kommentare
Hacker-News-Kommentar
Als BERT zum ersten Mal auftauchte, versuchten alle, damit Text zu generieren, aber das funktionierte meist nicht besonders gut; ein Referenzpaper dazu ist hier. Savinov et al. von DeepMind zeigten, dass es durchaus brauchbar funktionieren kann, wenn man beim Training nur zwei Schritte anwendet und die Maskierungswahrscheinlichkeit randomisiert
Nachdem ich letzte Woche mehrfach versucht hatte, BERT zum Chatten zu bringen, habe ich durch diesen Beitrag davon erfahren. Ich habe noch weitere Ideen, die ich ausprobieren möchte, und experimentiere weiter mit Spaß daran herum zugehöriger Blog
Ich gehörte zu der großen Gruppe von Leuten, die dachten, dass BERT nur als reiner Encoder genutzt werden könne, also etwa für semantische Ähnlichkeitsmessung und Klassifikation, nicht für Textgenerierung
Soweit ich weiß, wurde dieser Zusammenhang erstmals 2021 in diesem Paper (Seite 5) angesprochen. Man probierte dort im Text-Diffusion-Setting einen Ansatz aus, bei dem Wörter mit semantisch ähnlichen anderen Wörtern verrauscht werden, stellte aber fest, dass es einfacher war, das Modell maskierte Wörter finden zu lassen. Die Geschichte dieses Ansatzes reicht noch viel weiter zurück bis zu diesem Paper, das bereits ein generatives MLM gebaut hat, ohne es mit Diffusionsmathematik zu erklären
Das ist noch älter. 2014 zeigten Li Yao et al. in diesem Paper die Äquivalenz von autoregressiven Modellen (Vorhersage des nächsten Tokens) und generativen stochastischen Netzwerken (Denoising Autoencoder, Vorläufer von Diffusionsmodellen). Sie argumentierten, dass paralleles Sampling sequenzielles Sampling gut approximiert, und auch in meiner Arbeit von 2016, Counterpoint by Convolution, Link, habe ich diese Methode angewendet und beschrieben, dass sie sogar bessere Leistung liefert. Leider bekam das wenig Diffusions-Zitationen, weil es ein Anwendungspaper war. Vermutlich gibt es noch ältere Wurzeln
Ich erinnere mich ebenfalls daran, dass dieses Paper die erste formale Referenz dazu war (nach BERT liegt es nahe, dass NLP-Forschende auf die Diffusionsidee kommen). Eine Sammlung früher Referenzen zu Text-Diffusion, die ich vor drei Jahren zusammengestellt habe, ist hier
Zur Referenz: Das zugehörige Paper ist auch hier zu finden
Diffusionsbasierte Ansätze fühlen sich eher nach dem an, was im Gehirn von Tieren passiert. Wenn ich spreche, erzeuge ich Wörter nicht eins nach dem anderen auf Basis des vorherigen Wortes, sondern habe eher zuerst eine vage Gesamtidee im Kopf und forme sie dann in Sprache
Autoregressive LLMs machen in Wirklichkeit ebenfalls nicht nur so simpel die Vorhersage des nächsten Wortes. Zwar kommt in einem Forward-Pass jeweils ein Token heraus, aber im latenten Raum zeigen sich deutlich langfristige Planung und Schlussfolgern. Auch beim tatsächlichen Sprechen haben wir erst das Gesamtbild im Kopf und sprechen dann sequenziell, daher ist Diffusion nicht unbedingt menschenähnlicher
Ich mochte persönlich diesen Blogbeitrag, der Diffusion als eine Art „spektrale Autoregression“ beschreibt. Diffusion neigt dazu, zuerst niederfrequente Merkmale und später hochfrequente Merkmale vorherzusagen
Wenn ich eine Nachricht in Slack etwa fünfmal bearbeite, habe ich oft das Gefühl, selbst ein Diffusionsmodell zu sein
Beim Sprechen oder Schreiben geben wir Wörter tatsächlich sequenziell aus. Aber bevor wir einen Satz beginnen, haben wir den groben Punkt meist schon im Kopf. Das ähnelt LLMs, die vor der Token-Ausgabe im latenten Raum erst die grobe Richtung planen
Aus Interpretabilitätsforschung geht hervor, dass autoregressive LLMs intern ebenfalls im Voraus planen, was sie sagen wollen
Persönlich wirkt es auf mich natürlicher, nicht nur Maskieren und Ausfüllen zuzulassen, sondern Levenshtein-artige Editierungen mit Einfügen/Löschen zu unterstützen. Wenn man zum Beispiel im letzten Schritt ein Wort durch ein längeres Synonym ersetzen möchte, kann man nicht nach rechts verschieben, was in dieser Diffusionsstruktur nicht einfach ist
Solche einfachen Experimente sind spannend, weil man die Prinzipien schnell erfassen kann. Ein Nachteil bei Text-Diffusormodellen ist, dass Tokens als diskrete statt als kontinuierliche Werte behandelt werden müssen. Bei Bildern sind Pixel kontinuierlich, daher lässt sich natürlich Rauschen hinzufügen, bei Text-Tokens aber nicht. Meist läuft es auf vollständigen Ersatz hinaus; es gibt zwar verschiedene Ansätze, etwa Rauschen im Embedding-Raum hinzuzufügen oder Embeddings direkt zu lernen, aber alle sind komplizierter als Bilddiffusion
Von Ansätzen wie diesem Paper erwarte ich persönlich mehr. Dort werden kontinuierliche latente Diffusion und autoregressive, Transformer-basierte Textgenerierung kombiniert. Autoencoder und Transformer können gemeinsam (oder unabhängig) trainiert werden
Als ich zum ersten Mal von Text-Diffusionsmodellen hörte, dachte ich: „Ist das nicht einfach MLM?“ Worauf ich geachtet habe, war MaskGIT. Wirklich als Diffusion bezeichnen ließe sich das nur, wenn das Modell darauf trainiert wird, falsche Tokens durch richtige zu ersetzen, denn die Stärke kontinuierlicher Diffusion ist ihre Robustheit gegenüber Rauschen. Aber die Idee, tatsächlich falsche Tokens zu erzeugen, scheint nicht leicht umzusetzen zu sein, deshalb wurde sie bisher wohl noch nicht oft ausprobiert
Ich habe mit MLM auf UTF8-Byte-Ebene experimentiert und ein unstrukturiertes Übersetzungsmodell ausprobiert. Mit Curriculum Learning und schrittweise zunehmender zufälliger Verrauschung. Wenn es nur darum geht, Rauschen hinzuzufügen, reicht es aus, zufällige Indizes durch zufällige Bytewerte zu ersetzen. Man gibt zum Beispiel das folgende Muster ein
Man bewertet die gesamte Zielsequenz iterativ neu, damit mit zunehmendem Schwierigkeitsgrad keine diskontinuierlichen Änderungen in der Trainingsdomäne entstehen. Am Ende war mir Terminologie oder Kategorisierung egal, und wichtiger als „Ist das Diffusion?“ war nur noch „Funktioniert es gut?“
Ich frage mich auch, wie ein Vergleich mit electra ausfallen würde
Ich wollte einmal ausprobieren, ob man durch Fine-Tuning eines Inlining-Code-Completion-Modells eine ähnliche Leistung wie bei Cursor erreichen kann (praktisch vermutlich schwierig, aber spannend wäre es). Allerdings gibt es noch nicht einmal ein offenes Diffusionsmodell, das sich als Basis wirklich eignet, daher bin ich gespannt darauf
Das Attraktive an Bild-Diffusionsmodellen war, dass sie Bilder aus zufälligem Rauschen erzeugen. Deshalb frage ich mich, warum Text-Diffusionsmodelle nicht mit zufälligen Tokens beginnen, sondern mit vollständig maskierten leeren Tokens
Das hängt von der gewünschten Aufgabe ab. Für einfache Textvervollständigung gibt man den Eingabesatz ohne Maskierung vor und lässt das Modell die anschließenden Maskierungs-Tokens ausfüllen. Wenn man Codebearbeitung oder Ähnliches möchte, kann man nur die zu bearbeitenden Stellen maskieren und sie schrittweise auffüllen lassen. Die Stärke von Text-Diffusionsmodellen liegt in ihrer Fähigkeit, praktische Bearbeitungen wie Code-Editing auszuführen (autoregressive LLMs brauchen dafür ein separates System, das per Anweisung editiert). Wenn man ein Modell mit einem gut geeigneten Code-Editing-Head trainiert, könnte das Geschwindigkeit und Effizienz vieler Coding-Aufgaben erhöhen. Ich vermute, dass solche Funktionen künftig natürlich in Systeme wie GPT Codex integriert werden
Nicht alle beginnen nur mit leeren Tokens. Es gibt verschiedene Versuche: manche starten mit zufälligen Tokens, manche mit Masken, manche mit Embedding-Vektoren