Encoder, Decoder, Autoencoder
An encoder is a neural network, or part of a neural network, which (typically) outputs a lower-dimensional representation of the input -- i.e. it "compresses" the input. Conversely a decoder maps that encoded representation into a task-dependent output: e.g. if the task is dimensionality reduction, the decoder aims to reconstruct the encoder's input from encoder's output (in this case the encoder-decoder architecture is called an autoencoder). An example where inputs and outputs differ is the original Transformer architecture for machine-translation, where the encoder maps the input into an abstract semantic space, which the decoder uses to translate the input into another language.