Using Generative Adversarial Networks as generative model

A Generative Adversarial Network (GAN) is a type of artificial intelligence that can create new, realistic-looking data—like images,  or, in our case, results of planetary system formation simulations—by learning from examples. It works a like a competition between two players: one creates fake data (the "generator") while the other tries to detect if it's fake or real (the "discriminator"). Over time, both get better, and the result is that the generator produces data that are statistically similar to 'real' training data. 

In this project, which has not been published yet, we used a Generative Adversarial Network (GAN) to generate synthetic planetary systems that are similar to results of numerical simulations. Our Generator and Discriminator are fully connected neural networks, with 3 (G) and 1 (D) hidden layers of size 512. The Generator is trained 2 times, for one training of the Discriminator. After some training, the Generator learns to produce samples that look similar to training ones (see next figure). However, one observe that the generator only produces systems with 20 planets, while training sample are made of planetary systems with 1 to 20 planets. This is characteristic of mode collapse, where the Generator specialises in some types of samples that it learns to produce in a very accurate way. This behaviour is related, in our case, to the way we code results of numerical simulations, and will be fixed in the future (contact us if you are interested in working on this!). 

Planetary systems generated by un-trained Generator (left) and trained Generator (right). The x axis represents the distance between the central star and the planet (semi-major axis) in astronomical units (the distance between the Sun and the Earth) and in logarithmique scale. The vertical axis represents the mass of planets in Earth masses and in logarithmic scale. The Earth would be located at the (0,0) point on this diagram.

The notebook (experimental and not fully commented) used for this project is available here. The input file (''J20_25000.csv'') that contains the training set is available on demand