A method performed in a neural network having input means for receiving a plurality J of input signals (X.sub.j) and output means for producing a plurality I of output signals (U.sub.i) each said output signal U.sub.i representing a combination of said input signals (X.sub.j) weighted by a plurality I of bias weights (W.sub.i0) and a plurality I.sup.2 of scaling weights (W.sub.ij) such that (U.sub.i)=(W.sub.ij)(X.sub.j)+(W.sub.i0), said method minimizing the information redundancy among said output signals (U.sub.j), wherein 0<i.ltoreq.I>1 and 0<j.ltoreq.J>1 are integers, said method comprising:
- (a) selecting initial values for said bias weights (W.sub.i0) and said scaling weights (W.sub.ij);
- (b) producing a plurality I of training signals (Y.sub.i) responsive to a transformation of said input signals (X.sub.j) such that Y.sub.i =g(U.sub.i), wherein g(x) is a nonlinear function and the Jacobian of said transformation is J=det(.differential.Y.sub.i /.differential.X.sub.j) when J=I;
- and
- (c) adjusting said bias weights (W.sub.i0) and said scaling weights (W.sub.ij) responsive to one or more samples of said training signals (Y.sub.i) such that each said bias weight Wi.sub.i0 is changed proportionately to a corresponding bias measure .DELTA.W.sub.i0 accumulated over said one or more samples and each said scaling weight W.sub.ij is changed proportionately to a corresponding scaling measure .DELTA.W.sub.ij =.epsilon..multidot..differential.(ln.vertline.J.vertline.)/.differential. W.sub.ij accumulated over said one or more samples, wherein .epsilon.>0 is a learning rate.