One way to solve this is to use the inverse Hession (= correlation matrix for linear nets) as the learning rate matrix. This can be problematic because the Hessian can be a large matrix that is difficult to invert. Also, for multilayer networks, the Hessian is not constant (i.e. it changes as the weights change). Recomputing the inverse Hessian at each iteration would be prohibitively expensive and not worth the extra computation. However a much simpler approach is to use the addition of a momentum term.
where Dw(t) = w(t)-w(t-1). Thus, the amount
you change the weight is proportional to the negative gradient plus the previous weight change.
b is called the momentum parameter. and must satisfy 0 <= b < 1.
Consider the oscillatory behavior shown above. The gradient changes
sign at each step. By adding in a small amount of the previous weight change, we can lessen the oscillations. Suppose
m = .8, w(0)=10
E = w2 => wmin= 0 and dE/dx = 2w