Schöner, kurzer Beitrag, der veranschaulicht, wie einfach die diskrete Diffusion sein kann. Diffusion (d.h. parallel, iterierte Rauschunterdrückung, oben) ist das weit verbreitete generative Paradigma in Bildern/Videos, während die Autoregression (d.h. von links nach rechts unten) das dominante Paradigma im Text ist. Bei Audio habe ich ein bisschen von beidem gesehen. Viele Diffusionspapiere wirken etwas dicht, aber wenn man die mathematische Formalität wegnimmt, hat man einfache Basisalgorithmen, z.B. etwas, das viel näher am Flussabgleich in kontinuierlichen Daten liegt, oder etwas wie dies in diskreten Daten. Es ist dein Vanilla-Transformer, aber mit bidirektionaler Aufmerksamkeit, bei dem du iterativ alle Tokens in deiner "Tokens-Leinwand" basierend auf einem Rauschzeitplan neu samplest und neu maskierst, bis du die endgültige Probe im letzten Schritt erhältst. (Bidirektionale Aufmerksamkeit ist viel mächtiger, und du erhältst viel stärkere autoregressive Sprachmodelle, wenn du damit trainierst, leider macht es das Training auch viel teurer, weil du jetzt nicht mehr über die Sequenzdimension parallelisieren kannst). Die Autoregression fügt also ein `.append(token)` zur Tokens-Leinwand hinzu, während sie nur rückwärts aufpasst, während die Diffusion die gesamte Tokens-Leinwand mit einem `.setitem(idx, token)` aktualisiert, während sie bidirektional aufpasst. Menschliches Denken fühlt sich naiv eher wie Autoregression an, aber es ist schwer zu sagen, dass es nicht mehr diffusionsähnliche Komponenten in einem latenten Raum des Denkens gibt. Es scheint durchaus möglich, dass man weiter zwischen ihnen interpolieren oder sie weiter verallgemeinern kann. Und es ist ein Bestandteil des LLM-Stacks, der sich immer noch etwas fungibel anfühlt. Jetzt muss ich dem Drang widerstehen, in die Nebengeschichte über das Training von Nanochat mit Diffusion abzuschweifen.