An autoencoder is an unsupervised learning algorithm that applies back propagation and sets target values equal to the inputs. An autoencoder learns to compress data from the input layer into shorter code, and then it uncompresses that code into something that closely matches the original data. This is better known as dimensionality reduction.
The following is a depiction of an autoencoder. The original images are encoded, and then decoded to reconstruct the original: