Introduction
Autoencoders are neural networks that are optimized to convert the input into a version of itself through a hidden layer acting as a learned code. They are specifically designed to infer the useful characteristics of data by learning to ignore the noise and focusing on the relevant generalizable patterns. This is typically achieved by limiting the code to fewer degrees of freedom than the original input. For example, this could be performed by introducing a bottleneck hidden layer that is much smaller than the input layer and the output layer This constrains the code, the activations of the hidden layer, to focus only on the differentiating patterns in the input, as opposed to explaining all its idiosyncrasies.
Intuitively, they are an advanced form of dimensionality reduction approach, unlike linear transforms such as principal component analysis.