Latent space is de interne kaart die een AI-model maakt van de dingen die het verwerkt. Elke foto, zin of elk product wordt een punt op die kaart, een rij getallen, en dingen die op elkaar lijken komen dicht bij elkaar te liggen. Je ziet die kaart nooit, maar een webwinkel die vergelijkbare producten voorstelt of een beeldgenerator die van een tekstprompt een plaatje maakt, kan er allebei mee werken.
Hoe werkt het?
Een neuraal netwerk zet zijn invoer laag voor laag om in rijen getallen. De getallen in een verborgen laag vormen een punt in een ruimte met één dimensie per getal, en die ruimte is de latent space. Latent betekent verborgen: de trainingsdata zegt nergens wat die getallen moeten zijn, dus het model bepaalt ze zelf.
Een autoencoder maakt dat zichtbaar. Het leerboek Deep Learning van Goodfellow, Bengio en Courville beschrijft hem als een netwerk dat leert zijn invoer via een verborgen code naar zijn uitvoer te kopiëren: een encoder zet de invoer om in de code, en een decoder bouwt de invoer daaruit weer op. Is de code kleiner dan de invoer, dan moet het netwerk de belangrijkste kenmerken van de trainingsdata vasthouden. Een variational autoencoder (VAE) van Kingma en Welling (2013) geeft de latent space daarnaast een bekende verdeling, zodat je een nieuw punt kunt kiezen en daar nieuwe data van kunt maken.
Waar wordt het gebruikt?
- Zoeken op betekenis. Een embedding is een punt in de latent space van een tekstmodel, en teksten met een vergelijkbare betekenis krijgen punten dicht bij elkaar (semantisch zoeken). Voor woordvectoren meldden Mikolov e.a. (2013) dat vector("King") min vector("Man") plus vector("Woman") het dichtst bij vector("Queen") uitkomt.
- Beeldgeneratie. Stable Diffusion voert zijn diffusieproces uit in de latent space van een autoencoder, wat veel minder rekenwerk kost dan werken op pixels (Rombach e.a., 2022). Een tekstencoder zet de prompt om in getallen die elke stap van het ontruisen sturen.
- Wandelen tussen punten. Wie de punten op de lijn tussen twee latente punten decodeert, krijgt een geleidelijke overgang tussen twee beelden. White (2016) liet voor VAE's en GAN's zien dat een gebogen pad (sferische interpolatie) scherpere beelden geeft dan een rechte lijn.
Waar gaat het mis?
De dimensies hebben geen labels. Olah e.a. (2017) zagen dat willekeurige richtingen in de activatieruimte van een netwerk vaak interpreteerbaar lijken, maar minder vaak dan losse neuronen, en schreven dat onderzoekers nauwelijks weten hoe je betekenisvolle richtingen kiest. Bekende voorbeelden kunnen ook misleiden. Nissim, van Noord en van der Goot (Rijksuniversiteit Groningen, 2019) wijzen erop dat de standaardcode voor word2vec-analogieën nooit een van de invoerwoorden teruggeeft; sta je dat wel toe, dan geeft de analogie vaak het invoerwoord zelf terug. En elk model heeft zijn eigen latent space: punten uit twee verschillende modellen, of uit een opnieuw getrainde versie van hetzelfde model, kun je niet direct vergelijken (Hu e.a., 2022).
Voorbeeld
Stable Diffusion v1 werkt met afbeeldingen van 512 bij 512 pixels. De autoencoder verkleint elke zijde met een factor 8 en bewaart 4 getallen per positie, dus een afbeelding van 512 × 512 × 3 kleurwaarden (786.432 getallen) wordt een latent van 64 × 64 × 4 (16.384 getallen), 48 keer zo weinig (modelkaart). De prompt komt binnen via een CLIP-tekstencoder en cross-attention. Het model haalt stap voor stap ruis uit die kleine latent, en de decoder zet het resultaat daarna weer om in een afbeelding op volle grootte.
Bronnen
- Goodfellow, Bengio and Courville: Deep Learning, chapter 14, Autoencoders (2016)Web
- Kingma and Welling: Auto-Encoding Variational Bayes (2013)arXiv
- Rombach et al.: High-Resolution Image Synthesis with Latent Diffusion Models (CVPR 2022)arXiv
- CompVis: Stable Diffusion v1-4 model card (Hugging Face)Web
- Olah, Mordvintsev and Schubert: Feature Visualization (Distill, 2017)Web
- Nissim, van Noord and van der Goot: Fair is Better than Sensational: Man is to Doctor as Woman is to Doctor (2019)arXiv
