1. A system for training a feature extractor for extracting features from an input signal comprising: receiving at least one training signal; receiving at least one distorted copy of the at least one training signal; transforming each training signal and each distorted copy of the at least one training signal into a suitable representation for taking projections; performing a multi-layer oriented principal component analysis (OPCA) of the at least one transformed training signal and the at least one transformed distorted copy of the at least one training signal to compute a set of training projections for each layer; and constructing a signal feature extractor from two or more layers of said projections.