# Can a GAN be used for data augmentation?

Can a generative adversarial network (GAN) be used for data augmentation (i.e. to generate synthetic examples that are added to a dataset)? Would it have any impact on the performance of a model trained on the augmented dataset?

• Just from a theoretical perspective alone, this cannot be possible. If a GAN is trained on a given dataset, it can only learn the information represented in that dataset. If you then use this GAN to generate new data, it will generate data from the same space that the original data is in. By training a GAN, you're not adding any new information to the dataset, so naturally the GAN cannot produce data from a larger space than the space of the original dataset. It is thus pointless to try to generate new training data with a GAN, because this synthetic data will not contain any new information. – Alex Aug 30 '18 at 21:33
• I don't understand why this question was closed. The question is very interesting indeed. I'd like to add a link to a study we performed regarding this issue, if anyone is interested. The relevant code can be found here. – Djib2011 Sep 16 '19 at 9:59
• I agree. thanks for re-opening. Could you describe your study as an answer? – ErroriSalvo Sep 16 '19 at 14:13

Yes, GAN can be used to "hallucinate" additional data as a form of data augmentation.

See these papers which do pretty much what you are asking:

If your GAN is sufficiently well trained, there's no reason why this shouldn't help improve model performance. If your GAN is bad, you'll get garbage.

After long time, I would conclude the answer is no, based on some quite solid theoretical basis https://en.wikipedia.org/wiki/Data_processing_inequality

If you train your GAN on dataset A and use it to augment data on B, I think the answer is yes, since it absorb some knowledge from A. If you train your data on B and try to augment on B, I think GAN is useless here because there is no gain in information.

For visual tasks, data augmentation can often be accomplished by rotation, scaling, or rearranging patches. These transformations do not necessarily add information, but can be useful for models to learn to generalize better.

The generator in a GAN learns a complex distribution from its training data from which you can sample, and you can view these new samples as another type of transformation of the original data, akin to rotation, scaling, etc.