Why do we need autoencoders? Recently, I have been studying autoencoders. If I understood correctly, an autoencoder is a neural network where the input layer is identical to the output layer. So, the neural network tries to predict the output using the input as golden standard.
What is the usefulness of this model? What are the benefits of trying to reconstruct some output elements, making them as equal as possible to the input elements? Why should one use all this machinery to get to the same starting point?
 A: It can also model your population so that when you input a new vector, you can check how different is the output from the input. If they're "quite" the same, you can assume the input matches the population. If they're "quite" different, then the input probably doesn't belong to the population you modeled.
I see it as a kind of "regression by neural networks" where you try to have a function describing your data: its output is the same as the input.
A: Maybe these pictures give you some intuition. As commenter above said auto encoders tries to extract some high level features from the training examples. You may see how prognostication algorithm is used to train each hidden level separately for the deep NN on the second picture.


Pictures are taken from Russian wikipedia.
A: Auto encoders have an input layer, hidden layer, and an output layer. The input is forced to be as identical to the output, so its the hidden layer we are interested in.
The hidden layer form a kind of encoding of the input. "The aim of an auto-encoder is to learn a compressed, distributed representation (encoding) for a set of data."
If input is a 100 dimensional vector, and you have 60 neurons in the hidden layer, then the auto encoder algorithm will replicate the input as a 100 dimensional vector in the output layer, in the process giving you a 60 dimensional vector that encodes your input.
So the purpose of auto encoders is dimensionality reduction, amongst many others.
A: In terms of ML, features are gold. Learnt features that use as little data as possible but contain as much information as possible enable us to complete many tasks.
Auto encoding is useful in the sense that it allows us to compress the data in an optimal way (that can actual used to represent the input data, as observed by the decoding layer).
Now that we have these features, we are able to complete many different tasks - for example we can use it as a very good starting point for supervised learning tasks.
