Adversarial training is a machine learning technique where one neural network (NN) is trained with one objective (usually signal-background separation) and one constraint, in order to make the NN output invariant with respect to some observable. This is achieved by training a second NN that attempts to predict the feature from the first NN output, and provides feedback to the first NN.