An autoencoder is an unsupervised learning technique. Autoencoders can model an unsupervised learning problem as a supervised one by taking an unlabeled dataset and tasking it with reconstructing the original input. In other words, the goal of the autoencoder is for the input to be as similar as possible to the output.
An autoencoder is composed of an encoder and a decoder, as shown in the following diagram: