An autoencoder is a type of artificial neural network used to learn
efficient codings of unlabeled data (unsupervised learning). An autoencoder
learns two functions: an encoding function that transforms the input data, and
a decoding function that recreates the input data from the encoded
representation. The autoencoder learns an efficient representation (encoding)
for a set of data, typically for dimensionality reduction.
Variants exist, aiming to force the learned representations to assume useful
properties.