Diffusionsmodelle haben sich als leistungsstarker Ansatz in der generativen KI etabliert und liefern hochmoderne Ergebnisse bei der Bild-, Audio- und Videogenerierung. In diesem ausführlichen technischen Artikel untersuchen wir die Funktionsweise von Diffusionsmodellen, ihre wichtigsten Innovationen und die Gründe für ihren Erfolg. Wir behandeln die mathematischen Grundlagen, den Trainingsprozess, die Sampling-Algorithmen und die neuesten Anwendungen dieser spannenden neuen Technologie.
Einführung in Diffusionsmodelle
Diffusionsmodelle sind eine Klasse generativer Modelle, die lernen, Daten schrittweise zu entrauschen, indem sie einen Diffusionsprozess umkehren. Die Kernidee besteht darin, mit reinem Rauschen zu beginnen und es iterativ zu einer hochwertigen Stichprobe aus der Zielverteilung zu verfeinern.
Dieser Ansatz wurde von der Nichtgleichgewichtsthermodynamik inspiriert – insbesondere vom Prozess der Umkehrung der Diffusion zur Wiederherstellung der Struktur. Im Kontext des maschinellen Lernens können wir uns das so vorstellen, als würde man lernen, die allmähliche Hinzufügung von Rauschen zu Daten umzukehren.
Zu den wichtigsten Vorteilen von Diffusionsmodellen gehören:
Bildqualität auf dem neuesten Stand der Technik, die GANs in vielen Fällen übertrifft
Stabiles Training ohne konfrontative Dynamiken
Hochgradig parallelisierbar
Flexible Architektur – jedes Modell, das Eingaben auf Ausgaben gleicher Dimensionalität abbildet, kann verwendet werden
Solide theoretische Grundlagen
Lassen Sie uns tiefer in die Funktionsweise von Diffusionsmodellen eintauchen.
Stochastische Differentialgleichungen steuern die Vorwärts- und Rückwärtsprozesse in Diffusionsmodellen. Die Vorwärts-SDE fügt den Daten Rauschen hinzu und wandelt sie schrittweise in eine Rauschverteilung um. Die Rückwärts-SDE, die von einer erlernten Bewertungsfunktion geleitet wird, entfernt das Rauschen schrittweise und führt zur Generierung realistischer Bilder aus zufälligem Rauschen. Dieser Ansatz ist der Schlüssel zum Erreichen einer hochwertigen generativen Leistung in kontinuierlichen Zustandsräumen.
Der Vorwärtsdiffusionsprozess
Der Vorwärtsdiffusionsprozess beginnt mit einem Datenpunkt x₀, der aus der realen Datenverteilung abgetastet wurde, und fügt nach und nach über T Zeitschritte hinweg Gaußsches Rauschen hinzu, um zunehmend verrauschte Versionen x₁, x₂, …, xT zu erzeugen.
Bei jedem Zeitschritt t fügen wir eine kleine Menge Rauschen hinzu, und zwar gemäß:
x_t = √(1 - β_t) * x_{t-1} + √(β_t) * ε
Kennzahlen:
β_t ist ein Varianzplan, der steuert, wie viel Rauschen bei jedem Schritt hinzugefügt wird
ε ist zufälliges Gaußsches Rauschen
Dieser Vorgang wird so lange fortgesetzt, bis xT nahezu reines Gaußsches Rauschen ist.
Mathematisch können wir dies als Markow-Kette beschreiben:
Der β_t-Zeitplan wird normalerweise so gewählt, dass er für frühe Zeitschritte klein ist und mit der Zeit zunimmt. Häufige Entscheidungen sind lineare, Cosinus- oder Sigmoid-Zeitpläne.
Der umgekehrte Diffusionsprozess
Das Ziel eines Diffusionsmodells besteht darin, die Umkehrung dieses Prozesses zu erlernen – mit reinem Rauschen xT zu beginnen und es schrittweise zu entrauschen, um eine saubere Probe x₀ wiederherzustellen.
Wir modellieren diesen umgekehrten Prozess wie folgt:
Wobei μ_θ und σ_θ^2 gelernte Funktionen (normalerweise neuronale Netzwerke) sind, die durch θ parametrisiert sind.
Die wichtigste Neuerung besteht darin, dass wir die vollständige Rückwärtsverteilung nicht explizit modellieren müssen. Stattdessen können wir sie anhand des uns bekannten Vorwärtsprozesses parametrisieren.
Insbesondere können wir zeigen, dass der optimale umgekehrte Prozessmittelwert μ* wie folgt lautet:
Dies gibt uns ein einfaches Ziel – ein neuronales Netzwerk ε_θ zu trainieren, um das Rauschen vorherzusagen, das bei jedem Schritt hinzugefügt wurde.
Trainingsziel
Das Trainingsziel für Diffusionsmodelle kann aus der Variational Inference abgeleitet werden. Nach einiger Vereinfachung gelangen wir zu einem einfachen L2-Verlust:
L = E_t,x₀,ε [ ||ε - ε_θ(x_t, t)||² ]
Kennzahlen:
t wird gleichmäßig von 1 bis T abgetastet
x₀ wird aus den Trainingsdaten abgetastet
ε ist abgetastetes Gaußsches Rauschen
x_t wird durch Hinzufügen von Rauschen zu x₀ gemäß dem Vorwärtsprozess konstruiert
Mit anderen Worten: Wir trainieren das Modell, um das Rauschen vorherzusagen, das bei jedem Zeitschritt hinzugefügt wurde.
Die U-Net-Architektur ist für den Entrauschungsschritt im Diffusionsmodell von zentraler Bedeutung. Sie verfügt über eine Encoder-Decoder-Struktur mit Skip-Verbindungen, die dabei helfen, feinkörnige Details während des Rekonstruktionsprozesses zu bewahren. Der Encoder führt eine schrittweise Herunterskalierung des Eingabebilds durch, während er hochrangige Merkmale erfasst, und der Decoder führt eine Hochskalierung der codierten Merkmale durch, um das Bild zu rekonstruieren. Diese Architektur ist besonders effektiv bei Aufgaben, die eine präzise Lokalisierung erfordern, wie etwa bei der Bildsegmentierung.
Das Lärmvorhersage-Netzwerk ε_θ kann jede Architektur verwenden, die Eingaben auf Ausgaben gleicher Dimensionalität abbildet. Architekturen im U-Net-Stil sind eine beliebte Wahl, insbesondere für Aufgaben zur Bildgenerierung.
Eine typische Architektur könnte wie folgt aussehen:
Zeiteinbettung zur Konditionierung des Zeitschritts
Flexible Tiefe und Breite
Sampling-Algorithmus
Sobald wir unser Rauschvorhersagenetzwerk ε_θ trainiert haben, können wir es zur Generierung neuer Samples verwenden. Der grundlegende Sampling-Algorithmus lautet:
Dieser Prozess entfernt schrittweise Rauschen aus der Probe, geleitet von unserem erlernten Rauschvorhersagenetzwerk.
In der Praxis gibt es verschiedene Probenahmetechniken die die Qualität oder Geschwindigkeit verbessern können:
DDIM-Stichproben: Eine deterministische Variante, die weniger Sampling-Schritte ermöglicht
Probenentnahme aus Vorfahren: Integriert die gelernte Varianz σ_θ^2
Abgeschnittene Stichprobenentnahme: Stoppt früher für schnellere Generierung
Hier ist eine grundlegende Implementierung des Sampling-Algorithmus:
def sample(model, n_samples, device):
# Start with pure noise
x = torch.randn(n_samples, 3, 32, 32).to(device)
for t in reversed(range(1000)):
# Add noise to create x_t
t_batch = torch.full((n_samples,), t, device=device)
noise = torch.randn_like(x)
x_t = add_noise(x, noise, t)
# Predict and remove noise
pred_noise = model(x_t, t_batch)
x = remove_noise(x_t, pred_noise, t)
# Add noise for next step (except at t=0)
if t > 0:
noise = torch.randn_like(x)
x = add_noise(x, noise, t-1)
return x
Die Mathematik hinter Diffusionsmodellen
Um Diffusionsmodelle wirklich zu verstehen, ist es wichtig, tiefer in die ihnen zugrunde liegende Mathematik einzutauchen. Lassen Sie uns einige Schlüsselkonzepte genauer untersuchen:
Markow-Ketten und stochastische Differentialgleichungen
Der Vorwärtsdiffusionsprozess in Diffusionsmodellen kann als Markow-Kette oder, im kontinuierlichen Grenzfall, als stochastische Differentialgleichung (SDE) betrachtet werden. Die SDE-Formulierung bietet einen leistungsfähigen theoretischen Rahmen für die Analyse und Erweiterung von Diffusionsmodellen.
Die Vorwärts-SDE kann wie folgt geschrieben werden:
dx = f(x,t)dt + g(t)dw
Kennzahlen:
f(x,t) ist der Driftterm
g(t) ist der Diffusionskoeffizient
dw ist ein Wiener-Prozess (Brownsche Bewegung)
Unterschiedliche Wahlen von f und g führen zu unterschiedlichen Arten von Diffusionsprozessen. Zum Beispiel:
Durch das Verständnis dieser SDEs können wir optimale Sampling-Strategien ableiten und Diffusionsmodelle auf neue Bereiche ausweiten.
Score Matching und Denoising Score Matching
Die Verbindung zwischen Diffusionsmodellen und Score-Matching bietet eine weitere wertvolle Perspektive. Die Score-Funktion ist definiert als Gradient der Log-Wahrscheinlichkeitsdichte:
s(x) = ∇x log p(x)
Das Denoising Score Matching zielt darauf ab, diese Score-Funktion zu schätzen, indem ein Modell trainiert wird, um leicht gestörte Datenpunkte zu entrauschen. Dieses Ziel ist im kontinuierlichen Grenzwert dem Trainingsziel des Diffusionsmodells gleichwertig.
Diese Verbindung ermöglicht es uns, Techniken aus der scorebasierten generativen Modellierung zu nutzen, wie etwa getemperte Langevin-Dynamik für die Stichprobennahme.
Fortgeschrittene Trainingstechniken
Wichtigkeits-Sampling
Das Training des Standarddiffusionsmodells nimmt gleichmäßige Stichproben der Zeitschritte vor. Allerdings sind nicht alle Zeitschritte für das Lernen gleich wichtig. Mit Importance-Sampling-Techniken kann das Training auf die informativsten Zeitschritte konzentriert werden.
Ein Ansatz besteht darin, eine nicht gleichmäßige Verteilung über die Zeitschritte zu verwenden, gewichtet mit der erwarteten L2-Norm des Scores:
p(t) ∝ E[||s(x_t, t)||²]
Dies kann zu einem schnelleren Training und einer verbesserten Probenqualität führen.
Progressive Destillation
Progressive Destillation ist eine Technik, um schnellere Sampling-Modelle zu erstellen, ohne dabei an Qualität einzubüßen. Der Prozess funktioniert wie folgt:
Trainieren Sie ein Basisdiffusionsmodell mit vielen Zeitschritten (z. B. 1000).
Erstellen Sie ein Studentenmodell mit weniger Zeitschritten (z. B. 100).
Trainieren Sie den Schüler, um den Rauschunterdrückungsprozess des Basismodells anzupassen
Wiederholen Sie die Schritte 2-3 und reduzieren Sie dabei die Zeitschritte schrittweise.
Dies ermöglicht eine qualitativ hochwertige Generierung mit deutlich weniger Rauschunterdrückungsschritten.
Architektonische Innovationen
Transformatorbasierte Diffusionsmodelle
Während U-Net-Architekturen für Bilddiffusionsmodelle beliebt sind, wurde in neueren Arbeiten die Verwendung von Transformatorarchitekturen untersucht. Transformatoren bieten mehrere potenzielle Vorteile:
Besserer Umgang mit langfristigen Abhängigkeiten
Flexiblere Konditionierungsmechanismen
Einfachere Skalierung auf größere Modellgrößen
Models mögen DiT (Diffusionstransformatoren) haben vielversprechende Ergebnisse gezeigt und ebnen möglicherweise den Weg für eine noch hochwertigere Stromerzeugung.
Hierarchische Diffusionsmodelle
Hierarchische Diffusionsmodelle generieren Daten auf mehreren Skalen und ermöglichen so sowohl globale Kohärenz als auch feinkörnige Details. Der Prozess umfasst in der Regel:
Generieren einer Ausgabe mit niedriger Auflösung
Schrittweises Upsampling und Verfeinerung
Dieser Ansatz kann besonders effektiv für die Generierung hochauflösender Bilder oder längerer Inhalte sein.
Fortgeschrittene Themen
Klassifikatorfreie Anleitung
Klassifikatorfreie Führung ist eine Technik zur Verbesserung der Probenqualität und Kontrollierbarkeit. Die Kernidee besteht darin, zwei Diffusionsmodelle zu trainieren:
Ein unbedingtes Modell p(x_t)
Ein bedingtes Modell p(x_t | y), wobei y eine Bedingungsinformation ist (z. B. eine Texteingabeaufforderung)
Während der Stichprobennahme interpolieren wir zwischen diesen Modellen:
ε_θ = (1 + w) * ε_θ(x_t | y) - w * ε_θ(x_t)
Dabei ist w > 0 eine Richtskala, die steuert, wie stark das bedingte Modell betont werden soll.
Dies ermöglicht eine stärkere Konditionierung, ohne dass das Modell neu trainiert werden muss. Dies war entscheidend für den Erfolg von Text-zu-Bild-Modellen wie DALL-E 2 und Stable Diffusion.
Latentes Diffusionsmodell (LDM) Der Prozess beinhaltet die Kodierung von Eingabedaten in einen latenten Raum, in dem der Diffusionsprozess stattfindet. Das Modell fügt der latenten Darstellung des Bildes nach und nach Rauschen hinzu, was zur Generierung einer verrauschten Version führt, die dann mithilfe einer U-Net-Architektur entrauscht wird. Das U-Net integriert, geleitet von Cross-Attention-Mechanismen, Informationen aus verschiedenen Konditionierungsquellen wie semantischen Karten, Text- und Bilddarstellungen und rekonstruiert schließlich das Bild im Pixelraum. Dieser Prozess ist entscheidend für die Generierung hochwertiger Bilder mit kontrollierter Struktur und gewünschten Attributen.
Dies bietet mehrere Vorteile:
Schnelleres Training und Sampling
Bessere Handhabung hochauflösender Bilder
Konditionierung ist einfacher zu integrieren
Der Prozess funktioniert wie folgt:
Trainieren Sie einen Autoencoder, um Bilder in einen latenten Raum zu komprimieren
Trainieren Sie ein Diffusionsmodell in diesem latenten Raum
Zur Generierung im latenten Raum abtasten und in Pixel dekodieren
Dieser Ansatz war äußerst erfolgreich und führte zu Modellen wie „Stable Diffusion“.
Konsistenzmodelle
Konsistenzmodelle sind eine neue Innovation, die die Geschwindigkeit und Qualität von Diffusionsmodellen verbessern soll. Die Kernidee besteht darin, ein einzelnes Modell zu trainieren, das jeden Rauschpegel direkt auf die endgültige Ausgabe abbilden kann, ohne dass eine iterative Rauschminderung erforderlich ist.
Dies wird durch eine sorgfältig entwickelte Verlustfunktion erreicht, die Konsistenz zwischen Vorhersagen bei unterschiedlichen Rauschpegeln erzwingt. Das Ergebnis ist ein Modell, das in einem einzigen Vorwärtsdurchlauf qualitativ hochwertige Samples generieren kann, was die Inferenz dramatisch beschleunigt.
Praktische Tipps zum Trainieren von Diffusionsmodellen
Das Trainieren hochwertiger Diffusionsmodelle kann eine Herausforderung sein. Hier sind einige praktische Tipps zur Verbesserung der Trainingsstabilität und der Ergebnisse:
Gradienten-Clipping: Verwenden Sie Gradienten-Clipping, um explodierende Gradienten zu verhindern, insbesondere zu Beginn des Trainings.
EMA der Modellgewichte: Behalten Sie einen exponentiellen gleitenden Durchschnitt (EMA) der Modellgewichte für die Stichprobennahme bei, was zu einer stabileren und qualitativ hochwertigeren Generierung führen kann.
Datenerweiterung: Bei Bildmodellen können einfache Erweiterungen wie zufällige horizontale Spiegelungen die Generalisierung verbessern.
Lärmschutzplanung: Experimentieren Sie mit verschiedenen Rauschplänen (linear, Cosinus, Sigmoid), um herauszufinden, was für Ihre Daten am besten funktioniert.
Gemischtes Präzisionstraining: Verwenden Sie Training mit gemischter Genauigkeit, um den Speicherverbrauch zu reduzieren und das Training zu beschleunigen, insbesondere bei großen Modellen.
Bedingte Generierung: Auch wenn Ihr Endziel die bedingungslose Generierung ist, kann das Training mit Konditionierung (z. B. anhand von Bildklassen) die Gesamtqualität der Stichprobe verbessern.
Bewertung von Diffusionsmodellen
Die ordnungsgemäße Bewertung generativer Modelle ist wichtig, aber auch eine Herausforderung. Hier sind einige gängige Messgrößen und Ansätze:
Fréchet-Anfangsdistanz (FID)
FID ist eine weit verbreitete Metrik zur Bewertung der Qualität und Vielfalt generierter Bilder. Sie vergleicht die Statistiken generierter Beispiele mit realen Daten im Merkmalsraum eines vorab trainierten Klassifikators (normalerweise InceptionV3).
Niedrigere FID-Werte weisen auf eine bessere Qualität und realistischere Verteilungen hin. FID weist jedoch Einschränkungen auf und sollte nicht die einzige verwendete Metrik sein.
Inception-Score (IS)
Inception-Score misst sowohl die Qualität als auch die Vielfalt der generierten Bilder. Es verwendet ein vorab trainiertes Inception-Netzwerk, um Folgendes zu berechnen:
IS = exp(E[KL(p(y|x) || p(y))])
Wobei p(y|x) die bedingte Klassenverteilung für das generierte Bild x ist.
Ein höherer IS weist auf eine bessere Qualität und Vielfalt hin, weist aber bekannte Einschränkungen auf, insbesondere bei Datensätzen, die sich stark von ImageNet unterscheiden.
Für Diffusionsmodelle können wir die negative Log-Likelihood der zurückgehaltenen Daten berechnen. Dies liefert ein direktes Maß dafür, wie gut das Modell zur tatsächlichen Datenverteilung passt.
Bei hochdimensionalen Daten kann die genaue Schätzung von NLL jedoch sehr rechenintensiv sein.
Menschliche Bewertung
Bei vielen Anwendungen, insbesondere bei kreativen, ist die menschliche Bewertung weiterhin von entscheidender Bedeutung. Dies kann Folgendes umfassen:
Nebeneinanderstellung mit anderen Modellen
Auswertungen im Turing-Test-Stil
Aufgabenspezifische Auswertungen (zB Bildbeschriftungen für Text-Bild-Modelle)
Die menschliche Bewertung ist zwar subjektiv, kann aber Qualitätsaspekte erfassen, die automatisierten Messmethoden entgehen.
Diffusionsmodelle in der Produktion
Die Bereitstellung von Diffusionsmodellen in Produktionsumgebungen stellt besondere Herausforderungen dar. Hier sind einige Überlegungen und Best Practices:
Optimierung für Inferenz
ONNX-Export: Konvertieren Sie Modelle in das ONNX-Format für schnellere Inferenzen auf unterschiedlicher Hardware.
Quantisierung: Verwenden Sie Techniken wie die INT8-Quantisierung, um die Modellgröße zu reduzieren und die Inferenzgeschwindigkeit zu verbessern.
Caching: Bei bedingten Modellen Zwischenergebnisse für das unbedingte Modell zwischenspeichern, um die klassifikatorfreie Führung zu beschleunigen.
Stapelverarbeitung: Nutzen Sie Batching, um GPU-Ressourcen effizient zu nutzen.
Skalierung
Verteilte Inferenz: Implementieren Sie für Anwendungen mit hohem Durchsatz verteilte Inferenz über mehrere GPUs oder Maschinen hinweg.
Adaptives Sampling: Passen Sie die Anzahl der Sampling-Schritte dynamisch basierend auf dem gewünschten Kompromiss zwischen Qualität und Geschwindigkeit an.
Progressive Generation: Bei großen Ausgaben (z. B. hochauflösenden Bildern) generieren Sie schrittweise von einer niedrigen zu einer hohen Auflösung, um schnellere Anfangsergebnisse zu erzielen.
Sicherheit und Filterung
Content-Filtering: Implementieren Sie robuste Inhaltsfiltersysteme, um die Erstellung schädlicher oder unangemessener Inhalte zu verhindern.
Watermarking: Erwägen Sie zur Rückverfolgbarkeit die Einbindung unsichtbarer Wasserzeichen in den generierten Inhalt.
Anwendungen
Diffusionsmodelle haben sich bei einer Vielzahl generativer Aufgaben als erfolgreich erwiesen:
Bilderzeugung
Bei der Bilderzeugung erlangten Diffusionsmodelle erstmals Bedeutung. Einige bemerkenswerte Beispiele sind:
DALL-E3: OpenAIs Text-zu-Bild-Modell, das einen CLIP-Text-Encoder mit einem Diffusionsbild-Decoder kombiniert
Stable Diffusion : Ein Open-Source-Modell latenter Diffusion für die Text-zu-Bild-Generierung
Imagen, : Googles Text-zu-Bild-Diffusionsmodell
Diese Modelle können aus Textbeschreibungen äußerst realistische und kreative Bilder generieren und übertreffen damit frühere GAN-basierte Ansätze.
Videogenerierung
Diffusionsmodelle wurden auch bei der Videoerzeugung angewendet:
Videodiffusionsmodelle: Videogenerierung durch Berücksichtigung der Zeit als zusätzliche Dimension im Diffusionsprozess
Mach ein Video: Metas Text-zu-Video-Diffusionsmodell
Bildvideo: Googles Text-zu-Video-Diffusionsmodell
Diese Modelle können aus Textbeschreibungen kurze Videoclips generieren und so neue Möglichkeiten für die Inhaltserstellung eröffnen.
3D-Generierung
Aktuelle Arbeiten haben Diffusionsmodelle auf die 3D-Generierung erweitert:
DreamFusion: Text-zu-3D-Generierung mithilfe von 2D-Diffusionsmodellen
Punkt: OpenAIs Punktwolkendiffusionsmodell zur 3D-Objektgenerierung
Diese Ansätze ermöglichen die Erstellung von 3D-Assets aus Textbeschreibungen mit Anwendungen in den Bereichen Gaming, VR/AR und Produktdesign.
Herausforderungen und zukünftige Richtungen
Obwohl Diffusionsmodelle bemerkenswerte Erfolge gezeigt haben, gibt es noch einige Herausforderungen und Bereiche für künftige Forschung:
Recheneffizienz
Der iterative Sampling-Prozess von Diffusionsmodellen kann langsam sein, insbesondere bei hochauflösenden Ergebnissen. Ansätze wie latente Diffusion und Konsistenzmodelle zielen darauf ab, dieses Problem zu lösen, aber weitere Verbesserungen der Effizienz sind ein aktives Forschungsgebiet.
Steuerbarkeit
Während Techniken wie die klassifikatorfreie Steuerung die Steuerbarkeit verbessert haben, bleibt noch viel zu tun, um eine feinere Kontrolle über die generierten Ausgaben zu ermöglichen. Dies ist besonders für kreative Anwendungen wichtig.
Multimodale Erzeugung
Aktuelle Diffusionsmodelle sind für die Generierung einzelner Modalitäten (z. B. Bilder oder Audio) hervorragend geeignet. Die Entwicklung wirklich multimodaler Diffusionsmodelle, die nahtlos über verschiedene Modalitäten hinweg generiert werden können, ist eine spannende Richtung für zukünftige Arbeiten.
Theoretisches Verständnis
Obwohl Diffusionsmodelle überzeugende empirische Ergebnisse liefern, gibt es noch viel zu erforschen, warum sie so gut funktionieren. Ein tieferes theoretisches Verständnis könnte zu weiteren Verbesserungen und neuen Anwendungen führen.
Fazit
Diffusionsmodelle stellen einen Fortschritt in der generativen KI dar und bieten qualitativ hochwertige Ergebnisse in einer Reihe von Modalitäten. Indem sie lernen, einen Rauschen erzeugenden Prozess umzukehren, bieten sie einen flexiblen und theoretisch fundierten Ansatz zur Generierung.
Von kreativen Werkzeugen bis hin zu wissenschaftlichen Simulationen: Die Fähigkeit, komplexe, hochdimensionale Daten zu generieren, hat das Potenzial, viele Bereiche zu verändern. Es ist jedoch wichtig, diese leistungsstarken Technologien mit Bedacht zu betrachten und sowohl ihr immenses Potenzial als auch die damit verbundenen ethischen Herausforderungen zu berücksichtigen.
Ich habe die letzten fünf Jahre damit verbracht, in die faszinierende Welt des maschinellen Lernens und des Deep Learning einzutauchen. Meine Leidenschaft und mein Fachwissen haben dazu geführt, dass ich an über 50 verschiedenen Software-Engineering-Projekten mitgewirkt habe, mit besonderem Schwerpunkt auf KI/ML. Meine anhaltende Neugier hat mich auch zur Verarbeitung natürlicher Sprache geführt, einem Bereich, den ich gerne weiter erforschen möchte.