Für ein Modul zu Deep Learning an der ZHAW habe ich mich als Übungsaufgabe damit beschäftigt, wie ein Modell zu einem Foto selbstständig einen passenden Satz in natürlicher Sprache generiert, ähnlich der automatischen Bildbeschreibung, wie man sie etwa von Google Fotos kennt. Verlangt war die Implementierung und der Vergleich von zwei unterschiedlichen Architekturen unter identischen Bedingungen, ergänzt um eigene Erweiterungen.

Zwei Architekturen im Vergleich

Beide Modelle folgen dem Encoder-Decoder-Prinzip und verwenden denselben eingefrorenen, auf ImageNet vortrainierten ResNet18 als Bild-Encoder1. Statt des üblichen Klassifikationskopfs wird nur die letzte Feature-Map von 512 Kanälen bei 7×7 Positionen verwendet. Das Einfrieren des Encoders hält die Anzahl trainierbarer Parameter klein und beugt Overfitting auf dem vergleichsweise kleinen Datensatz vor.

Show and Tell

Das einfachere Modell mittelt die 49 räumlichen Positionen zu einem einzelnen 512-dimensionalen Vektor, projiziert diesen auf 256 Dimensionen und übergibt ihn als erstes Eingabe-Token an ein LSTM2. Von dort an generiert das LSTM die Bildbeschreibung Wort für Wort.

Show, Attend and Tell

Das zweite Modell behält die volle 7×7-Feature-Map und ergänzt einen additiven Attention-Mechanismus3: Bei jedem Dekodierschritt tt berechnet dieser aus dem aktuellen LSTM-Zustand ein Gewicht αt,i\alpha_{t,i} für jede der 4949 Bildregionen ai\mathbf{a}_i und bildet daraus einen gewichteten Kontextvektor zt\mathbf{z}_t:

αt,i=exp⁡(et,i)∑k=149exp⁡(et,k),zt=∑i=149αt,i ai\alpha_{t,i} = \frac{\exp(e_{t,i})}{\sum_{k=1}^{49} \exp(e_{t,k})}, \qquad \mathbf{z}_t = \sum_{i=1}^{49} \alpha_{t,i}\, \mathbf{a}_i

Die Rohwerte et,ie_{t,i} stammen dabei aus einem kleinen neuronalen Netz, das den aktuellen Zustand mit jeder Bildregion vergleicht. Die Softmax-Normalisierung sorgt dafür, dass sich die Gewichte zu 11 aufsummieren, ähnlich einer Verteilung der Aufmerksamkeit über das Bild. So kann sich das Modell bei jedem Wort erneut auf die dafür relevanten Bildbereiche konzentrieren, statt sich auf einen einzigen, bereits gemittelten Vektor zu verlassen.

Daten und Training

Als Datengrundlage diente der Flickr8k-Datensatz mit rund 6’500 Trainingsbildern und je fünf menschlichen Referenzbeschreibungen pro Bild, was nach der Vorverarbeitung 32’365 Bild-Text-Paare ergibt. Der Wortschatz wurde ausschliesslich aus den Trainingsdaten aufgebaut, um jegliches Data Leakage zu vermeiden, und umfasst 2’649 Tokens. Trainiert wurde mit Adam, einer Lernrate von 4e-4, Batch-Grösse 64 und bis zu 8 Epochen, abgesichert durch Dropout, Gradient Clipping und Early Stopping auf Basis von BLEU-4 mit einer Geduld von drei Epochen.

Trainingskurven beider Modelle: Trainingsverlust, Validierungs-Perplexität und BLEU-4 über die Epochen, jeweils für Show and Tell und Show, Attend and Tell.
Trainingsverlust, Perplexität und BLEU-4 über die Epochen für beide Architekturen.

Ergebnisse

Zur Bewertung dient neben BLEU auch die Perplexität, welche misst, wie überrascht das Modell im Schnitt von den tatsächlichen Referenzwörtern w1,…,wNw_1, \dots, w_N ist:

PPL=exp⁡(−1N∑i=1Nlog⁡p(wi∣w<i))\text{PPL} = \exp\left(-\frac{1}{N}\sum_{i=1}^{N} \log p(w_i \mid w_{<i})\right)

Eine tiefere Perplexität bedeutet, dass das Modell den nächsten Wörtern im Schnitt eine höhere Wahrscheinlichkeit zuweist. Auf dem Testset erreicht das Attention-Modell mit einer Perplexität von 17.04 und einem BLEU-4-Wert von 0.180 bessere BLEU-Werte als das einfachere Show-and-Tell-Modell mit 16.57 Perplexität und 0.152 BLEU-44. Der Vorsprung fällt besonders bei den höhergradigen BLEU-Metriken ins Gewicht, welche zusammenhängende Wortfolgen statt einzelner Wörter bewerten, was zur Erwartung passt, dass gezielte Aufmerksamkeit auf einzelne Bildregionen zu kohärenteren Formulierungen führt.

Fünf Testbilder mit den generierten Bildbeschreibungen beider Modelle sowie der menschlichen Referenzbeschreibung im Vergleich.
Dieselben Testbilder, einmal mit den Beschreibungen des einfachen Modells und einmal mit jenen des Attention-Modells. Bei den beiden Hunden erkennt nur das Attention-Modell, dass es sich um zwei Tiere handelt.

Attention-Visualisierung

Um den Attention-Mechanismus sichtbar zu machen, habe ich die 7×7-Gewichtungskarte für jedes generierte Wort auf die ursprüngliche Bildgrösse hochskaliert und über das Bild gelegt. Bei konkreten Substantiven konzentriert sich die Aufmerksamkeit meist klar auf die passende Bildregion, bei Füllwörtern wie “in” oder “the” verteilt sie sich dagegen deutlich diffuser über das Bild.

Zwölf Ausschnitte desselben Bilds mit je einer Attention-Heatmap, eine pro generiertem Wort der Bildbeschreibung 'a man in a red jacket is jumping in the snow'.
Attention-Heatmap pro generiertem Wort: Bei "man" und "jacket" liegt der Fokus klar auf der Person am Eis.

Beam Search

Als Erweiterung habe ich beim Attention-Modell die greedy Dekodierung mit Beam Search (Beam-Grösse 3, längennormalisiert) verglichen. Beam Search verbessert die höhergradigen BLEU-Werte leicht und konsistent (BLEU-4 von 0.180 auf 0.192) und liefert bei manchen Bildern etwas detailliertere Beschreibungen, allerdings auf Kosten einer spürbar langsameren Inferenz.

Grenzen und Ausblick

Flickr8k ist ein kleiner Datensatz, weshalb die absoluten Werte bescheiden ausfallen und die Modelle bei ungewöhnlichen Szenen zu generischen oder gelegentlich halluzinierten Beschreibungen neigen. Der eingefrorene Encoder limitiert zudem, wie gut sich die visuellen Merkmale an die eigentliche Aufgabe anpassen können, und BLEU misst nur Wortüberlappung mit den Referenzen, was mit menschlicher Qualitätswahrnehmung nur schwach korreliert. Für eine Weiterentwicklung würden sich das Feintunen der oberen Encoder-Schichten, vortrainierte Wort-Embeddings, ein Transformer-Decoder oder zusätzliche Metriken wie CIDEr oder METEOR anbieten. Für eine Übungsarbeit zeigen die Resultate aber bereits deutlich, dass räumliche Aufmerksamkeit die Qualität generierter Bildbeschreibungen gegenüber dem einfacheren CNN-LSTM-Ansatz spürbar verbessert.