I want to know if there is a difference between an autoencoder and an encoder-decoder.
Auto Encoders are a special case of encoder-decoder models. In the case of auto encoders, the input and the output domains are the same ( typically ). The Wikipedia page for Autoencoder, mentions,
The simplest way to perform the copying task perfectly would be to duplicate the signal. Instead, autoencoders are typically forced to reconstruct the input approximately, preserving only the most relevant aspects of the data in the copy.
For instance, they are used for denoising data. The inputs for such a model are the noisy inputs and the outputs are the denoised inputs. You can find an example here.
Encoder-Decoder models can also have different input and output domains, like in the case of neural machine translation. The inputs and the outputs have different domains, as they belong to two different languages and can have variable lengths as well.
According to section 2.3 of this paper:
Auto-encoders are special cases of encoder-decoder models in which the input and output are the same.
The same section of the paper describes encoder-decoder as follows:
Encoder-Decoder models are a family of models which learn to map data-points from an input domain to an output domain via a two-stage network: The encoder, represented by an encoding function z = f(x), compresses the input into a latent-space representation; the decoder, y = g(z), aims to predict the output from the latent space representation.