Signal Processing/Steepest Descent Algorithm
Contents |
[edit] Steepest Descent
The steepest descent algorithm is an old mathematical tool for numerically finding the minimum value of a function, based on the gradient of that function. Steepest descent uses the gradient function (or the scalar derivative, if the function is single-valued) to determine the direction in which a function is increasing or decreasing most rapidly. Each successive iteration of the algorithm moves along this direction for a specified step size, and the recomputes the gradient to determine the new direction to travel.
The method of steepest descent is a useful tool for signal processing because it can be applied iteratively.
We can apply the steepest descent algorithm to the Wiener filter in such a way that at each new step we can calculate a new set of filter coefficients. Using the steepest descent method, we can approach a minimum error value in relatively few iterations, and we can track a signal that changes in time to apply new minimum coefficients to each new version of the signal. It is important to use a steepest descent, or other fast minimization algorithm so that the filter coefficients can be updated more quickly then the next input sample is received.
[edit] Steepest Descent Algorithm
The steepest descent algorithm can be formulated as follows:
[Steepest Descent Algorithm]
For mathematical convenience, it is often useful to add in an additional 1/2 term:
[edit] Steepest Descent Wiener Filter
We can apply the steepest descent algorithm to the Wiener filter so that at each iteration the tap-weight vector a will approach the optimum Wiener tap weight vector ao. If p is the cross-correlation vector between the filter input x(n) and the desired response d(n), and if R is the cross-correlation matrix of the filter input u(n), then applying the steepest descent algorithm we obtain:
This update algorithm is especially convenient since it is possible to parallelize large portions of the correlation calculations.
[edit] Stability
The steepest descent algorithm has the potential to diverge or become unstable unless:
and
- − 1 < 1 − μλk < 1
Where λk are the eigenvalues of R. If these two conditions are satisfied, the algorithm should converge towards an optimal value.
[edit] Performance
A higher value of μ will cause the algorithm to converge more quickly.
This page may need to be ![\bold{a}(n + 1) = \bold{a}(n) + \mu;[\nabla J(\bold{a})]](http://upload.wikimedia.org/wikibooks/en/math/f/5/8/f581e20894c95aa506c9cf397f499d3b.png)
![\bold{a}(n + 1) = \bold{a}(n) + \frac{1}{2}\mu;[\nabla J(\bold{a})]](http://upload.wikimedia.org/wikibooks/en/math/0/f/e/0fe82c69dc29e56409cbd20604762d29.png)
![\bold{a}(n + 1) = \bold{a}(n) + \mu[\bold{p} - \bold{R} \bold{a}(n)]](http://upload.wikimedia.org/wikibooks/en/math/c/c/9/cc9040c828eb52644689c36b2d039d61.png)
