Introduction
Most of the machine learning algorithms work well due to predefined representations and input features. Machine learning algorithms optimize weights to best make a final prediction, while representation learning attempt to automatically learn good features or representations. Deep learning algorithms attempt to learn at multiple levels of representation by increasing complexity. Deep architectures are composed of multiple levels of non-linear operations, such as neural nets with many hidden layers. The main goal of deep learning techniques is to learn feature hierarchies. Deep learning techniques can be divided into three major classes; deep networks for unsupervised or generative learning, deep networks for supervised learning and hybrid deep networks