Spatial Broadcast Decoder: A Simple Architecture for Learning Disentangled Representations in VAEs

Nicholas Watters, Loic Matthey, Christopher P. Burgess, Alexander Lerchner
1/21/2019
cs.LGcs.CVstat.ML

Official code: google-deepmind/spriteworld (372 stars, Apache-2.0, last commit 2020-06-01).

Abstract

We present a simple neural rendering architecture that helps variational autoencoders (VAEs) learn disentangled representations. Instead of the deconvolutional network typically used in the decoder of VAEs, we tile (broadcast) the latent vector across space, concatenate fixed X- and Y-"coordinate" channels, and apply a fully convolutional network with 1x1 stride. This provides an architectural prior for dissociating positional from non-positional features in the latent distribution of VAEs, yet without providing any explicit supervision to this effect. We show that this architecture, which we term the Spatial Broadcast decoder, improves disentangling, reconstruction accuracy, and generalization to held-out regions in data space. It provides a particularly dramatic benefit when applied to datasets with small objects. We also emphasize a method for visualizing learned latent spaces that helped us diagnose our models and may prove useful for others aiming to assess data representations. Finally, we show the Spatial Broadcast Decoder is complementary to state-of-the-art (SOTA) disentangling techniques and when incorporated improves their performance.

View on arXivView PDF

Code Implementations(1)

Apache-2.0

Spriteworld: a flexible, configurable python-based reinforcement learning environment

37253PythonAug 13, 20196 years agoApache-2.0
deepmindenvironmentgenerativeproceduralrl+1 more

Cite this paper

@article{watters2019spatial,
  title  = {Spatial Broadcast Decoder: A Simple Architecture for Learning Disentangled Representations in VAEs},
  author = {Nicholas Watters and Loic Matthey and Christopher P. Burgess and Alexander Lerchner},
  year   = {2019},
  eprint = {1901.07017},
  archivePrefix = {arXiv},
  url    = {https://arxiv.org/abs/1901.07017}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/1901.07017.svg)](https://codeofpaper.com/paper/1901.07017)

Discussion