  Learning representations that capture the underlying data generating process
is a key problem for data efficient and robust use of neural networks. One key
property for robustness which the learned representation should capture and
which recently received a lot of attention is described by the notion of
invariance. In this work we provide a causal perspective and new algorithm for
learning invariant representations. Empirically we show that this algorithm
works well on a diverse set of tasks and in particular we observe
state-of-the-art performance on domain generalization, where we are able to
significantly boost the score of existing models.
